diff --git a/docs/dyn/admin_directory_v1.asps.html b/docs/dyn/admin_directory_v1.asps.html
index ebf5f9f..d550b01 100644
--- a/docs/dyn/admin_directory_v1.asps.html
+++ b/docs/dyn/admin_directory_v1.asps.html
@@ -79,13 +79,13 @@
 <p class="firstline">Close httplib2 connections.</p>
 <p class="toc_element">
   <code><a href="#delete">delete(userKey, codeId, x__xgafv=None)</a></code></p>
-<p class="firstline">Delete an ASP issued by a user.</p>
+<p class="firstline">Deletes an ASP issued by a user.</p>
 <p class="toc_element">
   <code><a href="#get">get(userKey, codeId, x__xgafv=None)</a></code></p>
-<p class="firstline">Get information about an ASP issued by a user.</p>
+<p class="firstline">Gets information about an ASP issued by a user.</p>
 <p class="toc_element">
   <code><a href="#list">list(userKey, x__xgafv=None)</a></code></p>
-<p class="firstline">List the ASPs issued by a user.</p>
+<p class="firstline">Lists the ASPs issued by a user.</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="close">close()</code>
@@ -94,7 +94,7 @@
 
 <div class="method">
     <code class="details" id="delete">delete(userKey, codeId, x__xgafv=None)</code>
-  <pre>Delete an ASP issued by a user.
+  <pre>Deletes an ASP issued by a user.
 
 Args:
   userKey: string, Identifies the user in the API request. The value can be the user&#x27;s primary email address, alias email address, or unique user ID. (required)
@@ -108,7 +108,7 @@
 
 <div class="method">
     <code class="details" id="get">get(userKey, codeId, x__xgafv=None)</code>
-  <pre>Get information about an ASP issued by a user.
+  <pre>Gets information about an ASP issued by a user.
 
 Args:
   userKey: string, Identifies the user in the API request. The value can be the user&#x27;s primary email address, alias email address, or unique user ID. (required)
@@ -134,7 +134,7 @@
 
 <div class="method">
     <code class="details" id="list">list(userKey, x__xgafv=None)</code>
-  <pre>List the ASPs issued by a user.
+  <pre>Lists the ASPs issued by a user.
 
 Args:
   userKey: string, Identifies the user in the API request. The value can be the user&#x27;s primary email address, alias email address, or unique user ID. (required)
diff --git a/docs/dyn/admin_directory_v1.channels.html b/docs/dyn/admin_directory_v1.channels.html
index e7d3db3..09c2fde 100644
--- a/docs/dyn/admin_directory_v1.channels.html
+++ b/docs/dyn/admin_directory_v1.channels.html
@@ -79,7 +79,7 @@
 <p class="firstline">Close httplib2 connections.</p>
 <p class="toc_element">
   <code><a href="#stop">stop(body=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Stop watching resources through this channel.</p>
+<p class="firstline">Stops watching resources through this channel.</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="close">close()</code>
@@ -88,7 +88,7 @@
 
 <div class="method">
     <code class="details" id="stop">stop(body=None, x__xgafv=None)</code>
-  <pre>Stop watching resources through this channel.
+  <pre>Stops watching resources through this channel.
 
 Args:
   body: object, The request body.
diff --git a/docs/dyn/admin_directory_v1.chromeosdevices.html b/docs/dyn/admin_directory_v1.chromeosdevices.html
index dfe6ef7..f7a6fce 100644
--- a/docs/dyn/admin_directory_v1.chromeosdevices.html
+++ b/docs/dyn/admin_directory_v1.chromeosdevices.html
@@ -91,7 +91,7 @@
 <p class="firstline">Retrieves the next page of results.</p>
 <p class="toc_element">
   <code><a href="#moveDevicesToOu">moveDevicesToOu(customerId, orgUnitPath, body=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Move or insert multiple Chrome OS devices to an organizational unit. You can move up to 50 devices at once.</p>
+<p class="firstline">Moves or inserts multiple Chrome OS devices to an organizational unit. You can move up to 50 devices at once.</p>
 <p class="toc_element">
   <code><a href="#patch">patch(customerId, deviceId, body=None, projection=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Updates a device's updatable properties, such as `annotatedUser`, `annotatedLocation`, `notes`, `orgUnitPath`, or `annotatedAssetId`. This method supports [patch semantics](/admin-sdk/directory/v1/guides/performance#patch).</p>
@@ -417,7 +417,7 @@
 
 <div class="method">
     <code class="details" id="moveDevicesToOu">moveDevicesToOu(customerId, orgUnitPath, body=None, x__xgafv=None)</code>
-  <pre>Move or insert multiple Chrome OS devices to an organizational unit. You can move up to 50 devices at once.
+  <pre>Moves or inserts multiple Chrome OS devices to an organizational unit. You can move up to 50 devices at once.
 
 Args:
   customerId: string, Immutable ID of the Google Workspace account (required)
diff --git a/docs/dyn/admin_directory_v1.customers.html b/docs/dyn/admin_directory_v1.customers.html
index 186f08a..0acd765 100644
--- a/docs/dyn/admin_directory_v1.customers.html
+++ b/docs/dyn/admin_directory_v1.customers.html
@@ -87,7 +87,7 @@
 <p class="firstline">Retrieves a customer.</p>
 <p class="toc_element">
   <code><a href="#patch">patch(customerKey, body=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Patch Customers via Apiary Patch Orchestration</p>
+<p class="firstline">Patches a customer.</p>
 <p class="toc_element">
   <code><a href="#update">update(customerKey, body=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Updates a customer.</p>
@@ -136,7 +136,7 @@
 
 <div class="method">
     <code class="details" id="patch">patch(customerKey, body=None, x__xgafv=None)</code>
-  <pre>Patch Customers via Apiary Patch Orchestration
+  <pre>Patches a customer.
 
 Args:
   customerKey: string, Id of the customer to be updated (required)
diff --git a/docs/dyn/admin_directory_v1.groups.html b/docs/dyn/admin_directory_v1.groups.html
index c13d4ea..bd2d855 100644
--- a/docs/dyn/admin_directory_v1.groups.html
+++ b/docs/dyn/admin_directory_v1.groups.html
@@ -93,7 +93,7 @@
 <p class="firstline">Creates a group.</p>
 <p class="toc_element">
   <code><a href="#list">list(customer=None, domain=None, maxResults=None, orderBy=None, pageToken=None, query=None, sortOrder=None, userKey=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Retrieve all groups of a domain or of a user given a userKey (paginated)</p>
+<p class="firstline">Retrieves all groups of a domain or of a user given a userKey (paginated).</p>
 <p class="toc_element">
   <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
 <p class="firstline">Retrieves the next page of results.</p>
@@ -207,7 +207,7 @@
 
 <div class="method">
     <code class="details" id="list">list(customer=None, domain=None, maxResults=None, orderBy=None, pageToken=None, query=None, sortOrder=None, userKey=None, x__xgafv=None)</code>
-  <pre>Retrieve all groups of a domain or of a user given a userKey (paginated)
+  <pre>Retrieves all groups of a domain or of a user given a userKey (paginated).
 
 Args:
   customer: string, The unique ID for the customer&#x27;s Google Workspace account. In case of a multi-domain account, to fetch all groups for a customer, fill this field instead of domain. As an account administrator, you can also use the `my_customer` alias to represent your account&#x27;s `customerId`. The `customerId` is also returned as part of the [Users](/admin-sdk/directory/v1/reference/users)
diff --git a/docs/dyn/admin_directory_v1.resources.buildings.html b/docs/dyn/admin_directory_v1.resources.buildings.html
index c0125eb..e2a8132 100644
--- a/docs/dyn/admin_directory_v1.resources.buildings.html
+++ b/docs/dyn/admin_directory_v1.resources.buildings.html
@@ -94,7 +94,7 @@
 <p class="firstline">Retrieves the next page of results.</p>
 <p class="toc_element">
   <code><a href="#patch">patch(customer, buildingId, body=None, coordinatesSource=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Patches a building via Apiary Patch Orchestration.</p>
+<p class="firstline">Patches a building.</p>
 <p class="toc_element">
   <code><a href="#update">update(customer, buildingId, body=None, coordinatesSource=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Updates a building.</p>
@@ -301,7 +301,7 @@
 
 <div class="method">
     <code class="details" id="patch">patch(customer, buildingId, body=None, coordinatesSource=None, x__xgafv=None)</code>
-  <pre>Patches a building via Apiary Patch Orchestration.
+  <pre>Patches a building.
 
 Args:
   customer: string, The unique ID for the customer&#x27;s Google Workspace account. As an account administrator, you can also use the `my_customer` alias to represent your account&#x27;s customer ID. (required)
diff --git a/docs/dyn/admin_directory_v1.resources.calendars.html b/docs/dyn/admin_directory_v1.resources.calendars.html
index 23790b7..1984e48 100644
--- a/docs/dyn/admin_directory_v1.resources.calendars.html
+++ b/docs/dyn/admin_directory_v1.resources.calendars.html
@@ -94,7 +94,7 @@
 <p class="firstline">Retrieves the next page of results.</p>
 <p class="toc_element">
   <code><a href="#patch">patch(customer, calendarResourceId, body=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Patches a calendar resource via Apiary Patch Orchestration.</p>
+<p class="firstline">Patches a calendar resource.</p>
 <p class="toc_element">
   <code><a href="#update">update(customer, calendarResourceId, body=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Updates a calendar resource. This method supports patch semantics, meaning you only need to include the fields you wish to update. Fields that are not present in the request will be preserved.</p>
@@ -266,7 +266,7 @@
 
 <div class="method">
     <code class="details" id="patch">patch(customer, calendarResourceId, body=None, x__xgafv=None)</code>
-  <pre>Patches a calendar resource via Apiary Patch Orchestration.
+  <pre>Patches a calendar resource.
 
 Args:
   customer: string, The unique ID for the customer&#x27;s Google Workspace account. As an account administrator, you can also use the `my_customer` alias to represent your account&#x27;s customer ID. (required)
diff --git a/docs/dyn/admin_directory_v1.resources.features.html b/docs/dyn/admin_directory_v1.resources.features.html
index 30178cf..c361db1 100644
--- a/docs/dyn/admin_directory_v1.resources.features.html
+++ b/docs/dyn/admin_directory_v1.resources.features.html
@@ -94,7 +94,7 @@
 <p class="firstline">Retrieves the next page of results.</p>
 <p class="toc_element">
   <code><a href="#patch">patch(customer, featureKey, body=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Patches a feature via Apiary Patch Orchestration.</p>
+<p class="firstline">Patches a feature.</p>
 <p class="toc_element">
   <code><a href="#rename">rename(customer, oldName, body=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Renames a feature.</p>
@@ -219,7 +219,7 @@
 
 <div class="method">
     <code class="details" id="patch">patch(customer, featureKey, body=None, x__xgafv=None)</code>
-  <pre>Patches a feature via Apiary Patch Orchestration.
+  <pre>Patches a feature.
 
 Args:
   customer: string, The unique ID for the customer&#x27;s Google Workspace account. As an account administrator, you can also use the `my_customer` alias to represent your account&#x27;s customer ID. (required)
diff --git a/docs/dyn/admin_directory_v1.roleAssignments.html b/docs/dyn/admin_directory_v1.roleAssignments.html
index 07fbdcb..afe5657 100644
--- a/docs/dyn/admin_directory_v1.roleAssignments.html
+++ b/docs/dyn/admin_directory_v1.roleAssignments.html
@@ -82,7 +82,7 @@
 <p class="firstline">Deletes a role assignment.</p>
 <p class="toc_element">
   <code><a href="#get">get(customer, roleAssignmentId, x__xgafv=None)</a></code></p>
-<p class="firstline">Retrieve a role assignment.</p>
+<p class="firstline">Retrieves a role assignment.</p>
 <p class="toc_element">
   <code><a href="#insert">insert(customer, body=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Creates a role assignment.</p>
@@ -114,7 +114,7 @@
 
 <div class="method">
     <code class="details" id="get">get(customer, roleAssignmentId, x__xgafv=None)</code>
-  <pre>Retrieve a role assignment.
+  <pre>Retrieves a role assignment.
 
 Args:
   customer: string, Immutable ID of the Google Workspace account. (required)
diff --git a/docs/dyn/admin_directory_v1.roles.html b/docs/dyn/admin_directory_v1.roles.html
index 91ba4c9..0cc6a57 100644
--- a/docs/dyn/admin_directory_v1.roles.html
+++ b/docs/dyn/admin_directory_v1.roles.html
@@ -94,7 +94,7 @@
 <p class="firstline">Retrieves the next page of results.</p>
 <p class="toc_element">
   <code><a href="#patch">patch(customer, roleId, body=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Patch role via Apiary Patch Orchestration</p>
+<p class="firstline">Patches a role.</p>
 <p class="toc_element">
   <code><a href="#update">update(customer, roleId, body=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Updates a role.</p>
@@ -256,7 +256,7 @@
 
 <div class="method">
     <code class="details" id="patch">patch(customer, roleId, body=None, x__xgafv=None)</code>
-  <pre>Patch role via Apiary Patch Orchestration
+  <pre>Patches a role.
 
 Args:
   customer: string, Immutable ID of the Google Workspace account. (required)
diff --git a/docs/dyn/admin_directory_v1.schemas.html b/docs/dyn/admin_directory_v1.schemas.html
index 9abf078..b4f8425 100644
--- a/docs/dyn/admin_directory_v1.schemas.html
+++ b/docs/dyn/admin_directory_v1.schemas.html
@@ -79,22 +79,22 @@
 <p class="firstline">Close httplib2 connections.</p>
 <p class="toc_element">
   <code><a href="#delete">delete(customerId, schemaKey, x__xgafv=None)</a></code></p>
-<p class="firstline">Delete schema</p>
+<p class="firstline">Deletes a schema.</p>
 <p class="toc_element">
   <code><a href="#get">get(customerId, schemaKey, x__xgafv=None)</a></code></p>
-<p class="firstline">Retrieve schema</p>
+<p class="firstline">Retrieves a schema.</p>
 <p class="toc_element">
   <code><a href="#insert">insert(customerId, body=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Create schema.</p>
+<p class="firstline">Creates a schema.</p>
 <p class="toc_element">
   <code><a href="#list">list(customerId, x__xgafv=None)</a></code></p>
-<p class="firstline">Retrieve all schemas for a customer</p>
+<p class="firstline">Retrieves all schemas for a customer.</p>
 <p class="toc_element">
   <code><a href="#patch">patch(customerId, schemaKey, body=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Patch Schema via Apiary Patch Orchestration</p>
+<p class="firstline">Patches a schema.</p>
 <p class="toc_element">
   <code><a href="#update">update(customerId, schemaKey, body=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Update schema</p>
+<p class="firstline">Updates a schema.</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="close">close()</code>
@@ -103,7 +103,7 @@
 
 <div class="method">
     <code class="details" id="delete">delete(customerId, schemaKey, x__xgafv=None)</code>
-  <pre>Delete schema
+  <pre>Deletes a schema.
 
 Args:
   customerId: string, Immutable ID of the Google Workspace account. (required)
@@ -117,7 +117,7 @@
 
 <div class="method">
     <code class="details" id="get">get(customerId, schemaKey, x__xgafv=None)</code>
-  <pre>Retrieve schema
+  <pre>Retrieves a schema.
 
 Args:
   customerId: string, Immutable ID of the Google Workspace account. (required)
@@ -158,7 +158,7 @@
 
 <div class="method">
     <code class="details" id="insert">insert(customerId, body=None, x__xgafv=None)</code>
-  <pre>Create schema.
+  <pre>Creates a schema.
 
 Args:
   customerId: string, Immutable ID of the Google Workspace account. (required)
@@ -226,7 +226,7 @@
 
 <div class="method">
     <code class="details" id="list">list(customerId, x__xgafv=None)</code>
-  <pre>Retrieve all schemas for a customer
+  <pre>Retrieves all schemas for a customer.
 
 Args:
   customerId: string, Immutable ID of the Google Workspace account. (required)
@@ -272,7 +272,7 @@
 
 <div class="method">
     <code class="details" id="patch">patch(customerId, schemaKey, body=None, x__xgafv=None)</code>
-  <pre>Patch Schema via Apiary Patch Orchestration
+  <pre>Patches a schema.
 
 Args:
   customerId: string, Immutable ID of the Google Workspace account. (required)
@@ -341,7 +341,7 @@
 
 <div class="method">
     <code class="details" id="update">update(customerId, schemaKey, body=None, x__xgafv=None)</code>
-  <pre>Update schema
+  <pre>Updates a schema.
 
 Args:
   customerId: string, Immutable ID of the Google Workspace account. (required)
diff --git a/docs/dyn/admin_directory_v1.tokens.html b/docs/dyn/admin_directory_v1.tokens.html
index f54c70d..ffdae35 100644
--- a/docs/dyn/admin_directory_v1.tokens.html
+++ b/docs/dyn/admin_directory_v1.tokens.html
@@ -79,10 +79,10 @@
 <p class="firstline">Close httplib2 connections.</p>
 <p class="toc_element">
   <code><a href="#delete">delete(userKey, clientId, x__xgafv=None)</a></code></p>
-<p class="firstline">Delete all access tokens issued by a user for an application.</p>
+<p class="firstline">Deletes all access tokens issued by a user for an application.</p>
 <p class="toc_element">
   <code><a href="#get">get(userKey, clientId, x__xgafv=None)</a></code></p>
-<p class="firstline">Get information about an access token issued by a user.</p>
+<p class="firstline">Gets information about an access token issued by a user.</p>
 <p class="toc_element">
   <code><a href="#list">list(userKey, x__xgafv=None)</a></code></p>
 <p class="firstline">Returns the set of tokens specified user has issued to 3rd party applications.</p>
@@ -94,7 +94,7 @@
 
 <div class="method">
     <code class="details" id="delete">delete(userKey, clientId, x__xgafv=None)</code>
-  <pre>Delete all access tokens issued by a user for an application.
+  <pre>Deletes all access tokens issued by a user for an application.
 
 Args:
   userKey: string, Identifies the user in the API request. The value can be the user&#x27;s primary email address, alias email address, or unique user ID. (required)
@@ -108,7 +108,7 @@
 
 <div class="method">
     <code class="details" id="get">get(userKey, clientId, x__xgafv=None)</code>
-  <pre>Get information about an access token issued by a user.
+  <pre>Gets information about an access token issued by a user.
 
 Args:
   userKey: string, Identifies the user in the API request. The value can be the user&#x27;s primary email address, alias email address, or unique user ID. (required)
diff --git a/docs/dyn/admin_directory_v1.twoStepVerification.html b/docs/dyn/admin_directory_v1.twoStepVerification.html
index a52e093..f5c168f 100644
--- a/docs/dyn/admin_directory_v1.twoStepVerification.html
+++ b/docs/dyn/admin_directory_v1.twoStepVerification.html
@@ -79,7 +79,7 @@
 <p class="firstline">Close httplib2 connections.</p>
 <p class="toc_element">
   <code><a href="#turnOff">turnOff(userKey, x__xgafv=None)</a></code></p>
-<p class="firstline">Turn off 2-Step Verification for user.</p>
+<p class="firstline">Turns off 2-Step Verification for user.</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="close">close()</code>
@@ -88,7 +88,7 @@
 
 <div class="method">
     <code class="details" id="turnOff">turnOff(userKey, x__xgafv=None)</code>
-  <pre>Turn off 2-Step Verification for user.
+  <pre>Turns off 2-Step Verification for user.
 
 Args:
   userKey: string, Identifies the user in the API request. The value can be the user&#x27;s primary email address, alias email address, or unique user ID. (required)
diff --git a/docs/dyn/admin_directory_v1.users.aliases.html b/docs/dyn/admin_directory_v1.users.aliases.html
index 6bc50e7..619d564 100644
--- a/docs/dyn/admin_directory_v1.users.aliases.html
+++ b/docs/dyn/admin_directory_v1.users.aliases.html
@@ -88,7 +88,7 @@
 <p class="firstline">Lists all aliases for a user.</p>
 <p class="toc_element">
   <code><a href="#watch">watch(userKey, body=None, event=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Watch for changes in users list.</p>
+<p class="firstline">Watches for changes in users list.</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="close">close()</code>
@@ -172,7 +172,7 @@
 
 <div class="method">
     <code class="details" id="watch">watch(userKey, body=None, event=None, x__xgafv=None)</code>
-  <pre>Watch for changes in users list.
+  <pre>Watches for changes in users list.
 
 Args:
   userKey: string, Email or immutable ID of the user (required)
diff --git a/docs/dyn/admin_directory_v1.users.html b/docs/dyn/admin_directory_v1.users.html
index a7cad60..481edf6 100644
--- a/docs/dyn/admin_directory_v1.users.html
+++ b/docs/dyn/admin_directory_v1.users.html
@@ -110,7 +110,7 @@
 <p class="firstline">Updates a user using patch semantics. The update method should be used instead, since it also supports patch semantics and has better performance. This method is unable to clear fields that contain repeated objects (`addresses`, `phones`, etc). Use the update method instead.</p>
 <p class="toc_element">
   <code><a href="#signOut">signOut(userKey, x__xgafv=None)</a></code></p>
-<p class="firstline">Sign a user out of all web and device sessions and reset their sign-in cookies. User will have to sign in by authenticating again.</p>
+<p class="firstline">Signs a user out of all web and device sessions and reset their sign-in cookies. User will have to sign in by authenticating again.</p>
 <p class="toc_element">
   <code><a href="#undelete">undelete(userKey, body=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Undeletes a deleted user.</p>
@@ -119,7 +119,7 @@
 <p class="firstline">Updates a user. This method supports patch semantics, meaning you only need to include the fields you wish to update. Fields that are not present in the request will be preserved, and fields set to `null` will be cleared.</p>
 <p class="toc_element">
   <code><a href="#watch">watch(body=None, customFieldMask=None, customer=None, domain=None, event=None, maxResults=None, orderBy=None, pageToken=None, projection=None, query=None, showDeleted=None, sortOrder=None, viewType=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Watch for changes in users list</p>
+<p class="firstline">Watches for changes in users list.</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="close">close()</code>
@@ -655,7 +655,7 @@
 
 <div class="method">
     <code class="details" id="signOut">signOut(userKey, x__xgafv=None)</code>
-  <pre>Sign a user out of all web and device sessions and reset their sign-in cookies. User will have to sign in by authenticating again.
+  <pre>Signs a user out of all web and device sessions and reset their sign-in cookies. User will have to sign in by authenticating again.
 
 Args:
   userKey: string, Identifies the target user in the API request. The value can be the user&#x27;s primary email address, alias email address, or unique user ID. (required)
@@ -828,7 +828,7 @@
 
 <div class="method">
     <code class="details" id="watch">watch(body=None, customFieldMask=None, customer=None, domain=None, event=None, maxResults=None, orderBy=None, pageToken=None, projection=None, query=None, showDeleted=None, sortOrder=None, viewType=None, x__xgafv=None)</code>
-  <pre>Watch for changes in users list
+  <pre>Watches for changes in users list.
 
 Args:
   body: object, The request body.
diff --git a/docs/dyn/admin_directory_v1.verificationCodes.html b/docs/dyn/admin_directory_v1.verificationCodes.html
index e04a579..d78c119 100644
--- a/docs/dyn/admin_directory_v1.verificationCodes.html
+++ b/docs/dyn/admin_directory_v1.verificationCodes.html
@@ -79,10 +79,10 @@
 <p class="firstline">Close httplib2 connections.</p>
 <p class="toc_element">
   <code><a href="#generate">generate(userKey, x__xgafv=None)</a></code></p>
-<p class="firstline">Generate new backup verification codes for the user.</p>
+<p class="firstline">Generates new backup verification codes for the user.</p>
 <p class="toc_element">
   <code><a href="#invalidate">invalidate(userKey, x__xgafv=None)</a></code></p>
-<p class="firstline">Invalidate the current backup verification codes for the user.</p>
+<p class="firstline">Invalidates the current backup verification codes for the user.</p>
 <p class="toc_element">
   <code><a href="#list">list(userKey, x__xgafv=None)</a></code></p>
 <p class="firstline">Returns the current set of valid backup verification codes for the specified user.</p>
@@ -94,7 +94,7 @@
 
 <div class="method">
     <code class="details" id="generate">generate(userKey, x__xgafv=None)</code>
-  <pre>Generate new backup verification codes for the user.
+  <pre>Generates new backup verification codes for the user.
 
 Args:
   userKey: string, Email or immutable ID of the user (required)
@@ -107,7 +107,7 @@
 
 <div class="method">
     <code class="details" id="invalidate">invalidate(userKey, x__xgafv=None)</code>
-  <pre>Invalidate the current backup verification codes for the user.
+  <pre>Invalidates the current backup verification codes for the user.
 
 Args:
   userKey: string, Email or immutable ID of the user (required)
diff --git a/docs/dyn/analyticsadmin_v1alpha.accounts.html b/docs/dyn/analyticsadmin_v1alpha.accounts.html
index deae014..00a4c19 100644
--- a/docs/dyn/analyticsadmin_v1alpha.accounts.html
+++ b/docs/dyn/analyticsadmin_v1alpha.accounts.html
@@ -374,7 +374,7 @@
             &quot;customMetric&quot;: { # A definition for a custom metric. # A snapshot of a CustomMetric resource in change history.
               &quot;description&quot;: &quot;A String&quot;, # Optional. Description for this custom dimension. Max length of 150 characters.
               &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name for this custom metric as shown in the Analytics UI. Max length of 82 characters, alphanumeric plus space and underscore starting with a letter. Legacy system-generated display names may contain square brackets, but updates to this field will never permit square brackets.
-              &quot;measurementUnit&quot;: &quot;A String&quot;, # Required. Immutable. The type for the custom metric&#x27;s value.
+              &quot;measurementUnit&quot;: &quot;A String&quot;, # Required. The type for the custom metric&#x27;s value.
               &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name for this CustomMetric resource. Format: properties/{property}/customMetrics/{customMetric}
               &quot;parameterName&quot;: &quot;A String&quot;, # Required. Immutable. Tagging name for this custom metric. If this is an event-scoped metric, then this is the event parameter name. May only contain alphanumeric and underscore charactes, starting with a letter. Max length of 40 characters for event-scoped metrics.
               &quot;scope&quot;: &quot;A String&quot;, # Required. Immutable. The scope of this custom metric.
@@ -491,7 +491,7 @@
             &quot;customMetric&quot;: { # A definition for a custom metric. # A snapshot of a CustomMetric resource in change history.
               &quot;description&quot;: &quot;A String&quot;, # Optional. Description for this custom dimension. Max length of 150 characters.
               &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name for this custom metric as shown in the Analytics UI. Max length of 82 characters, alphanumeric plus space and underscore starting with a letter. Legacy system-generated display names may contain square brackets, but updates to this field will never permit square brackets.
-              &quot;measurementUnit&quot;: &quot;A String&quot;, # Required. Immutable. The type for the custom metric&#x27;s value.
+              &quot;measurementUnit&quot;: &quot;A String&quot;, # Required. The type for the custom metric&#x27;s value.
               &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name for this CustomMetric resource. Format: properties/{property}/customMetrics/{customMetric}
               &quot;parameterName&quot;: &quot;A String&quot;, # Required. Immutable. Tagging name for this custom metric. If this is an event-scoped metric, then this is the event parameter name. May only contain alphanumeric and underscore charactes, starting with a letter. Max length of 40 characters for event-scoped metrics.
               &quot;scope&quot;: &quot;A String&quot;, # Required. Immutable. The scope of this custom metric.
diff --git a/docs/dyn/analyticsadmin_v1alpha.properties.customMetrics.html b/docs/dyn/analyticsadmin_v1alpha.properties.customMetrics.html
index 9355f25..0424452 100644
--- a/docs/dyn/analyticsadmin_v1alpha.properties.customMetrics.html
+++ b/docs/dyn/analyticsadmin_v1alpha.properties.customMetrics.html
@@ -137,7 +137,7 @@
 { # A definition for a custom metric.
   &quot;description&quot;: &quot;A String&quot;, # Optional. Description for this custom dimension. Max length of 150 characters.
   &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name for this custom metric as shown in the Analytics UI. Max length of 82 characters, alphanumeric plus space and underscore starting with a letter. Legacy system-generated display names may contain square brackets, but updates to this field will never permit square brackets.
-  &quot;measurementUnit&quot;: &quot;A String&quot;, # Required. Immutable. The type for the custom metric&#x27;s value.
+  &quot;measurementUnit&quot;: &quot;A String&quot;, # Required. The type for the custom metric&#x27;s value.
   &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name for this CustomMetric resource. Format: properties/{property}/customMetrics/{customMetric}
   &quot;parameterName&quot;: &quot;A String&quot;, # Required. Immutable. Tagging name for this custom metric. If this is an event-scoped metric, then this is the event parameter name. May only contain alphanumeric and underscore charactes, starting with a letter. Max length of 40 characters for event-scoped metrics.
   &quot;scope&quot;: &quot;A String&quot;, # Required. Immutable. The scope of this custom metric.
@@ -154,7 +154,7 @@
     { # A definition for a custom metric.
   &quot;description&quot;: &quot;A String&quot;, # Optional. Description for this custom dimension. Max length of 150 characters.
   &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name for this custom metric as shown in the Analytics UI. Max length of 82 characters, alphanumeric plus space and underscore starting with a letter. Legacy system-generated display names may contain square brackets, but updates to this field will never permit square brackets.
-  &quot;measurementUnit&quot;: &quot;A String&quot;, # Required. Immutable. The type for the custom metric&#x27;s value.
+  &quot;measurementUnit&quot;: &quot;A String&quot;, # Required. The type for the custom metric&#x27;s value.
   &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name for this CustomMetric resource. Format: properties/{property}/customMetrics/{customMetric}
   &quot;parameterName&quot;: &quot;A String&quot;, # Required. Immutable. Tagging name for this custom metric. If this is an event-scoped metric, then this is the event parameter name. May only contain alphanumeric and underscore charactes, starting with a letter. Max length of 40 characters for event-scoped metrics.
   &quot;scope&quot;: &quot;A String&quot;, # Required. Immutable. The scope of this custom metric.
@@ -178,7 +178,7 @@
     { # A definition for a custom metric.
   &quot;description&quot;: &quot;A String&quot;, # Optional. Description for this custom dimension. Max length of 150 characters.
   &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name for this custom metric as shown in the Analytics UI. Max length of 82 characters, alphanumeric plus space and underscore starting with a letter. Legacy system-generated display names may contain square brackets, but updates to this field will never permit square brackets.
-  &quot;measurementUnit&quot;: &quot;A String&quot;, # Required. Immutable. The type for the custom metric&#x27;s value.
+  &quot;measurementUnit&quot;: &quot;A String&quot;, # Required. The type for the custom metric&#x27;s value.
   &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name for this CustomMetric resource. Format: properties/{property}/customMetrics/{customMetric}
   &quot;parameterName&quot;: &quot;A String&quot;, # Required. Immutable. Tagging name for this custom metric. If this is an event-scoped metric, then this is the event parameter name. May only contain alphanumeric and underscore charactes, starting with a letter. Max length of 40 characters for event-scoped metrics.
   &quot;scope&quot;: &quot;A String&quot;, # Required. Immutable. The scope of this custom metric.
@@ -206,7 +206,7 @@
     { # A definition for a custom metric.
       &quot;description&quot;: &quot;A String&quot;, # Optional. Description for this custom dimension. Max length of 150 characters.
       &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name for this custom metric as shown in the Analytics UI. Max length of 82 characters, alphanumeric plus space and underscore starting with a letter. Legacy system-generated display names may contain square brackets, but updates to this field will never permit square brackets.
-      &quot;measurementUnit&quot;: &quot;A String&quot;, # Required. Immutable. The type for the custom metric&#x27;s value.
+      &quot;measurementUnit&quot;: &quot;A String&quot;, # Required. The type for the custom metric&#x27;s value.
       &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name for this CustomMetric resource. Format: properties/{property}/customMetrics/{customMetric}
       &quot;parameterName&quot;: &quot;A String&quot;, # Required. Immutable. Tagging name for this custom metric. If this is an event-scoped metric, then this is the event parameter name. May only contain alphanumeric and underscore charactes, starting with a letter. Max length of 40 characters for event-scoped metrics.
       &quot;scope&quot;: &quot;A String&quot;, # Required. Immutable. The scope of this custom metric.
@@ -242,7 +242,7 @@
 { # A definition for a custom metric.
   &quot;description&quot;: &quot;A String&quot;, # Optional. Description for this custom dimension. Max length of 150 characters.
   &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name for this custom metric as shown in the Analytics UI. Max length of 82 characters, alphanumeric plus space and underscore starting with a letter. Legacy system-generated display names may contain square brackets, but updates to this field will never permit square brackets.
-  &quot;measurementUnit&quot;: &quot;A String&quot;, # Required. Immutable. The type for the custom metric&#x27;s value.
+  &quot;measurementUnit&quot;: &quot;A String&quot;, # Required. The type for the custom metric&#x27;s value.
   &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name for this CustomMetric resource. Format: properties/{property}/customMetrics/{customMetric}
   &quot;parameterName&quot;: &quot;A String&quot;, # Required. Immutable. Tagging name for this custom metric. If this is an event-scoped metric, then this is the event parameter name. May only contain alphanumeric and underscore charactes, starting with a letter. Max length of 40 characters for event-scoped metrics.
   &quot;scope&quot;: &quot;A String&quot;, # Required. Immutable. The scope of this custom metric.
@@ -260,7 +260,7 @@
     { # A definition for a custom metric.
   &quot;description&quot;: &quot;A String&quot;, # Optional. Description for this custom dimension. Max length of 150 characters.
   &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name for this custom metric as shown in the Analytics UI. Max length of 82 characters, alphanumeric plus space and underscore starting with a letter. Legacy system-generated display names may contain square brackets, but updates to this field will never permit square brackets.
-  &quot;measurementUnit&quot;: &quot;A String&quot;, # Required. Immutable. The type for the custom metric&#x27;s value.
+  &quot;measurementUnit&quot;: &quot;A String&quot;, # Required. The type for the custom metric&#x27;s value.
   &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name for this CustomMetric resource. Format: properties/{property}/customMetrics/{customMetric}
   &quot;parameterName&quot;: &quot;A String&quot;, # Required. Immutable. Tagging name for this custom metric. If this is an event-scoped metric, then this is the event parameter name. May only contain alphanumeric and underscore charactes, starting with a letter. Max length of 40 characters for event-scoped metrics.
   &quot;scope&quot;: &quot;A String&quot;, # Required. Immutable. The scope of this custom metric.
diff --git a/docs/dyn/androidpublisher_v3.edits.bundles.html b/docs/dyn/androidpublisher_v3.edits.bundles.html
index bf11637..9833684 100644
--- a/docs/dyn/androidpublisher_v3.edits.bundles.html
+++ b/docs/dyn/androidpublisher_v3.edits.bundles.html
@@ -104,9 +104,9 @@
 Returns:
   An object of the form:
 
-    { # Response listing all bundles.
-  &quot;bundles&quot;: [ # All bundles.
-    { # Information about a bundle. The resource for BundlesService.
+    { # Response listing all app bundles.
+  &quot;bundles&quot;: [ # All app bundles.
+    { # Information about an app bundle. The resource for BundlesService.
       &quot;sha1&quot;: &quot;A String&quot;, # A sha1 hash of the upload payload, encoded as a hex string and matching the output of the sha1sum command.
       &quot;sha256&quot;: &quot;A String&quot;, # A sha256 hash of the upload payload, encoded as a hex string and matching the output of the sha256sum command.
       &quot;versionCode&quot;: 42, # The version code of the Android App Bundle, as specified in the Android App Bundle&#x27;s base module APK manifest file.
@@ -123,7 +123,7 @@
 Args:
   packageName: string, Package name of the app. (required)
   editId: string, Identifier of the edit. (required)
-  ackBundleInstallationWarning: boolean, Must be set to true if the bundle installation may trigger a warning on user devices (for example, if installation size may be over a threshold, typically 100 MB).
+  ackBundleInstallationWarning: boolean, Must be set to true if the app bundle installation may trigger a warning on user devices (for example, if installation size may be over a threshold, typically 100 MB).
   media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
   media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
   x__xgafv: string, V1 error format.
@@ -134,7 +134,7 @@
 Returns:
   An object of the form:
 
-    { # Information about a bundle. The resource for BundlesService.
+    { # Information about an app bundle. The resource for BundlesService.
   &quot;sha1&quot;: &quot;A String&quot;, # A sha1 hash of the upload payload, encoded as a hex string and matching the output of the sha1sum command.
   &quot;sha256&quot;: &quot;A String&quot;, # A sha256 hash of the upload payload, encoded as a hex string and matching the output of the sha256sum command.
   &quot;versionCode&quot;: 42, # The version code of the Android App Bundle, as specified in the Android App Bundle&#x27;s base module APK manifest file.
diff --git a/docs/dyn/chat_v1.dms.conversations.html b/docs/dyn/chat_v1.dms.conversations.html
index 7ea2a8c..032169e 100644
--- a/docs/dyn/chat_v1.dms.conversations.html
+++ b/docs/dyn/chat_v1.dms.conversations.html
@@ -97,6 +97,531 @@
 
 { # A message in Hangouts Chat.
   &quot;actionResponse&quot;: { # Parameters that a bot can use to configure how it&#x27;s response is posted. # Input only. Parameters that a bot can use to configure how its response is posted.
+    &quot;dialogAction&quot;: { # Contains dialog if present as well as the ActionStatus for the request sent from user. # This response is for Dialog related events and must be accompanied by ResponseType.Dialog
+      &quot;actionStatus&quot;: { # ActionStatus represents status of a request from the bot developer&#x27;s side. In specific, for each request a bot gets, the bot developer will set both fields below in relation to what the response status and message related to status should be. # Status for either invoke dialog or submit dialog requests. This will be used to display a status and message to user if needed. For example in case of an error or success.
+        &quot;statusCode&quot;: &quot;A String&quot;, # The status code.
+        &quot;userFacingMessage&quot;: &quot;A String&quot;, # This message will be the corresponding string to the above status_code. If unset, an appropriate generic message based on the status_code will be shown to the user. If this field is set then the message will be surfaced to the user for both successes and errors.
+      },
+      &quot;dialog&quot;: { # Wrapper around the card body of the dialog. # Dialog for the request.
+        &quot;body&quot;: { # 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. ``` { &quot;header&quot;: { &quot;title&quot;: &quot;Heba Salam&quot;, &quot;subtitle&quot;: &quot;Software Engineer&quot;, &quot;imageStyle&quot;: &quot;ImageStyle.AVATAR&quot;, &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot;, &quot;imageAltText&quot;: &quot;Avatar for Heba Salam&quot; }, &quot;sections&quot; : [ { &quot;header&quot;: &quot;Contact Info&quot;, &quot;widgets&quot;: [ { &quot;decorated_text&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;content&quot;: &quot;heba.salam@example.com&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PERSON&quot; }, &quot;content&quot;: &quot;Online&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PHONE&quot; }, &quot;content&quot;: &quot;+1 (555) 555-1234&quot; } }, { &quot;buttons&quot;: [ { &quot;textButton&quot;: { &quot;text&quot;: &quot;Share&quot;, }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/share&quot; } } }, { &quot;textButton&quot;: { &quot;text&quot;: &quot;Edit&quot;, }, &quot;onClick&quot;: { &quot;action&quot;: { &quot;function&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;EDIT&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } } ] } ], &quot;collapsible&quot;: true, &quot;uncollapsibleWidgetsCount&quot;: 3 } ], &quot;cardActions&quot;: [ { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ], &quot;name&quot;: &quot;contact-card-K3wB6arF2H9L&quot; } ``` # Body of the dialog, which will be rendered in a modal. NOTE: The following fields within the objects are not supported: google.apps.card.v1.Widget.date_time_picker google.apps.card.v1.DecoratedText.SwitchControl.on_change_action google.apps.card.v1.TextInput.on_change_action google.apps.card.v1.SelectionInput.on_change_action google.apps.card.v1.DateTimePicker.on_change_action Setting the fields above will have no effect on the dialog.
+          &quot;cardActions&quot;: [ # The actions of this card. They are added to a card&#x27;s generated toolbar menu. For example, the following JSON constructs a card action menu with Settings and Send Feedback options: ``` &quot;card_actions&quot;: [ { &quot;actionLabel&quot;: &quot;Setting&quot;, &quot;onClick&quot;: { &quot;action&quot;: { &quot;functionName&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;SETTING&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } }, { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ] ```
+            { # 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.
+              &quot;actionLabel&quot;: &quot;A String&quot;, # The label that displays as the action menu item.
+              &quot;onClick&quot;: { # The onclick action for this action item.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+            },
+          ],
+          &quot;displayStyle&quot;: &quot;A String&quot;, # The display style for peekCardHeader.
+          &quot;fixedFooter&quot;: { # A persistent (sticky) footer that is added to the bottom of the card. # The fixed footer shown at the bottom of this card.
+            &quot;primaryButton&quot;: { # A button. Can be a text button or an image button. # The primary button of the fixed footer. The button must be a text button with text and color set.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+            &quot;secondaryButton&quot;: { # A button. Can be a text button or an image button. # 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.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+          },
+          &quot;header&quot;: { # The header of the card. A header usually contains a title and an image.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;name&quot;: &quot;A String&quot;, # Name of the card, which is used as a identifier for the card in card navigation.
+          &quot;peekCardHeader&quot;: { # 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.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;sections&quot;: [ # Sections are separated by a line divider.
+            { # 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.
+              &quot;collapsible&quot;: True or False, # Indicates whether this section is collapsible. If a section is collapsible, the description must be given.
+              &quot;header&quot;: &quot;A String&quot;, # The header of the section. Formatted text is supported.
+              &quot;uncollapsibleWidgetsCount&quot;: 42, # 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`.
+              &quot;widgets&quot;: [ # A section must contain at least 1 widget.
+                { # A widget is a UI element that presents texts, images, etc.
+                  &quot;buttonList&quot;: { # A list of buttons layed out horizontally. # 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: ``` &quot;buttonList&quot;: { &quot;buttons&quot;: [ &quot;button&quot;: { &quot;text&quot;: &quot;Edit&quot;, &quot;Color&quot;: { &quot;Red&quot;: 255 &quot;Green&quot;: 255 &quot;Blue&quot;: 255 } &quot;disabled&quot;: true }, &quot;button&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;INVITE&quot; &quot;altText&quot;: &quot;check calendar&quot; }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/calendar&quot; } } }, ] } ```
+                    &quot;buttons&quot;: [
+                      { # A button. Can be a text button or an image button.
+                        &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                        &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                          &quot;alpha&quot;: 3.14, # 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).
+                          &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                          &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                          &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                        },
+                        &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                        &quot;icon&quot;: { # The icon image.
+                          &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                          &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                          &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                          &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                        },
+                        &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                          &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                          &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                            &quot;onClose&quot;: &quot;A String&quot;,
+                            &quot;openAs&quot;: &quot;A String&quot;,
+                            &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                          },
+                        },
+                        &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                      },
+                    ],
+                  },
+                  &quot;dateTimePicker&quot;: { # The widget that lets users to specify a date and time. # Displays a selection/input widget for date/time. For example, the following JSON creates a date/time picker for an appointment time: ``` &quot;date_time_picker&quot;: { &quot;name&quot;: &quot;appointment_time&quot;, &quot;label&quot;: &quot;Book your appointment at:&quot;, &quot;type&quot;: &quot;DateTimePickerType.DATE_AND_TIME&quot;, &quot;valueMsEpoch&quot;: &quot;796435200000&quot; } ```
+                    &quot;label&quot;: &quot;A String&quot;, # The label for the field that displays to the user.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input that&#x27;s used in formInput, and uniquely identifies this input.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;timezoneOffsetDate&quot;: 42, # 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&#x27;s time zone setting on the client side.
+                    &quot;type&quot;: &quot;A String&quot;, # The type of the date/time picker.
+                    &quot;valueMsEpoch&quot;: &quot;A String&quot;, # 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.
+                  },
+                  &quot;decoratedText&quot;: { # 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. # Displays a decorated text item in this widget. For example, the following JSON creates a decorated text widget showing email address: ``` &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;topLabel&quot;: &quot;Email Address&quot;, &quot;content&quot;: &quot;heba.salam@example.com&quot;, &quot;bottomLabel&quot;: &quot;This is a new Email address!&quot;, &quot;switchWidget&quot;: { &quot;name&quot;: &quot;has_send_welcome_email_to_heba_salam&quot;, &quot;selected&quot;: false, &quot;controlType&quot;: &quot;ControlType.CHECKBOX&quot; } } ```
+                    &quot;bottomLabel&quot;: &quot;A String&quot;, # The formatted text label that shows below the main text.
+                    &quot;button&quot;: { # A button. Can be a text button or an image button. # A button that can be clicked to trigger an action.
+                      &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                      &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                      &quot;icon&quot;: { # The icon image.
+                        &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                        &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                        &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                        &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                      },
+                      &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                        &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                        &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                          &quot;onClose&quot;: &quot;A String&quot;,
+                          &quot;openAs&quot;: &quot;A String&quot;,
+                          &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                        },
+                      },
+                      &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                    },
+                    &quot;endIcon&quot;: { # An icon displayed after the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;icon&quot;: { # Deprecated in favor of start_icon.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;onClick&quot;: { # Only the top and bottom label and content region are clickable.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;startIcon&quot;: { # The icon displayed in front of the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;switchControl&quot;: { # A switch widget can be clicked to change its state or trigger an action.
+                      &quot;controlType&quot;: &quot;A String&quot;, # The control type, either switch or checkbox.
+                      &quot;name&quot;: &quot;A String&quot;, # The name of the switch widget that&#x27;s used in formInput.
+                      &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The action when the switch state is changed.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;selected&quot;: True or False, # If the switch is selected.
+                      &quot;value&quot;: &quot;A String&quot;, # The value is what is passed back in the callback.
+                    },
+                    &quot;text&quot;: &quot;A String&quot;, # Required. The main widget formatted text. See Text formatting for details.
+                    &quot;topLabel&quot;: &quot;A String&quot;, # The formatted text label that shows above the main text.
+                    &quot;wrapText&quot;: True or False, # The wrap text setting. If `true`, the text is wrapped and displayed in multiline. Otherwise, the text is truncated.
+                  },
+                  &quot;divider&quot;: { # A divider that appears in between widgets. # Displays a divider. For example, the following JSON creates a divider: ``` &quot;divider&quot;: { } ```
+                  },
+                  &quot;grid&quot;: { # Represents a Grid widget that displays items in a configurable grid layout. # Displays a grid with a collection of items. For example, the following JSON creates a 2 column grid with a single item: ``` &quot;grid&quot;: { &quot;title&quot;: &quot;A fine collection of items&quot;, &quot;numColumns&quot;: 2, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot;, &quot;cornerRadius&quot;: 4.0 }, &quot;items&quot;: [ &quot;image&quot;: { &quot;imageUri&quot;: &quot;https://www.example.com/image.png&quot;, &quot;cropStyle&quot;: { &quot;type&quot;: &quot;SQUARE&quot; }, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot; } }, &quot;title&quot;: &quot;An item&quot;, &quot;textAlignment&quot;: &quot;CENTER&quot; ], &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;:&quot;https://www.example.com&quot; } } } ```
+                    &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to each grid item.
+                      &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                      &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;type&quot;: &quot;A String&quot;, # The border type.
+                    },
+                    &quot;columnCount&quot;: 42, # The number of columns to display in the grid. A default value is used if this field isn&#x27;t specified, and that default value is different depending on where the grid is shown (dialog versus companion).
+                    &quot;items&quot;: [ # The items to display in the grid.
+                      { # Represents a single item in the grid layout.
+                        &quot;id&quot;: &quot;A String&quot;, # A user-specified identifier for this grid item. This identifier is returned in the parent Grid&#x27;s onClick callback parameters.
+                        &quot;image&quot;: { # The image that displays in the grid item.
+                          &quot;altText&quot;: &quot;A String&quot;, # The accessibility label for the image.
+                          &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to the image.
+                            &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                            &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                              &quot;alpha&quot;: 3.14, # 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).
+                              &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                              &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                              &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                            },
+                            &quot;type&quot;: &quot;A String&quot;, # The border type.
+                          },
+                          &quot;cropStyle&quot;: { # Represents the crop style applied to an image. # The crop style to apply to the image.
+                            &quot;aspectRatio&quot;: 3.14, # The aspect ratio to use if the crop type is `RECTANGLE_CUSTOM`.
+                            &quot;type&quot;: &quot;A String&quot;, # The crop type.
+                          },
+                          &quot;imageUri&quot;: &quot;A String&quot;, # The image URL.
+                        },
+                        &quot;layout&quot;: &quot;A String&quot;, # The layout to use for the grid item.
+                        &quot;subtitle&quot;: &quot;A String&quot;, # The grid item&#x27;s subtitle.
+                        &quot;textAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of the grid item&#x27;s text.
+                        &quot;title&quot;: &quot;A String&quot;, # The grid item&#x27;s title.
+                      },
+                    ],
+                    &quot;onClick&quot;: { # This callback is reused by each individual grid item, but with the item&#x27;s identifier and index in the items list added to the callback&#x27;s parameters.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;title&quot;: &quot;A String&quot;, # The text that displays in the grid header.
+                  },
+                  &quot;horizontalAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of this widget.
+                  &quot;image&quot;: { # An image that is specified by a URL and can have an onClick action. # Displays an image in this widget. For example, the following JSON creates an image with alternative text: ``` &quot;image&quot;: { &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot; &quot;altText&quot;: &quot;Avatar for Heba Salam&quot; } ```
+                    &quot;altText&quot;: &quot;A String&quot;, # The alternative text of this image, used for accessibility.
+                    &quot;imageUrl&quot;: &quot;A String&quot;, # An image URL.
+                    &quot;onClick&quot;: {
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                  },
+                  &quot;selectionInput&quot;: { # A widget that creates a UI item (for example, a drop-down list) with options for users to select. # Displays a switch control in this widget. For example, the following JSON creates a dropdown selection for size: ``` &quot;switchControl&quot;: { &quot;name&quot;: &quot;size&quot;, &quot;label&quot;: &quot;Size&quot; &quot;type&quot;: &quot;SelectionType.DROPDOWN&quot;, &quot;items&quot;: [ { &quot;text&quot;: &quot;S&quot;, &quot;value&quot;: &quot;small&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;M&quot;, &quot;value&quot;: &quot;medium&quot;, &quot;selected&quot;: true }, { &quot;text&quot;: &quot;L&quot;, &quot;value&quot;: &quot;large&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;XL&quot;, &quot;value&quot;: &quot;extra_large&quot;, &quot;selected&quot;: false } ] } ```
+                    &quot;items&quot;: [
+                      { # The item in the switch control. A radio button, at most one of the items is selected.
+                        &quot;selected&quot;: True or False, # 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.
+                        &quot;text&quot;: &quot;A String&quot;, # The text to be displayed.
+                        &quot;value&quot;: &quot;A String&quot;, # The value associated with this item. The client should use this as a form input value.
+                      },
+                    ],
+                    &quot;label&quot;: &quot;A String&quot;, # The label displayed ahead of the switch control.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, the form is submitted when the selection changes. If not specified, you must specify a separate button.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;,
+                  },
+                  &quot;textInput&quot;: { # A text input is a UI item where users can input text. A text input can also have an onChange action and suggestions. # Displays a text input in this widget. For example, the following JSON creates a text input for mail address: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;mailing_address&quot;, &quot;label&quot;: &quot;Mailing Address&quot; } ``` As another example, the following JSON creates a text input for programming language with static suggestions: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;preferred_programing_language&quot;, &quot;label&quot;: &quot;Preferred Language&quot;, &quot;initialSuggestions&quot;: { &quot;items&quot;: [ { &quot;text&quot;: &quot;C++&quot; }, { &quot;text&quot;: &quot;Java&quot; }, { &quot;text&quot;: &quot;JavaScript&quot; }, { &quot;text&quot;: &quot;Python&quot; } ] } } ```
+                    &quot;autoCompleteAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The refresh function that returns suggestions based on the user&#x27;s input text. If the callback is not specified, autocomplete is done in client side based on the initial suggestion items.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;hintText&quot;: &quot;A String&quot;, # The hint text.
+                    &quot;initialSuggestions&quot;: { # A container wrapping elements necessary for showing suggestion items used in text input autocomplete. # The initial suggestions made before any user input.
+                      &quot;items&quot;: [ # A list of suggestions items which will be used in are used in autocomplete.
+                        { # A suggestion item. Only supports text for now.
+                          &quot;text&quot;: &quot;A String&quot;,
+                        },
+                      ],
+                    },
+                    &quot;label&quot;: &quot;A String&quot;, # At least one of label and hintText must be specified.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The onChange action, for example, invoke a function.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;, # The style of the text, for example, a single line or multiple lines.
+                    &quot;value&quot;: &quot;A String&quot;, # The default value when there is no input from the user.
+                  },
+                  &quot;textParagraph&quot;: { # A paragraph of text that supports formatting. See [Text formatting](workspace/add-ons/concepts/widgets#text_formatting&quot;) for details. # Displays a text paragraph in this widget. For example, the following JSON creates a bolded text: ``` &quot;textParagraph&quot;: { &quot;text&quot;: &quot; *bold text*&quot; } ```
+                    &quot;text&quot;: &quot;A String&quot;, # The text that&#x27;s shown in the widget.
+                  },
+                },
+              ],
+            },
+          ],
+        },
+      },
+    },
     &quot;type&quot;: &quot;A String&quot;, # The type of bot response.
     &quot;url&quot;: &quot;A String&quot;, # URL for users to auth or config. (Only for REQUEST_CONFIG response types.)
   },
@@ -345,6 +870,531 @@
 
     { # A message in Hangouts Chat.
   &quot;actionResponse&quot;: { # Parameters that a bot can use to configure how it&#x27;s response is posted. # Input only. Parameters that a bot can use to configure how its response is posted.
+    &quot;dialogAction&quot;: { # Contains dialog if present as well as the ActionStatus for the request sent from user. # This response is for Dialog related events and must be accompanied by ResponseType.Dialog
+      &quot;actionStatus&quot;: { # ActionStatus represents status of a request from the bot developer&#x27;s side. In specific, for each request a bot gets, the bot developer will set both fields below in relation to what the response status and message related to status should be. # Status for either invoke dialog or submit dialog requests. This will be used to display a status and message to user if needed. For example in case of an error or success.
+        &quot;statusCode&quot;: &quot;A String&quot;, # The status code.
+        &quot;userFacingMessage&quot;: &quot;A String&quot;, # This message will be the corresponding string to the above status_code. If unset, an appropriate generic message based on the status_code will be shown to the user. If this field is set then the message will be surfaced to the user for both successes and errors.
+      },
+      &quot;dialog&quot;: { # Wrapper around the card body of the dialog. # Dialog for the request.
+        &quot;body&quot;: { # 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. ``` { &quot;header&quot;: { &quot;title&quot;: &quot;Heba Salam&quot;, &quot;subtitle&quot;: &quot;Software Engineer&quot;, &quot;imageStyle&quot;: &quot;ImageStyle.AVATAR&quot;, &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot;, &quot;imageAltText&quot;: &quot;Avatar for Heba Salam&quot; }, &quot;sections&quot; : [ { &quot;header&quot;: &quot;Contact Info&quot;, &quot;widgets&quot;: [ { &quot;decorated_text&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;content&quot;: &quot;heba.salam@example.com&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PERSON&quot; }, &quot;content&quot;: &quot;Online&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PHONE&quot; }, &quot;content&quot;: &quot;+1 (555) 555-1234&quot; } }, { &quot;buttons&quot;: [ { &quot;textButton&quot;: { &quot;text&quot;: &quot;Share&quot;, }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/share&quot; } } }, { &quot;textButton&quot;: { &quot;text&quot;: &quot;Edit&quot;, }, &quot;onClick&quot;: { &quot;action&quot;: { &quot;function&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;EDIT&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } } ] } ], &quot;collapsible&quot;: true, &quot;uncollapsibleWidgetsCount&quot;: 3 } ], &quot;cardActions&quot;: [ { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ], &quot;name&quot;: &quot;contact-card-K3wB6arF2H9L&quot; } ``` # Body of the dialog, which will be rendered in a modal. NOTE: The following fields within the objects are not supported: google.apps.card.v1.Widget.date_time_picker google.apps.card.v1.DecoratedText.SwitchControl.on_change_action google.apps.card.v1.TextInput.on_change_action google.apps.card.v1.SelectionInput.on_change_action google.apps.card.v1.DateTimePicker.on_change_action Setting the fields above will have no effect on the dialog.
+          &quot;cardActions&quot;: [ # The actions of this card. They are added to a card&#x27;s generated toolbar menu. For example, the following JSON constructs a card action menu with Settings and Send Feedback options: ``` &quot;card_actions&quot;: [ { &quot;actionLabel&quot;: &quot;Setting&quot;, &quot;onClick&quot;: { &quot;action&quot;: { &quot;functionName&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;SETTING&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } }, { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ] ```
+            { # 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.
+              &quot;actionLabel&quot;: &quot;A String&quot;, # The label that displays as the action menu item.
+              &quot;onClick&quot;: { # The onclick action for this action item.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+            },
+          ],
+          &quot;displayStyle&quot;: &quot;A String&quot;, # The display style for peekCardHeader.
+          &quot;fixedFooter&quot;: { # A persistent (sticky) footer that is added to the bottom of the card. # The fixed footer shown at the bottom of this card.
+            &quot;primaryButton&quot;: { # A button. Can be a text button or an image button. # The primary button of the fixed footer. The button must be a text button with text and color set.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+            &quot;secondaryButton&quot;: { # A button. Can be a text button or an image button. # 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.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+          },
+          &quot;header&quot;: { # The header of the card. A header usually contains a title and an image.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;name&quot;: &quot;A String&quot;, # Name of the card, which is used as a identifier for the card in card navigation.
+          &quot;peekCardHeader&quot;: { # 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.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;sections&quot;: [ # Sections are separated by a line divider.
+            { # 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.
+              &quot;collapsible&quot;: True or False, # Indicates whether this section is collapsible. If a section is collapsible, the description must be given.
+              &quot;header&quot;: &quot;A String&quot;, # The header of the section. Formatted text is supported.
+              &quot;uncollapsibleWidgetsCount&quot;: 42, # 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`.
+              &quot;widgets&quot;: [ # A section must contain at least 1 widget.
+                { # A widget is a UI element that presents texts, images, etc.
+                  &quot;buttonList&quot;: { # A list of buttons layed out horizontally. # 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: ``` &quot;buttonList&quot;: { &quot;buttons&quot;: [ &quot;button&quot;: { &quot;text&quot;: &quot;Edit&quot;, &quot;Color&quot;: { &quot;Red&quot;: 255 &quot;Green&quot;: 255 &quot;Blue&quot;: 255 } &quot;disabled&quot;: true }, &quot;button&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;INVITE&quot; &quot;altText&quot;: &quot;check calendar&quot; }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/calendar&quot; } } }, ] } ```
+                    &quot;buttons&quot;: [
+                      { # A button. Can be a text button or an image button.
+                        &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                        &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                          &quot;alpha&quot;: 3.14, # 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).
+                          &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                          &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                          &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                        },
+                        &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                        &quot;icon&quot;: { # The icon image.
+                          &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                          &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                          &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                          &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                        },
+                        &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                          &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                          &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                            &quot;onClose&quot;: &quot;A String&quot;,
+                            &quot;openAs&quot;: &quot;A String&quot;,
+                            &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                          },
+                        },
+                        &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                      },
+                    ],
+                  },
+                  &quot;dateTimePicker&quot;: { # The widget that lets users to specify a date and time. # Displays a selection/input widget for date/time. For example, the following JSON creates a date/time picker for an appointment time: ``` &quot;date_time_picker&quot;: { &quot;name&quot;: &quot;appointment_time&quot;, &quot;label&quot;: &quot;Book your appointment at:&quot;, &quot;type&quot;: &quot;DateTimePickerType.DATE_AND_TIME&quot;, &quot;valueMsEpoch&quot;: &quot;796435200000&quot; } ```
+                    &quot;label&quot;: &quot;A String&quot;, # The label for the field that displays to the user.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input that&#x27;s used in formInput, and uniquely identifies this input.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;timezoneOffsetDate&quot;: 42, # 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&#x27;s time zone setting on the client side.
+                    &quot;type&quot;: &quot;A String&quot;, # The type of the date/time picker.
+                    &quot;valueMsEpoch&quot;: &quot;A String&quot;, # 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.
+                  },
+                  &quot;decoratedText&quot;: { # 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. # Displays a decorated text item in this widget. For example, the following JSON creates a decorated text widget showing email address: ``` &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;topLabel&quot;: &quot;Email Address&quot;, &quot;content&quot;: &quot;heba.salam@example.com&quot;, &quot;bottomLabel&quot;: &quot;This is a new Email address!&quot;, &quot;switchWidget&quot;: { &quot;name&quot;: &quot;has_send_welcome_email_to_heba_salam&quot;, &quot;selected&quot;: false, &quot;controlType&quot;: &quot;ControlType.CHECKBOX&quot; } } ```
+                    &quot;bottomLabel&quot;: &quot;A String&quot;, # The formatted text label that shows below the main text.
+                    &quot;button&quot;: { # A button. Can be a text button or an image button. # A button that can be clicked to trigger an action.
+                      &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                      &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                      &quot;icon&quot;: { # The icon image.
+                        &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                        &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                        &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                        &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                      },
+                      &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                        &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                        &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                          &quot;onClose&quot;: &quot;A String&quot;,
+                          &quot;openAs&quot;: &quot;A String&quot;,
+                          &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                        },
+                      },
+                      &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                    },
+                    &quot;endIcon&quot;: { # An icon displayed after the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;icon&quot;: { # Deprecated in favor of start_icon.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;onClick&quot;: { # Only the top and bottom label and content region are clickable.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;startIcon&quot;: { # The icon displayed in front of the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;switchControl&quot;: { # A switch widget can be clicked to change its state or trigger an action.
+                      &quot;controlType&quot;: &quot;A String&quot;, # The control type, either switch or checkbox.
+                      &quot;name&quot;: &quot;A String&quot;, # The name of the switch widget that&#x27;s used in formInput.
+                      &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The action when the switch state is changed.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;selected&quot;: True or False, # If the switch is selected.
+                      &quot;value&quot;: &quot;A String&quot;, # The value is what is passed back in the callback.
+                    },
+                    &quot;text&quot;: &quot;A String&quot;, # Required. The main widget formatted text. See Text formatting for details.
+                    &quot;topLabel&quot;: &quot;A String&quot;, # The formatted text label that shows above the main text.
+                    &quot;wrapText&quot;: True or False, # The wrap text setting. If `true`, the text is wrapped and displayed in multiline. Otherwise, the text is truncated.
+                  },
+                  &quot;divider&quot;: { # A divider that appears in between widgets. # Displays a divider. For example, the following JSON creates a divider: ``` &quot;divider&quot;: { } ```
+                  },
+                  &quot;grid&quot;: { # Represents a Grid widget that displays items in a configurable grid layout. # Displays a grid with a collection of items. For example, the following JSON creates a 2 column grid with a single item: ``` &quot;grid&quot;: { &quot;title&quot;: &quot;A fine collection of items&quot;, &quot;numColumns&quot;: 2, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot;, &quot;cornerRadius&quot;: 4.0 }, &quot;items&quot;: [ &quot;image&quot;: { &quot;imageUri&quot;: &quot;https://www.example.com/image.png&quot;, &quot;cropStyle&quot;: { &quot;type&quot;: &quot;SQUARE&quot; }, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot; } }, &quot;title&quot;: &quot;An item&quot;, &quot;textAlignment&quot;: &quot;CENTER&quot; ], &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;:&quot;https://www.example.com&quot; } } } ```
+                    &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to each grid item.
+                      &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                      &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;type&quot;: &quot;A String&quot;, # The border type.
+                    },
+                    &quot;columnCount&quot;: 42, # The number of columns to display in the grid. A default value is used if this field isn&#x27;t specified, and that default value is different depending on where the grid is shown (dialog versus companion).
+                    &quot;items&quot;: [ # The items to display in the grid.
+                      { # Represents a single item in the grid layout.
+                        &quot;id&quot;: &quot;A String&quot;, # A user-specified identifier for this grid item. This identifier is returned in the parent Grid&#x27;s onClick callback parameters.
+                        &quot;image&quot;: { # The image that displays in the grid item.
+                          &quot;altText&quot;: &quot;A String&quot;, # The accessibility label for the image.
+                          &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to the image.
+                            &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                            &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                              &quot;alpha&quot;: 3.14, # 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).
+                              &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                              &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                              &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                            },
+                            &quot;type&quot;: &quot;A String&quot;, # The border type.
+                          },
+                          &quot;cropStyle&quot;: { # Represents the crop style applied to an image. # The crop style to apply to the image.
+                            &quot;aspectRatio&quot;: 3.14, # The aspect ratio to use if the crop type is `RECTANGLE_CUSTOM`.
+                            &quot;type&quot;: &quot;A String&quot;, # The crop type.
+                          },
+                          &quot;imageUri&quot;: &quot;A String&quot;, # The image URL.
+                        },
+                        &quot;layout&quot;: &quot;A String&quot;, # The layout to use for the grid item.
+                        &quot;subtitle&quot;: &quot;A String&quot;, # The grid item&#x27;s subtitle.
+                        &quot;textAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of the grid item&#x27;s text.
+                        &quot;title&quot;: &quot;A String&quot;, # The grid item&#x27;s title.
+                      },
+                    ],
+                    &quot;onClick&quot;: { # This callback is reused by each individual grid item, but with the item&#x27;s identifier and index in the items list added to the callback&#x27;s parameters.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;title&quot;: &quot;A String&quot;, # The text that displays in the grid header.
+                  },
+                  &quot;horizontalAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of this widget.
+                  &quot;image&quot;: { # An image that is specified by a URL and can have an onClick action. # Displays an image in this widget. For example, the following JSON creates an image with alternative text: ``` &quot;image&quot;: { &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot; &quot;altText&quot;: &quot;Avatar for Heba Salam&quot; } ```
+                    &quot;altText&quot;: &quot;A String&quot;, # The alternative text of this image, used for accessibility.
+                    &quot;imageUrl&quot;: &quot;A String&quot;, # An image URL.
+                    &quot;onClick&quot;: {
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                  },
+                  &quot;selectionInput&quot;: { # A widget that creates a UI item (for example, a drop-down list) with options for users to select. # Displays a switch control in this widget. For example, the following JSON creates a dropdown selection for size: ``` &quot;switchControl&quot;: { &quot;name&quot;: &quot;size&quot;, &quot;label&quot;: &quot;Size&quot; &quot;type&quot;: &quot;SelectionType.DROPDOWN&quot;, &quot;items&quot;: [ { &quot;text&quot;: &quot;S&quot;, &quot;value&quot;: &quot;small&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;M&quot;, &quot;value&quot;: &quot;medium&quot;, &quot;selected&quot;: true }, { &quot;text&quot;: &quot;L&quot;, &quot;value&quot;: &quot;large&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;XL&quot;, &quot;value&quot;: &quot;extra_large&quot;, &quot;selected&quot;: false } ] } ```
+                    &quot;items&quot;: [
+                      { # The item in the switch control. A radio button, at most one of the items is selected.
+                        &quot;selected&quot;: True or False, # 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.
+                        &quot;text&quot;: &quot;A String&quot;, # The text to be displayed.
+                        &quot;value&quot;: &quot;A String&quot;, # The value associated with this item. The client should use this as a form input value.
+                      },
+                    ],
+                    &quot;label&quot;: &quot;A String&quot;, # The label displayed ahead of the switch control.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, the form is submitted when the selection changes. If not specified, you must specify a separate button.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;,
+                  },
+                  &quot;textInput&quot;: { # A text input is a UI item where users can input text. A text input can also have an onChange action and suggestions. # Displays a text input in this widget. For example, the following JSON creates a text input for mail address: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;mailing_address&quot;, &quot;label&quot;: &quot;Mailing Address&quot; } ``` As another example, the following JSON creates a text input for programming language with static suggestions: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;preferred_programing_language&quot;, &quot;label&quot;: &quot;Preferred Language&quot;, &quot;initialSuggestions&quot;: { &quot;items&quot;: [ { &quot;text&quot;: &quot;C++&quot; }, { &quot;text&quot;: &quot;Java&quot; }, { &quot;text&quot;: &quot;JavaScript&quot; }, { &quot;text&quot;: &quot;Python&quot; } ] } } ```
+                    &quot;autoCompleteAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The refresh function that returns suggestions based on the user&#x27;s input text. If the callback is not specified, autocomplete is done in client side based on the initial suggestion items.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;hintText&quot;: &quot;A String&quot;, # The hint text.
+                    &quot;initialSuggestions&quot;: { # A container wrapping elements necessary for showing suggestion items used in text input autocomplete. # The initial suggestions made before any user input.
+                      &quot;items&quot;: [ # A list of suggestions items which will be used in are used in autocomplete.
+                        { # A suggestion item. Only supports text for now.
+                          &quot;text&quot;: &quot;A String&quot;,
+                        },
+                      ],
+                    },
+                    &quot;label&quot;: &quot;A String&quot;, # At least one of label and hintText must be specified.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The onChange action, for example, invoke a function.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;, # The style of the text, for example, a single line or multiple lines.
+                    &quot;value&quot;: &quot;A String&quot;, # The default value when there is no input from the user.
+                  },
+                  &quot;textParagraph&quot;: { # A paragraph of text that supports formatting. See [Text formatting](workspace/add-ons/concepts/widgets#text_formatting&quot;) for details. # Displays a text paragraph in this widget. For example, the following JSON creates a bolded text: ``` &quot;textParagraph&quot;: { &quot;text&quot;: &quot; *bold text*&quot; } ```
+                    &quot;text&quot;: &quot;A String&quot;, # The text that&#x27;s shown in the widget.
+                  },
+                },
+              ],
+            },
+          ],
+        },
+      },
+    },
     &quot;type&quot;: &quot;A String&quot;, # The type of bot response.
     &quot;url&quot;: &quot;A String&quot;, # URL for users to auth or config. (Only for REQUEST_CONFIG response types.)
   },
diff --git a/docs/dyn/chat_v1.dms.html b/docs/dyn/chat_v1.dms.html
index 060f7d4..83b6c15 100644
--- a/docs/dyn/chat_v1.dms.html
+++ b/docs/dyn/chat_v1.dms.html
@@ -105,6 +105,531 @@
 
 { # A message in Hangouts Chat.
   &quot;actionResponse&quot;: { # Parameters that a bot can use to configure how it&#x27;s response is posted. # Input only. Parameters that a bot can use to configure how its response is posted.
+    &quot;dialogAction&quot;: { # Contains dialog if present as well as the ActionStatus for the request sent from user. # This response is for Dialog related events and must be accompanied by ResponseType.Dialog
+      &quot;actionStatus&quot;: { # ActionStatus represents status of a request from the bot developer&#x27;s side. In specific, for each request a bot gets, the bot developer will set both fields below in relation to what the response status and message related to status should be. # Status for either invoke dialog or submit dialog requests. This will be used to display a status and message to user if needed. For example in case of an error or success.
+        &quot;statusCode&quot;: &quot;A String&quot;, # The status code.
+        &quot;userFacingMessage&quot;: &quot;A String&quot;, # This message will be the corresponding string to the above status_code. If unset, an appropriate generic message based on the status_code will be shown to the user. If this field is set then the message will be surfaced to the user for both successes and errors.
+      },
+      &quot;dialog&quot;: { # Wrapper around the card body of the dialog. # Dialog for the request.
+        &quot;body&quot;: { # 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. ``` { &quot;header&quot;: { &quot;title&quot;: &quot;Heba Salam&quot;, &quot;subtitle&quot;: &quot;Software Engineer&quot;, &quot;imageStyle&quot;: &quot;ImageStyle.AVATAR&quot;, &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot;, &quot;imageAltText&quot;: &quot;Avatar for Heba Salam&quot; }, &quot;sections&quot; : [ { &quot;header&quot;: &quot;Contact Info&quot;, &quot;widgets&quot;: [ { &quot;decorated_text&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;content&quot;: &quot;heba.salam@example.com&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PERSON&quot; }, &quot;content&quot;: &quot;Online&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PHONE&quot; }, &quot;content&quot;: &quot;+1 (555) 555-1234&quot; } }, { &quot;buttons&quot;: [ { &quot;textButton&quot;: { &quot;text&quot;: &quot;Share&quot;, }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/share&quot; } } }, { &quot;textButton&quot;: { &quot;text&quot;: &quot;Edit&quot;, }, &quot;onClick&quot;: { &quot;action&quot;: { &quot;function&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;EDIT&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } } ] } ], &quot;collapsible&quot;: true, &quot;uncollapsibleWidgetsCount&quot;: 3 } ], &quot;cardActions&quot;: [ { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ], &quot;name&quot;: &quot;contact-card-K3wB6arF2H9L&quot; } ``` # Body of the dialog, which will be rendered in a modal. NOTE: The following fields within the objects are not supported: google.apps.card.v1.Widget.date_time_picker google.apps.card.v1.DecoratedText.SwitchControl.on_change_action google.apps.card.v1.TextInput.on_change_action google.apps.card.v1.SelectionInput.on_change_action google.apps.card.v1.DateTimePicker.on_change_action Setting the fields above will have no effect on the dialog.
+          &quot;cardActions&quot;: [ # The actions of this card. They are added to a card&#x27;s generated toolbar menu. For example, the following JSON constructs a card action menu with Settings and Send Feedback options: ``` &quot;card_actions&quot;: [ { &quot;actionLabel&quot;: &quot;Setting&quot;, &quot;onClick&quot;: { &quot;action&quot;: { &quot;functionName&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;SETTING&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } }, { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ] ```
+            { # 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.
+              &quot;actionLabel&quot;: &quot;A String&quot;, # The label that displays as the action menu item.
+              &quot;onClick&quot;: { # The onclick action for this action item.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+            },
+          ],
+          &quot;displayStyle&quot;: &quot;A String&quot;, # The display style for peekCardHeader.
+          &quot;fixedFooter&quot;: { # A persistent (sticky) footer that is added to the bottom of the card. # The fixed footer shown at the bottom of this card.
+            &quot;primaryButton&quot;: { # A button. Can be a text button or an image button. # The primary button of the fixed footer. The button must be a text button with text and color set.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+            &quot;secondaryButton&quot;: { # A button. Can be a text button or an image button. # 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.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+          },
+          &quot;header&quot;: { # The header of the card. A header usually contains a title and an image.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;name&quot;: &quot;A String&quot;, # Name of the card, which is used as a identifier for the card in card navigation.
+          &quot;peekCardHeader&quot;: { # 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.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;sections&quot;: [ # Sections are separated by a line divider.
+            { # 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.
+              &quot;collapsible&quot;: True or False, # Indicates whether this section is collapsible. If a section is collapsible, the description must be given.
+              &quot;header&quot;: &quot;A String&quot;, # The header of the section. Formatted text is supported.
+              &quot;uncollapsibleWidgetsCount&quot;: 42, # 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`.
+              &quot;widgets&quot;: [ # A section must contain at least 1 widget.
+                { # A widget is a UI element that presents texts, images, etc.
+                  &quot;buttonList&quot;: { # A list of buttons layed out horizontally. # 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: ``` &quot;buttonList&quot;: { &quot;buttons&quot;: [ &quot;button&quot;: { &quot;text&quot;: &quot;Edit&quot;, &quot;Color&quot;: { &quot;Red&quot;: 255 &quot;Green&quot;: 255 &quot;Blue&quot;: 255 } &quot;disabled&quot;: true }, &quot;button&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;INVITE&quot; &quot;altText&quot;: &quot;check calendar&quot; }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/calendar&quot; } } }, ] } ```
+                    &quot;buttons&quot;: [
+                      { # A button. Can be a text button or an image button.
+                        &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                        &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                          &quot;alpha&quot;: 3.14, # 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).
+                          &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                          &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                          &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                        },
+                        &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                        &quot;icon&quot;: { # The icon image.
+                          &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                          &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                          &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                          &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                        },
+                        &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                          &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                          &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                            &quot;onClose&quot;: &quot;A String&quot;,
+                            &quot;openAs&quot;: &quot;A String&quot;,
+                            &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                          },
+                        },
+                        &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                      },
+                    ],
+                  },
+                  &quot;dateTimePicker&quot;: { # The widget that lets users to specify a date and time. # Displays a selection/input widget for date/time. For example, the following JSON creates a date/time picker for an appointment time: ``` &quot;date_time_picker&quot;: { &quot;name&quot;: &quot;appointment_time&quot;, &quot;label&quot;: &quot;Book your appointment at:&quot;, &quot;type&quot;: &quot;DateTimePickerType.DATE_AND_TIME&quot;, &quot;valueMsEpoch&quot;: &quot;796435200000&quot; } ```
+                    &quot;label&quot;: &quot;A String&quot;, # The label for the field that displays to the user.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input that&#x27;s used in formInput, and uniquely identifies this input.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;timezoneOffsetDate&quot;: 42, # 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&#x27;s time zone setting on the client side.
+                    &quot;type&quot;: &quot;A String&quot;, # The type of the date/time picker.
+                    &quot;valueMsEpoch&quot;: &quot;A String&quot;, # 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.
+                  },
+                  &quot;decoratedText&quot;: { # 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. # Displays a decorated text item in this widget. For example, the following JSON creates a decorated text widget showing email address: ``` &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;topLabel&quot;: &quot;Email Address&quot;, &quot;content&quot;: &quot;heba.salam@example.com&quot;, &quot;bottomLabel&quot;: &quot;This is a new Email address!&quot;, &quot;switchWidget&quot;: { &quot;name&quot;: &quot;has_send_welcome_email_to_heba_salam&quot;, &quot;selected&quot;: false, &quot;controlType&quot;: &quot;ControlType.CHECKBOX&quot; } } ```
+                    &quot;bottomLabel&quot;: &quot;A String&quot;, # The formatted text label that shows below the main text.
+                    &quot;button&quot;: { # A button. Can be a text button or an image button. # A button that can be clicked to trigger an action.
+                      &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                      &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                      &quot;icon&quot;: { # The icon image.
+                        &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                        &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                        &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                        &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                      },
+                      &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                        &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                        &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                          &quot;onClose&quot;: &quot;A String&quot;,
+                          &quot;openAs&quot;: &quot;A String&quot;,
+                          &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                        },
+                      },
+                      &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                    },
+                    &quot;endIcon&quot;: { # An icon displayed after the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;icon&quot;: { # Deprecated in favor of start_icon.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;onClick&quot;: { # Only the top and bottom label and content region are clickable.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;startIcon&quot;: { # The icon displayed in front of the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;switchControl&quot;: { # A switch widget can be clicked to change its state or trigger an action.
+                      &quot;controlType&quot;: &quot;A String&quot;, # The control type, either switch or checkbox.
+                      &quot;name&quot;: &quot;A String&quot;, # The name of the switch widget that&#x27;s used in formInput.
+                      &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The action when the switch state is changed.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;selected&quot;: True or False, # If the switch is selected.
+                      &quot;value&quot;: &quot;A String&quot;, # The value is what is passed back in the callback.
+                    },
+                    &quot;text&quot;: &quot;A String&quot;, # Required. The main widget formatted text. See Text formatting for details.
+                    &quot;topLabel&quot;: &quot;A String&quot;, # The formatted text label that shows above the main text.
+                    &quot;wrapText&quot;: True or False, # The wrap text setting. If `true`, the text is wrapped and displayed in multiline. Otherwise, the text is truncated.
+                  },
+                  &quot;divider&quot;: { # A divider that appears in between widgets. # Displays a divider. For example, the following JSON creates a divider: ``` &quot;divider&quot;: { } ```
+                  },
+                  &quot;grid&quot;: { # Represents a Grid widget that displays items in a configurable grid layout. # Displays a grid with a collection of items. For example, the following JSON creates a 2 column grid with a single item: ``` &quot;grid&quot;: { &quot;title&quot;: &quot;A fine collection of items&quot;, &quot;numColumns&quot;: 2, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot;, &quot;cornerRadius&quot;: 4.0 }, &quot;items&quot;: [ &quot;image&quot;: { &quot;imageUri&quot;: &quot;https://www.example.com/image.png&quot;, &quot;cropStyle&quot;: { &quot;type&quot;: &quot;SQUARE&quot; }, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot; } }, &quot;title&quot;: &quot;An item&quot;, &quot;textAlignment&quot;: &quot;CENTER&quot; ], &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;:&quot;https://www.example.com&quot; } } } ```
+                    &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to each grid item.
+                      &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                      &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;type&quot;: &quot;A String&quot;, # The border type.
+                    },
+                    &quot;columnCount&quot;: 42, # The number of columns to display in the grid. A default value is used if this field isn&#x27;t specified, and that default value is different depending on where the grid is shown (dialog versus companion).
+                    &quot;items&quot;: [ # The items to display in the grid.
+                      { # Represents a single item in the grid layout.
+                        &quot;id&quot;: &quot;A String&quot;, # A user-specified identifier for this grid item. This identifier is returned in the parent Grid&#x27;s onClick callback parameters.
+                        &quot;image&quot;: { # The image that displays in the grid item.
+                          &quot;altText&quot;: &quot;A String&quot;, # The accessibility label for the image.
+                          &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to the image.
+                            &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                            &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                              &quot;alpha&quot;: 3.14, # 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).
+                              &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                              &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                              &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                            },
+                            &quot;type&quot;: &quot;A String&quot;, # The border type.
+                          },
+                          &quot;cropStyle&quot;: { # Represents the crop style applied to an image. # The crop style to apply to the image.
+                            &quot;aspectRatio&quot;: 3.14, # The aspect ratio to use if the crop type is `RECTANGLE_CUSTOM`.
+                            &quot;type&quot;: &quot;A String&quot;, # The crop type.
+                          },
+                          &quot;imageUri&quot;: &quot;A String&quot;, # The image URL.
+                        },
+                        &quot;layout&quot;: &quot;A String&quot;, # The layout to use for the grid item.
+                        &quot;subtitle&quot;: &quot;A String&quot;, # The grid item&#x27;s subtitle.
+                        &quot;textAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of the grid item&#x27;s text.
+                        &quot;title&quot;: &quot;A String&quot;, # The grid item&#x27;s title.
+                      },
+                    ],
+                    &quot;onClick&quot;: { # This callback is reused by each individual grid item, but with the item&#x27;s identifier and index in the items list added to the callback&#x27;s parameters.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;title&quot;: &quot;A String&quot;, # The text that displays in the grid header.
+                  },
+                  &quot;horizontalAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of this widget.
+                  &quot;image&quot;: { # An image that is specified by a URL and can have an onClick action. # Displays an image in this widget. For example, the following JSON creates an image with alternative text: ``` &quot;image&quot;: { &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot; &quot;altText&quot;: &quot;Avatar for Heba Salam&quot; } ```
+                    &quot;altText&quot;: &quot;A String&quot;, # The alternative text of this image, used for accessibility.
+                    &quot;imageUrl&quot;: &quot;A String&quot;, # An image URL.
+                    &quot;onClick&quot;: {
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                  },
+                  &quot;selectionInput&quot;: { # A widget that creates a UI item (for example, a drop-down list) with options for users to select. # Displays a switch control in this widget. For example, the following JSON creates a dropdown selection for size: ``` &quot;switchControl&quot;: { &quot;name&quot;: &quot;size&quot;, &quot;label&quot;: &quot;Size&quot; &quot;type&quot;: &quot;SelectionType.DROPDOWN&quot;, &quot;items&quot;: [ { &quot;text&quot;: &quot;S&quot;, &quot;value&quot;: &quot;small&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;M&quot;, &quot;value&quot;: &quot;medium&quot;, &quot;selected&quot;: true }, { &quot;text&quot;: &quot;L&quot;, &quot;value&quot;: &quot;large&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;XL&quot;, &quot;value&quot;: &quot;extra_large&quot;, &quot;selected&quot;: false } ] } ```
+                    &quot;items&quot;: [
+                      { # The item in the switch control. A radio button, at most one of the items is selected.
+                        &quot;selected&quot;: True or False, # 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.
+                        &quot;text&quot;: &quot;A String&quot;, # The text to be displayed.
+                        &quot;value&quot;: &quot;A String&quot;, # The value associated with this item. The client should use this as a form input value.
+                      },
+                    ],
+                    &quot;label&quot;: &quot;A String&quot;, # The label displayed ahead of the switch control.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, the form is submitted when the selection changes. If not specified, you must specify a separate button.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;,
+                  },
+                  &quot;textInput&quot;: { # A text input is a UI item where users can input text. A text input can also have an onChange action and suggestions. # Displays a text input in this widget. For example, the following JSON creates a text input for mail address: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;mailing_address&quot;, &quot;label&quot;: &quot;Mailing Address&quot; } ``` As another example, the following JSON creates a text input for programming language with static suggestions: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;preferred_programing_language&quot;, &quot;label&quot;: &quot;Preferred Language&quot;, &quot;initialSuggestions&quot;: { &quot;items&quot;: [ { &quot;text&quot;: &quot;C++&quot; }, { &quot;text&quot;: &quot;Java&quot; }, { &quot;text&quot;: &quot;JavaScript&quot; }, { &quot;text&quot;: &quot;Python&quot; } ] } } ```
+                    &quot;autoCompleteAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The refresh function that returns suggestions based on the user&#x27;s input text. If the callback is not specified, autocomplete is done in client side based on the initial suggestion items.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;hintText&quot;: &quot;A String&quot;, # The hint text.
+                    &quot;initialSuggestions&quot;: { # A container wrapping elements necessary for showing suggestion items used in text input autocomplete. # The initial suggestions made before any user input.
+                      &quot;items&quot;: [ # A list of suggestions items which will be used in are used in autocomplete.
+                        { # A suggestion item. Only supports text for now.
+                          &quot;text&quot;: &quot;A String&quot;,
+                        },
+                      ],
+                    },
+                    &quot;label&quot;: &quot;A String&quot;, # At least one of label and hintText must be specified.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The onChange action, for example, invoke a function.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;, # The style of the text, for example, a single line or multiple lines.
+                    &quot;value&quot;: &quot;A String&quot;, # The default value when there is no input from the user.
+                  },
+                  &quot;textParagraph&quot;: { # A paragraph of text that supports formatting. See [Text formatting](workspace/add-ons/concepts/widgets#text_formatting&quot;) for details. # Displays a text paragraph in this widget. For example, the following JSON creates a bolded text: ``` &quot;textParagraph&quot;: { &quot;text&quot;: &quot; *bold text*&quot; } ```
+                    &quot;text&quot;: &quot;A String&quot;, # The text that&#x27;s shown in the widget.
+                  },
+                },
+              ],
+            },
+          ],
+        },
+      },
+    },
     &quot;type&quot;: &quot;A String&quot;, # The type of bot response.
     &quot;url&quot;: &quot;A String&quot;, # URL for users to auth or config. (Only for REQUEST_CONFIG response types.)
   },
@@ -353,6 +878,531 @@
 
     { # A message in Hangouts Chat.
   &quot;actionResponse&quot;: { # Parameters that a bot can use to configure how it&#x27;s response is posted. # Input only. Parameters that a bot can use to configure how its response is posted.
+    &quot;dialogAction&quot;: { # Contains dialog if present as well as the ActionStatus for the request sent from user. # This response is for Dialog related events and must be accompanied by ResponseType.Dialog
+      &quot;actionStatus&quot;: { # ActionStatus represents status of a request from the bot developer&#x27;s side. In specific, for each request a bot gets, the bot developer will set both fields below in relation to what the response status and message related to status should be. # Status for either invoke dialog or submit dialog requests. This will be used to display a status and message to user if needed. For example in case of an error or success.
+        &quot;statusCode&quot;: &quot;A String&quot;, # The status code.
+        &quot;userFacingMessage&quot;: &quot;A String&quot;, # This message will be the corresponding string to the above status_code. If unset, an appropriate generic message based on the status_code will be shown to the user. If this field is set then the message will be surfaced to the user for both successes and errors.
+      },
+      &quot;dialog&quot;: { # Wrapper around the card body of the dialog. # Dialog for the request.
+        &quot;body&quot;: { # 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. ``` { &quot;header&quot;: { &quot;title&quot;: &quot;Heba Salam&quot;, &quot;subtitle&quot;: &quot;Software Engineer&quot;, &quot;imageStyle&quot;: &quot;ImageStyle.AVATAR&quot;, &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot;, &quot;imageAltText&quot;: &quot;Avatar for Heba Salam&quot; }, &quot;sections&quot; : [ { &quot;header&quot;: &quot;Contact Info&quot;, &quot;widgets&quot;: [ { &quot;decorated_text&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;content&quot;: &quot;heba.salam@example.com&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PERSON&quot; }, &quot;content&quot;: &quot;Online&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PHONE&quot; }, &quot;content&quot;: &quot;+1 (555) 555-1234&quot; } }, { &quot;buttons&quot;: [ { &quot;textButton&quot;: { &quot;text&quot;: &quot;Share&quot;, }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/share&quot; } } }, { &quot;textButton&quot;: { &quot;text&quot;: &quot;Edit&quot;, }, &quot;onClick&quot;: { &quot;action&quot;: { &quot;function&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;EDIT&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } } ] } ], &quot;collapsible&quot;: true, &quot;uncollapsibleWidgetsCount&quot;: 3 } ], &quot;cardActions&quot;: [ { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ], &quot;name&quot;: &quot;contact-card-K3wB6arF2H9L&quot; } ``` # Body of the dialog, which will be rendered in a modal. NOTE: The following fields within the objects are not supported: google.apps.card.v1.Widget.date_time_picker google.apps.card.v1.DecoratedText.SwitchControl.on_change_action google.apps.card.v1.TextInput.on_change_action google.apps.card.v1.SelectionInput.on_change_action google.apps.card.v1.DateTimePicker.on_change_action Setting the fields above will have no effect on the dialog.
+          &quot;cardActions&quot;: [ # The actions of this card. They are added to a card&#x27;s generated toolbar menu. For example, the following JSON constructs a card action menu with Settings and Send Feedback options: ``` &quot;card_actions&quot;: [ { &quot;actionLabel&quot;: &quot;Setting&quot;, &quot;onClick&quot;: { &quot;action&quot;: { &quot;functionName&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;SETTING&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } }, { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ] ```
+            { # 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.
+              &quot;actionLabel&quot;: &quot;A String&quot;, # The label that displays as the action menu item.
+              &quot;onClick&quot;: { # The onclick action for this action item.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+            },
+          ],
+          &quot;displayStyle&quot;: &quot;A String&quot;, # The display style for peekCardHeader.
+          &quot;fixedFooter&quot;: { # A persistent (sticky) footer that is added to the bottom of the card. # The fixed footer shown at the bottom of this card.
+            &quot;primaryButton&quot;: { # A button. Can be a text button or an image button. # The primary button of the fixed footer. The button must be a text button with text and color set.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+            &quot;secondaryButton&quot;: { # A button. Can be a text button or an image button. # 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.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+          },
+          &quot;header&quot;: { # The header of the card. A header usually contains a title and an image.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;name&quot;: &quot;A String&quot;, # Name of the card, which is used as a identifier for the card in card navigation.
+          &quot;peekCardHeader&quot;: { # 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.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;sections&quot;: [ # Sections are separated by a line divider.
+            { # 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.
+              &quot;collapsible&quot;: True or False, # Indicates whether this section is collapsible. If a section is collapsible, the description must be given.
+              &quot;header&quot;: &quot;A String&quot;, # The header of the section. Formatted text is supported.
+              &quot;uncollapsibleWidgetsCount&quot;: 42, # 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`.
+              &quot;widgets&quot;: [ # A section must contain at least 1 widget.
+                { # A widget is a UI element that presents texts, images, etc.
+                  &quot;buttonList&quot;: { # A list of buttons layed out horizontally. # 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: ``` &quot;buttonList&quot;: { &quot;buttons&quot;: [ &quot;button&quot;: { &quot;text&quot;: &quot;Edit&quot;, &quot;Color&quot;: { &quot;Red&quot;: 255 &quot;Green&quot;: 255 &quot;Blue&quot;: 255 } &quot;disabled&quot;: true }, &quot;button&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;INVITE&quot; &quot;altText&quot;: &quot;check calendar&quot; }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/calendar&quot; } } }, ] } ```
+                    &quot;buttons&quot;: [
+                      { # A button. Can be a text button or an image button.
+                        &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                        &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                          &quot;alpha&quot;: 3.14, # 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).
+                          &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                          &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                          &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                        },
+                        &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                        &quot;icon&quot;: { # The icon image.
+                          &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                          &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                          &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                          &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                        },
+                        &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                          &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                          &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                            &quot;onClose&quot;: &quot;A String&quot;,
+                            &quot;openAs&quot;: &quot;A String&quot;,
+                            &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                          },
+                        },
+                        &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                      },
+                    ],
+                  },
+                  &quot;dateTimePicker&quot;: { # The widget that lets users to specify a date and time. # Displays a selection/input widget for date/time. For example, the following JSON creates a date/time picker for an appointment time: ``` &quot;date_time_picker&quot;: { &quot;name&quot;: &quot;appointment_time&quot;, &quot;label&quot;: &quot;Book your appointment at:&quot;, &quot;type&quot;: &quot;DateTimePickerType.DATE_AND_TIME&quot;, &quot;valueMsEpoch&quot;: &quot;796435200000&quot; } ```
+                    &quot;label&quot;: &quot;A String&quot;, # The label for the field that displays to the user.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input that&#x27;s used in formInput, and uniquely identifies this input.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;timezoneOffsetDate&quot;: 42, # 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&#x27;s time zone setting on the client side.
+                    &quot;type&quot;: &quot;A String&quot;, # The type of the date/time picker.
+                    &quot;valueMsEpoch&quot;: &quot;A String&quot;, # 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.
+                  },
+                  &quot;decoratedText&quot;: { # 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. # Displays a decorated text item in this widget. For example, the following JSON creates a decorated text widget showing email address: ``` &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;topLabel&quot;: &quot;Email Address&quot;, &quot;content&quot;: &quot;heba.salam@example.com&quot;, &quot;bottomLabel&quot;: &quot;This is a new Email address!&quot;, &quot;switchWidget&quot;: { &quot;name&quot;: &quot;has_send_welcome_email_to_heba_salam&quot;, &quot;selected&quot;: false, &quot;controlType&quot;: &quot;ControlType.CHECKBOX&quot; } } ```
+                    &quot;bottomLabel&quot;: &quot;A String&quot;, # The formatted text label that shows below the main text.
+                    &quot;button&quot;: { # A button. Can be a text button or an image button. # A button that can be clicked to trigger an action.
+                      &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                      &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                      &quot;icon&quot;: { # The icon image.
+                        &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                        &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                        &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                        &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                      },
+                      &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                        &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                        &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                          &quot;onClose&quot;: &quot;A String&quot;,
+                          &quot;openAs&quot;: &quot;A String&quot;,
+                          &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                        },
+                      },
+                      &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                    },
+                    &quot;endIcon&quot;: { # An icon displayed after the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;icon&quot;: { # Deprecated in favor of start_icon.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;onClick&quot;: { # Only the top and bottom label and content region are clickable.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;startIcon&quot;: { # The icon displayed in front of the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;switchControl&quot;: { # A switch widget can be clicked to change its state or trigger an action.
+                      &quot;controlType&quot;: &quot;A String&quot;, # The control type, either switch or checkbox.
+                      &quot;name&quot;: &quot;A String&quot;, # The name of the switch widget that&#x27;s used in formInput.
+                      &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The action when the switch state is changed.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;selected&quot;: True or False, # If the switch is selected.
+                      &quot;value&quot;: &quot;A String&quot;, # The value is what is passed back in the callback.
+                    },
+                    &quot;text&quot;: &quot;A String&quot;, # Required. The main widget formatted text. See Text formatting for details.
+                    &quot;topLabel&quot;: &quot;A String&quot;, # The formatted text label that shows above the main text.
+                    &quot;wrapText&quot;: True or False, # The wrap text setting. If `true`, the text is wrapped and displayed in multiline. Otherwise, the text is truncated.
+                  },
+                  &quot;divider&quot;: { # A divider that appears in between widgets. # Displays a divider. For example, the following JSON creates a divider: ``` &quot;divider&quot;: { } ```
+                  },
+                  &quot;grid&quot;: { # Represents a Grid widget that displays items in a configurable grid layout. # Displays a grid with a collection of items. For example, the following JSON creates a 2 column grid with a single item: ``` &quot;grid&quot;: { &quot;title&quot;: &quot;A fine collection of items&quot;, &quot;numColumns&quot;: 2, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot;, &quot;cornerRadius&quot;: 4.0 }, &quot;items&quot;: [ &quot;image&quot;: { &quot;imageUri&quot;: &quot;https://www.example.com/image.png&quot;, &quot;cropStyle&quot;: { &quot;type&quot;: &quot;SQUARE&quot; }, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot; } }, &quot;title&quot;: &quot;An item&quot;, &quot;textAlignment&quot;: &quot;CENTER&quot; ], &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;:&quot;https://www.example.com&quot; } } } ```
+                    &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to each grid item.
+                      &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                      &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;type&quot;: &quot;A String&quot;, # The border type.
+                    },
+                    &quot;columnCount&quot;: 42, # The number of columns to display in the grid. A default value is used if this field isn&#x27;t specified, and that default value is different depending on where the grid is shown (dialog versus companion).
+                    &quot;items&quot;: [ # The items to display in the grid.
+                      { # Represents a single item in the grid layout.
+                        &quot;id&quot;: &quot;A String&quot;, # A user-specified identifier for this grid item. This identifier is returned in the parent Grid&#x27;s onClick callback parameters.
+                        &quot;image&quot;: { # The image that displays in the grid item.
+                          &quot;altText&quot;: &quot;A String&quot;, # The accessibility label for the image.
+                          &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to the image.
+                            &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                            &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                              &quot;alpha&quot;: 3.14, # 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).
+                              &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                              &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                              &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                            },
+                            &quot;type&quot;: &quot;A String&quot;, # The border type.
+                          },
+                          &quot;cropStyle&quot;: { # Represents the crop style applied to an image. # The crop style to apply to the image.
+                            &quot;aspectRatio&quot;: 3.14, # The aspect ratio to use if the crop type is `RECTANGLE_CUSTOM`.
+                            &quot;type&quot;: &quot;A String&quot;, # The crop type.
+                          },
+                          &quot;imageUri&quot;: &quot;A String&quot;, # The image URL.
+                        },
+                        &quot;layout&quot;: &quot;A String&quot;, # The layout to use for the grid item.
+                        &quot;subtitle&quot;: &quot;A String&quot;, # The grid item&#x27;s subtitle.
+                        &quot;textAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of the grid item&#x27;s text.
+                        &quot;title&quot;: &quot;A String&quot;, # The grid item&#x27;s title.
+                      },
+                    ],
+                    &quot;onClick&quot;: { # This callback is reused by each individual grid item, but with the item&#x27;s identifier and index in the items list added to the callback&#x27;s parameters.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;title&quot;: &quot;A String&quot;, # The text that displays in the grid header.
+                  },
+                  &quot;horizontalAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of this widget.
+                  &quot;image&quot;: { # An image that is specified by a URL and can have an onClick action. # Displays an image in this widget. For example, the following JSON creates an image with alternative text: ``` &quot;image&quot;: { &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot; &quot;altText&quot;: &quot;Avatar for Heba Salam&quot; } ```
+                    &quot;altText&quot;: &quot;A String&quot;, # The alternative text of this image, used for accessibility.
+                    &quot;imageUrl&quot;: &quot;A String&quot;, # An image URL.
+                    &quot;onClick&quot;: {
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                  },
+                  &quot;selectionInput&quot;: { # A widget that creates a UI item (for example, a drop-down list) with options for users to select. # Displays a switch control in this widget. For example, the following JSON creates a dropdown selection for size: ``` &quot;switchControl&quot;: { &quot;name&quot;: &quot;size&quot;, &quot;label&quot;: &quot;Size&quot; &quot;type&quot;: &quot;SelectionType.DROPDOWN&quot;, &quot;items&quot;: [ { &quot;text&quot;: &quot;S&quot;, &quot;value&quot;: &quot;small&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;M&quot;, &quot;value&quot;: &quot;medium&quot;, &quot;selected&quot;: true }, { &quot;text&quot;: &quot;L&quot;, &quot;value&quot;: &quot;large&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;XL&quot;, &quot;value&quot;: &quot;extra_large&quot;, &quot;selected&quot;: false } ] } ```
+                    &quot;items&quot;: [
+                      { # The item in the switch control. A radio button, at most one of the items is selected.
+                        &quot;selected&quot;: True or False, # 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.
+                        &quot;text&quot;: &quot;A String&quot;, # The text to be displayed.
+                        &quot;value&quot;: &quot;A String&quot;, # The value associated with this item. The client should use this as a form input value.
+                      },
+                    ],
+                    &quot;label&quot;: &quot;A String&quot;, # The label displayed ahead of the switch control.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, the form is submitted when the selection changes. If not specified, you must specify a separate button.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;,
+                  },
+                  &quot;textInput&quot;: { # A text input is a UI item where users can input text. A text input can also have an onChange action and suggestions. # Displays a text input in this widget. For example, the following JSON creates a text input for mail address: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;mailing_address&quot;, &quot;label&quot;: &quot;Mailing Address&quot; } ``` As another example, the following JSON creates a text input for programming language with static suggestions: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;preferred_programing_language&quot;, &quot;label&quot;: &quot;Preferred Language&quot;, &quot;initialSuggestions&quot;: { &quot;items&quot;: [ { &quot;text&quot;: &quot;C++&quot; }, { &quot;text&quot;: &quot;Java&quot; }, { &quot;text&quot;: &quot;JavaScript&quot; }, { &quot;text&quot;: &quot;Python&quot; } ] } } ```
+                    &quot;autoCompleteAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The refresh function that returns suggestions based on the user&#x27;s input text. If the callback is not specified, autocomplete is done in client side based on the initial suggestion items.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;hintText&quot;: &quot;A String&quot;, # The hint text.
+                    &quot;initialSuggestions&quot;: { # A container wrapping elements necessary for showing suggestion items used in text input autocomplete. # The initial suggestions made before any user input.
+                      &quot;items&quot;: [ # A list of suggestions items which will be used in are used in autocomplete.
+                        { # A suggestion item. Only supports text for now.
+                          &quot;text&quot;: &quot;A String&quot;,
+                        },
+                      ],
+                    },
+                    &quot;label&quot;: &quot;A String&quot;, # At least one of label and hintText must be specified.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The onChange action, for example, invoke a function.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;, # The style of the text, for example, a single line or multiple lines.
+                    &quot;value&quot;: &quot;A String&quot;, # The default value when there is no input from the user.
+                  },
+                  &quot;textParagraph&quot;: { # A paragraph of text that supports formatting. See [Text formatting](workspace/add-ons/concepts/widgets#text_formatting&quot;) for details. # Displays a text paragraph in this widget. For example, the following JSON creates a bolded text: ``` &quot;textParagraph&quot;: { &quot;text&quot;: &quot; *bold text*&quot; } ```
+                    &quot;text&quot;: &quot;A String&quot;, # The text that&#x27;s shown in the widget.
+                  },
+                },
+              ],
+            },
+          ],
+        },
+      },
+    },
     &quot;type&quot;: &quot;A String&quot;, # The type of bot response.
     &quot;url&quot;: &quot;A String&quot;, # URL for users to auth or config. (Only for REQUEST_CONFIG response types.)
   },
@@ -602,6 +1652,531 @@
 
 { # A message in Hangouts Chat.
   &quot;actionResponse&quot;: { # Parameters that a bot can use to configure how it&#x27;s response is posted. # Input only. Parameters that a bot can use to configure how its response is posted.
+    &quot;dialogAction&quot;: { # Contains dialog if present as well as the ActionStatus for the request sent from user. # This response is for Dialog related events and must be accompanied by ResponseType.Dialog
+      &quot;actionStatus&quot;: { # ActionStatus represents status of a request from the bot developer&#x27;s side. In specific, for each request a bot gets, the bot developer will set both fields below in relation to what the response status and message related to status should be. # Status for either invoke dialog or submit dialog requests. This will be used to display a status and message to user if needed. For example in case of an error or success.
+        &quot;statusCode&quot;: &quot;A String&quot;, # The status code.
+        &quot;userFacingMessage&quot;: &quot;A String&quot;, # This message will be the corresponding string to the above status_code. If unset, an appropriate generic message based on the status_code will be shown to the user. If this field is set then the message will be surfaced to the user for both successes and errors.
+      },
+      &quot;dialog&quot;: { # Wrapper around the card body of the dialog. # Dialog for the request.
+        &quot;body&quot;: { # 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. ``` { &quot;header&quot;: { &quot;title&quot;: &quot;Heba Salam&quot;, &quot;subtitle&quot;: &quot;Software Engineer&quot;, &quot;imageStyle&quot;: &quot;ImageStyle.AVATAR&quot;, &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot;, &quot;imageAltText&quot;: &quot;Avatar for Heba Salam&quot; }, &quot;sections&quot; : [ { &quot;header&quot;: &quot;Contact Info&quot;, &quot;widgets&quot;: [ { &quot;decorated_text&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;content&quot;: &quot;heba.salam@example.com&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PERSON&quot; }, &quot;content&quot;: &quot;Online&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PHONE&quot; }, &quot;content&quot;: &quot;+1 (555) 555-1234&quot; } }, { &quot;buttons&quot;: [ { &quot;textButton&quot;: { &quot;text&quot;: &quot;Share&quot;, }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/share&quot; } } }, { &quot;textButton&quot;: { &quot;text&quot;: &quot;Edit&quot;, }, &quot;onClick&quot;: { &quot;action&quot;: { &quot;function&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;EDIT&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } } ] } ], &quot;collapsible&quot;: true, &quot;uncollapsibleWidgetsCount&quot;: 3 } ], &quot;cardActions&quot;: [ { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ], &quot;name&quot;: &quot;contact-card-K3wB6arF2H9L&quot; } ``` # Body of the dialog, which will be rendered in a modal. NOTE: The following fields within the objects are not supported: google.apps.card.v1.Widget.date_time_picker google.apps.card.v1.DecoratedText.SwitchControl.on_change_action google.apps.card.v1.TextInput.on_change_action google.apps.card.v1.SelectionInput.on_change_action google.apps.card.v1.DateTimePicker.on_change_action Setting the fields above will have no effect on the dialog.
+          &quot;cardActions&quot;: [ # The actions of this card. They are added to a card&#x27;s generated toolbar menu. For example, the following JSON constructs a card action menu with Settings and Send Feedback options: ``` &quot;card_actions&quot;: [ { &quot;actionLabel&quot;: &quot;Setting&quot;, &quot;onClick&quot;: { &quot;action&quot;: { &quot;functionName&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;SETTING&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } }, { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ] ```
+            { # 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.
+              &quot;actionLabel&quot;: &quot;A String&quot;, # The label that displays as the action menu item.
+              &quot;onClick&quot;: { # The onclick action for this action item.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+            },
+          ],
+          &quot;displayStyle&quot;: &quot;A String&quot;, # The display style for peekCardHeader.
+          &quot;fixedFooter&quot;: { # A persistent (sticky) footer that is added to the bottom of the card. # The fixed footer shown at the bottom of this card.
+            &quot;primaryButton&quot;: { # A button. Can be a text button or an image button. # The primary button of the fixed footer. The button must be a text button with text and color set.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+            &quot;secondaryButton&quot;: { # A button. Can be a text button or an image button. # 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.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+          },
+          &quot;header&quot;: { # The header of the card. A header usually contains a title and an image.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;name&quot;: &quot;A String&quot;, # Name of the card, which is used as a identifier for the card in card navigation.
+          &quot;peekCardHeader&quot;: { # 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.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;sections&quot;: [ # Sections are separated by a line divider.
+            { # 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.
+              &quot;collapsible&quot;: True or False, # Indicates whether this section is collapsible. If a section is collapsible, the description must be given.
+              &quot;header&quot;: &quot;A String&quot;, # The header of the section. Formatted text is supported.
+              &quot;uncollapsibleWidgetsCount&quot;: 42, # 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`.
+              &quot;widgets&quot;: [ # A section must contain at least 1 widget.
+                { # A widget is a UI element that presents texts, images, etc.
+                  &quot;buttonList&quot;: { # A list of buttons layed out horizontally. # 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: ``` &quot;buttonList&quot;: { &quot;buttons&quot;: [ &quot;button&quot;: { &quot;text&quot;: &quot;Edit&quot;, &quot;Color&quot;: { &quot;Red&quot;: 255 &quot;Green&quot;: 255 &quot;Blue&quot;: 255 } &quot;disabled&quot;: true }, &quot;button&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;INVITE&quot; &quot;altText&quot;: &quot;check calendar&quot; }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/calendar&quot; } } }, ] } ```
+                    &quot;buttons&quot;: [
+                      { # A button. Can be a text button or an image button.
+                        &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                        &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                          &quot;alpha&quot;: 3.14, # 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).
+                          &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                          &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                          &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                        },
+                        &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                        &quot;icon&quot;: { # The icon image.
+                          &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                          &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                          &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                          &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                        },
+                        &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                          &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                          &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                            &quot;onClose&quot;: &quot;A String&quot;,
+                            &quot;openAs&quot;: &quot;A String&quot;,
+                            &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                          },
+                        },
+                        &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                      },
+                    ],
+                  },
+                  &quot;dateTimePicker&quot;: { # The widget that lets users to specify a date and time. # Displays a selection/input widget for date/time. For example, the following JSON creates a date/time picker for an appointment time: ``` &quot;date_time_picker&quot;: { &quot;name&quot;: &quot;appointment_time&quot;, &quot;label&quot;: &quot;Book your appointment at:&quot;, &quot;type&quot;: &quot;DateTimePickerType.DATE_AND_TIME&quot;, &quot;valueMsEpoch&quot;: &quot;796435200000&quot; } ```
+                    &quot;label&quot;: &quot;A String&quot;, # The label for the field that displays to the user.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input that&#x27;s used in formInput, and uniquely identifies this input.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;timezoneOffsetDate&quot;: 42, # 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&#x27;s time zone setting on the client side.
+                    &quot;type&quot;: &quot;A String&quot;, # The type of the date/time picker.
+                    &quot;valueMsEpoch&quot;: &quot;A String&quot;, # 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.
+                  },
+                  &quot;decoratedText&quot;: { # 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. # Displays a decorated text item in this widget. For example, the following JSON creates a decorated text widget showing email address: ``` &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;topLabel&quot;: &quot;Email Address&quot;, &quot;content&quot;: &quot;heba.salam@example.com&quot;, &quot;bottomLabel&quot;: &quot;This is a new Email address!&quot;, &quot;switchWidget&quot;: { &quot;name&quot;: &quot;has_send_welcome_email_to_heba_salam&quot;, &quot;selected&quot;: false, &quot;controlType&quot;: &quot;ControlType.CHECKBOX&quot; } } ```
+                    &quot;bottomLabel&quot;: &quot;A String&quot;, # The formatted text label that shows below the main text.
+                    &quot;button&quot;: { # A button. Can be a text button or an image button. # A button that can be clicked to trigger an action.
+                      &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                      &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                      &quot;icon&quot;: { # The icon image.
+                        &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                        &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                        &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                        &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                      },
+                      &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                        &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                        &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                          &quot;onClose&quot;: &quot;A String&quot;,
+                          &quot;openAs&quot;: &quot;A String&quot;,
+                          &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                        },
+                      },
+                      &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                    },
+                    &quot;endIcon&quot;: { # An icon displayed after the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;icon&quot;: { # Deprecated in favor of start_icon.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;onClick&quot;: { # Only the top and bottom label and content region are clickable.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;startIcon&quot;: { # The icon displayed in front of the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;switchControl&quot;: { # A switch widget can be clicked to change its state or trigger an action.
+                      &quot;controlType&quot;: &quot;A String&quot;, # The control type, either switch or checkbox.
+                      &quot;name&quot;: &quot;A String&quot;, # The name of the switch widget that&#x27;s used in formInput.
+                      &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The action when the switch state is changed.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;selected&quot;: True or False, # If the switch is selected.
+                      &quot;value&quot;: &quot;A String&quot;, # The value is what is passed back in the callback.
+                    },
+                    &quot;text&quot;: &quot;A String&quot;, # Required. The main widget formatted text. See Text formatting for details.
+                    &quot;topLabel&quot;: &quot;A String&quot;, # The formatted text label that shows above the main text.
+                    &quot;wrapText&quot;: True or False, # The wrap text setting. If `true`, the text is wrapped and displayed in multiline. Otherwise, the text is truncated.
+                  },
+                  &quot;divider&quot;: { # A divider that appears in between widgets. # Displays a divider. For example, the following JSON creates a divider: ``` &quot;divider&quot;: { } ```
+                  },
+                  &quot;grid&quot;: { # Represents a Grid widget that displays items in a configurable grid layout. # Displays a grid with a collection of items. For example, the following JSON creates a 2 column grid with a single item: ``` &quot;grid&quot;: { &quot;title&quot;: &quot;A fine collection of items&quot;, &quot;numColumns&quot;: 2, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot;, &quot;cornerRadius&quot;: 4.0 }, &quot;items&quot;: [ &quot;image&quot;: { &quot;imageUri&quot;: &quot;https://www.example.com/image.png&quot;, &quot;cropStyle&quot;: { &quot;type&quot;: &quot;SQUARE&quot; }, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot; } }, &quot;title&quot;: &quot;An item&quot;, &quot;textAlignment&quot;: &quot;CENTER&quot; ], &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;:&quot;https://www.example.com&quot; } } } ```
+                    &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to each grid item.
+                      &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                      &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;type&quot;: &quot;A String&quot;, # The border type.
+                    },
+                    &quot;columnCount&quot;: 42, # The number of columns to display in the grid. A default value is used if this field isn&#x27;t specified, and that default value is different depending on where the grid is shown (dialog versus companion).
+                    &quot;items&quot;: [ # The items to display in the grid.
+                      { # Represents a single item in the grid layout.
+                        &quot;id&quot;: &quot;A String&quot;, # A user-specified identifier for this grid item. This identifier is returned in the parent Grid&#x27;s onClick callback parameters.
+                        &quot;image&quot;: { # The image that displays in the grid item.
+                          &quot;altText&quot;: &quot;A String&quot;, # The accessibility label for the image.
+                          &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to the image.
+                            &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                            &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                              &quot;alpha&quot;: 3.14, # 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).
+                              &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                              &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                              &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                            },
+                            &quot;type&quot;: &quot;A String&quot;, # The border type.
+                          },
+                          &quot;cropStyle&quot;: { # Represents the crop style applied to an image. # The crop style to apply to the image.
+                            &quot;aspectRatio&quot;: 3.14, # The aspect ratio to use if the crop type is `RECTANGLE_CUSTOM`.
+                            &quot;type&quot;: &quot;A String&quot;, # The crop type.
+                          },
+                          &quot;imageUri&quot;: &quot;A String&quot;, # The image URL.
+                        },
+                        &quot;layout&quot;: &quot;A String&quot;, # The layout to use for the grid item.
+                        &quot;subtitle&quot;: &quot;A String&quot;, # The grid item&#x27;s subtitle.
+                        &quot;textAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of the grid item&#x27;s text.
+                        &quot;title&quot;: &quot;A String&quot;, # The grid item&#x27;s title.
+                      },
+                    ],
+                    &quot;onClick&quot;: { # This callback is reused by each individual grid item, but with the item&#x27;s identifier and index in the items list added to the callback&#x27;s parameters.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;title&quot;: &quot;A String&quot;, # The text that displays in the grid header.
+                  },
+                  &quot;horizontalAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of this widget.
+                  &quot;image&quot;: { # An image that is specified by a URL and can have an onClick action. # Displays an image in this widget. For example, the following JSON creates an image with alternative text: ``` &quot;image&quot;: { &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot; &quot;altText&quot;: &quot;Avatar for Heba Salam&quot; } ```
+                    &quot;altText&quot;: &quot;A String&quot;, # The alternative text of this image, used for accessibility.
+                    &quot;imageUrl&quot;: &quot;A String&quot;, # An image URL.
+                    &quot;onClick&quot;: {
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                  },
+                  &quot;selectionInput&quot;: { # A widget that creates a UI item (for example, a drop-down list) with options for users to select. # Displays a switch control in this widget. For example, the following JSON creates a dropdown selection for size: ``` &quot;switchControl&quot;: { &quot;name&quot;: &quot;size&quot;, &quot;label&quot;: &quot;Size&quot; &quot;type&quot;: &quot;SelectionType.DROPDOWN&quot;, &quot;items&quot;: [ { &quot;text&quot;: &quot;S&quot;, &quot;value&quot;: &quot;small&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;M&quot;, &quot;value&quot;: &quot;medium&quot;, &quot;selected&quot;: true }, { &quot;text&quot;: &quot;L&quot;, &quot;value&quot;: &quot;large&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;XL&quot;, &quot;value&quot;: &quot;extra_large&quot;, &quot;selected&quot;: false } ] } ```
+                    &quot;items&quot;: [
+                      { # The item in the switch control. A radio button, at most one of the items is selected.
+                        &quot;selected&quot;: True or False, # 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.
+                        &quot;text&quot;: &quot;A String&quot;, # The text to be displayed.
+                        &quot;value&quot;: &quot;A String&quot;, # The value associated with this item. The client should use this as a form input value.
+                      },
+                    ],
+                    &quot;label&quot;: &quot;A String&quot;, # The label displayed ahead of the switch control.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, the form is submitted when the selection changes. If not specified, you must specify a separate button.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;,
+                  },
+                  &quot;textInput&quot;: { # A text input is a UI item where users can input text. A text input can also have an onChange action and suggestions. # Displays a text input in this widget. For example, the following JSON creates a text input for mail address: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;mailing_address&quot;, &quot;label&quot;: &quot;Mailing Address&quot; } ``` As another example, the following JSON creates a text input for programming language with static suggestions: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;preferred_programing_language&quot;, &quot;label&quot;: &quot;Preferred Language&quot;, &quot;initialSuggestions&quot;: { &quot;items&quot;: [ { &quot;text&quot;: &quot;C++&quot; }, { &quot;text&quot;: &quot;Java&quot; }, { &quot;text&quot;: &quot;JavaScript&quot; }, { &quot;text&quot;: &quot;Python&quot; } ] } } ```
+                    &quot;autoCompleteAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The refresh function that returns suggestions based on the user&#x27;s input text. If the callback is not specified, autocomplete is done in client side based on the initial suggestion items.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;hintText&quot;: &quot;A String&quot;, # The hint text.
+                    &quot;initialSuggestions&quot;: { # A container wrapping elements necessary for showing suggestion items used in text input autocomplete. # The initial suggestions made before any user input.
+                      &quot;items&quot;: [ # A list of suggestions items which will be used in are used in autocomplete.
+                        { # A suggestion item. Only supports text for now.
+                          &quot;text&quot;: &quot;A String&quot;,
+                        },
+                      ],
+                    },
+                    &quot;label&quot;: &quot;A String&quot;, # At least one of label and hintText must be specified.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The onChange action, for example, invoke a function.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;, # The style of the text, for example, a single line or multiple lines.
+                    &quot;value&quot;: &quot;A String&quot;, # The default value when there is no input from the user.
+                  },
+                  &quot;textParagraph&quot;: { # A paragraph of text that supports formatting. See [Text formatting](workspace/add-ons/concepts/widgets#text_formatting&quot;) for details. # Displays a text paragraph in this widget. For example, the following JSON creates a bolded text: ``` &quot;textParagraph&quot;: { &quot;text&quot;: &quot; *bold text*&quot; } ```
+                    &quot;text&quot;: &quot;A String&quot;, # The text that&#x27;s shown in the widget.
+                  },
+                },
+              ],
+            },
+          ],
+        },
+      },
+    },
     &quot;type&quot;: &quot;A String&quot;, # The type of bot response.
     &quot;url&quot;: &quot;A String&quot;, # URL for users to auth or config. (Only for REQUEST_CONFIG response types.)
   },
@@ -850,6 +2425,531 @@
 
     { # A message in Hangouts Chat.
   &quot;actionResponse&quot;: { # Parameters that a bot can use to configure how it&#x27;s response is posted. # Input only. Parameters that a bot can use to configure how its response is posted.
+    &quot;dialogAction&quot;: { # Contains dialog if present as well as the ActionStatus for the request sent from user. # This response is for Dialog related events and must be accompanied by ResponseType.Dialog
+      &quot;actionStatus&quot;: { # ActionStatus represents status of a request from the bot developer&#x27;s side. In specific, for each request a bot gets, the bot developer will set both fields below in relation to what the response status and message related to status should be. # Status for either invoke dialog or submit dialog requests. This will be used to display a status and message to user if needed. For example in case of an error or success.
+        &quot;statusCode&quot;: &quot;A String&quot;, # The status code.
+        &quot;userFacingMessage&quot;: &quot;A String&quot;, # This message will be the corresponding string to the above status_code. If unset, an appropriate generic message based on the status_code will be shown to the user. If this field is set then the message will be surfaced to the user for both successes and errors.
+      },
+      &quot;dialog&quot;: { # Wrapper around the card body of the dialog. # Dialog for the request.
+        &quot;body&quot;: { # 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. ``` { &quot;header&quot;: { &quot;title&quot;: &quot;Heba Salam&quot;, &quot;subtitle&quot;: &quot;Software Engineer&quot;, &quot;imageStyle&quot;: &quot;ImageStyle.AVATAR&quot;, &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot;, &quot;imageAltText&quot;: &quot;Avatar for Heba Salam&quot; }, &quot;sections&quot; : [ { &quot;header&quot;: &quot;Contact Info&quot;, &quot;widgets&quot;: [ { &quot;decorated_text&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;content&quot;: &quot;heba.salam@example.com&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PERSON&quot; }, &quot;content&quot;: &quot;Online&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PHONE&quot; }, &quot;content&quot;: &quot;+1 (555) 555-1234&quot; } }, { &quot;buttons&quot;: [ { &quot;textButton&quot;: { &quot;text&quot;: &quot;Share&quot;, }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/share&quot; } } }, { &quot;textButton&quot;: { &quot;text&quot;: &quot;Edit&quot;, }, &quot;onClick&quot;: { &quot;action&quot;: { &quot;function&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;EDIT&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } } ] } ], &quot;collapsible&quot;: true, &quot;uncollapsibleWidgetsCount&quot;: 3 } ], &quot;cardActions&quot;: [ { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ], &quot;name&quot;: &quot;contact-card-K3wB6arF2H9L&quot; } ``` # Body of the dialog, which will be rendered in a modal. NOTE: The following fields within the objects are not supported: google.apps.card.v1.Widget.date_time_picker google.apps.card.v1.DecoratedText.SwitchControl.on_change_action google.apps.card.v1.TextInput.on_change_action google.apps.card.v1.SelectionInput.on_change_action google.apps.card.v1.DateTimePicker.on_change_action Setting the fields above will have no effect on the dialog.
+          &quot;cardActions&quot;: [ # The actions of this card. They are added to a card&#x27;s generated toolbar menu. For example, the following JSON constructs a card action menu with Settings and Send Feedback options: ``` &quot;card_actions&quot;: [ { &quot;actionLabel&quot;: &quot;Setting&quot;, &quot;onClick&quot;: { &quot;action&quot;: { &quot;functionName&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;SETTING&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } }, { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ] ```
+            { # 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.
+              &quot;actionLabel&quot;: &quot;A String&quot;, # The label that displays as the action menu item.
+              &quot;onClick&quot;: { # The onclick action for this action item.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+            },
+          ],
+          &quot;displayStyle&quot;: &quot;A String&quot;, # The display style for peekCardHeader.
+          &quot;fixedFooter&quot;: { # A persistent (sticky) footer that is added to the bottom of the card. # The fixed footer shown at the bottom of this card.
+            &quot;primaryButton&quot;: { # A button. Can be a text button or an image button. # The primary button of the fixed footer. The button must be a text button with text and color set.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+            &quot;secondaryButton&quot;: { # A button. Can be a text button or an image button. # 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.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+          },
+          &quot;header&quot;: { # The header of the card. A header usually contains a title and an image.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;name&quot;: &quot;A String&quot;, # Name of the card, which is used as a identifier for the card in card navigation.
+          &quot;peekCardHeader&quot;: { # 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.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;sections&quot;: [ # Sections are separated by a line divider.
+            { # 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.
+              &quot;collapsible&quot;: True or False, # Indicates whether this section is collapsible. If a section is collapsible, the description must be given.
+              &quot;header&quot;: &quot;A String&quot;, # The header of the section. Formatted text is supported.
+              &quot;uncollapsibleWidgetsCount&quot;: 42, # 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`.
+              &quot;widgets&quot;: [ # A section must contain at least 1 widget.
+                { # A widget is a UI element that presents texts, images, etc.
+                  &quot;buttonList&quot;: { # A list of buttons layed out horizontally. # 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: ``` &quot;buttonList&quot;: { &quot;buttons&quot;: [ &quot;button&quot;: { &quot;text&quot;: &quot;Edit&quot;, &quot;Color&quot;: { &quot;Red&quot;: 255 &quot;Green&quot;: 255 &quot;Blue&quot;: 255 } &quot;disabled&quot;: true }, &quot;button&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;INVITE&quot; &quot;altText&quot;: &quot;check calendar&quot; }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/calendar&quot; } } }, ] } ```
+                    &quot;buttons&quot;: [
+                      { # A button. Can be a text button or an image button.
+                        &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                        &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                          &quot;alpha&quot;: 3.14, # 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).
+                          &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                          &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                          &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                        },
+                        &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                        &quot;icon&quot;: { # The icon image.
+                          &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                          &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                          &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                          &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                        },
+                        &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                          &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                          &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                            &quot;onClose&quot;: &quot;A String&quot;,
+                            &quot;openAs&quot;: &quot;A String&quot;,
+                            &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                          },
+                        },
+                        &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                      },
+                    ],
+                  },
+                  &quot;dateTimePicker&quot;: { # The widget that lets users to specify a date and time. # Displays a selection/input widget for date/time. For example, the following JSON creates a date/time picker for an appointment time: ``` &quot;date_time_picker&quot;: { &quot;name&quot;: &quot;appointment_time&quot;, &quot;label&quot;: &quot;Book your appointment at:&quot;, &quot;type&quot;: &quot;DateTimePickerType.DATE_AND_TIME&quot;, &quot;valueMsEpoch&quot;: &quot;796435200000&quot; } ```
+                    &quot;label&quot;: &quot;A String&quot;, # The label for the field that displays to the user.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input that&#x27;s used in formInput, and uniquely identifies this input.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;timezoneOffsetDate&quot;: 42, # 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&#x27;s time zone setting on the client side.
+                    &quot;type&quot;: &quot;A String&quot;, # The type of the date/time picker.
+                    &quot;valueMsEpoch&quot;: &quot;A String&quot;, # 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.
+                  },
+                  &quot;decoratedText&quot;: { # 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. # Displays a decorated text item in this widget. For example, the following JSON creates a decorated text widget showing email address: ``` &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;topLabel&quot;: &quot;Email Address&quot;, &quot;content&quot;: &quot;heba.salam@example.com&quot;, &quot;bottomLabel&quot;: &quot;This is a new Email address!&quot;, &quot;switchWidget&quot;: { &quot;name&quot;: &quot;has_send_welcome_email_to_heba_salam&quot;, &quot;selected&quot;: false, &quot;controlType&quot;: &quot;ControlType.CHECKBOX&quot; } } ```
+                    &quot;bottomLabel&quot;: &quot;A String&quot;, # The formatted text label that shows below the main text.
+                    &quot;button&quot;: { # A button. Can be a text button or an image button. # A button that can be clicked to trigger an action.
+                      &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                      &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                      &quot;icon&quot;: { # The icon image.
+                        &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                        &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                        &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                        &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                      },
+                      &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                        &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                        &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                          &quot;onClose&quot;: &quot;A String&quot;,
+                          &quot;openAs&quot;: &quot;A String&quot;,
+                          &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                        },
+                      },
+                      &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                    },
+                    &quot;endIcon&quot;: { # An icon displayed after the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;icon&quot;: { # Deprecated in favor of start_icon.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;onClick&quot;: { # Only the top and bottom label and content region are clickable.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;startIcon&quot;: { # The icon displayed in front of the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;switchControl&quot;: { # A switch widget can be clicked to change its state or trigger an action.
+                      &quot;controlType&quot;: &quot;A String&quot;, # The control type, either switch or checkbox.
+                      &quot;name&quot;: &quot;A String&quot;, # The name of the switch widget that&#x27;s used in formInput.
+                      &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The action when the switch state is changed.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;selected&quot;: True or False, # If the switch is selected.
+                      &quot;value&quot;: &quot;A String&quot;, # The value is what is passed back in the callback.
+                    },
+                    &quot;text&quot;: &quot;A String&quot;, # Required. The main widget formatted text. See Text formatting for details.
+                    &quot;topLabel&quot;: &quot;A String&quot;, # The formatted text label that shows above the main text.
+                    &quot;wrapText&quot;: True or False, # The wrap text setting. If `true`, the text is wrapped and displayed in multiline. Otherwise, the text is truncated.
+                  },
+                  &quot;divider&quot;: { # A divider that appears in between widgets. # Displays a divider. For example, the following JSON creates a divider: ``` &quot;divider&quot;: { } ```
+                  },
+                  &quot;grid&quot;: { # Represents a Grid widget that displays items in a configurable grid layout. # Displays a grid with a collection of items. For example, the following JSON creates a 2 column grid with a single item: ``` &quot;grid&quot;: { &quot;title&quot;: &quot;A fine collection of items&quot;, &quot;numColumns&quot;: 2, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot;, &quot;cornerRadius&quot;: 4.0 }, &quot;items&quot;: [ &quot;image&quot;: { &quot;imageUri&quot;: &quot;https://www.example.com/image.png&quot;, &quot;cropStyle&quot;: { &quot;type&quot;: &quot;SQUARE&quot; }, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot; } }, &quot;title&quot;: &quot;An item&quot;, &quot;textAlignment&quot;: &quot;CENTER&quot; ], &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;:&quot;https://www.example.com&quot; } } } ```
+                    &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to each grid item.
+                      &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                      &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;type&quot;: &quot;A String&quot;, # The border type.
+                    },
+                    &quot;columnCount&quot;: 42, # The number of columns to display in the grid. A default value is used if this field isn&#x27;t specified, and that default value is different depending on where the grid is shown (dialog versus companion).
+                    &quot;items&quot;: [ # The items to display in the grid.
+                      { # Represents a single item in the grid layout.
+                        &quot;id&quot;: &quot;A String&quot;, # A user-specified identifier for this grid item. This identifier is returned in the parent Grid&#x27;s onClick callback parameters.
+                        &quot;image&quot;: { # The image that displays in the grid item.
+                          &quot;altText&quot;: &quot;A String&quot;, # The accessibility label for the image.
+                          &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to the image.
+                            &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                            &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                              &quot;alpha&quot;: 3.14, # 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).
+                              &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                              &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                              &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                            },
+                            &quot;type&quot;: &quot;A String&quot;, # The border type.
+                          },
+                          &quot;cropStyle&quot;: { # Represents the crop style applied to an image. # The crop style to apply to the image.
+                            &quot;aspectRatio&quot;: 3.14, # The aspect ratio to use if the crop type is `RECTANGLE_CUSTOM`.
+                            &quot;type&quot;: &quot;A String&quot;, # The crop type.
+                          },
+                          &quot;imageUri&quot;: &quot;A String&quot;, # The image URL.
+                        },
+                        &quot;layout&quot;: &quot;A String&quot;, # The layout to use for the grid item.
+                        &quot;subtitle&quot;: &quot;A String&quot;, # The grid item&#x27;s subtitle.
+                        &quot;textAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of the grid item&#x27;s text.
+                        &quot;title&quot;: &quot;A String&quot;, # The grid item&#x27;s title.
+                      },
+                    ],
+                    &quot;onClick&quot;: { # This callback is reused by each individual grid item, but with the item&#x27;s identifier and index in the items list added to the callback&#x27;s parameters.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;title&quot;: &quot;A String&quot;, # The text that displays in the grid header.
+                  },
+                  &quot;horizontalAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of this widget.
+                  &quot;image&quot;: { # An image that is specified by a URL and can have an onClick action. # Displays an image in this widget. For example, the following JSON creates an image with alternative text: ``` &quot;image&quot;: { &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot; &quot;altText&quot;: &quot;Avatar for Heba Salam&quot; } ```
+                    &quot;altText&quot;: &quot;A String&quot;, # The alternative text of this image, used for accessibility.
+                    &quot;imageUrl&quot;: &quot;A String&quot;, # An image URL.
+                    &quot;onClick&quot;: {
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                  },
+                  &quot;selectionInput&quot;: { # A widget that creates a UI item (for example, a drop-down list) with options for users to select. # Displays a switch control in this widget. For example, the following JSON creates a dropdown selection for size: ``` &quot;switchControl&quot;: { &quot;name&quot;: &quot;size&quot;, &quot;label&quot;: &quot;Size&quot; &quot;type&quot;: &quot;SelectionType.DROPDOWN&quot;, &quot;items&quot;: [ { &quot;text&quot;: &quot;S&quot;, &quot;value&quot;: &quot;small&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;M&quot;, &quot;value&quot;: &quot;medium&quot;, &quot;selected&quot;: true }, { &quot;text&quot;: &quot;L&quot;, &quot;value&quot;: &quot;large&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;XL&quot;, &quot;value&quot;: &quot;extra_large&quot;, &quot;selected&quot;: false } ] } ```
+                    &quot;items&quot;: [
+                      { # The item in the switch control. A radio button, at most one of the items is selected.
+                        &quot;selected&quot;: True or False, # 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.
+                        &quot;text&quot;: &quot;A String&quot;, # The text to be displayed.
+                        &quot;value&quot;: &quot;A String&quot;, # The value associated with this item. The client should use this as a form input value.
+                      },
+                    ],
+                    &quot;label&quot;: &quot;A String&quot;, # The label displayed ahead of the switch control.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, the form is submitted when the selection changes. If not specified, you must specify a separate button.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;,
+                  },
+                  &quot;textInput&quot;: { # A text input is a UI item where users can input text. A text input can also have an onChange action and suggestions. # Displays a text input in this widget. For example, the following JSON creates a text input for mail address: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;mailing_address&quot;, &quot;label&quot;: &quot;Mailing Address&quot; } ``` As another example, the following JSON creates a text input for programming language with static suggestions: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;preferred_programing_language&quot;, &quot;label&quot;: &quot;Preferred Language&quot;, &quot;initialSuggestions&quot;: { &quot;items&quot;: [ { &quot;text&quot;: &quot;C++&quot; }, { &quot;text&quot;: &quot;Java&quot; }, { &quot;text&quot;: &quot;JavaScript&quot; }, { &quot;text&quot;: &quot;Python&quot; } ] } } ```
+                    &quot;autoCompleteAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The refresh function that returns suggestions based on the user&#x27;s input text. If the callback is not specified, autocomplete is done in client side based on the initial suggestion items.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;hintText&quot;: &quot;A String&quot;, # The hint text.
+                    &quot;initialSuggestions&quot;: { # A container wrapping elements necessary for showing suggestion items used in text input autocomplete. # The initial suggestions made before any user input.
+                      &quot;items&quot;: [ # A list of suggestions items which will be used in are used in autocomplete.
+                        { # A suggestion item. Only supports text for now.
+                          &quot;text&quot;: &quot;A String&quot;,
+                        },
+                      ],
+                    },
+                    &quot;label&quot;: &quot;A String&quot;, # At least one of label and hintText must be specified.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The onChange action, for example, invoke a function.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;, # The style of the text, for example, a single line or multiple lines.
+                    &quot;value&quot;: &quot;A String&quot;, # The default value when there is no input from the user.
+                  },
+                  &quot;textParagraph&quot;: { # A paragraph of text that supports formatting. See [Text formatting](workspace/add-ons/concepts/widgets#text_formatting&quot;) for details. # Displays a text paragraph in this widget. For example, the following JSON creates a bolded text: ``` &quot;textParagraph&quot;: { &quot;text&quot;: &quot; *bold text*&quot; } ```
+                    &quot;text&quot;: &quot;A String&quot;, # The text that&#x27;s shown in the widget.
+                  },
+                },
+              ],
+            },
+          ],
+        },
+      },
+    },
     &quot;type&quot;: &quot;A String&quot;, # The type of bot response.
     &quot;url&quot;: &quot;A String&quot;, # URL for users to auth or config. (Only for REQUEST_CONFIG response types.)
   },
diff --git a/docs/dyn/chat_v1.rooms.conversations.html b/docs/dyn/chat_v1.rooms.conversations.html
index 835c915..e888e5d 100644
--- a/docs/dyn/chat_v1.rooms.conversations.html
+++ b/docs/dyn/chat_v1.rooms.conversations.html
@@ -97,6 +97,531 @@
 
 { # A message in Hangouts Chat.
   &quot;actionResponse&quot;: { # Parameters that a bot can use to configure how it&#x27;s response is posted. # Input only. Parameters that a bot can use to configure how its response is posted.
+    &quot;dialogAction&quot;: { # Contains dialog if present as well as the ActionStatus for the request sent from user. # This response is for Dialog related events and must be accompanied by ResponseType.Dialog
+      &quot;actionStatus&quot;: { # ActionStatus represents status of a request from the bot developer&#x27;s side. In specific, for each request a bot gets, the bot developer will set both fields below in relation to what the response status and message related to status should be. # Status for either invoke dialog or submit dialog requests. This will be used to display a status and message to user if needed. For example in case of an error or success.
+        &quot;statusCode&quot;: &quot;A String&quot;, # The status code.
+        &quot;userFacingMessage&quot;: &quot;A String&quot;, # This message will be the corresponding string to the above status_code. If unset, an appropriate generic message based on the status_code will be shown to the user. If this field is set then the message will be surfaced to the user for both successes and errors.
+      },
+      &quot;dialog&quot;: { # Wrapper around the card body of the dialog. # Dialog for the request.
+        &quot;body&quot;: { # 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. ``` { &quot;header&quot;: { &quot;title&quot;: &quot;Heba Salam&quot;, &quot;subtitle&quot;: &quot;Software Engineer&quot;, &quot;imageStyle&quot;: &quot;ImageStyle.AVATAR&quot;, &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot;, &quot;imageAltText&quot;: &quot;Avatar for Heba Salam&quot; }, &quot;sections&quot; : [ { &quot;header&quot;: &quot;Contact Info&quot;, &quot;widgets&quot;: [ { &quot;decorated_text&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;content&quot;: &quot;heba.salam@example.com&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PERSON&quot; }, &quot;content&quot;: &quot;Online&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PHONE&quot; }, &quot;content&quot;: &quot;+1 (555) 555-1234&quot; } }, { &quot;buttons&quot;: [ { &quot;textButton&quot;: { &quot;text&quot;: &quot;Share&quot;, }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/share&quot; } } }, { &quot;textButton&quot;: { &quot;text&quot;: &quot;Edit&quot;, }, &quot;onClick&quot;: { &quot;action&quot;: { &quot;function&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;EDIT&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } } ] } ], &quot;collapsible&quot;: true, &quot;uncollapsibleWidgetsCount&quot;: 3 } ], &quot;cardActions&quot;: [ { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ], &quot;name&quot;: &quot;contact-card-K3wB6arF2H9L&quot; } ``` # Body of the dialog, which will be rendered in a modal. NOTE: The following fields within the objects are not supported: google.apps.card.v1.Widget.date_time_picker google.apps.card.v1.DecoratedText.SwitchControl.on_change_action google.apps.card.v1.TextInput.on_change_action google.apps.card.v1.SelectionInput.on_change_action google.apps.card.v1.DateTimePicker.on_change_action Setting the fields above will have no effect on the dialog.
+          &quot;cardActions&quot;: [ # The actions of this card. They are added to a card&#x27;s generated toolbar menu. For example, the following JSON constructs a card action menu with Settings and Send Feedback options: ``` &quot;card_actions&quot;: [ { &quot;actionLabel&quot;: &quot;Setting&quot;, &quot;onClick&quot;: { &quot;action&quot;: { &quot;functionName&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;SETTING&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } }, { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ] ```
+            { # 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.
+              &quot;actionLabel&quot;: &quot;A String&quot;, # The label that displays as the action menu item.
+              &quot;onClick&quot;: { # The onclick action for this action item.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+            },
+          ],
+          &quot;displayStyle&quot;: &quot;A String&quot;, # The display style for peekCardHeader.
+          &quot;fixedFooter&quot;: { # A persistent (sticky) footer that is added to the bottom of the card. # The fixed footer shown at the bottom of this card.
+            &quot;primaryButton&quot;: { # A button. Can be a text button or an image button. # The primary button of the fixed footer. The button must be a text button with text and color set.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+            &quot;secondaryButton&quot;: { # A button. Can be a text button or an image button. # 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.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+          },
+          &quot;header&quot;: { # The header of the card. A header usually contains a title and an image.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;name&quot;: &quot;A String&quot;, # Name of the card, which is used as a identifier for the card in card navigation.
+          &quot;peekCardHeader&quot;: { # 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.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;sections&quot;: [ # Sections are separated by a line divider.
+            { # 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.
+              &quot;collapsible&quot;: True or False, # Indicates whether this section is collapsible. If a section is collapsible, the description must be given.
+              &quot;header&quot;: &quot;A String&quot;, # The header of the section. Formatted text is supported.
+              &quot;uncollapsibleWidgetsCount&quot;: 42, # 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`.
+              &quot;widgets&quot;: [ # A section must contain at least 1 widget.
+                { # A widget is a UI element that presents texts, images, etc.
+                  &quot;buttonList&quot;: { # A list of buttons layed out horizontally. # 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: ``` &quot;buttonList&quot;: { &quot;buttons&quot;: [ &quot;button&quot;: { &quot;text&quot;: &quot;Edit&quot;, &quot;Color&quot;: { &quot;Red&quot;: 255 &quot;Green&quot;: 255 &quot;Blue&quot;: 255 } &quot;disabled&quot;: true }, &quot;button&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;INVITE&quot; &quot;altText&quot;: &quot;check calendar&quot; }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/calendar&quot; } } }, ] } ```
+                    &quot;buttons&quot;: [
+                      { # A button. Can be a text button or an image button.
+                        &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                        &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                          &quot;alpha&quot;: 3.14, # 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).
+                          &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                          &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                          &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                        },
+                        &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                        &quot;icon&quot;: { # The icon image.
+                          &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                          &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                          &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                          &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                        },
+                        &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                          &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                          &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                            &quot;onClose&quot;: &quot;A String&quot;,
+                            &quot;openAs&quot;: &quot;A String&quot;,
+                            &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                          },
+                        },
+                        &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                      },
+                    ],
+                  },
+                  &quot;dateTimePicker&quot;: { # The widget that lets users to specify a date and time. # Displays a selection/input widget for date/time. For example, the following JSON creates a date/time picker for an appointment time: ``` &quot;date_time_picker&quot;: { &quot;name&quot;: &quot;appointment_time&quot;, &quot;label&quot;: &quot;Book your appointment at:&quot;, &quot;type&quot;: &quot;DateTimePickerType.DATE_AND_TIME&quot;, &quot;valueMsEpoch&quot;: &quot;796435200000&quot; } ```
+                    &quot;label&quot;: &quot;A String&quot;, # The label for the field that displays to the user.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input that&#x27;s used in formInput, and uniquely identifies this input.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;timezoneOffsetDate&quot;: 42, # 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&#x27;s time zone setting on the client side.
+                    &quot;type&quot;: &quot;A String&quot;, # The type of the date/time picker.
+                    &quot;valueMsEpoch&quot;: &quot;A String&quot;, # 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.
+                  },
+                  &quot;decoratedText&quot;: { # 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. # Displays a decorated text item in this widget. For example, the following JSON creates a decorated text widget showing email address: ``` &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;topLabel&quot;: &quot;Email Address&quot;, &quot;content&quot;: &quot;heba.salam@example.com&quot;, &quot;bottomLabel&quot;: &quot;This is a new Email address!&quot;, &quot;switchWidget&quot;: { &quot;name&quot;: &quot;has_send_welcome_email_to_heba_salam&quot;, &quot;selected&quot;: false, &quot;controlType&quot;: &quot;ControlType.CHECKBOX&quot; } } ```
+                    &quot;bottomLabel&quot;: &quot;A String&quot;, # The formatted text label that shows below the main text.
+                    &quot;button&quot;: { # A button. Can be a text button or an image button. # A button that can be clicked to trigger an action.
+                      &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                      &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                      &quot;icon&quot;: { # The icon image.
+                        &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                        &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                        &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                        &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                      },
+                      &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                        &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                        &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                          &quot;onClose&quot;: &quot;A String&quot;,
+                          &quot;openAs&quot;: &quot;A String&quot;,
+                          &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                        },
+                      },
+                      &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                    },
+                    &quot;endIcon&quot;: { # An icon displayed after the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;icon&quot;: { # Deprecated in favor of start_icon.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;onClick&quot;: { # Only the top and bottom label and content region are clickable.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;startIcon&quot;: { # The icon displayed in front of the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;switchControl&quot;: { # A switch widget can be clicked to change its state or trigger an action.
+                      &quot;controlType&quot;: &quot;A String&quot;, # The control type, either switch or checkbox.
+                      &quot;name&quot;: &quot;A String&quot;, # The name of the switch widget that&#x27;s used in formInput.
+                      &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The action when the switch state is changed.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;selected&quot;: True or False, # If the switch is selected.
+                      &quot;value&quot;: &quot;A String&quot;, # The value is what is passed back in the callback.
+                    },
+                    &quot;text&quot;: &quot;A String&quot;, # Required. The main widget formatted text. See Text formatting for details.
+                    &quot;topLabel&quot;: &quot;A String&quot;, # The formatted text label that shows above the main text.
+                    &quot;wrapText&quot;: True or False, # The wrap text setting. If `true`, the text is wrapped and displayed in multiline. Otherwise, the text is truncated.
+                  },
+                  &quot;divider&quot;: { # A divider that appears in between widgets. # Displays a divider. For example, the following JSON creates a divider: ``` &quot;divider&quot;: { } ```
+                  },
+                  &quot;grid&quot;: { # Represents a Grid widget that displays items in a configurable grid layout. # Displays a grid with a collection of items. For example, the following JSON creates a 2 column grid with a single item: ``` &quot;grid&quot;: { &quot;title&quot;: &quot;A fine collection of items&quot;, &quot;numColumns&quot;: 2, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot;, &quot;cornerRadius&quot;: 4.0 }, &quot;items&quot;: [ &quot;image&quot;: { &quot;imageUri&quot;: &quot;https://www.example.com/image.png&quot;, &quot;cropStyle&quot;: { &quot;type&quot;: &quot;SQUARE&quot; }, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot; } }, &quot;title&quot;: &quot;An item&quot;, &quot;textAlignment&quot;: &quot;CENTER&quot; ], &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;:&quot;https://www.example.com&quot; } } } ```
+                    &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to each grid item.
+                      &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                      &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;type&quot;: &quot;A String&quot;, # The border type.
+                    },
+                    &quot;columnCount&quot;: 42, # The number of columns to display in the grid. A default value is used if this field isn&#x27;t specified, and that default value is different depending on where the grid is shown (dialog versus companion).
+                    &quot;items&quot;: [ # The items to display in the grid.
+                      { # Represents a single item in the grid layout.
+                        &quot;id&quot;: &quot;A String&quot;, # A user-specified identifier for this grid item. This identifier is returned in the parent Grid&#x27;s onClick callback parameters.
+                        &quot;image&quot;: { # The image that displays in the grid item.
+                          &quot;altText&quot;: &quot;A String&quot;, # The accessibility label for the image.
+                          &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to the image.
+                            &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                            &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                              &quot;alpha&quot;: 3.14, # 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).
+                              &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                              &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                              &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                            },
+                            &quot;type&quot;: &quot;A String&quot;, # The border type.
+                          },
+                          &quot;cropStyle&quot;: { # Represents the crop style applied to an image. # The crop style to apply to the image.
+                            &quot;aspectRatio&quot;: 3.14, # The aspect ratio to use if the crop type is `RECTANGLE_CUSTOM`.
+                            &quot;type&quot;: &quot;A String&quot;, # The crop type.
+                          },
+                          &quot;imageUri&quot;: &quot;A String&quot;, # The image URL.
+                        },
+                        &quot;layout&quot;: &quot;A String&quot;, # The layout to use for the grid item.
+                        &quot;subtitle&quot;: &quot;A String&quot;, # The grid item&#x27;s subtitle.
+                        &quot;textAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of the grid item&#x27;s text.
+                        &quot;title&quot;: &quot;A String&quot;, # The grid item&#x27;s title.
+                      },
+                    ],
+                    &quot;onClick&quot;: { # This callback is reused by each individual grid item, but with the item&#x27;s identifier and index in the items list added to the callback&#x27;s parameters.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;title&quot;: &quot;A String&quot;, # The text that displays in the grid header.
+                  },
+                  &quot;horizontalAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of this widget.
+                  &quot;image&quot;: { # An image that is specified by a URL and can have an onClick action. # Displays an image in this widget. For example, the following JSON creates an image with alternative text: ``` &quot;image&quot;: { &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot; &quot;altText&quot;: &quot;Avatar for Heba Salam&quot; } ```
+                    &quot;altText&quot;: &quot;A String&quot;, # The alternative text of this image, used for accessibility.
+                    &quot;imageUrl&quot;: &quot;A String&quot;, # An image URL.
+                    &quot;onClick&quot;: {
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                  },
+                  &quot;selectionInput&quot;: { # A widget that creates a UI item (for example, a drop-down list) with options for users to select. # Displays a switch control in this widget. For example, the following JSON creates a dropdown selection for size: ``` &quot;switchControl&quot;: { &quot;name&quot;: &quot;size&quot;, &quot;label&quot;: &quot;Size&quot; &quot;type&quot;: &quot;SelectionType.DROPDOWN&quot;, &quot;items&quot;: [ { &quot;text&quot;: &quot;S&quot;, &quot;value&quot;: &quot;small&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;M&quot;, &quot;value&quot;: &quot;medium&quot;, &quot;selected&quot;: true }, { &quot;text&quot;: &quot;L&quot;, &quot;value&quot;: &quot;large&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;XL&quot;, &quot;value&quot;: &quot;extra_large&quot;, &quot;selected&quot;: false } ] } ```
+                    &quot;items&quot;: [
+                      { # The item in the switch control. A radio button, at most one of the items is selected.
+                        &quot;selected&quot;: True or False, # 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.
+                        &quot;text&quot;: &quot;A String&quot;, # The text to be displayed.
+                        &quot;value&quot;: &quot;A String&quot;, # The value associated with this item. The client should use this as a form input value.
+                      },
+                    ],
+                    &quot;label&quot;: &quot;A String&quot;, # The label displayed ahead of the switch control.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, the form is submitted when the selection changes. If not specified, you must specify a separate button.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;,
+                  },
+                  &quot;textInput&quot;: { # A text input is a UI item where users can input text. A text input can also have an onChange action and suggestions. # Displays a text input in this widget. For example, the following JSON creates a text input for mail address: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;mailing_address&quot;, &quot;label&quot;: &quot;Mailing Address&quot; } ``` As another example, the following JSON creates a text input for programming language with static suggestions: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;preferred_programing_language&quot;, &quot;label&quot;: &quot;Preferred Language&quot;, &quot;initialSuggestions&quot;: { &quot;items&quot;: [ { &quot;text&quot;: &quot;C++&quot; }, { &quot;text&quot;: &quot;Java&quot; }, { &quot;text&quot;: &quot;JavaScript&quot; }, { &quot;text&quot;: &quot;Python&quot; } ] } } ```
+                    &quot;autoCompleteAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The refresh function that returns suggestions based on the user&#x27;s input text. If the callback is not specified, autocomplete is done in client side based on the initial suggestion items.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;hintText&quot;: &quot;A String&quot;, # The hint text.
+                    &quot;initialSuggestions&quot;: { # A container wrapping elements necessary for showing suggestion items used in text input autocomplete. # The initial suggestions made before any user input.
+                      &quot;items&quot;: [ # A list of suggestions items which will be used in are used in autocomplete.
+                        { # A suggestion item. Only supports text for now.
+                          &quot;text&quot;: &quot;A String&quot;,
+                        },
+                      ],
+                    },
+                    &quot;label&quot;: &quot;A String&quot;, # At least one of label and hintText must be specified.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The onChange action, for example, invoke a function.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;, # The style of the text, for example, a single line or multiple lines.
+                    &quot;value&quot;: &quot;A String&quot;, # The default value when there is no input from the user.
+                  },
+                  &quot;textParagraph&quot;: { # A paragraph of text that supports formatting. See [Text formatting](workspace/add-ons/concepts/widgets#text_formatting&quot;) for details. # Displays a text paragraph in this widget. For example, the following JSON creates a bolded text: ``` &quot;textParagraph&quot;: { &quot;text&quot;: &quot; *bold text*&quot; } ```
+                    &quot;text&quot;: &quot;A String&quot;, # The text that&#x27;s shown in the widget.
+                  },
+                },
+              ],
+            },
+          ],
+        },
+      },
+    },
     &quot;type&quot;: &quot;A String&quot;, # The type of bot response.
     &quot;url&quot;: &quot;A String&quot;, # URL for users to auth or config. (Only for REQUEST_CONFIG response types.)
   },
@@ -345,6 +870,531 @@
 
     { # A message in Hangouts Chat.
   &quot;actionResponse&quot;: { # Parameters that a bot can use to configure how it&#x27;s response is posted. # Input only. Parameters that a bot can use to configure how its response is posted.
+    &quot;dialogAction&quot;: { # Contains dialog if present as well as the ActionStatus for the request sent from user. # This response is for Dialog related events and must be accompanied by ResponseType.Dialog
+      &quot;actionStatus&quot;: { # ActionStatus represents status of a request from the bot developer&#x27;s side. In specific, for each request a bot gets, the bot developer will set both fields below in relation to what the response status and message related to status should be. # Status for either invoke dialog or submit dialog requests. This will be used to display a status and message to user if needed. For example in case of an error or success.
+        &quot;statusCode&quot;: &quot;A String&quot;, # The status code.
+        &quot;userFacingMessage&quot;: &quot;A String&quot;, # This message will be the corresponding string to the above status_code. If unset, an appropriate generic message based on the status_code will be shown to the user. If this field is set then the message will be surfaced to the user for both successes and errors.
+      },
+      &quot;dialog&quot;: { # Wrapper around the card body of the dialog. # Dialog for the request.
+        &quot;body&quot;: { # 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. ``` { &quot;header&quot;: { &quot;title&quot;: &quot;Heba Salam&quot;, &quot;subtitle&quot;: &quot;Software Engineer&quot;, &quot;imageStyle&quot;: &quot;ImageStyle.AVATAR&quot;, &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot;, &quot;imageAltText&quot;: &quot;Avatar for Heba Salam&quot; }, &quot;sections&quot; : [ { &quot;header&quot;: &quot;Contact Info&quot;, &quot;widgets&quot;: [ { &quot;decorated_text&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;content&quot;: &quot;heba.salam@example.com&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PERSON&quot; }, &quot;content&quot;: &quot;Online&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PHONE&quot; }, &quot;content&quot;: &quot;+1 (555) 555-1234&quot; } }, { &quot;buttons&quot;: [ { &quot;textButton&quot;: { &quot;text&quot;: &quot;Share&quot;, }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/share&quot; } } }, { &quot;textButton&quot;: { &quot;text&quot;: &quot;Edit&quot;, }, &quot;onClick&quot;: { &quot;action&quot;: { &quot;function&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;EDIT&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } } ] } ], &quot;collapsible&quot;: true, &quot;uncollapsibleWidgetsCount&quot;: 3 } ], &quot;cardActions&quot;: [ { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ], &quot;name&quot;: &quot;contact-card-K3wB6arF2H9L&quot; } ``` # Body of the dialog, which will be rendered in a modal. NOTE: The following fields within the objects are not supported: google.apps.card.v1.Widget.date_time_picker google.apps.card.v1.DecoratedText.SwitchControl.on_change_action google.apps.card.v1.TextInput.on_change_action google.apps.card.v1.SelectionInput.on_change_action google.apps.card.v1.DateTimePicker.on_change_action Setting the fields above will have no effect on the dialog.
+          &quot;cardActions&quot;: [ # The actions of this card. They are added to a card&#x27;s generated toolbar menu. For example, the following JSON constructs a card action menu with Settings and Send Feedback options: ``` &quot;card_actions&quot;: [ { &quot;actionLabel&quot;: &quot;Setting&quot;, &quot;onClick&quot;: { &quot;action&quot;: { &quot;functionName&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;SETTING&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } }, { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ] ```
+            { # 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.
+              &quot;actionLabel&quot;: &quot;A String&quot;, # The label that displays as the action menu item.
+              &quot;onClick&quot;: { # The onclick action for this action item.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+            },
+          ],
+          &quot;displayStyle&quot;: &quot;A String&quot;, # The display style for peekCardHeader.
+          &quot;fixedFooter&quot;: { # A persistent (sticky) footer that is added to the bottom of the card. # The fixed footer shown at the bottom of this card.
+            &quot;primaryButton&quot;: { # A button. Can be a text button or an image button. # The primary button of the fixed footer. The button must be a text button with text and color set.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+            &quot;secondaryButton&quot;: { # A button. Can be a text button or an image button. # 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.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+          },
+          &quot;header&quot;: { # The header of the card. A header usually contains a title and an image.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;name&quot;: &quot;A String&quot;, # Name of the card, which is used as a identifier for the card in card navigation.
+          &quot;peekCardHeader&quot;: { # 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.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;sections&quot;: [ # Sections are separated by a line divider.
+            { # 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.
+              &quot;collapsible&quot;: True or False, # Indicates whether this section is collapsible. If a section is collapsible, the description must be given.
+              &quot;header&quot;: &quot;A String&quot;, # The header of the section. Formatted text is supported.
+              &quot;uncollapsibleWidgetsCount&quot;: 42, # 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`.
+              &quot;widgets&quot;: [ # A section must contain at least 1 widget.
+                { # A widget is a UI element that presents texts, images, etc.
+                  &quot;buttonList&quot;: { # A list of buttons layed out horizontally. # 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: ``` &quot;buttonList&quot;: { &quot;buttons&quot;: [ &quot;button&quot;: { &quot;text&quot;: &quot;Edit&quot;, &quot;Color&quot;: { &quot;Red&quot;: 255 &quot;Green&quot;: 255 &quot;Blue&quot;: 255 } &quot;disabled&quot;: true }, &quot;button&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;INVITE&quot; &quot;altText&quot;: &quot;check calendar&quot; }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/calendar&quot; } } }, ] } ```
+                    &quot;buttons&quot;: [
+                      { # A button. Can be a text button or an image button.
+                        &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                        &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                          &quot;alpha&quot;: 3.14, # 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).
+                          &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                          &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                          &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                        },
+                        &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                        &quot;icon&quot;: { # The icon image.
+                          &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                          &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                          &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                          &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                        },
+                        &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                          &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                          &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                            &quot;onClose&quot;: &quot;A String&quot;,
+                            &quot;openAs&quot;: &quot;A String&quot;,
+                            &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                          },
+                        },
+                        &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                      },
+                    ],
+                  },
+                  &quot;dateTimePicker&quot;: { # The widget that lets users to specify a date and time. # Displays a selection/input widget for date/time. For example, the following JSON creates a date/time picker for an appointment time: ``` &quot;date_time_picker&quot;: { &quot;name&quot;: &quot;appointment_time&quot;, &quot;label&quot;: &quot;Book your appointment at:&quot;, &quot;type&quot;: &quot;DateTimePickerType.DATE_AND_TIME&quot;, &quot;valueMsEpoch&quot;: &quot;796435200000&quot; } ```
+                    &quot;label&quot;: &quot;A String&quot;, # The label for the field that displays to the user.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input that&#x27;s used in formInput, and uniquely identifies this input.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;timezoneOffsetDate&quot;: 42, # 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&#x27;s time zone setting on the client side.
+                    &quot;type&quot;: &quot;A String&quot;, # The type of the date/time picker.
+                    &quot;valueMsEpoch&quot;: &quot;A String&quot;, # 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.
+                  },
+                  &quot;decoratedText&quot;: { # 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. # Displays a decorated text item in this widget. For example, the following JSON creates a decorated text widget showing email address: ``` &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;topLabel&quot;: &quot;Email Address&quot;, &quot;content&quot;: &quot;heba.salam@example.com&quot;, &quot;bottomLabel&quot;: &quot;This is a new Email address!&quot;, &quot;switchWidget&quot;: { &quot;name&quot;: &quot;has_send_welcome_email_to_heba_salam&quot;, &quot;selected&quot;: false, &quot;controlType&quot;: &quot;ControlType.CHECKBOX&quot; } } ```
+                    &quot;bottomLabel&quot;: &quot;A String&quot;, # The formatted text label that shows below the main text.
+                    &quot;button&quot;: { # A button. Can be a text button or an image button. # A button that can be clicked to trigger an action.
+                      &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                      &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                      &quot;icon&quot;: { # The icon image.
+                        &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                        &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                        &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                        &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                      },
+                      &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                        &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                        &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                          &quot;onClose&quot;: &quot;A String&quot;,
+                          &quot;openAs&quot;: &quot;A String&quot;,
+                          &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                        },
+                      },
+                      &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                    },
+                    &quot;endIcon&quot;: { # An icon displayed after the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;icon&quot;: { # Deprecated in favor of start_icon.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;onClick&quot;: { # Only the top and bottom label and content region are clickable.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;startIcon&quot;: { # The icon displayed in front of the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;switchControl&quot;: { # A switch widget can be clicked to change its state or trigger an action.
+                      &quot;controlType&quot;: &quot;A String&quot;, # The control type, either switch or checkbox.
+                      &quot;name&quot;: &quot;A String&quot;, # The name of the switch widget that&#x27;s used in formInput.
+                      &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The action when the switch state is changed.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;selected&quot;: True or False, # If the switch is selected.
+                      &quot;value&quot;: &quot;A String&quot;, # The value is what is passed back in the callback.
+                    },
+                    &quot;text&quot;: &quot;A String&quot;, # Required. The main widget formatted text. See Text formatting for details.
+                    &quot;topLabel&quot;: &quot;A String&quot;, # The formatted text label that shows above the main text.
+                    &quot;wrapText&quot;: True or False, # The wrap text setting. If `true`, the text is wrapped and displayed in multiline. Otherwise, the text is truncated.
+                  },
+                  &quot;divider&quot;: { # A divider that appears in between widgets. # Displays a divider. For example, the following JSON creates a divider: ``` &quot;divider&quot;: { } ```
+                  },
+                  &quot;grid&quot;: { # Represents a Grid widget that displays items in a configurable grid layout. # Displays a grid with a collection of items. For example, the following JSON creates a 2 column grid with a single item: ``` &quot;grid&quot;: { &quot;title&quot;: &quot;A fine collection of items&quot;, &quot;numColumns&quot;: 2, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot;, &quot;cornerRadius&quot;: 4.0 }, &quot;items&quot;: [ &quot;image&quot;: { &quot;imageUri&quot;: &quot;https://www.example.com/image.png&quot;, &quot;cropStyle&quot;: { &quot;type&quot;: &quot;SQUARE&quot; }, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot; } }, &quot;title&quot;: &quot;An item&quot;, &quot;textAlignment&quot;: &quot;CENTER&quot; ], &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;:&quot;https://www.example.com&quot; } } } ```
+                    &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to each grid item.
+                      &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                      &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;type&quot;: &quot;A String&quot;, # The border type.
+                    },
+                    &quot;columnCount&quot;: 42, # The number of columns to display in the grid. A default value is used if this field isn&#x27;t specified, and that default value is different depending on where the grid is shown (dialog versus companion).
+                    &quot;items&quot;: [ # The items to display in the grid.
+                      { # Represents a single item in the grid layout.
+                        &quot;id&quot;: &quot;A String&quot;, # A user-specified identifier for this grid item. This identifier is returned in the parent Grid&#x27;s onClick callback parameters.
+                        &quot;image&quot;: { # The image that displays in the grid item.
+                          &quot;altText&quot;: &quot;A String&quot;, # The accessibility label for the image.
+                          &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to the image.
+                            &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                            &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                              &quot;alpha&quot;: 3.14, # 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).
+                              &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                              &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                              &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                            },
+                            &quot;type&quot;: &quot;A String&quot;, # The border type.
+                          },
+                          &quot;cropStyle&quot;: { # Represents the crop style applied to an image. # The crop style to apply to the image.
+                            &quot;aspectRatio&quot;: 3.14, # The aspect ratio to use if the crop type is `RECTANGLE_CUSTOM`.
+                            &quot;type&quot;: &quot;A String&quot;, # The crop type.
+                          },
+                          &quot;imageUri&quot;: &quot;A String&quot;, # The image URL.
+                        },
+                        &quot;layout&quot;: &quot;A String&quot;, # The layout to use for the grid item.
+                        &quot;subtitle&quot;: &quot;A String&quot;, # The grid item&#x27;s subtitle.
+                        &quot;textAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of the grid item&#x27;s text.
+                        &quot;title&quot;: &quot;A String&quot;, # The grid item&#x27;s title.
+                      },
+                    ],
+                    &quot;onClick&quot;: { # This callback is reused by each individual grid item, but with the item&#x27;s identifier and index in the items list added to the callback&#x27;s parameters.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;title&quot;: &quot;A String&quot;, # The text that displays in the grid header.
+                  },
+                  &quot;horizontalAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of this widget.
+                  &quot;image&quot;: { # An image that is specified by a URL and can have an onClick action. # Displays an image in this widget. For example, the following JSON creates an image with alternative text: ``` &quot;image&quot;: { &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot; &quot;altText&quot;: &quot;Avatar for Heba Salam&quot; } ```
+                    &quot;altText&quot;: &quot;A String&quot;, # The alternative text of this image, used for accessibility.
+                    &quot;imageUrl&quot;: &quot;A String&quot;, # An image URL.
+                    &quot;onClick&quot;: {
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                  },
+                  &quot;selectionInput&quot;: { # A widget that creates a UI item (for example, a drop-down list) with options for users to select. # Displays a switch control in this widget. For example, the following JSON creates a dropdown selection for size: ``` &quot;switchControl&quot;: { &quot;name&quot;: &quot;size&quot;, &quot;label&quot;: &quot;Size&quot; &quot;type&quot;: &quot;SelectionType.DROPDOWN&quot;, &quot;items&quot;: [ { &quot;text&quot;: &quot;S&quot;, &quot;value&quot;: &quot;small&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;M&quot;, &quot;value&quot;: &quot;medium&quot;, &quot;selected&quot;: true }, { &quot;text&quot;: &quot;L&quot;, &quot;value&quot;: &quot;large&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;XL&quot;, &quot;value&quot;: &quot;extra_large&quot;, &quot;selected&quot;: false } ] } ```
+                    &quot;items&quot;: [
+                      { # The item in the switch control. A radio button, at most one of the items is selected.
+                        &quot;selected&quot;: True or False, # 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.
+                        &quot;text&quot;: &quot;A String&quot;, # The text to be displayed.
+                        &quot;value&quot;: &quot;A String&quot;, # The value associated with this item. The client should use this as a form input value.
+                      },
+                    ],
+                    &quot;label&quot;: &quot;A String&quot;, # The label displayed ahead of the switch control.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, the form is submitted when the selection changes. If not specified, you must specify a separate button.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;,
+                  },
+                  &quot;textInput&quot;: { # A text input is a UI item where users can input text. A text input can also have an onChange action and suggestions. # Displays a text input in this widget. For example, the following JSON creates a text input for mail address: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;mailing_address&quot;, &quot;label&quot;: &quot;Mailing Address&quot; } ``` As another example, the following JSON creates a text input for programming language with static suggestions: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;preferred_programing_language&quot;, &quot;label&quot;: &quot;Preferred Language&quot;, &quot;initialSuggestions&quot;: { &quot;items&quot;: [ { &quot;text&quot;: &quot;C++&quot; }, { &quot;text&quot;: &quot;Java&quot; }, { &quot;text&quot;: &quot;JavaScript&quot; }, { &quot;text&quot;: &quot;Python&quot; } ] } } ```
+                    &quot;autoCompleteAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The refresh function that returns suggestions based on the user&#x27;s input text. If the callback is not specified, autocomplete is done in client side based on the initial suggestion items.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;hintText&quot;: &quot;A String&quot;, # The hint text.
+                    &quot;initialSuggestions&quot;: { # A container wrapping elements necessary for showing suggestion items used in text input autocomplete. # The initial suggestions made before any user input.
+                      &quot;items&quot;: [ # A list of suggestions items which will be used in are used in autocomplete.
+                        { # A suggestion item. Only supports text for now.
+                          &quot;text&quot;: &quot;A String&quot;,
+                        },
+                      ],
+                    },
+                    &quot;label&quot;: &quot;A String&quot;, # At least one of label and hintText must be specified.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The onChange action, for example, invoke a function.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;, # The style of the text, for example, a single line or multiple lines.
+                    &quot;value&quot;: &quot;A String&quot;, # The default value when there is no input from the user.
+                  },
+                  &quot;textParagraph&quot;: { # A paragraph of text that supports formatting. See [Text formatting](workspace/add-ons/concepts/widgets#text_formatting&quot;) for details. # Displays a text paragraph in this widget. For example, the following JSON creates a bolded text: ``` &quot;textParagraph&quot;: { &quot;text&quot;: &quot; *bold text*&quot; } ```
+                    &quot;text&quot;: &quot;A String&quot;, # The text that&#x27;s shown in the widget.
+                  },
+                },
+              ],
+            },
+          ],
+        },
+      },
+    },
     &quot;type&quot;: &quot;A String&quot;, # The type of bot response.
     &quot;url&quot;: &quot;A String&quot;, # URL for users to auth or config. (Only for REQUEST_CONFIG response types.)
   },
diff --git a/docs/dyn/chat_v1.rooms.html b/docs/dyn/chat_v1.rooms.html
index d10eab5..c58c820 100644
--- a/docs/dyn/chat_v1.rooms.html
+++ b/docs/dyn/chat_v1.rooms.html
@@ -105,6 +105,531 @@
 
 { # A message in Hangouts Chat.
   &quot;actionResponse&quot;: { # Parameters that a bot can use to configure how it&#x27;s response is posted. # Input only. Parameters that a bot can use to configure how its response is posted.
+    &quot;dialogAction&quot;: { # Contains dialog if present as well as the ActionStatus for the request sent from user. # This response is for Dialog related events and must be accompanied by ResponseType.Dialog
+      &quot;actionStatus&quot;: { # ActionStatus represents status of a request from the bot developer&#x27;s side. In specific, for each request a bot gets, the bot developer will set both fields below in relation to what the response status and message related to status should be. # Status for either invoke dialog or submit dialog requests. This will be used to display a status and message to user if needed. For example in case of an error or success.
+        &quot;statusCode&quot;: &quot;A String&quot;, # The status code.
+        &quot;userFacingMessage&quot;: &quot;A String&quot;, # This message will be the corresponding string to the above status_code. If unset, an appropriate generic message based on the status_code will be shown to the user. If this field is set then the message will be surfaced to the user for both successes and errors.
+      },
+      &quot;dialog&quot;: { # Wrapper around the card body of the dialog. # Dialog for the request.
+        &quot;body&quot;: { # 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. ``` { &quot;header&quot;: { &quot;title&quot;: &quot;Heba Salam&quot;, &quot;subtitle&quot;: &quot;Software Engineer&quot;, &quot;imageStyle&quot;: &quot;ImageStyle.AVATAR&quot;, &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot;, &quot;imageAltText&quot;: &quot;Avatar for Heba Salam&quot; }, &quot;sections&quot; : [ { &quot;header&quot;: &quot;Contact Info&quot;, &quot;widgets&quot;: [ { &quot;decorated_text&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;content&quot;: &quot;heba.salam@example.com&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PERSON&quot; }, &quot;content&quot;: &quot;Online&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PHONE&quot; }, &quot;content&quot;: &quot;+1 (555) 555-1234&quot; } }, { &quot;buttons&quot;: [ { &quot;textButton&quot;: { &quot;text&quot;: &quot;Share&quot;, }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/share&quot; } } }, { &quot;textButton&quot;: { &quot;text&quot;: &quot;Edit&quot;, }, &quot;onClick&quot;: { &quot;action&quot;: { &quot;function&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;EDIT&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } } ] } ], &quot;collapsible&quot;: true, &quot;uncollapsibleWidgetsCount&quot;: 3 } ], &quot;cardActions&quot;: [ { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ], &quot;name&quot;: &quot;contact-card-K3wB6arF2H9L&quot; } ``` # Body of the dialog, which will be rendered in a modal. NOTE: The following fields within the objects are not supported: google.apps.card.v1.Widget.date_time_picker google.apps.card.v1.DecoratedText.SwitchControl.on_change_action google.apps.card.v1.TextInput.on_change_action google.apps.card.v1.SelectionInput.on_change_action google.apps.card.v1.DateTimePicker.on_change_action Setting the fields above will have no effect on the dialog.
+          &quot;cardActions&quot;: [ # The actions of this card. They are added to a card&#x27;s generated toolbar menu. For example, the following JSON constructs a card action menu with Settings and Send Feedback options: ``` &quot;card_actions&quot;: [ { &quot;actionLabel&quot;: &quot;Setting&quot;, &quot;onClick&quot;: { &quot;action&quot;: { &quot;functionName&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;SETTING&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } }, { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ] ```
+            { # 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.
+              &quot;actionLabel&quot;: &quot;A String&quot;, # The label that displays as the action menu item.
+              &quot;onClick&quot;: { # The onclick action for this action item.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+            },
+          ],
+          &quot;displayStyle&quot;: &quot;A String&quot;, # The display style for peekCardHeader.
+          &quot;fixedFooter&quot;: { # A persistent (sticky) footer that is added to the bottom of the card. # The fixed footer shown at the bottom of this card.
+            &quot;primaryButton&quot;: { # A button. Can be a text button or an image button. # The primary button of the fixed footer. The button must be a text button with text and color set.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+            &quot;secondaryButton&quot;: { # A button. Can be a text button or an image button. # 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.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+          },
+          &quot;header&quot;: { # The header of the card. A header usually contains a title and an image.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;name&quot;: &quot;A String&quot;, # Name of the card, which is used as a identifier for the card in card navigation.
+          &quot;peekCardHeader&quot;: { # 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.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;sections&quot;: [ # Sections are separated by a line divider.
+            { # 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.
+              &quot;collapsible&quot;: True or False, # Indicates whether this section is collapsible. If a section is collapsible, the description must be given.
+              &quot;header&quot;: &quot;A String&quot;, # The header of the section. Formatted text is supported.
+              &quot;uncollapsibleWidgetsCount&quot;: 42, # 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`.
+              &quot;widgets&quot;: [ # A section must contain at least 1 widget.
+                { # A widget is a UI element that presents texts, images, etc.
+                  &quot;buttonList&quot;: { # A list of buttons layed out horizontally. # 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: ``` &quot;buttonList&quot;: { &quot;buttons&quot;: [ &quot;button&quot;: { &quot;text&quot;: &quot;Edit&quot;, &quot;Color&quot;: { &quot;Red&quot;: 255 &quot;Green&quot;: 255 &quot;Blue&quot;: 255 } &quot;disabled&quot;: true }, &quot;button&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;INVITE&quot; &quot;altText&quot;: &quot;check calendar&quot; }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/calendar&quot; } } }, ] } ```
+                    &quot;buttons&quot;: [
+                      { # A button. Can be a text button or an image button.
+                        &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                        &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                          &quot;alpha&quot;: 3.14, # 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).
+                          &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                          &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                          &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                        },
+                        &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                        &quot;icon&quot;: { # The icon image.
+                          &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                          &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                          &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                          &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                        },
+                        &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                          &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                          &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                            &quot;onClose&quot;: &quot;A String&quot;,
+                            &quot;openAs&quot;: &quot;A String&quot;,
+                            &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                          },
+                        },
+                        &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                      },
+                    ],
+                  },
+                  &quot;dateTimePicker&quot;: { # The widget that lets users to specify a date and time. # Displays a selection/input widget for date/time. For example, the following JSON creates a date/time picker for an appointment time: ``` &quot;date_time_picker&quot;: { &quot;name&quot;: &quot;appointment_time&quot;, &quot;label&quot;: &quot;Book your appointment at:&quot;, &quot;type&quot;: &quot;DateTimePickerType.DATE_AND_TIME&quot;, &quot;valueMsEpoch&quot;: &quot;796435200000&quot; } ```
+                    &quot;label&quot;: &quot;A String&quot;, # The label for the field that displays to the user.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input that&#x27;s used in formInput, and uniquely identifies this input.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;timezoneOffsetDate&quot;: 42, # 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&#x27;s time zone setting on the client side.
+                    &quot;type&quot;: &quot;A String&quot;, # The type of the date/time picker.
+                    &quot;valueMsEpoch&quot;: &quot;A String&quot;, # 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.
+                  },
+                  &quot;decoratedText&quot;: { # 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. # Displays a decorated text item in this widget. For example, the following JSON creates a decorated text widget showing email address: ``` &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;topLabel&quot;: &quot;Email Address&quot;, &quot;content&quot;: &quot;heba.salam@example.com&quot;, &quot;bottomLabel&quot;: &quot;This is a new Email address!&quot;, &quot;switchWidget&quot;: { &quot;name&quot;: &quot;has_send_welcome_email_to_heba_salam&quot;, &quot;selected&quot;: false, &quot;controlType&quot;: &quot;ControlType.CHECKBOX&quot; } } ```
+                    &quot;bottomLabel&quot;: &quot;A String&quot;, # The formatted text label that shows below the main text.
+                    &quot;button&quot;: { # A button. Can be a text button or an image button. # A button that can be clicked to trigger an action.
+                      &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                      &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                      &quot;icon&quot;: { # The icon image.
+                        &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                        &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                        &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                        &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                      },
+                      &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                        &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                        &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                          &quot;onClose&quot;: &quot;A String&quot;,
+                          &quot;openAs&quot;: &quot;A String&quot;,
+                          &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                        },
+                      },
+                      &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                    },
+                    &quot;endIcon&quot;: { # An icon displayed after the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;icon&quot;: { # Deprecated in favor of start_icon.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;onClick&quot;: { # Only the top and bottom label and content region are clickable.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;startIcon&quot;: { # The icon displayed in front of the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;switchControl&quot;: { # A switch widget can be clicked to change its state or trigger an action.
+                      &quot;controlType&quot;: &quot;A String&quot;, # The control type, either switch or checkbox.
+                      &quot;name&quot;: &quot;A String&quot;, # The name of the switch widget that&#x27;s used in formInput.
+                      &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The action when the switch state is changed.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;selected&quot;: True or False, # If the switch is selected.
+                      &quot;value&quot;: &quot;A String&quot;, # The value is what is passed back in the callback.
+                    },
+                    &quot;text&quot;: &quot;A String&quot;, # Required. The main widget formatted text. See Text formatting for details.
+                    &quot;topLabel&quot;: &quot;A String&quot;, # The formatted text label that shows above the main text.
+                    &quot;wrapText&quot;: True or False, # The wrap text setting. If `true`, the text is wrapped and displayed in multiline. Otherwise, the text is truncated.
+                  },
+                  &quot;divider&quot;: { # A divider that appears in between widgets. # Displays a divider. For example, the following JSON creates a divider: ``` &quot;divider&quot;: { } ```
+                  },
+                  &quot;grid&quot;: { # Represents a Grid widget that displays items in a configurable grid layout. # Displays a grid with a collection of items. For example, the following JSON creates a 2 column grid with a single item: ``` &quot;grid&quot;: { &quot;title&quot;: &quot;A fine collection of items&quot;, &quot;numColumns&quot;: 2, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot;, &quot;cornerRadius&quot;: 4.0 }, &quot;items&quot;: [ &quot;image&quot;: { &quot;imageUri&quot;: &quot;https://www.example.com/image.png&quot;, &quot;cropStyle&quot;: { &quot;type&quot;: &quot;SQUARE&quot; }, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot; } }, &quot;title&quot;: &quot;An item&quot;, &quot;textAlignment&quot;: &quot;CENTER&quot; ], &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;:&quot;https://www.example.com&quot; } } } ```
+                    &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to each grid item.
+                      &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                      &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;type&quot;: &quot;A String&quot;, # The border type.
+                    },
+                    &quot;columnCount&quot;: 42, # The number of columns to display in the grid. A default value is used if this field isn&#x27;t specified, and that default value is different depending on where the grid is shown (dialog versus companion).
+                    &quot;items&quot;: [ # The items to display in the grid.
+                      { # Represents a single item in the grid layout.
+                        &quot;id&quot;: &quot;A String&quot;, # A user-specified identifier for this grid item. This identifier is returned in the parent Grid&#x27;s onClick callback parameters.
+                        &quot;image&quot;: { # The image that displays in the grid item.
+                          &quot;altText&quot;: &quot;A String&quot;, # The accessibility label for the image.
+                          &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to the image.
+                            &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                            &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                              &quot;alpha&quot;: 3.14, # 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).
+                              &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                              &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                              &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                            },
+                            &quot;type&quot;: &quot;A String&quot;, # The border type.
+                          },
+                          &quot;cropStyle&quot;: { # Represents the crop style applied to an image. # The crop style to apply to the image.
+                            &quot;aspectRatio&quot;: 3.14, # The aspect ratio to use if the crop type is `RECTANGLE_CUSTOM`.
+                            &quot;type&quot;: &quot;A String&quot;, # The crop type.
+                          },
+                          &quot;imageUri&quot;: &quot;A String&quot;, # The image URL.
+                        },
+                        &quot;layout&quot;: &quot;A String&quot;, # The layout to use for the grid item.
+                        &quot;subtitle&quot;: &quot;A String&quot;, # The grid item&#x27;s subtitle.
+                        &quot;textAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of the grid item&#x27;s text.
+                        &quot;title&quot;: &quot;A String&quot;, # The grid item&#x27;s title.
+                      },
+                    ],
+                    &quot;onClick&quot;: { # This callback is reused by each individual grid item, but with the item&#x27;s identifier and index in the items list added to the callback&#x27;s parameters.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;title&quot;: &quot;A String&quot;, # The text that displays in the grid header.
+                  },
+                  &quot;horizontalAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of this widget.
+                  &quot;image&quot;: { # An image that is specified by a URL and can have an onClick action. # Displays an image in this widget. For example, the following JSON creates an image with alternative text: ``` &quot;image&quot;: { &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot; &quot;altText&quot;: &quot;Avatar for Heba Salam&quot; } ```
+                    &quot;altText&quot;: &quot;A String&quot;, # The alternative text of this image, used for accessibility.
+                    &quot;imageUrl&quot;: &quot;A String&quot;, # An image URL.
+                    &quot;onClick&quot;: {
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                  },
+                  &quot;selectionInput&quot;: { # A widget that creates a UI item (for example, a drop-down list) with options for users to select. # Displays a switch control in this widget. For example, the following JSON creates a dropdown selection for size: ``` &quot;switchControl&quot;: { &quot;name&quot;: &quot;size&quot;, &quot;label&quot;: &quot;Size&quot; &quot;type&quot;: &quot;SelectionType.DROPDOWN&quot;, &quot;items&quot;: [ { &quot;text&quot;: &quot;S&quot;, &quot;value&quot;: &quot;small&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;M&quot;, &quot;value&quot;: &quot;medium&quot;, &quot;selected&quot;: true }, { &quot;text&quot;: &quot;L&quot;, &quot;value&quot;: &quot;large&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;XL&quot;, &quot;value&quot;: &quot;extra_large&quot;, &quot;selected&quot;: false } ] } ```
+                    &quot;items&quot;: [
+                      { # The item in the switch control. A radio button, at most one of the items is selected.
+                        &quot;selected&quot;: True or False, # 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.
+                        &quot;text&quot;: &quot;A String&quot;, # The text to be displayed.
+                        &quot;value&quot;: &quot;A String&quot;, # The value associated with this item. The client should use this as a form input value.
+                      },
+                    ],
+                    &quot;label&quot;: &quot;A String&quot;, # The label displayed ahead of the switch control.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, the form is submitted when the selection changes. If not specified, you must specify a separate button.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;,
+                  },
+                  &quot;textInput&quot;: { # A text input is a UI item where users can input text. A text input can also have an onChange action and suggestions. # Displays a text input in this widget. For example, the following JSON creates a text input for mail address: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;mailing_address&quot;, &quot;label&quot;: &quot;Mailing Address&quot; } ``` As another example, the following JSON creates a text input for programming language with static suggestions: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;preferred_programing_language&quot;, &quot;label&quot;: &quot;Preferred Language&quot;, &quot;initialSuggestions&quot;: { &quot;items&quot;: [ { &quot;text&quot;: &quot;C++&quot; }, { &quot;text&quot;: &quot;Java&quot; }, { &quot;text&quot;: &quot;JavaScript&quot; }, { &quot;text&quot;: &quot;Python&quot; } ] } } ```
+                    &quot;autoCompleteAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The refresh function that returns suggestions based on the user&#x27;s input text. If the callback is not specified, autocomplete is done in client side based on the initial suggestion items.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;hintText&quot;: &quot;A String&quot;, # The hint text.
+                    &quot;initialSuggestions&quot;: { # A container wrapping elements necessary for showing suggestion items used in text input autocomplete. # The initial suggestions made before any user input.
+                      &quot;items&quot;: [ # A list of suggestions items which will be used in are used in autocomplete.
+                        { # A suggestion item. Only supports text for now.
+                          &quot;text&quot;: &quot;A String&quot;,
+                        },
+                      ],
+                    },
+                    &quot;label&quot;: &quot;A String&quot;, # At least one of label and hintText must be specified.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The onChange action, for example, invoke a function.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;, # The style of the text, for example, a single line or multiple lines.
+                    &quot;value&quot;: &quot;A String&quot;, # The default value when there is no input from the user.
+                  },
+                  &quot;textParagraph&quot;: { # A paragraph of text that supports formatting. See [Text formatting](workspace/add-ons/concepts/widgets#text_formatting&quot;) for details. # Displays a text paragraph in this widget. For example, the following JSON creates a bolded text: ``` &quot;textParagraph&quot;: { &quot;text&quot;: &quot; *bold text*&quot; } ```
+                    &quot;text&quot;: &quot;A String&quot;, # The text that&#x27;s shown in the widget.
+                  },
+                },
+              ],
+            },
+          ],
+        },
+      },
+    },
     &quot;type&quot;: &quot;A String&quot;, # The type of bot response.
     &quot;url&quot;: &quot;A String&quot;, # URL for users to auth or config. (Only for REQUEST_CONFIG response types.)
   },
@@ -353,6 +878,531 @@
 
     { # A message in Hangouts Chat.
   &quot;actionResponse&quot;: { # Parameters that a bot can use to configure how it&#x27;s response is posted. # Input only. Parameters that a bot can use to configure how its response is posted.
+    &quot;dialogAction&quot;: { # Contains dialog if present as well as the ActionStatus for the request sent from user. # This response is for Dialog related events and must be accompanied by ResponseType.Dialog
+      &quot;actionStatus&quot;: { # ActionStatus represents status of a request from the bot developer&#x27;s side. In specific, for each request a bot gets, the bot developer will set both fields below in relation to what the response status and message related to status should be. # Status for either invoke dialog or submit dialog requests. This will be used to display a status and message to user if needed. For example in case of an error or success.
+        &quot;statusCode&quot;: &quot;A String&quot;, # The status code.
+        &quot;userFacingMessage&quot;: &quot;A String&quot;, # This message will be the corresponding string to the above status_code. If unset, an appropriate generic message based on the status_code will be shown to the user. If this field is set then the message will be surfaced to the user for both successes and errors.
+      },
+      &quot;dialog&quot;: { # Wrapper around the card body of the dialog. # Dialog for the request.
+        &quot;body&quot;: { # 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. ``` { &quot;header&quot;: { &quot;title&quot;: &quot;Heba Salam&quot;, &quot;subtitle&quot;: &quot;Software Engineer&quot;, &quot;imageStyle&quot;: &quot;ImageStyle.AVATAR&quot;, &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot;, &quot;imageAltText&quot;: &quot;Avatar for Heba Salam&quot; }, &quot;sections&quot; : [ { &quot;header&quot;: &quot;Contact Info&quot;, &quot;widgets&quot;: [ { &quot;decorated_text&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;content&quot;: &quot;heba.salam@example.com&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PERSON&quot; }, &quot;content&quot;: &quot;Online&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PHONE&quot; }, &quot;content&quot;: &quot;+1 (555) 555-1234&quot; } }, { &quot;buttons&quot;: [ { &quot;textButton&quot;: { &quot;text&quot;: &quot;Share&quot;, }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/share&quot; } } }, { &quot;textButton&quot;: { &quot;text&quot;: &quot;Edit&quot;, }, &quot;onClick&quot;: { &quot;action&quot;: { &quot;function&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;EDIT&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } } ] } ], &quot;collapsible&quot;: true, &quot;uncollapsibleWidgetsCount&quot;: 3 } ], &quot;cardActions&quot;: [ { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ], &quot;name&quot;: &quot;contact-card-K3wB6arF2H9L&quot; } ``` # Body of the dialog, which will be rendered in a modal. NOTE: The following fields within the objects are not supported: google.apps.card.v1.Widget.date_time_picker google.apps.card.v1.DecoratedText.SwitchControl.on_change_action google.apps.card.v1.TextInput.on_change_action google.apps.card.v1.SelectionInput.on_change_action google.apps.card.v1.DateTimePicker.on_change_action Setting the fields above will have no effect on the dialog.
+          &quot;cardActions&quot;: [ # The actions of this card. They are added to a card&#x27;s generated toolbar menu. For example, the following JSON constructs a card action menu with Settings and Send Feedback options: ``` &quot;card_actions&quot;: [ { &quot;actionLabel&quot;: &quot;Setting&quot;, &quot;onClick&quot;: { &quot;action&quot;: { &quot;functionName&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;SETTING&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } }, { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ] ```
+            { # 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.
+              &quot;actionLabel&quot;: &quot;A String&quot;, # The label that displays as the action menu item.
+              &quot;onClick&quot;: { # The onclick action for this action item.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+            },
+          ],
+          &quot;displayStyle&quot;: &quot;A String&quot;, # The display style for peekCardHeader.
+          &quot;fixedFooter&quot;: { # A persistent (sticky) footer that is added to the bottom of the card. # The fixed footer shown at the bottom of this card.
+            &quot;primaryButton&quot;: { # A button. Can be a text button or an image button. # The primary button of the fixed footer. The button must be a text button with text and color set.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+            &quot;secondaryButton&quot;: { # A button. Can be a text button or an image button. # 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.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+          },
+          &quot;header&quot;: { # The header of the card. A header usually contains a title and an image.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;name&quot;: &quot;A String&quot;, # Name of the card, which is used as a identifier for the card in card navigation.
+          &quot;peekCardHeader&quot;: { # 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.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;sections&quot;: [ # Sections are separated by a line divider.
+            { # 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.
+              &quot;collapsible&quot;: True or False, # Indicates whether this section is collapsible. If a section is collapsible, the description must be given.
+              &quot;header&quot;: &quot;A String&quot;, # The header of the section. Formatted text is supported.
+              &quot;uncollapsibleWidgetsCount&quot;: 42, # 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`.
+              &quot;widgets&quot;: [ # A section must contain at least 1 widget.
+                { # A widget is a UI element that presents texts, images, etc.
+                  &quot;buttonList&quot;: { # A list of buttons layed out horizontally. # 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: ``` &quot;buttonList&quot;: { &quot;buttons&quot;: [ &quot;button&quot;: { &quot;text&quot;: &quot;Edit&quot;, &quot;Color&quot;: { &quot;Red&quot;: 255 &quot;Green&quot;: 255 &quot;Blue&quot;: 255 } &quot;disabled&quot;: true }, &quot;button&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;INVITE&quot; &quot;altText&quot;: &quot;check calendar&quot; }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/calendar&quot; } } }, ] } ```
+                    &quot;buttons&quot;: [
+                      { # A button. Can be a text button or an image button.
+                        &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                        &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                          &quot;alpha&quot;: 3.14, # 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).
+                          &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                          &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                          &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                        },
+                        &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                        &quot;icon&quot;: { # The icon image.
+                          &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                          &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                          &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                          &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                        },
+                        &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                          &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                          &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                            &quot;onClose&quot;: &quot;A String&quot;,
+                            &quot;openAs&quot;: &quot;A String&quot;,
+                            &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                          },
+                        },
+                        &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                      },
+                    ],
+                  },
+                  &quot;dateTimePicker&quot;: { # The widget that lets users to specify a date and time. # Displays a selection/input widget for date/time. For example, the following JSON creates a date/time picker for an appointment time: ``` &quot;date_time_picker&quot;: { &quot;name&quot;: &quot;appointment_time&quot;, &quot;label&quot;: &quot;Book your appointment at:&quot;, &quot;type&quot;: &quot;DateTimePickerType.DATE_AND_TIME&quot;, &quot;valueMsEpoch&quot;: &quot;796435200000&quot; } ```
+                    &quot;label&quot;: &quot;A String&quot;, # The label for the field that displays to the user.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input that&#x27;s used in formInput, and uniquely identifies this input.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;timezoneOffsetDate&quot;: 42, # 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&#x27;s time zone setting on the client side.
+                    &quot;type&quot;: &quot;A String&quot;, # The type of the date/time picker.
+                    &quot;valueMsEpoch&quot;: &quot;A String&quot;, # 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.
+                  },
+                  &quot;decoratedText&quot;: { # 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. # Displays a decorated text item in this widget. For example, the following JSON creates a decorated text widget showing email address: ``` &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;topLabel&quot;: &quot;Email Address&quot;, &quot;content&quot;: &quot;heba.salam@example.com&quot;, &quot;bottomLabel&quot;: &quot;This is a new Email address!&quot;, &quot;switchWidget&quot;: { &quot;name&quot;: &quot;has_send_welcome_email_to_heba_salam&quot;, &quot;selected&quot;: false, &quot;controlType&quot;: &quot;ControlType.CHECKBOX&quot; } } ```
+                    &quot;bottomLabel&quot;: &quot;A String&quot;, # The formatted text label that shows below the main text.
+                    &quot;button&quot;: { # A button. Can be a text button or an image button. # A button that can be clicked to trigger an action.
+                      &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                      &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                      &quot;icon&quot;: { # The icon image.
+                        &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                        &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                        &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                        &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                      },
+                      &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                        &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                        &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                          &quot;onClose&quot;: &quot;A String&quot;,
+                          &quot;openAs&quot;: &quot;A String&quot;,
+                          &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                        },
+                      },
+                      &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                    },
+                    &quot;endIcon&quot;: { # An icon displayed after the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;icon&quot;: { # Deprecated in favor of start_icon.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;onClick&quot;: { # Only the top and bottom label and content region are clickable.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;startIcon&quot;: { # The icon displayed in front of the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;switchControl&quot;: { # A switch widget can be clicked to change its state or trigger an action.
+                      &quot;controlType&quot;: &quot;A String&quot;, # The control type, either switch or checkbox.
+                      &quot;name&quot;: &quot;A String&quot;, # The name of the switch widget that&#x27;s used in formInput.
+                      &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The action when the switch state is changed.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;selected&quot;: True or False, # If the switch is selected.
+                      &quot;value&quot;: &quot;A String&quot;, # The value is what is passed back in the callback.
+                    },
+                    &quot;text&quot;: &quot;A String&quot;, # Required. The main widget formatted text. See Text formatting for details.
+                    &quot;topLabel&quot;: &quot;A String&quot;, # The formatted text label that shows above the main text.
+                    &quot;wrapText&quot;: True or False, # The wrap text setting. If `true`, the text is wrapped and displayed in multiline. Otherwise, the text is truncated.
+                  },
+                  &quot;divider&quot;: { # A divider that appears in between widgets. # Displays a divider. For example, the following JSON creates a divider: ``` &quot;divider&quot;: { } ```
+                  },
+                  &quot;grid&quot;: { # Represents a Grid widget that displays items in a configurable grid layout. # Displays a grid with a collection of items. For example, the following JSON creates a 2 column grid with a single item: ``` &quot;grid&quot;: { &quot;title&quot;: &quot;A fine collection of items&quot;, &quot;numColumns&quot;: 2, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot;, &quot;cornerRadius&quot;: 4.0 }, &quot;items&quot;: [ &quot;image&quot;: { &quot;imageUri&quot;: &quot;https://www.example.com/image.png&quot;, &quot;cropStyle&quot;: { &quot;type&quot;: &quot;SQUARE&quot; }, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot; } }, &quot;title&quot;: &quot;An item&quot;, &quot;textAlignment&quot;: &quot;CENTER&quot; ], &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;:&quot;https://www.example.com&quot; } } } ```
+                    &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to each grid item.
+                      &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                      &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;type&quot;: &quot;A String&quot;, # The border type.
+                    },
+                    &quot;columnCount&quot;: 42, # The number of columns to display in the grid. A default value is used if this field isn&#x27;t specified, and that default value is different depending on where the grid is shown (dialog versus companion).
+                    &quot;items&quot;: [ # The items to display in the grid.
+                      { # Represents a single item in the grid layout.
+                        &quot;id&quot;: &quot;A String&quot;, # A user-specified identifier for this grid item. This identifier is returned in the parent Grid&#x27;s onClick callback parameters.
+                        &quot;image&quot;: { # The image that displays in the grid item.
+                          &quot;altText&quot;: &quot;A String&quot;, # The accessibility label for the image.
+                          &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to the image.
+                            &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                            &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                              &quot;alpha&quot;: 3.14, # 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).
+                              &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                              &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                              &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                            },
+                            &quot;type&quot;: &quot;A String&quot;, # The border type.
+                          },
+                          &quot;cropStyle&quot;: { # Represents the crop style applied to an image. # The crop style to apply to the image.
+                            &quot;aspectRatio&quot;: 3.14, # The aspect ratio to use if the crop type is `RECTANGLE_CUSTOM`.
+                            &quot;type&quot;: &quot;A String&quot;, # The crop type.
+                          },
+                          &quot;imageUri&quot;: &quot;A String&quot;, # The image URL.
+                        },
+                        &quot;layout&quot;: &quot;A String&quot;, # The layout to use for the grid item.
+                        &quot;subtitle&quot;: &quot;A String&quot;, # The grid item&#x27;s subtitle.
+                        &quot;textAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of the grid item&#x27;s text.
+                        &quot;title&quot;: &quot;A String&quot;, # The grid item&#x27;s title.
+                      },
+                    ],
+                    &quot;onClick&quot;: { # This callback is reused by each individual grid item, but with the item&#x27;s identifier and index in the items list added to the callback&#x27;s parameters.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;title&quot;: &quot;A String&quot;, # The text that displays in the grid header.
+                  },
+                  &quot;horizontalAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of this widget.
+                  &quot;image&quot;: { # An image that is specified by a URL and can have an onClick action. # Displays an image in this widget. For example, the following JSON creates an image with alternative text: ``` &quot;image&quot;: { &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot; &quot;altText&quot;: &quot;Avatar for Heba Salam&quot; } ```
+                    &quot;altText&quot;: &quot;A String&quot;, # The alternative text of this image, used for accessibility.
+                    &quot;imageUrl&quot;: &quot;A String&quot;, # An image URL.
+                    &quot;onClick&quot;: {
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                  },
+                  &quot;selectionInput&quot;: { # A widget that creates a UI item (for example, a drop-down list) with options for users to select. # Displays a switch control in this widget. For example, the following JSON creates a dropdown selection for size: ``` &quot;switchControl&quot;: { &quot;name&quot;: &quot;size&quot;, &quot;label&quot;: &quot;Size&quot; &quot;type&quot;: &quot;SelectionType.DROPDOWN&quot;, &quot;items&quot;: [ { &quot;text&quot;: &quot;S&quot;, &quot;value&quot;: &quot;small&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;M&quot;, &quot;value&quot;: &quot;medium&quot;, &quot;selected&quot;: true }, { &quot;text&quot;: &quot;L&quot;, &quot;value&quot;: &quot;large&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;XL&quot;, &quot;value&quot;: &quot;extra_large&quot;, &quot;selected&quot;: false } ] } ```
+                    &quot;items&quot;: [
+                      { # The item in the switch control. A radio button, at most one of the items is selected.
+                        &quot;selected&quot;: True or False, # 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.
+                        &quot;text&quot;: &quot;A String&quot;, # The text to be displayed.
+                        &quot;value&quot;: &quot;A String&quot;, # The value associated with this item. The client should use this as a form input value.
+                      },
+                    ],
+                    &quot;label&quot;: &quot;A String&quot;, # The label displayed ahead of the switch control.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, the form is submitted when the selection changes. If not specified, you must specify a separate button.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;,
+                  },
+                  &quot;textInput&quot;: { # A text input is a UI item where users can input text. A text input can also have an onChange action and suggestions. # Displays a text input in this widget. For example, the following JSON creates a text input for mail address: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;mailing_address&quot;, &quot;label&quot;: &quot;Mailing Address&quot; } ``` As another example, the following JSON creates a text input for programming language with static suggestions: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;preferred_programing_language&quot;, &quot;label&quot;: &quot;Preferred Language&quot;, &quot;initialSuggestions&quot;: { &quot;items&quot;: [ { &quot;text&quot;: &quot;C++&quot; }, { &quot;text&quot;: &quot;Java&quot; }, { &quot;text&quot;: &quot;JavaScript&quot; }, { &quot;text&quot;: &quot;Python&quot; } ] } } ```
+                    &quot;autoCompleteAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The refresh function that returns suggestions based on the user&#x27;s input text. If the callback is not specified, autocomplete is done in client side based on the initial suggestion items.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;hintText&quot;: &quot;A String&quot;, # The hint text.
+                    &quot;initialSuggestions&quot;: { # A container wrapping elements necessary for showing suggestion items used in text input autocomplete. # The initial suggestions made before any user input.
+                      &quot;items&quot;: [ # A list of suggestions items which will be used in are used in autocomplete.
+                        { # A suggestion item. Only supports text for now.
+                          &quot;text&quot;: &quot;A String&quot;,
+                        },
+                      ],
+                    },
+                    &quot;label&quot;: &quot;A String&quot;, # At least one of label and hintText must be specified.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The onChange action, for example, invoke a function.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;, # The style of the text, for example, a single line or multiple lines.
+                    &quot;value&quot;: &quot;A String&quot;, # The default value when there is no input from the user.
+                  },
+                  &quot;textParagraph&quot;: { # A paragraph of text that supports formatting. See [Text formatting](workspace/add-ons/concepts/widgets#text_formatting&quot;) for details. # Displays a text paragraph in this widget. For example, the following JSON creates a bolded text: ``` &quot;textParagraph&quot;: { &quot;text&quot;: &quot; *bold text*&quot; } ```
+                    &quot;text&quot;: &quot;A String&quot;, # The text that&#x27;s shown in the widget.
+                  },
+                },
+              ],
+            },
+          ],
+        },
+      },
+    },
     &quot;type&quot;: &quot;A String&quot;, # The type of bot response.
     &quot;url&quot;: &quot;A String&quot;, # URL for users to auth or config. (Only for REQUEST_CONFIG response types.)
   },
@@ -602,6 +1652,531 @@
 
 { # A message in Hangouts Chat.
   &quot;actionResponse&quot;: { # Parameters that a bot can use to configure how it&#x27;s response is posted. # Input only. Parameters that a bot can use to configure how its response is posted.
+    &quot;dialogAction&quot;: { # Contains dialog if present as well as the ActionStatus for the request sent from user. # This response is for Dialog related events and must be accompanied by ResponseType.Dialog
+      &quot;actionStatus&quot;: { # ActionStatus represents status of a request from the bot developer&#x27;s side. In specific, for each request a bot gets, the bot developer will set both fields below in relation to what the response status and message related to status should be. # Status for either invoke dialog or submit dialog requests. This will be used to display a status and message to user if needed. For example in case of an error or success.
+        &quot;statusCode&quot;: &quot;A String&quot;, # The status code.
+        &quot;userFacingMessage&quot;: &quot;A String&quot;, # This message will be the corresponding string to the above status_code. If unset, an appropriate generic message based on the status_code will be shown to the user. If this field is set then the message will be surfaced to the user for both successes and errors.
+      },
+      &quot;dialog&quot;: { # Wrapper around the card body of the dialog. # Dialog for the request.
+        &quot;body&quot;: { # 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. ``` { &quot;header&quot;: { &quot;title&quot;: &quot;Heba Salam&quot;, &quot;subtitle&quot;: &quot;Software Engineer&quot;, &quot;imageStyle&quot;: &quot;ImageStyle.AVATAR&quot;, &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot;, &quot;imageAltText&quot;: &quot;Avatar for Heba Salam&quot; }, &quot;sections&quot; : [ { &quot;header&quot;: &quot;Contact Info&quot;, &quot;widgets&quot;: [ { &quot;decorated_text&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;content&quot;: &quot;heba.salam@example.com&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PERSON&quot; }, &quot;content&quot;: &quot;Online&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PHONE&quot; }, &quot;content&quot;: &quot;+1 (555) 555-1234&quot; } }, { &quot;buttons&quot;: [ { &quot;textButton&quot;: { &quot;text&quot;: &quot;Share&quot;, }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/share&quot; } } }, { &quot;textButton&quot;: { &quot;text&quot;: &quot;Edit&quot;, }, &quot;onClick&quot;: { &quot;action&quot;: { &quot;function&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;EDIT&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } } ] } ], &quot;collapsible&quot;: true, &quot;uncollapsibleWidgetsCount&quot;: 3 } ], &quot;cardActions&quot;: [ { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ], &quot;name&quot;: &quot;contact-card-K3wB6arF2H9L&quot; } ``` # Body of the dialog, which will be rendered in a modal. NOTE: The following fields within the objects are not supported: google.apps.card.v1.Widget.date_time_picker google.apps.card.v1.DecoratedText.SwitchControl.on_change_action google.apps.card.v1.TextInput.on_change_action google.apps.card.v1.SelectionInput.on_change_action google.apps.card.v1.DateTimePicker.on_change_action Setting the fields above will have no effect on the dialog.
+          &quot;cardActions&quot;: [ # The actions of this card. They are added to a card&#x27;s generated toolbar menu. For example, the following JSON constructs a card action menu with Settings and Send Feedback options: ``` &quot;card_actions&quot;: [ { &quot;actionLabel&quot;: &quot;Setting&quot;, &quot;onClick&quot;: { &quot;action&quot;: { &quot;functionName&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;SETTING&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } }, { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ] ```
+            { # 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.
+              &quot;actionLabel&quot;: &quot;A String&quot;, # The label that displays as the action menu item.
+              &quot;onClick&quot;: { # The onclick action for this action item.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+            },
+          ],
+          &quot;displayStyle&quot;: &quot;A String&quot;, # The display style for peekCardHeader.
+          &quot;fixedFooter&quot;: { # A persistent (sticky) footer that is added to the bottom of the card. # The fixed footer shown at the bottom of this card.
+            &quot;primaryButton&quot;: { # A button. Can be a text button or an image button. # The primary button of the fixed footer. The button must be a text button with text and color set.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+            &quot;secondaryButton&quot;: { # A button. Can be a text button or an image button. # 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.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+          },
+          &quot;header&quot;: { # The header of the card. A header usually contains a title and an image.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;name&quot;: &quot;A String&quot;, # Name of the card, which is used as a identifier for the card in card navigation.
+          &quot;peekCardHeader&quot;: { # 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.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;sections&quot;: [ # Sections are separated by a line divider.
+            { # 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.
+              &quot;collapsible&quot;: True or False, # Indicates whether this section is collapsible. If a section is collapsible, the description must be given.
+              &quot;header&quot;: &quot;A String&quot;, # The header of the section. Formatted text is supported.
+              &quot;uncollapsibleWidgetsCount&quot;: 42, # 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`.
+              &quot;widgets&quot;: [ # A section must contain at least 1 widget.
+                { # A widget is a UI element that presents texts, images, etc.
+                  &quot;buttonList&quot;: { # A list of buttons layed out horizontally. # 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: ``` &quot;buttonList&quot;: { &quot;buttons&quot;: [ &quot;button&quot;: { &quot;text&quot;: &quot;Edit&quot;, &quot;Color&quot;: { &quot;Red&quot;: 255 &quot;Green&quot;: 255 &quot;Blue&quot;: 255 } &quot;disabled&quot;: true }, &quot;button&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;INVITE&quot; &quot;altText&quot;: &quot;check calendar&quot; }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/calendar&quot; } } }, ] } ```
+                    &quot;buttons&quot;: [
+                      { # A button. Can be a text button or an image button.
+                        &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                        &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                          &quot;alpha&quot;: 3.14, # 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).
+                          &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                          &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                          &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                        },
+                        &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                        &quot;icon&quot;: { # The icon image.
+                          &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                          &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                          &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                          &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                        },
+                        &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                          &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                          &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                            &quot;onClose&quot;: &quot;A String&quot;,
+                            &quot;openAs&quot;: &quot;A String&quot;,
+                            &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                          },
+                        },
+                        &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                      },
+                    ],
+                  },
+                  &quot;dateTimePicker&quot;: { # The widget that lets users to specify a date and time. # Displays a selection/input widget for date/time. For example, the following JSON creates a date/time picker for an appointment time: ``` &quot;date_time_picker&quot;: { &quot;name&quot;: &quot;appointment_time&quot;, &quot;label&quot;: &quot;Book your appointment at:&quot;, &quot;type&quot;: &quot;DateTimePickerType.DATE_AND_TIME&quot;, &quot;valueMsEpoch&quot;: &quot;796435200000&quot; } ```
+                    &quot;label&quot;: &quot;A String&quot;, # The label for the field that displays to the user.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input that&#x27;s used in formInput, and uniquely identifies this input.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;timezoneOffsetDate&quot;: 42, # 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&#x27;s time zone setting on the client side.
+                    &quot;type&quot;: &quot;A String&quot;, # The type of the date/time picker.
+                    &quot;valueMsEpoch&quot;: &quot;A String&quot;, # 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.
+                  },
+                  &quot;decoratedText&quot;: { # 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. # Displays a decorated text item in this widget. For example, the following JSON creates a decorated text widget showing email address: ``` &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;topLabel&quot;: &quot;Email Address&quot;, &quot;content&quot;: &quot;heba.salam@example.com&quot;, &quot;bottomLabel&quot;: &quot;This is a new Email address!&quot;, &quot;switchWidget&quot;: { &quot;name&quot;: &quot;has_send_welcome_email_to_heba_salam&quot;, &quot;selected&quot;: false, &quot;controlType&quot;: &quot;ControlType.CHECKBOX&quot; } } ```
+                    &quot;bottomLabel&quot;: &quot;A String&quot;, # The formatted text label that shows below the main text.
+                    &quot;button&quot;: { # A button. Can be a text button or an image button. # A button that can be clicked to trigger an action.
+                      &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                      &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                      &quot;icon&quot;: { # The icon image.
+                        &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                        &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                        &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                        &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                      },
+                      &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                        &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                        &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                          &quot;onClose&quot;: &quot;A String&quot;,
+                          &quot;openAs&quot;: &quot;A String&quot;,
+                          &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                        },
+                      },
+                      &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                    },
+                    &quot;endIcon&quot;: { # An icon displayed after the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;icon&quot;: { # Deprecated in favor of start_icon.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;onClick&quot;: { # Only the top and bottom label and content region are clickable.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;startIcon&quot;: { # The icon displayed in front of the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;switchControl&quot;: { # A switch widget can be clicked to change its state or trigger an action.
+                      &quot;controlType&quot;: &quot;A String&quot;, # The control type, either switch or checkbox.
+                      &quot;name&quot;: &quot;A String&quot;, # The name of the switch widget that&#x27;s used in formInput.
+                      &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The action when the switch state is changed.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;selected&quot;: True or False, # If the switch is selected.
+                      &quot;value&quot;: &quot;A String&quot;, # The value is what is passed back in the callback.
+                    },
+                    &quot;text&quot;: &quot;A String&quot;, # Required. The main widget formatted text. See Text formatting for details.
+                    &quot;topLabel&quot;: &quot;A String&quot;, # The formatted text label that shows above the main text.
+                    &quot;wrapText&quot;: True or False, # The wrap text setting. If `true`, the text is wrapped and displayed in multiline. Otherwise, the text is truncated.
+                  },
+                  &quot;divider&quot;: { # A divider that appears in between widgets. # Displays a divider. For example, the following JSON creates a divider: ``` &quot;divider&quot;: { } ```
+                  },
+                  &quot;grid&quot;: { # Represents a Grid widget that displays items in a configurable grid layout. # Displays a grid with a collection of items. For example, the following JSON creates a 2 column grid with a single item: ``` &quot;grid&quot;: { &quot;title&quot;: &quot;A fine collection of items&quot;, &quot;numColumns&quot;: 2, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot;, &quot;cornerRadius&quot;: 4.0 }, &quot;items&quot;: [ &quot;image&quot;: { &quot;imageUri&quot;: &quot;https://www.example.com/image.png&quot;, &quot;cropStyle&quot;: { &quot;type&quot;: &quot;SQUARE&quot; }, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot; } }, &quot;title&quot;: &quot;An item&quot;, &quot;textAlignment&quot;: &quot;CENTER&quot; ], &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;:&quot;https://www.example.com&quot; } } } ```
+                    &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to each grid item.
+                      &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                      &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;type&quot;: &quot;A String&quot;, # The border type.
+                    },
+                    &quot;columnCount&quot;: 42, # The number of columns to display in the grid. A default value is used if this field isn&#x27;t specified, and that default value is different depending on where the grid is shown (dialog versus companion).
+                    &quot;items&quot;: [ # The items to display in the grid.
+                      { # Represents a single item in the grid layout.
+                        &quot;id&quot;: &quot;A String&quot;, # A user-specified identifier for this grid item. This identifier is returned in the parent Grid&#x27;s onClick callback parameters.
+                        &quot;image&quot;: { # The image that displays in the grid item.
+                          &quot;altText&quot;: &quot;A String&quot;, # The accessibility label for the image.
+                          &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to the image.
+                            &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                            &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                              &quot;alpha&quot;: 3.14, # 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).
+                              &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                              &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                              &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                            },
+                            &quot;type&quot;: &quot;A String&quot;, # The border type.
+                          },
+                          &quot;cropStyle&quot;: { # Represents the crop style applied to an image. # The crop style to apply to the image.
+                            &quot;aspectRatio&quot;: 3.14, # The aspect ratio to use if the crop type is `RECTANGLE_CUSTOM`.
+                            &quot;type&quot;: &quot;A String&quot;, # The crop type.
+                          },
+                          &quot;imageUri&quot;: &quot;A String&quot;, # The image URL.
+                        },
+                        &quot;layout&quot;: &quot;A String&quot;, # The layout to use for the grid item.
+                        &quot;subtitle&quot;: &quot;A String&quot;, # The grid item&#x27;s subtitle.
+                        &quot;textAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of the grid item&#x27;s text.
+                        &quot;title&quot;: &quot;A String&quot;, # The grid item&#x27;s title.
+                      },
+                    ],
+                    &quot;onClick&quot;: { # This callback is reused by each individual grid item, but with the item&#x27;s identifier and index in the items list added to the callback&#x27;s parameters.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;title&quot;: &quot;A String&quot;, # The text that displays in the grid header.
+                  },
+                  &quot;horizontalAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of this widget.
+                  &quot;image&quot;: { # An image that is specified by a URL and can have an onClick action. # Displays an image in this widget. For example, the following JSON creates an image with alternative text: ``` &quot;image&quot;: { &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot; &quot;altText&quot;: &quot;Avatar for Heba Salam&quot; } ```
+                    &quot;altText&quot;: &quot;A String&quot;, # The alternative text of this image, used for accessibility.
+                    &quot;imageUrl&quot;: &quot;A String&quot;, # An image URL.
+                    &quot;onClick&quot;: {
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                  },
+                  &quot;selectionInput&quot;: { # A widget that creates a UI item (for example, a drop-down list) with options for users to select. # Displays a switch control in this widget. For example, the following JSON creates a dropdown selection for size: ``` &quot;switchControl&quot;: { &quot;name&quot;: &quot;size&quot;, &quot;label&quot;: &quot;Size&quot; &quot;type&quot;: &quot;SelectionType.DROPDOWN&quot;, &quot;items&quot;: [ { &quot;text&quot;: &quot;S&quot;, &quot;value&quot;: &quot;small&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;M&quot;, &quot;value&quot;: &quot;medium&quot;, &quot;selected&quot;: true }, { &quot;text&quot;: &quot;L&quot;, &quot;value&quot;: &quot;large&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;XL&quot;, &quot;value&quot;: &quot;extra_large&quot;, &quot;selected&quot;: false } ] } ```
+                    &quot;items&quot;: [
+                      { # The item in the switch control. A radio button, at most one of the items is selected.
+                        &quot;selected&quot;: True or False, # 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.
+                        &quot;text&quot;: &quot;A String&quot;, # The text to be displayed.
+                        &quot;value&quot;: &quot;A String&quot;, # The value associated with this item. The client should use this as a form input value.
+                      },
+                    ],
+                    &quot;label&quot;: &quot;A String&quot;, # The label displayed ahead of the switch control.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, the form is submitted when the selection changes. If not specified, you must specify a separate button.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;,
+                  },
+                  &quot;textInput&quot;: { # A text input is a UI item where users can input text. A text input can also have an onChange action and suggestions. # Displays a text input in this widget. For example, the following JSON creates a text input for mail address: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;mailing_address&quot;, &quot;label&quot;: &quot;Mailing Address&quot; } ``` As another example, the following JSON creates a text input for programming language with static suggestions: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;preferred_programing_language&quot;, &quot;label&quot;: &quot;Preferred Language&quot;, &quot;initialSuggestions&quot;: { &quot;items&quot;: [ { &quot;text&quot;: &quot;C++&quot; }, { &quot;text&quot;: &quot;Java&quot; }, { &quot;text&quot;: &quot;JavaScript&quot; }, { &quot;text&quot;: &quot;Python&quot; } ] } } ```
+                    &quot;autoCompleteAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The refresh function that returns suggestions based on the user&#x27;s input text. If the callback is not specified, autocomplete is done in client side based on the initial suggestion items.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;hintText&quot;: &quot;A String&quot;, # The hint text.
+                    &quot;initialSuggestions&quot;: { # A container wrapping elements necessary for showing suggestion items used in text input autocomplete. # The initial suggestions made before any user input.
+                      &quot;items&quot;: [ # A list of suggestions items which will be used in are used in autocomplete.
+                        { # A suggestion item. Only supports text for now.
+                          &quot;text&quot;: &quot;A String&quot;,
+                        },
+                      ],
+                    },
+                    &quot;label&quot;: &quot;A String&quot;, # At least one of label and hintText must be specified.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The onChange action, for example, invoke a function.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;, # The style of the text, for example, a single line or multiple lines.
+                    &quot;value&quot;: &quot;A String&quot;, # The default value when there is no input from the user.
+                  },
+                  &quot;textParagraph&quot;: { # A paragraph of text that supports formatting. See [Text formatting](workspace/add-ons/concepts/widgets#text_formatting&quot;) for details. # Displays a text paragraph in this widget. For example, the following JSON creates a bolded text: ``` &quot;textParagraph&quot;: { &quot;text&quot;: &quot; *bold text*&quot; } ```
+                    &quot;text&quot;: &quot;A String&quot;, # The text that&#x27;s shown in the widget.
+                  },
+                },
+              ],
+            },
+          ],
+        },
+      },
+    },
     &quot;type&quot;: &quot;A String&quot;, # The type of bot response.
     &quot;url&quot;: &quot;A String&quot;, # URL for users to auth or config. (Only for REQUEST_CONFIG response types.)
   },
@@ -850,6 +2425,531 @@
 
     { # A message in Hangouts Chat.
   &quot;actionResponse&quot;: { # Parameters that a bot can use to configure how it&#x27;s response is posted. # Input only. Parameters that a bot can use to configure how its response is posted.
+    &quot;dialogAction&quot;: { # Contains dialog if present as well as the ActionStatus for the request sent from user. # This response is for Dialog related events and must be accompanied by ResponseType.Dialog
+      &quot;actionStatus&quot;: { # ActionStatus represents status of a request from the bot developer&#x27;s side. In specific, for each request a bot gets, the bot developer will set both fields below in relation to what the response status and message related to status should be. # Status for either invoke dialog or submit dialog requests. This will be used to display a status and message to user if needed. For example in case of an error or success.
+        &quot;statusCode&quot;: &quot;A String&quot;, # The status code.
+        &quot;userFacingMessage&quot;: &quot;A String&quot;, # This message will be the corresponding string to the above status_code. If unset, an appropriate generic message based on the status_code will be shown to the user. If this field is set then the message will be surfaced to the user for both successes and errors.
+      },
+      &quot;dialog&quot;: { # Wrapper around the card body of the dialog. # Dialog for the request.
+        &quot;body&quot;: { # 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. ``` { &quot;header&quot;: { &quot;title&quot;: &quot;Heba Salam&quot;, &quot;subtitle&quot;: &quot;Software Engineer&quot;, &quot;imageStyle&quot;: &quot;ImageStyle.AVATAR&quot;, &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot;, &quot;imageAltText&quot;: &quot;Avatar for Heba Salam&quot; }, &quot;sections&quot; : [ { &quot;header&quot;: &quot;Contact Info&quot;, &quot;widgets&quot;: [ { &quot;decorated_text&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;content&quot;: &quot;heba.salam@example.com&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PERSON&quot; }, &quot;content&quot;: &quot;Online&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PHONE&quot; }, &quot;content&quot;: &quot;+1 (555) 555-1234&quot; } }, { &quot;buttons&quot;: [ { &quot;textButton&quot;: { &quot;text&quot;: &quot;Share&quot;, }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/share&quot; } } }, { &quot;textButton&quot;: { &quot;text&quot;: &quot;Edit&quot;, }, &quot;onClick&quot;: { &quot;action&quot;: { &quot;function&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;EDIT&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } } ] } ], &quot;collapsible&quot;: true, &quot;uncollapsibleWidgetsCount&quot;: 3 } ], &quot;cardActions&quot;: [ { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ], &quot;name&quot;: &quot;contact-card-K3wB6arF2H9L&quot; } ``` # Body of the dialog, which will be rendered in a modal. NOTE: The following fields within the objects are not supported: google.apps.card.v1.Widget.date_time_picker google.apps.card.v1.DecoratedText.SwitchControl.on_change_action google.apps.card.v1.TextInput.on_change_action google.apps.card.v1.SelectionInput.on_change_action google.apps.card.v1.DateTimePicker.on_change_action Setting the fields above will have no effect on the dialog.
+          &quot;cardActions&quot;: [ # The actions of this card. They are added to a card&#x27;s generated toolbar menu. For example, the following JSON constructs a card action menu with Settings and Send Feedback options: ``` &quot;card_actions&quot;: [ { &quot;actionLabel&quot;: &quot;Setting&quot;, &quot;onClick&quot;: { &quot;action&quot;: { &quot;functionName&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;SETTING&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } }, { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ] ```
+            { # 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.
+              &quot;actionLabel&quot;: &quot;A String&quot;, # The label that displays as the action menu item.
+              &quot;onClick&quot;: { # The onclick action for this action item.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+            },
+          ],
+          &quot;displayStyle&quot;: &quot;A String&quot;, # The display style for peekCardHeader.
+          &quot;fixedFooter&quot;: { # A persistent (sticky) footer that is added to the bottom of the card. # The fixed footer shown at the bottom of this card.
+            &quot;primaryButton&quot;: { # A button. Can be a text button or an image button. # The primary button of the fixed footer. The button must be a text button with text and color set.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+            &quot;secondaryButton&quot;: { # A button. Can be a text button or an image button. # 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.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+          },
+          &quot;header&quot;: { # The header of the card. A header usually contains a title and an image.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;name&quot;: &quot;A String&quot;, # Name of the card, which is used as a identifier for the card in card navigation.
+          &quot;peekCardHeader&quot;: { # 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.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;sections&quot;: [ # Sections are separated by a line divider.
+            { # 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.
+              &quot;collapsible&quot;: True or False, # Indicates whether this section is collapsible. If a section is collapsible, the description must be given.
+              &quot;header&quot;: &quot;A String&quot;, # The header of the section. Formatted text is supported.
+              &quot;uncollapsibleWidgetsCount&quot;: 42, # 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`.
+              &quot;widgets&quot;: [ # A section must contain at least 1 widget.
+                { # A widget is a UI element that presents texts, images, etc.
+                  &quot;buttonList&quot;: { # A list of buttons layed out horizontally. # 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: ``` &quot;buttonList&quot;: { &quot;buttons&quot;: [ &quot;button&quot;: { &quot;text&quot;: &quot;Edit&quot;, &quot;Color&quot;: { &quot;Red&quot;: 255 &quot;Green&quot;: 255 &quot;Blue&quot;: 255 } &quot;disabled&quot;: true }, &quot;button&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;INVITE&quot; &quot;altText&quot;: &quot;check calendar&quot; }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/calendar&quot; } } }, ] } ```
+                    &quot;buttons&quot;: [
+                      { # A button. Can be a text button or an image button.
+                        &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                        &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                          &quot;alpha&quot;: 3.14, # 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).
+                          &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                          &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                          &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                        },
+                        &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                        &quot;icon&quot;: { # The icon image.
+                          &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                          &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                          &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                          &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                        },
+                        &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                          &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                          &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                            &quot;onClose&quot;: &quot;A String&quot;,
+                            &quot;openAs&quot;: &quot;A String&quot;,
+                            &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                          },
+                        },
+                        &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                      },
+                    ],
+                  },
+                  &quot;dateTimePicker&quot;: { # The widget that lets users to specify a date and time. # Displays a selection/input widget for date/time. For example, the following JSON creates a date/time picker for an appointment time: ``` &quot;date_time_picker&quot;: { &quot;name&quot;: &quot;appointment_time&quot;, &quot;label&quot;: &quot;Book your appointment at:&quot;, &quot;type&quot;: &quot;DateTimePickerType.DATE_AND_TIME&quot;, &quot;valueMsEpoch&quot;: &quot;796435200000&quot; } ```
+                    &quot;label&quot;: &quot;A String&quot;, # The label for the field that displays to the user.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input that&#x27;s used in formInput, and uniquely identifies this input.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;timezoneOffsetDate&quot;: 42, # 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&#x27;s time zone setting on the client side.
+                    &quot;type&quot;: &quot;A String&quot;, # The type of the date/time picker.
+                    &quot;valueMsEpoch&quot;: &quot;A String&quot;, # 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.
+                  },
+                  &quot;decoratedText&quot;: { # 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. # Displays a decorated text item in this widget. For example, the following JSON creates a decorated text widget showing email address: ``` &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;topLabel&quot;: &quot;Email Address&quot;, &quot;content&quot;: &quot;heba.salam@example.com&quot;, &quot;bottomLabel&quot;: &quot;This is a new Email address!&quot;, &quot;switchWidget&quot;: { &quot;name&quot;: &quot;has_send_welcome_email_to_heba_salam&quot;, &quot;selected&quot;: false, &quot;controlType&quot;: &quot;ControlType.CHECKBOX&quot; } } ```
+                    &quot;bottomLabel&quot;: &quot;A String&quot;, # The formatted text label that shows below the main text.
+                    &quot;button&quot;: { # A button. Can be a text button or an image button. # A button that can be clicked to trigger an action.
+                      &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                      &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                      &quot;icon&quot;: { # The icon image.
+                        &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                        &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                        &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                        &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                      },
+                      &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                        &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                        &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                          &quot;onClose&quot;: &quot;A String&quot;,
+                          &quot;openAs&quot;: &quot;A String&quot;,
+                          &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                        },
+                      },
+                      &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                    },
+                    &quot;endIcon&quot;: { # An icon displayed after the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;icon&quot;: { # Deprecated in favor of start_icon.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;onClick&quot;: { # Only the top and bottom label and content region are clickable.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;startIcon&quot;: { # The icon displayed in front of the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;switchControl&quot;: { # A switch widget can be clicked to change its state or trigger an action.
+                      &quot;controlType&quot;: &quot;A String&quot;, # The control type, either switch or checkbox.
+                      &quot;name&quot;: &quot;A String&quot;, # The name of the switch widget that&#x27;s used in formInput.
+                      &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The action when the switch state is changed.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;selected&quot;: True or False, # If the switch is selected.
+                      &quot;value&quot;: &quot;A String&quot;, # The value is what is passed back in the callback.
+                    },
+                    &quot;text&quot;: &quot;A String&quot;, # Required. The main widget formatted text. See Text formatting for details.
+                    &quot;topLabel&quot;: &quot;A String&quot;, # The formatted text label that shows above the main text.
+                    &quot;wrapText&quot;: True or False, # The wrap text setting. If `true`, the text is wrapped and displayed in multiline. Otherwise, the text is truncated.
+                  },
+                  &quot;divider&quot;: { # A divider that appears in between widgets. # Displays a divider. For example, the following JSON creates a divider: ``` &quot;divider&quot;: { } ```
+                  },
+                  &quot;grid&quot;: { # Represents a Grid widget that displays items in a configurable grid layout. # Displays a grid with a collection of items. For example, the following JSON creates a 2 column grid with a single item: ``` &quot;grid&quot;: { &quot;title&quot;: &quot;A fine collection of items&quot;, &quot;numColumns&quot;: 2, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot;, &quot;cornerRadius&quot;: 4.0 }, &quot;items&quot;: [ &quot;image&quot;: { &quot;imageUri&quot;: &quot;https://www.example.com/image.png&quot;, &quot;cropStyle&quot;: { &quot;type&quot;: &quot;SQUARE&quot; }, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot; } }, &quot;title&quot;: &quot;An item&quot;, &quot;textAlignment&quot;: &quot;CENTER&quot; ], &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;:&quot;https://www.example.com&quot; } } } ```
+                    &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to each grid item.
+                      &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                      &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;type&quot;: &quot;A String&quot;, # The border type.
+                    },
+                    &quot;columnCount&quot;: 42, # The number of columns to display in the grid. A default value is used if this field isn&#x27;t specified, and that default value is different depending on where the grid is shown (dialog versus companion).
+                    &quot;items&quot;: [ # The items to display in the grid.
+                      { # Represents a single item in the grid layout.
+                        &quot;id&quot;: &quot;A String&quot;, # A user-specified identifier for this grid item. This identifier is returned in the parent Grid&#x27;s onClick callback parameters.
+                        &quot;image&quot;: { # The image that displays in the grid item.
+                          &quot;altText&quot;: &quot;A String&quot;, # The accessibility label for the image.
+                          &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to the image.
+                            &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                            &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                              &quot;alpha&quot;: 3.14, # 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).
+                              &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                              &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                              &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                            },
+                            &quot;type&quot;: &quot;A String&quot;, # The border type.
+                          },
+                          &quot;cropStyle&quot;: { # Represents the crop style applied to an image. # The crop style to apply to the image.
+                            &quot;aspectRatio&quot;: 3.14, # The aspect ratio to use if the crop type is `RECTANGLE_CUSTOM`.
+                            &quot;type&quot;: &quot;A String&quot;, # The crop type.
+                          },
+                          &quot;imageUri&quot;: &quot;A String&quot;, # The image URL.
+                        },
+                        &quot;layout&quot;: &quot;A String&quot;, # The layout to use for the grid item.
+                        &quot;subtitle&quot;: &quot;A String&quot;, # The grid item&#x27;s subtitle.
+                        &quot;textAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of the grid item&#x27;s text.
+                        &quot;title&quot;: &quot;A String&quot;, # The grid item&#x27;s title.
+                      },
+                    ],
+                    &quot;onClick&quot;: { # This callback is reused by each individual grid item, but with the item&#x27;s identifier and index in the items list added to the callback&#x27;s parameters.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;title&quot;: &quot;A String&quot;, # The text that displays in the grid header.
+                  },
+                  &quot;horizontalAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of this widget.
+                  &quot;image&quot;: { # An image that is specified by a URL and can have an onClick action. # Displays an image in this widget. For example, the following JSON creates an image with alternative text: ``` &quot;image&quot;: { &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot; &quot;altText&quot;: &quot;Avatar for Heba Salam&quot; } ```
+                    &quot;altText&quot;: &quot;A String&quot;, # The alternative text of this image, used for accessibility.
+                    &quot;imageUrl&quot;: &quot;A String&quot;, # An image URL.
+                    &quot;onClick&quot;: {
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                  },
+                  &quot;selectionInput&quot;: { # A widget that creates a UI item (for example, a drop-down list) with options for users to select. # Displays a switch control in this widget. For example, the following JSON creates a dropdown selection for size: ``` &quot;switchControl&quot;: { &quot;name&quot;: &quot;size&quot;, &quot;label&quot;: &quot;Size&quot; &quot;type&quot;: &quot;SelectionType.DROPDOWN&quot;, &quot;items&quot;: [ { &quot;text&quot;: &quot;S&quot;, &quot;value&quot;: &quot;small&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;M&quot;, &quot;value&quot;: &quot;medium&quot;, &quot;selected&quot;: true }, { &quot;text&quot;: &quot;L&quot;, &quot;value&quot;: &quot;large&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;XL&quot;, &quot;value&quot;: &quot;extra_large&quot;, &quot;selected&quot;: false } ] } ```
+                    &quot;items&quot;: [
+                      { # The item in the switch control. A radio button, at most one of the items is selected.
+                        &quot;selected&quot;: True or False, # 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.
+                        &quot;text&quot;: &quot;A String&quot;, # The text to be displayed.
+                        &quot;value&quot;: &quot;A String&quot;, # The value associated with this item. The client should use this as a form input value.
+                      },
+                    ],
+                    &quot;label&quot;: &quot;A String&quot;, # The label displayed ahead of the switch control.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, the form is submitted when the selection changes. If not specified, you must specify a separate button.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;,
+                  },
+                  &quot;textInput&quot;: { # A text input is a UI item where users can input text. A text input can also have an onChange action and suggestions. # Displays a text input in this widget. For example, the following JSON creates a text input for mail address: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;mailing_address&quot;, &quot;label&quot;: &quot;Mailing Address&quot; } ``` As another example, the following JSON creates a text input for programming language with static suggestions: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;preferred_programing_language&quot;, &quot;label&quot;: &quot;Preferred Language&quot;, &quot;initialSuggestions&quot;: { &quot;items&quot;: [ { &quot;text&quot;: &quot;C++&quot; }, { &quot;text&quot;: &quot;Java&quot; }, { &quot;text&quot;: &quot;JavaScript&quot; }, { &quot;text&quot;: &quot;Python&quot; } ] } } ```
+                    &quot;autoCompleteAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The refresh function that returns suggestions based on the user&#x27;s input text. If the callback is not specified, autocomplete is done in client side based on the initial suggestion items.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;hintText&quot;: &quot;A String&quot;, # The hint text.
+                    &quot;initialSuggestions&quot;: { # A container wrapping elements necessary for showing suggestion items used in text input autocomplete. # The initial suggestions made before any user input.
+                      &quot;items&quot;: [ # A list of suggestions items which will be used in are used in autocomplete.
+                        { # A suggestion item. Only supports text for now.
+                          &quot;text&quot;: &quot;A String&quot;,
+                        },
+                      ],
+                    },
+                    &quot;label&quot;: &quot;A String&quot;, # At least one of label and hintText must be specified.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The onChange action, for example, invoke a function.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;, # The style of the text, for example, a single line or multiple lines.
+                    &quot;value&quot;: &quot;A String&quot;, # The default value when there is no input from the user.
+                  },
+                  &quot;textParagraph&quot;: { # A paragraph of text that supports formatting. See [Text formatting](workspace/add-ons/concepts/widgets#text_formatting&quot;) for details. # Displays a text paragraph in this widget. For example, the following JSON creates a bolded text: ``` &quot;textParagraph&quot;: { &quot;text&quot;: &quot; *bold text*&quot; } ```
+                    &quot;text&quot;: &quot;A String&quot;, # The text that&#x27;s shown in the widget.
+                  },
+                },
+              ],
+            },
+          ],
+        },
+      },
+    },
     &quot;type&quot;: &quot;A String&quot;, # The type of bot response.
     &quot;url&quot;: &quot;A String&quot;, # URL for users to auth or config. (Only for REQUEST_CONFIG response types.)
   },
diff --git a/docs/dyn/chat_v1.spaces.html b/docs/dyn/chat_v1.spaces.html
index d987d9d..9aa3452 100644
--- a/docs/dyn/chat_v1.spaces.html
+++ b/docs/dyn/chat_v1.spaces.html
@@ -182,6 +182,531 @@
 
 { # A message in Hangouts Chat.
   &quot;actionResponse&quot;: { # Parameters that a bot can use to configure how it&#x27;s response is posted. # Input only. Parameters that a bot can use to configure how its response is posted.
+    &quot;dialogAction&quot;: { # Contains dialog if present as well as the ActionStatus for the request sent from user. # This response is for Dialog related events and must be accompanied by ResponseType.Dialog
+      &quot;actionStatus&quot;: { # ActionStatus represents status of a request from the bot developer&#x27;s side. In specific, for each request a bot gets, the bot developer will set both fields below in relation to what the response status and message related to status should be. # Status for either invoke dialog or submit dialog requests. This will be used to display a status and message to user if needed. For example in case of an error or success.
+        &quot;statusCode&quot;: &quot;A String&quot;, # The status code.
+        &quot;userFacingMessage&quot;: &quot;A String&quot;, # This message will be the corresponding string to the above status_code. If unset, an appropriate generic message based on the status_code will be shown to the user. If this field is set then the message will be surfaced to the user for both successes and errors.
+      },
+      &quot;dialog&quot;: { # Wrapper around the card body of the dialog. # Dialog for the request.
+        &quot;body&quot;: { # 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. ``` { &quot;header&quot;: { &quot;title&quot;: &quot;Heba Salam&quot;, &quot;subtitle&quot;: &quot;Software Engineer&quot;, &quot;imageStyle&quot;: &quot;ImageStyle.AVATAR&quot;, &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot;, &quot;imageAltText&quot;: &quot;Avatar for Heba Salam&quot; }, &quot;sections&quot; : [ { &quot;header&quot;: &quot;Contact Info&quot;, &quot;widgets&quot;: [ { &quot;decorated_text&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;content&quot;: &quot;heba.salam@example.com&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PERSON&quot; }, &quot;content&quot;: &quot;Online&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PHONE&quot; }, &quot;content&quot;: &quot;+1 (555) 555-1234&quot; } }, { &quot;buttons&quot;: [ { &quot;textButton&quot;: { &quot;text&quot;: &quot;Share&quot;, }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/share&quot; } } }, { &quot;textButton&quot;: { &quot;text&quot;: &quot;Edit&quot;, }, &quot;onClick&quot;: { &quot;action&quot;: { &quot;function&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;EDIT&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } } ] } ], &quot;collapsible&quot;: true, &quot;uncollapsibleWidgetsCount&quot;: 3 } ], &quot;cardActions&quot;: [ { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ], &quot;name&quot;: &quot;contact-card-K3wB6arF2H9L&quot; } ``` # Body of the dialog, which will be rendered in a modal. NOTE: The following fields within the objects are not supported: google.apps.card.v1.Widget.date_time_picker google.apps.card.v1.DecoratedText.SwitchControl.on_change_action google.apps.card.v1.TextInput.on_change_action google.apps.card.v1.SelectionInput.on_change_action google.apps.card.v1.DateTimePicker.on_change_action Setting the fields above will have no effect on the dialog.
+          &quot;cardActions&quot;: [ # The actions of this card. They are added to a card&#x27;s generated toolbar menu. For example, the following JSON constructs a card action menu with Settings and Send Feedback options: ``` &quot;card_actions&quot;: [ { &quot;actionLabel&quot;: &quot;Setting&quot;, &quot;onClick&quot;: { &quot;action&quot;: { &quot;functionName&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;SETTING&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } }, { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ] ```
+            { # 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.
+              &quot;actionLabel&quot;: &quot;A String&quot;, # The label that displays as the action menu item.
+              &quot;onClick&quot;: { # The onclick action for this action item.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+            },
+          ],
+          &quot;displayStyle&quot;: &quot;A String&quot;, # The display style for peekCardHeader.
+          &quot;fixedFooter&quot;: { # A persistent (sticky) footer that is added to the bottom of the card. # The fixed footer shown at the bottom of this card.
+            &quot;primaryButton&quot;: { # A button. Can be a text button or an image button. # The primary button of the fixed footer. The button must be a text button with text and color set.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+            &quot;secondaryButton&quot;: { # A button. Can be a text button or an image button. # 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.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+          },
+          &quot;header&quot;: { # The header of the card. A header usually contains a title and an image.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;name&quot;: &quot;A String&quot;, # Name of the card, which is used as a identifier for the card in card navigation.
+          &quot;peekCardHeader&quot;: { # 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.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;sections&quot;: [ # Sections are separated by a line divider.
+            { # 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.
+              &quot;collapsible&quot;: True or False, # Indicates whether this section is collapsible. If a section is collapsible, the description must be given.
+              &quot;header&quot;: &quot;A String&quot;, # The header of the section. Formatted text is supported.
+              &quot;uncollapsibleWidgetsCount&quot;: 42, # 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`.
+              &quot;widgets&quot;: [ # A section must contain at least 1 widget.
+                { # A widget is a UI element that presents texts, images, etc.
+                  &quot;buttonList&quot;: { # A list of buttons layed out horizontally. # 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: ``` &quot;buttonList&quot;: { &quot;buttons&quot;: [ &quot;button&quot;: { &quot;text&quot;: &quot;Edit&quot;, &quot;Color&quot;: { &quot;Red&quot;: 255 &quot;Green&quot;: 255 &quot;Blue&quot;: 255 } &quot;disabled&quot;: true }, &quot;button&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;INVITE&quot; &quot;altText&quot;: &quot;check calendar&quot; }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/calendar&quot; } } }, ] } ```
+                    &quot;buttons&quot;: [
+                      { # A button. Can be a text button or an image button.
+                        &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                        &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                          &quot;alpha&quot;: 3.14, # 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).
+                          &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                          &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                          &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                        },
+                        &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                        &quot;icon&quot;: { # The icon image.
+                          &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                          &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                          &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                          &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                        },
+                        &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                          &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                          &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                            &quot;onClose&quot;: &quot;A String&quot;,
+                            &quot;openAs&quot;: &quot;A String&quot;,
+                            &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                          },
+                        },
+                        &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                      },
+                    ],
+                  },
+                  &quot;dateTimePicker&quot;: { # The widget that lets users to specify a date and time. # Displays a selection/input widget for date/time. For example, the following JSON creates a date/time picker for an appointment time: ``` &quot;date_time_picker&quot;: { &quot;name&quot;: &quot;appointment_time&quot;, &quot;label&quot;: &quot;Book your appointment at:&quot;, &quot;type&quot;: &quot;DateTimePickerType.DATE_AND_TIME&quot;, &quot;valueMsEpoch&quot;: &quot;796435200000&quot; } ```
+                    &quot;label&quot;: &quot;A String&quot;, # The label for the field that displays to the user.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input that&#x27;s used in formInput, and uniquely identifies this input.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;timezoneOffsetDate&quot;: 42, # 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&#x27;s time zone setting on the client side.
+                    &quot;type&quot;: &quot;A String&quot;, # The type of the date/time picker.
+                    &quot;valueMsEpoch&quot;: &quot;A String&quot;, # 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.
+                  },
+                  &quot;decoratedText&quot;: { # 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. # Displays a decorated text item in this widget. For example, the following JSON creates a decorated text widget showing email address: ``` &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;topLabel&quot;: &quot;Email Address&quot;, &quot;content&quot;: &quot;heba.salam@example.com&quot;, &quot;bottomLabel&quot;: &quot;This is a new Email address!&quot;, &quot;switchWidget&quot;: { &quot;name&quot;: &quot;has_send_welcome_email_to_heba_salam&quot;, &quot;selected&quot;: false, &quot;controlType&quot;: &quot;ControlType.CHECKBOX&quot; } } ```
+                    &quot;bottomLabel&quot;: &quot;A String&quot;, # The formatted text label that shows below the main text.
+                    &quot;button&quot;: { # A button. Can be a text button or an image button. # A button that can be clicked to trigger an action.
+                      &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                      &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                      &quot;icon&quot;: { # The icon image.
+                        &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                        &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                        &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                        &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                      },
+                      &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                        &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                        &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                          &quot;onClose&quot;: &quot;A String&quot;,
+                          &quot;openAs&quot;: &quot;A String&quot;,
+                          &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                        },
+                      },
+                      &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                    },
+                    &quot;endIcon&quot;: { # An icon displayed after the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;icon&quot;: { # Deprecated in favor of start_icon.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;onClick&quot;: { # Only the top and bottom label and content region are clickable.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;startIcon&quot;: { # The icon displayed in front of the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;switchControl&quot;: { # A switch widget can be clicked to change its state or trigger an action.
+                      &quot;controlType&quot;: &quot;A String&quot;, # The control type, either switch or checkbox.
+                      &quot;name&quot;: &quot;A String&quot;, # The name of the switch widget that&#x27;s used in formInput.
+                      &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The action when the switch state is changed.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;selected&quot;: True or False, # If the switch is selected.
+                      &quot;value&quot;: &quot;A String&quot;, # The value is what is passed back in the callback.
+                    },
+                    &quot;text&quot;: &quot;A String&quot;, # Required. The main widget formatted text. See Text formatting for details.
+                    &quot;topLabel&quot;: &quot;A String&quot;, # The formatted text label that shows above the main text.
+                    &quot;wrapText&quot;: True or False, # The wrap text setting. If `true`, the text is wrapped and displayed in multiline. Otherwise, the text is truncated.
+                  },
+                  &quot;divider&quot;: { # A divider that appears in between widgets. # Displays a divider. For example, the following JSON creates a divider: ``` &quot;divider&quot;: { } ```
+                  },
+                  &quot;grid&quot;: { # Represents a Grid widget that displays items in a configurable grid layout. # Displays a grid with a collection of items. For example, the following JSON creates a 2 column grid with a single item: ``` &quot;grid&quot;: { &quot;title&quot;: &quot;A fine collection of items&quot;, &quot;numColumns&quot;: 2, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot;, &quot;cornerRadius&quot;: 4.0 }, &quot;items&quot;: [ &quot;image&quot;: { &quot;imageUri&quot;: &quot;https://www.example.com/image.png&quot;, &quot;cropStyle&quot;: { &quot;type&quot;: &quot;SQUARE&quot; }, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot; } }, &quot;title&quot;: &quot;An item&quot;, &quot;textAlignment&quot;: &quot;CENTER&quot; ], &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;:&quot;https://www.example.com&quot; } } } ```
+                    &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to each grid item.
+                      &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                      &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;type&quot;: &quot;A String&quot;, # The border type.
+                    },
+                    &quot;columnCount&quot;: 42, # The number of columns to display in the grid. A default value is used if this field isn&#x27;t specified, and that default value is different depending on where the grid is shown (dialog versus companion).
+                    &quot;items&quot;: [ # The items to display in the grid.
+                      { # Represents a single item in the grid layout.
+                        &quot;id&quot;: &quot;A String&quot;, # A user-specified identifier for this grid item. This identifier is returned in the parent Grid&#x27;s onClick callback parameters.
+                        &quot;image&quot;: { # The image that displays in the grid item.
+                          &quot;altText&quot;: &quot;A String&quot;, # The accessibility label for the image.
+                          &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to the image.
+                            &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                            &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                              &quot;alpha&quot;: 3.14, # 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).
+                              &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                              &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                              &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                            },
+                            &quot;type&quot;: &quot;A String&quot;, # The border type.
+                          },
+                          &quot;cropStyle&quot;: { # Represents the crop style applied to an image. # The crop style to apply to the image.
+                            &quot;aspectRatio&quot;: 3.14, # The aspect ratio to use if the crop type is `RECTANGLE_CUSTOM`.
+                            &quot;type&quot;: &quot;A String&quot;, # The crop type.
+                          },
+                          &quot;imageUri&quot;: &quot;A String&quot;, # The image URL.
+                        },
+                        &quot;layout&quot;: &quot;A String&quot;, # The layout to use for the grid item.
+                        &quot;subtitle&quot;: &quot;A String&quot;, # The grid item&#x27;s subtitle.
+                        &quot;textAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of the grid item&#x27;s text.
+                        &quot;title&quot;: &quot;A String&quot;, # The grid item&#x27;s title.
+                      },
+                    ],
+                    &quot;onClick&quot;: { # This callback is reused by each individual grid item, but with the item&#x27;s identifier and index in the items list added to the callback&#x27;s parameters.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;title&quot;: &quot;A String&quot;, # The text that displays in the grid header.
+                  },
+                  &quot;horizontalAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of this widget.
+                  &quot;image&quot;: { # An image that is specified by a URL and can have an onClick action. # Displays an image in this widget. For example, the following JSON creates an image with alternative text: ``` &quot;image&quot;: { &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot; &quot;altText&quot;: &quot;Avatar for Heba Salam&quot; } ```
+                    &quot;altText&quot;: &quot;A String&quot;, # The alternative text of this image, used for accessibility.
+                    &quot;imageUrl&quot;: &quot;A String&quot;, # An image URL.
+                    &quot;onClick&quot;: {
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                  },
+                  &quot;selectionInput&quot;: { # A widget that creates a UI item (for example, a drop-down list) with options for users to select. # Displays a switch control in this widget. For example, the following JSON creates a dropdown selection for size: ``` &quot;switchControl&quot;: { &quot;name&quot;: &quot;size&quot;, &quot;label&quot;: &quot;Size&quot; &quot;type&quot;: &quot;SelectionType.DROPDOWN&quot;, &quot;items&quot;: [ { &quot;text&quot;: &quot;S&quot;, &quot;value&quot;: &quot;small&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;M&quot;, &quot;value&quot;: &quot;medium&quot;, &quot;selected&quot;: true }, { &quot;text&quot;: &quot;L&quot;, &quot;value&quot;: &quot;large&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;XL&quot;, &quot;value&quot;: &quot;extra_large&quot;, &quot;selected&quot;: false } ] } ```
+                    &quot;items&quot;: [
+                      { # The item in the switch control. A radio button, at most one of the items is selected.
+                        &quot;selected&quot;: True or False, # 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.
+                        &quot;text&quot;: &quot;A String&quot;, # The text to be displayed.
+                        &quot;value&quot;: &quot;A String&quot;, # The value associated with this item. The client should use this as a form input value.
+                      },
+                    ],
+                    &quot;label&quot;: &quot;A String&quot;, # The label displayed ahead of the switch control.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, the form is submitted when the selection changes. If not specified, you must specify a separate button.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;,
+                  },
+                  &quot;textInput&quot;: { # A text input is a UI item where users can input text. A text input can also have an onChange action and suggestions. # Displays a text input in this widget. For example, the following JSON creates a text input for mail address: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;mailing_address&quot;, &quot;label&quot;: &quot;Mailing Address&quot; } ``` As another example, the following JSON creates a text input for programming language with static suggestions: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;preferred_programing_language&quot;, &quot;label&quot;: &quot;Preferred Language&quot;, &quot;initialSuggestions&quot;: { &quot;items&quot;: [ { &quot;text&quot;: &quot;C++&quot; }, { &quot;text&quot;: &quot;Java&quot; }, { &quot;text&quot;: &quot;JavaScript&quot; }, { &quot;text&quot;: &quot;Python&quot; } ] } } ```
+                    &quot;autoCompleteAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The refresh function that returns suggestions based on the user&#x27;s input text. If the callback is not specified, autocomplete is done in client side based on the initial suggestion items.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;hintText&quot;: &quot;A String&quot;, # The hint text.
+                    &quot;initialSuggestions&quot;: { # A container wrapping elements necessary for showing suggestion items used in text input autocomplete. # The initial suggestions made before any user input.
+                      &quot;items&quot;: [ # A list of suggestions items which will be used in are used in autocomplete.
+                        { # A suggestion item. Only supports text for now.
+                          &quot;text&quot;: &quot;A String&quot;,
+                        },
+                      ],
+                    },
+                    &quot;label&quot;: &quot;A String&quot;, # At least one of label and hintText must be specified.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The onChange action, for example, invoke a function.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;, # The style of the text, for example, a single line or multiple lines.
+                    &quot;value&quot;: &quot;A String&quot;, # The default value when there is no input from the user.
+                  },
+                  &quot;textParagraph&quot;: { # A paragraph of text that supports formatting. See [Text formatting](workspace/add-ons/concepts/widgets#text_formatting&quot;) for details. # Displays a text paragraph in this widget. For example, the following JSON creates a bolded text: ``` &quot;textParagraph&quot;: { &quot;text&quot;: &quot; *bold text*&quot; } ```
+                    &quot;text&quot;: &quot;A String&quot;, # The text that&#x27;s shown in the widget.
+                  },
+                },
+              ],
+            },
+          ],
+        },
+      },
+    },
     &quot;type&quot;: &quot;A String&quot;, # The type of bot response.
     &quot;url&quot;: &quot;A String&quot;, # URL for users to auth or config. (Only for REQUEST_CONFIG response types.)
   },
@@ -430,6 +955,531 @@
 
     { # A message in Hangouts Chat.
   &quot;actionResponse&quot;: { # Parameters that a bot can use to configure how it&#x27;s response is posted. # Input only. Parameters that a bot can use to configure how its response is posted.
+    &quot;dialogAction&quot;: { # Contains dialog if present as well as the ActionStatus for the request sent from user. # This response is for Dialog related events and must be accompanied by ResponseType.Dialog
+      &quot;actionStatus&quot;: { # ActionStatus represents status of a request from the bot developer&#x27;s side. In specific, for each request a bot gets, the bot developer will set both fields below in relation to what the response status and message related to status should be. # Status for either invoke dialog or submit dialog requests. This will be used to display a status and message to user if needed. For example in case of an error or success.
+        &quot;statusCode&quot;: &quot;A String&quot;, # The status code.
+        &quot;userFacingMessage&quot;: &quot;A String&quot;, # This message will be the corresponding string to the above status_code. If unset, an appropriate generic message based on the status_code will be shown to the user. If this field is set then the message will be surfaced to the user for both successes and errors.
+      },
+      &quot;dialog&quot;: { # Wrapper around the card body of the dialog. # Dialog for the request.
+        &quot;body&quot;: { # 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. ``` { &quot;header&quot;: { &quot;title&quot;: &quot;Heba Salam&quot;, &quot;subtitle&quot;: &quot;Software Engineer&quot;, &quot;imageStyle&quot;: &quot;ImageStyle.AVATAR&quot;, &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot;, &quot;imageAltText&quot;: &quot;Avatar for Heba Salam&quot; }, &quot;sections&quot; : [ { &quot;header&quot;: &quot;Contact Info&quot;, &quot;widgets&quot;: [ { &quot;decorated_text&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;content&quot;: &quot;heba.salam@example.com&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PERSON&quot; }, &quot;content&quot;: &quot;Online&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PHONE&quot; }, &quot;content&quot;: &quot;+1 (555) 555-1234&quot; } }, { &quot;buttons&quot;: [ { &quot;textButton&quot;: { &quot;text&quot;: &quot;Share&quot;, }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/share&quot; } } }, { &quot;textButton&quot;: { &quot;text&quot;: &quot;Edit&quot;, }, &quot;onClick&quot;: { &quot;action&quot;: { &quot;function&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;EDIT&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } } ] } ], &quot;collapsible&quot;: true, &quot;uncollapsibleWidgetsCount&quot;: 3 } ], &quot;cardActions&quot;: [ { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ], &quot;name&quot;: &quot;contact-card-K3wB6arF2H9L&quot; } ``` # Body of the dialog, which will be rendered in a modal. NOTE: The following fields within the objects are not supported: google.apps.card.v1.Widget.date_time_picker google.apps.card.v1.DecoratedText.SwitchControl.on_change_action google.apps.card.v1.TextInput.on_change_action google.apps.card.v1.SelectionInput.on_change_action google.apps.card.v1.DateTimePicker.on_change_action Setting the fields above will have no effect on the dialog.
+          &quot;cardActions&quot;: [ # The actions of this card. They are added to a card&#x27;s generated toolbar menu. For example, the following JSON constructs a card action menu with Settings and Send Feedback options: ``` &quot;card_actions&quot;: [ { &quot;actionLabel&quot;: &quot;Setting&quot;, &quot;onClick&quot;: { &quot;action&quot;: { &quot;functionName&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;SETTING&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } }, { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ] ```
+            { # 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.
+              &quot;actionLabel&quot;: &quot;A String&quot;, # The label that displays as the action menu item.
+              &quot;onClick&quot;: { # The onclick action for this action item.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+            },
+          ],
+          &quot;displayStyle&quot;: &quot;A String&quot;, # The display style for peekCardHeader.
+          &quot;fixedFooter&quot;: { # A persistent (sticky) footer that is added to the bottom of the card. # The fixed footer shown at the bottom of this card.
+            &quot;primaryButton&quot;: { # A button. Can be a text button or an image button. # The primary button of the fixed footer. The button must be a text button with text and color set.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+            &quot;secondaryButton&quot;: { # A button. Can be a text button or an image button. # 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.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+          },
+          &quot;header&quot;: { # The header of the card. A header usually contains a title and an image.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;name&quot;: &quot;A String&quot;, # Name of the card, which is used as a identifier for the card in card navigation.
+          &quot;peekCardHeader&quot;: { # 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.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;sections&quot;: [ # Sections are separated by a line divider.
+            { # 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.
+              &quot;collapsible&quot;: True or False, # Indicates whether this section is collapsible. If a section is collapsible, the description must be given.
+              &quot;header&quot;: &quot;A String&quot;, # The header of the section. Formatted text is supported.
+              &quot;uncollapsibleWidgetsCount&quot;: 42, # 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`.
+              &quot;widgets&quot;: [ # A section must contain at least 1 widget.
+                { # A widget is a UI element that presents texts, images, etc.
+                  &quot;buttonList&quot;: { # A list of buttons layed out horizontally. # 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: ``` &quot;buttonList&quot;: { &quot;buttons&quot;: [ &quot;button&quot;: { &quot;text&quot;: &quot;Edit&quot;, &quot;Color&quot;: { &quot;Red&quot;: 255 &quot;Green&quot;: 255 &quot;Blue&quot;: 255 } &quot;disabled&quot;: true }, &quot;button&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;INVITE&quot; &quot;altText&quot;: &quot;check calendar&quot; }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/calendar&quot; } } }, ] } ```
+                    &quot;buttons&quot;: [
+                      { # A button. Can be a text button or an image button.
+                        &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                        &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                          &quot;alpha&quot;: 3.14, # 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).
+                          &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                          &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                          &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                        },
+                        &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                        &quot;icon&quot;: { # The icon image.
+                          &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                          &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                          &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                          &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                        },
+                        &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                          &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                          &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                            &quot;onClose&quot;: &quot;A String&quot;,
+                            &quot;openAs&quot;: &quot;A String&quot;,
+                            &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                          },
+                        },
+                        &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                      },
+                    ],
+                  },
+                  &quot;dateTimePicker&quot;: { # The widget that lets users to specify a date and time. # Displays a selection/input widget for date/time. For example, the following JSON creates a date/time picker for an appointment time: ``` &quot;date_time_picker&quot;: { &quot;name&quot;: &quot;appointment_time&quot;, &quot;label&quot;: &quot;Book your appointment at:&quot;, &quot;type&quot;: &quot;DateTimePickerType.DATE_AND_TIME&quot;, &quot;valueMsEpoch&quot;: &quot;796435200000&quot; } ```
+                    &quot;label&quot;: &quot;A String&quot;, # The label for the field that displays to the user.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input that&#x27;s used in formInput, and uniquely identifies this input.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;timezoneOffsetDate&quot;: 42, # 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&#x27;s time zone setting on the client side.
+                    &quot;type&quot;: &quot;A String&quot;, # The type of the date/time picker.
+                    &quot;valueMsEpoch&quot;: &quot;A String&quot;, # 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.
+                  },
+                  &quot;decoratedText&quot;: { # 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. # Displays a decorated text item in this widget. For example, the following JSON creates a decorated text widget showing email address: ``` &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;topLabel&quot;: &quot;Email Address&quot;, &quot;content&quot;: &quot;heba.salam@example.com&quot;, &quot;bottomLabel&quot;: &quot;This is a new Email address!&quot;, &quot;switchWidget&quot;: { &quot;name&quot;: &quot;has_send_welcome_email_to_heba_salam&quot;, &quot;selected&quot;: false, &quot;controlType&quot;: &quot;ControlType.CHECKBOX&quot; } } ```
+                    &quot;bottomLabel&quot;: &quot;A String&quot;, # The formatted text label that shows below the main text.
+                    &quot;button&quot;: { # A button. Can be a text button or an image button. # A button that can be clicked to trigger an action.
+                      &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                      &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                      &quot;icon&quot;: { # The icon image.
+                        &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                        &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                        &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                        &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                      },
+                      &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                        &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                        &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                          &quot;onClose&quot;: &quot;A String&quot;,
+                          &quot;openAs&quot;: &quot;A String&quot;,
+                          &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                        },
+                      },
+                      &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                    },
+                    &quot;endIcon&quot;: { # An icon displayed after the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;icon&quot;: { # Deprecated in favor of start_icon.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;onClick&quot;: { # Only the top and bottom label and content region are clickable.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;startIcon&quot;: { # The icon displayed in front of the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;switchControl&quot;: { # A switch widget can be clicked to change its state or trigger an action.
+                      &quot;controlType&quot;: &quot;A String&quot;, # The control type, either switch or checkbox.
+                      &quot;name&quot;: &quot;A String&quot;, # The name of the switch widget that&#x27;s used in formInput.
+                      &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The action when the switch state is changed.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;selected&quot;: True or False, # If the switch is selected.
+                      &quot;value&quot;: &quot;A String&quot;, # The value is what is passed back in the callback.
+                    },
+                    &quot;text&quot;: &quot;A String&quot;, # Required. The main widget formatted text. See Text formatting for details.
+                    &quot;topLabel&quot;: &quot;A String&quot;, # The formatted text label that shows above the main text.
+                    &quot;wrapText&quot;: True or False, # The wrap text setting. If `true`, the text is wrapped and displayed in multiline. Otherwise, the text is truncated.
+                  },
+                  &quot;divider&quot;: { # A divider that appears in between widgets. # Displays a divider. For example, the following JSON creates a divider: ``` &quot;divider&quot;: { } ```
+                  },
+                  &quot;grid&quot;: { # Represents a Grid widget that displays items in a configurable grid layout. # Displays a grid with a collection of items. For example, the following JSON creates a 2 column grid with a single item: ``` &quot;grid&quot;: { &quot;title&quot;: &quot;A fine collection of items&quot;, &quot;numColumns&quot;: 2, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot;, &quot;cornerRadius&quot;: 4.0 }, &quot;items&quot;: [ &quot;image&quot;: { &quot;imageUri&quot;: &quot;https://www.example.com/image.png&quot;, &quot;cropStyle&quot;: { &quot;type&quot;: &quot;SQUARE&quot; }, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot; } }, &quot;title&quot;: &quot;An item&quot;, &quot;textAlignment&quot;: &quot;CENTER&quot; ], &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;:&quot;https://www.example.com&quot; } } } ```
+                    &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to each grid item.
+                      &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                      &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;type&quot;: &quot;A String&quot;, # The border type.
+                    },
+                    &quot;columnCount&quot;: 42, # The number of columns to display in the grid. A default value is used if this field isn&#x27;t specified, and that default value is different depending on where the grid is shown (dialog versus companion).
+                    &quot;items&quot;: [ # The items to display in the grid.
+                      { # Represents a single item in the grid layout.
+                        &quot;id&quot;: &quot;A String&quot;, # A user-specified identifier for this grid item. This identifier is returned in the parent Grid&#x27;s onClick callback parameters.
+                        &quot;image&quot;: { # The image that displays in the grid item.
+                          &quot;altText&quot;: &quot;A String&quot;, # The accessibility label for the image.
+                          &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to the image.
+                            &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                            &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                              &quot;alpha&quot;: 3.14, # 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).
+                              &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                              &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                              &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                            },
+                            &quot;type&quot;: &quot;A String&quot;, # The border type.
+                          },
+                          &quot;cropStyle&quot;: { # Represents the crop style applied to an image. # The crop style to apply to the image.
+                            &quot;aspectRatio&quot;: 3.14, # The aspect ratio to use if the crop type is `RECTANGLE_CUSTOM`.
+                            &quot;type&quot;: &quot;A String&quot;, # The crop type.
+                          },
+                          &quot;imageUri&quot;: &quot;A String&quot;, # The image URL.
+                        },
+                        &quot;layout&quot;: &quot;A String&quot;, # The layout to use for the grid item.
+                        &quot;subtitle&quot;: &quot;A String&quot;, # The grid item&#x27;s subtitle.
+                        &quot;textAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of the grid item&#x27;s text.
+                        &quot;title&quot;: &quot;A String&quot;, # The grid item&#x27;s title.
+                      },
+                    ],
+                    &quot;onClick&quot;: { # This callback is reused by each individual grid item, but with the item&#x27;s identifier and index in the items list added to the callback&#x27;s parameters.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;title&quot;: &quot;A String&quot;, # The text that displays in the grid header.
+                  },
+                  &quot;horizontalAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of this widget.
+                  &quot;image&quot;: { # An image that is specified by a URL and can have an onClick action. # Displays an image in this widget. For example, the following JSON creates an image with alternative text: ``` &quot;image&quot;: { &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot; &quot;altText&quot;: &quot;Avatar for Heba Salam&quot; } ```
+                    &quot;altText&quot;: &quot;A String&quot;, # The alternative text of this image, used for accessibility.
+                    &quot;imageUrl&quot;: &quot;A String&quot;, # An image URL.
+                    &quot;onClick&quot;: {
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                  },
+                  &quot;selectionInput&quot;: { # A widget that creates a UI item (for example, a drop-down list) with options for users to select. # Displays a switch control in this widget. For example, the following JSON creates a dropdown selection for size: ``` &quot;switchControl&quot;: { &quot;name&quot;: &quot;size&quot;, &quot;label&quot;: &quot;Size&quot; &quot;type&quot;: &quot;SelectionType.DROPDOWN&quot;, &quot;items&quot;: [ { &quot;text&quot;: &quot;S&quot;, &quot;value&quot;: &quot;small&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;M&quot;, &quot;value&quot;: &quot;medium&quot;, &quot;selected&quot;: true }, { &quot;text&quot;: &quot;L&quot;, &quot;value&quot;: &quot;large&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;XL&quot;, &quot;value&quot;: &quot;extra_large&quot;, &quot;selected&quot;: false } ] } ```
+                    &quot;items&quot;: [
+                      { # The item in the switch control. A radio button, at most one of the items is selected.
+                        &quot;selected&quot;: True or False, # 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.
+                        &quot;text&quot;: &quot;A String&quot;, # The text to be displayed.
+                        &quot;value&quot;: &quot;A String&quot;, # The value associated with this item. The client should use this as a form input value.
+                      },
+                    ],
+                    &quot;label&quot;: &quot;A String&quot;, # The label displayed ahead of the switch control.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, the form is submitted when the selection changes. If not specified, you must specify a separate button.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;,
+                  },
+                  &quot;textInput&quot;: { # A text input is a UI item where users can input text. A text input can also have an onChange action and suggestions. # Displays a text input in this widget. For example, the following JSON creates a text input for mail address: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;mailing_address&quot;, &quot;label&quot;: &quot;Mailing Address&quot; } ``` As another example, the following JSON creates a text input for programming language with static suggestions: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;preferred_programing_language&quot;, &quot;label&quot;: &quot;Preferred Language&quot;, &quot;initialSuggestions&quot;: { &quot;items&quot;: [ { &quot;text&quot;: &quot;C++&quot; }, { &quot;text&quot;: &quot;Java&quot; }, { &quot;text&quot;: &quot;JavaScript&quot; }, { &quot;text&quot;: &quot;Python&quot; } ] } } ```
+                    &quot;autoCompleteAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The refresh function that returns suggestions based on the user&#x27;s input text. If the callback is not specified, autocomplete is done in client side based on the initial suggestion items.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;hintText&quot;: &quot;A String&quot;, # The hint text.
+                    &quot;initialSuggestions&quot;: { # A container wrapping elements necessary for showing suggestion items used in text input autocomplete. # The initial suggestions made before any user input.
+                      &quot;items&quot;: [ # A list of suggestions items which will be used in are used in autocomplete.
+                        { # A suggestion item. Only supports text for now.
+                          &quot;text&quot;: &quot;A String&quot;,
+                        },
+                      ],
+                    },
+                    &quot;label&quot;: &quot;A String&quot;, # At least one of label and hintText must be specified.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The onChange action, for example, invoke a function.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;, # The style of the text, for example, a single line or multiple lines.
+                    &quot;value&quot;: &quot;A String&quot;, # The default value when there is no input from the user.
+                  },
+                  &quot;textParagraph&quot;: { # A paragraph of text that supports formatting. See [Text formatting](workspace/add-ons/concepts/widgets#text_formatting&quot;) for details. # Displays a text paragraph in this widget. For example, the following JSON creates a bolded text: ``` &quot;textParagraph&quot;: { &quot;text&quot;: &quot; *bold text*&quot; } ```
+                    &quot;text&quot;: &quot;A String&quot;, # The text that&#x27;s shown in the widget.
+                  },
+                },
+              ],
+            },
+          ],
+        },
+      },
+    },
     &quot;type&quot;: &quot;A String&quot;, # The type of bot response.
     &quot;url&quot;: &quot;A String&quot;, # URL for users to auth or config. (Only for REQUEST_CONFIG response types.)
   },
diff --git a/docs/dyn/chat_v1.spaces.messages.html b/docs/dyn/chat_v1.spaces.messages.html
index bd701f5..b21bf86 100644
--- a/docs/dyn/chat_v1.spaces.messages.html
+++ b/docs/dyn/chat_v1.spaces.messages.html
@@ -111,6 +111,531 @@
 
 { # A message in Hangouts Chat.
   &quot;actionResponse&quot;: { # Parameters that a bot can use to configure how it&#x27;s response is posted. # Input only. Parameters that a bot can use to configure how its response is posted.
+    &quot;dialogAction&quot;: { # Contains dialog if present as well as the ActionStatus for the request sent from user. # This response is for Dialog related events and must be accompanied by ResponseType.Dialog
+      &quot;actionStatus&quot;: { # ActionStatus represents status of a request from the bot developer&#x27;s side. In specific, for each request a bot gets, the bot developer will set both fields below in relation to what the response status and message related to status should be. # Status for either invoke dialog or submit dialog requests. This will be used to display a status and message to user if needed. For example in case of an error or success.
+        &quot;statusCode&quot;: &quot;A String&quot;, # The status code.
+        &quot;userFacingMessage&quot;: &quot;A String&quot;, # This message will be the corresponding string to the above status_code. If unset, an appropriate generic message based on the status_code will be shown to the user. If this field is set then the message will be surfaced to the user for both successes and errors.
+      },
+      &quot;dialog&quot;: { # Wrapper around the card body of the dialog. # Dialog for the request.
+        &quot;body&quot;: { # 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. ``` { &quot;header&quot;: { &quot;title&quot;: &quot;Heba Salam&quot;, &quot;subtitle&quot;: &quot;Software Engineer&quot;, &quot;imageStyle&quot;: &quot;ImageStyle.AVATAR&quot;, &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot;, &quot;imageAltText&quot;: &quot;Avatar for Heba Salam&quot; }, &quot;sections&quot; : [ { &quot;header&quot;: &quot;Contact Info&quot;, &quot;widgets&quot;: [ { &quot;decorated_text&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;content&quot;: &quot;heba.salam@example.com&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PERSON&quot; }, &quot;content&quot;: &quot;Online&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PHONE&quot; }, &quot;content&quot;: &quot;+1 (555) 555-1234&quot; } }, { &quot;buttons&quot;: [ { &quot;textButton&quot;: { &quot;text&quot;: &quot;Share&quot;, }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/share&quot; } } }, { &quot;textButton&quot;: { &quot;text&quot;: &quot;Edit&quot;, }, &quot;onClick&quot;: { &quot;action&quot;: { &quot;function&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;EDIT&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } } ] } ], &quot;collapsible&quot;: true, &quot;uncollapsibleWidgetsCount&quot;: 3 } ], &quot;cardActions&quot;: [ { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ], &quot;name&quot;: &quot;contact-card-K3wB6arF2H9L&quot; } ``` # Body of the dialog, which will be rendered in a modal. NOTE: The following fields within the objects are not supported: google.apps.card.v1.Widget.date_time_picker google.apps.card.v1.DecoratedText.SwitchControl.on_change_action google.apps.card.v1.TextInput.on_change_action google.apps.card.v1.SelectionInput.on_change_action google.apps.card.v1.DateTimePicker.on_change_action Setting the fields above will have no effect on the dialog.
+          &quot;cardActions&quot;: [ # The actions of this card. They are added to a card&#x27;s generated toolbar menu. For example, the following JSON constructs a card action menu with Settings and Send Feedback options: ``` &quot;card_actions&quot;: [ { &quot;actionLabel&quot;: &quot;Setting&quot;, &quot;onClick&quot;: { &quot;action&quot;: { &quot;functionName&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;SETTING&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } }, { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ] ```
+            { # 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.
+              &quot;actionLabel&quot;: &quot;A String&quot;, # The label that displays as the action menu item.
+              &quot;onClick&quot;: { # The onclick action for this action item.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+            },
+          ],
+          &quot;displayStyle&quot;: &quot;A String&quot;, # The display style for peekCardHeader.
+          &quot;fixedFooter&quot;: { # A persistent (sticky) footer that is added to the bottom of the card. # The fixed footer shown at the bottom of this card.
+            &quot;primaryButton&quot;: { # A button. Can be a text button or an image button. # The primary button of the fixed footer. The button must be a text button with text and color set.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+            &quot;secondaryButton&quot;: { # A button. Can be a text button or an image button. # 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.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+          },
+          &quot;header&quot;: { # The header of the card. A header usually contains a title and an image.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;name&quot;: &quot;A String&quot;, # Name of the card, which is used as a identifier for the card in card navigation.
+          &quot;peekCardHeader&quot;: { # 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.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;sections&quot;: [ # Sections are separated by a line divider.
+            { # 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.
+              &quot;collapsible&quot;: True or False, # Indicates whether this section is collapsible. If a section is collapsible, the description must be given.
+              &quot;header&quot;: &quot;A String&quot;, # The header of the section. Formatted text is supported.
+              &quot;uncollapsibleWidgetsCount&quot;: 42, # 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`.
+              &quot;widgets&quot;: [ # A section must contain at least 1 widget.
+                { # A widget is a UI element that presents texts, images, etc.
+                  &quot;buttonList&quot;: { # A list of buttons layed out horizontally. # 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: ``` &quot;buttonList&quot;: { &quot;buttons&quot;: [ &quot;button&quot;: { &quot;text&quot;: &quot;Edit&quot;, &quot;Color&quot;: { &quot;Red&quot;: 255 &quot;Green&quot;: 255 &quot;Blue&quot;: 255 } &quot;disabled&quot;: true }, &quot;button&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;INVITE&quot; &quot;altText&quot;: &quot;check calendar&quot; }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/calendar&quot; } } }, ] } ```
+                    &quot;buttons&quot;: [
+                      { # A button. Can be a text button or an image button.
+                        &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                        &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                          &quot;alpha&quot;: 3.14, # 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).
+                          &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                          &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                          &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                        },
+                        &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                        &quot;icon&quot;: { # The icon image.
+                          &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                          &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                          &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                          &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                        },
+                        &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                          &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                          &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                            &quot;onClose&quot;: &quot;A String&quot;,
+                            &quot;openAs&quot;: &quot;A String&quot;,
+                            &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                          },
+                        },
+                        &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                      },
+                    ],
+                  },
+                  &quot;dateTimePicker&quot;: { # The widget that lets users to specify a date and time. # Displays a selection/input widget for date/time. For example, the following JSON creates a date/time picker for an appointment time: ``` &quot;date_time_picker&quot;: { &quot;name&quot;: &quot;appointment_time&quot;, &quot;label&quot;: &quot;Book your appointment at:&quot;, &quot;type&quot;: &quot;DateTimePickerType.DATE_AND_TIME&quot;, &quot;valueMsEpoch&quot;: &quot;796435200000&quot; } ```
+                    &quot;label&quot;: &quot;A String&quot;, # The label for the field that displays to the user.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input that&#x27;s used in formInput, and uniquely identifies this input.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;timezoneOffsetDate&quot;: 42, # 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&#x27;s time zone setting on the client side.
+                    &quot;type&quot;: &quot;A String&quot;, # The type of the date/time picker.
+                    &quot;valueMsEpoch&quot;: &quot;A String&quot;, # 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.
+                  },
+                  &quot;decoratedText&quot;: { # 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. # Displays a decorated text item in this widget. For example, the following JSON creates a decorated text widget showing email address: ``` &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;topLabel&quot;: &quot;Email Address&quot;, &quot;content&quot;: &quot;heba.salam@example.com&quot;, &quot;bottomLabel&quot;: &quot;This is a new Email address!&quot;, &quot;switchWidget&quot;: { &quot;name&quot;: &quot;has_send_welcome_email_to_heba_salam&quot;, &quot;selected&quot;: false, &quot;controlType&quot;: &quot;ControlType.CHECKBOX&quot; } } ```
+                    &quot;bottomLabel&quot;: &quot;A String&quot;, # The formatted text label that shows below the main text.
+                    &quot;button&quot;: { # A button. Can be a text button or an image button. # A button that can be clicked to trigger an action.
+                      &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                      &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                      &quot;icon&quot;: { # The icon image.
+                        &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                        &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                        &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                        &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                      },
+                      &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                        &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                        &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                          &quot;onClose&quot;: &quot;A String&quot;,
+                          &quot;openAs&quot;: &quot;A String&quot;,
+                          &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                        },
+                      },
+                      &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                    },
+                    &quot;endIcon&quot;: { # An icon displayed after the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;icon&quot;: { # Deprecated in favor of start_icon.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;onClick&quot;: { # Only the top and bottom label and content region are clickable.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;startIcon&quot;: { # The icon displayed in front of the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;switchControl&quot;: { # A switch widget can be clicked to change its state or trigger an action.
+                      &quot;controlType&quot;: &quot;A String&quot;, # The control type, either switch or checkbox.
+                      &quot;name&quot;: &quot;A String&quot;, # The name of the switch widget that&#x27;s used in formInput.
+                      &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The action when the switch state is changed.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;selected&quot;: True or False, # If the switch is selected.
+                      &quot;value&quot;: &quot;A String&quot;, # The value is what is passed back in the callback.
+                    },
+                    &quot;text&quot;: &quot;A String&quot;, # Required. The main widget formatted text. See Text formatting for details.
+                    &quot;topLabel&quot;: &quot;A String&quot;, # The formatted text label that shows above the main text.
+                    &quot;wrapText&quot;: True or False, # The wrap text setting. If `true`, the text is wrapped and displayed in multiline. Otherwise, the text is truncated.
+                  },
+                  &quot;divider&quot;: { # A divider that appears in between widgets. # Displays a divider. For example, the following JSON creates a divider: ``` &quot;divider&quot;: { } ```
+                  },
+                  &quot;grid&quot;: { # Represents a Grid widget that displays items in a configurable grid layout. # Displays a grid with a collection of items. For example, the following JSON creates a 2 column grid with a single item: ``` &quot;grid&quot;: { &quot;title&quot;: &quot;A fine collection of items&quot;, &quot;numColumns&quot;: 2, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot;, &quot;cornerRadius&quot;: 4.0 }, &quot;items&quot;: [ &quot;image&quot;: { &quot;imageUri&quot;: &quot;https://www.example.com/image.png&quot;, &quot;cropStyle&quot;: { &quot;type&quot;: &quot;SQUARE&quot; }, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot; } }, &quot;title&quot;: &quot;An item&quot;, &quot;textAlignment&quot;: &quot;CENTER&quot; ], &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;:&quot;https://www.example.com&quot; } } } ```
+                    &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to each grid item.
+                      &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                      &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;type&quot;: &quot;A String&quot;, # The border type.
+                    },
+                    &quot;columnCount&quot;: 42, # The number of columns to display in the grid. A default value is used if this field isn&#x27;t specified, and that default value is different depending on where the grid is shown (dialog versus companion).
+                    &quot;items&quot;: [ # The items to display in the grid.
+                      { # Represents a single item in the grid layout.
+                        &quot;id&quot;: &quot;A String&quot;, # A user-specified identifier for this grid item. This identifier is returned in the parent Grid&#x27;s onClick callback parameters.
+                        &quot;image&quot;: { # The image that displays in the grid item.
+                          &quot;altText&quot;: &quot;A String&quot;, # The accessibility label for the image.
+                          &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to the image.
+                            &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                            &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                              &quot;alpha&quot;: 3.14, # 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).
+                              &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                              &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                              &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                            },
+                            &quot;type&quot;: &quot;A String&quot;, # The border type.
+                          },
+                          &quot;cropStyle&quot;: { # Represents the crop style applied to an image. # The crop style to apply to the image.
+                            &quot;aspectRatio&quot;: 3.14, # The aspect ratio to use if the crop type is `RECTANGLE_CUSTOM`.
+                            &quot;type&quot;: &quot;A String&quot;, # The crop type.
+                          },
+                          &quot;imageUri&quot;: &quot;A String&quot;, # The image URL.
+                        },
+                        &quot;layout&quot;: &quot;A String&quot;, # The layout to use for the grid item.
+                        &quot;subtitle&quot;: &quot;A String&quot;, # The grid item&#x27;s subtitle.
+                        &quot;textAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of the grid item&#x27;s text.
+                        &quot;title&quot;: &quot;A String&quot;, # The grid item&#x27;s title.
+                      },
+                    ],
+                    &quot;onClick&quot;: { # This callback is reused by each individual grid item, but with the item&#x27;s identifier and index in the items list added to the callback&#x27;s parameters.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;title&quot;: &quot;A String&quot;, # The text that displays in the grid header.
+                  },
+                  &quot;horizontalAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of this widget.
+                  &quot;image&quot;: { # An image that is specified by a URL and can have an onClick action. # Displays an image in this widget. For example, the following JSON creates an image with alternative text: ``` &quot;image&quot;: { &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot; &quot;altText&quot;: &quot;Avatar for Heba Salam&quot; } ```
+                    &quot;altText&quot;: &quot;A String&quot;, # The alternative text of this image, used for accessibility.
+                    &quot;imageUrl&quot;: &quot;A String&quot;, # An image URL.
+                    &quot;onClick&quot;: {
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                  },
+                  &quot;selectionInput&quot;: { # A widget that creates a UI item (for example, a drop-down list) with options for users to select. # Displays a switch control in this widget. For example, the following JSON creates a dropdown selection for size: ``` &quot;switchControl&quot;: { &quot;name&quot;: &quot;size&quot;, &quot;label&quot;: &quot;Size&quot; &quot;type&quot;: &quot;SelectionType.DROPDOWN&quot;, &quot;items&quot;: [ { &quot;text&quot;: &quot;S&quot;, &quot;value&quot;: &quot;small&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;M&quot;, &quot;value&quot;: &quot;medium&quot;, &quot;selected&quot;: true }, { &quot;text&quot;: &quot;L&quot;, &quot;value&quot;: &quot;large&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;XL&quot;, &quot;value&quot;: &quot;extra_large&quot;, &quot;selected&quot;: false } ] } ```
+                    &quot;items&quot;: [
+                      { # The item in the switch control. A radio button, at most one of the items is selected.
+                        &quot;selected&quot;: True or False, # 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.
+                        &quot;text&quot;: &quot;A String&quot;, # The text to be displayed.
+                        &quot;value&quot;: &quot;A String&quot;, # The value associated with this item. The client should use this as a form input value.
+                      },
+                    ],
+                    &quot;label&quot;: &quot;A String&quot;, # The label displayed ahead of the switch control.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, the form is submitted when the selection changes. If not specified, you must specify a separate button.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;,
+                  },
+                  &quot;textInput&quot;: { # A text input is a UI item where users can input text. A text input can also have an onChange action and suggestions. # Displays a text input in this widget. For example, the following JSON creates a text input for mail address: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;mailing_address&quot;, &quot;label&quot;: &quot;Mailing Address&quot; } ``` As another example, the following JSON creates a text input for programming language with static suggestions: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;preferred_programing_language&quot;, &quot;label&quot;: &quot;Preferred Language&quot;, &quot;initialSuggestions&quot;: { &quot;items&quot;: [ { &quot;text&quot;: &quot;C++&quot; }, { &quot;text&quot;: &quot;Java&quot; }, { &quot;text&quot;: &quot;JavaScript&quot; }, { &quot;text&quot;: &quot;Python&quot; } ] } } ```
+                    &quot;autoCompleteAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The refresh function that returns suggestions based on the user&#x27;s input text. If the callback is not specified, autocomplete is done in client side based on the initial suggestion items.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;hintText&quot;: &quot;A String&quot;, # The hint text.
+                    &quot;initialSuggestions&quot;: { # A container wrapping elements necessary for showing suggestion items used in text input autocomplete. # The initial suggestions made before any user input.
+                      &quot;items&quot;: [ # A list of suggestions items which will be used in are used in autocomplete.
+                        { # A suggestion item. Only supports text for now.
+                          &quot;text&quot;: &quot;A String&quot;,
+                        },
+                      ],
+                    },
+                    &quot;label&quot;: &quot;A String&quot;, # At least one of label and hintText must be specified.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The onChange action, for example, invoke a function.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;, # The style of the text, for example, a single line or multiple lines.
+                    &quot;value&quot;: &quot;A String&quot;, # The default value when there is no input from the user.
+                  },
+                  &quot;textParagraph&quot;: { # A paragraph of text that supports formatting. See [Text formatting](workspace/add-ons/concepts/widgets#text_formatting&quot;) for details. # Displays a text paragraph in this widget. For example, the following JSON creates a bolded text: ``` &quot;textParagraph&quot;: { &quot;text&quot;: &quot; *bold text*&quot; } ```
+                    &quot;text&quot;: &quot;A String&quot;, # The text that&#x27;s shown in the widget.
+                  },
+                },
+              ],
+            },
+          ],
+        },
+      },
+    },
     &quot;type&quot;: &quot;A String&quot;, # The type of bot response.
     &quot;url&quot;: &quot;A String&quot;, # URL for users to auth or config. (Only for REQUEST_CONFIG response types.)
   },
@@ -359,6 +884,531 @@
 
     { # A message in Hangouts Chat.
   &quot;actionResponse&quot;: { # Parameters that a bot can use to configure how it&#x27;s response is posted. # Input only. Parameters that a bot can use to configure how its response is posted.
+    &quot;dialogAction&quot;: { # Contains dialog if present as well as the ActionStatus for the request sent from user. # This response is for Dialog related events and must be accompanied by ResponseType.Dialog
+      &quot;actionStatus&quot;: { # ActionStatus represents status of a request from the bot developer&#x27;s side. In specific, for each request a bot gets, the bot developer will set both fields below in relation to what the response status and message related to status should be. # Status for either invoke dialog or submit dialog requests. This will be used to display a status and message to user if needed. For example in case of an error or success.
+        &quot;statusCode&quot;: &quot;A String&quot;, # The status code.
+        &quot;userFacingMessage&quot;: &quot;A String&quot;, # This message will be the corresponding string to the above status_code. If unset, an appropriate generic message based on the status_code will be shown to the user. If this field is set then the message will be surfaced to the user for both successes and errors.
+      },
+      &quot;dialog&quot;: { # Wrapper around the card body of the dialog. # Dialog for the request.
+        &quot;body&quot;: { # 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. ``` { &quot;header&quot;: { &quot;title&quot;: &quot;Heba Salam&quot;, &quot;subtitle&quot;: &quot;Software Engineer&quot;, &quot;imageStyle&quot;: &quot;ImageStyle.AVATAR&quot;, &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot;, &quot;imageAltText&quot;: &quot;Avatar for Heba Salam&quot; }, &quot;sections&quot; : [ { &quot;header&quot;: &quot;Contact Info&quot;, &quot;widgets&quot;: [ { &quot;decorated_text&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;content&quot;: &quot;heba.salam@example.com&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PERSON&quot; }, &quot;content&quot;: &quot;Online&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PHONE&quot; }, &quot;content&quot;: &quot;+1 (555) 555-1234&quot; } }, { &quot;buttons&quot;: [ { &quot;textButton&quot;: { &quot;text&quot;: &quot;Share&quot;, }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/share&quot; } } }, { &quot;textButton&quot;: { &quot;text&quot;: &quot;Edit&quot;, }, &quot;onClick&quot;: { &quot;action&quot;: { &quot;function&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;EDIT&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } } ] } ], &quot;collapsible&quot;: true, &quot;uncollapsibleWidgetsCount&quot;: 3 } ], &quot;cardActions&quot;: [ { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ], &quot;name&quot;: &quot;contact-card-K3wB6arF2H9L&quot; } ``` # Body of the dialog, which will be rendered in a modal. NOTE: The following fields within the objects are not supported: google.apps.card.v1.Widget.date_time_picker google.apps.card.v1.DecoratedText.SwitchControl.on_change_action google.apps.card.v1.TextInput.on_change_action google.apps.card.v1.SelectionInput.on_change_action google.apps.card.v1.DateTimePicker.on_change_action Setting the fields above will have no effect on the dialog.
+          &quot;cardActions&quot;: [ # The actions of this card. They are added to a card&#x27;s generated toolbar menu. For example, the following JSON constructs a card action menu with Settings and Send Feedback options: ``` &quot;card_actions&quot;: [ { &quot;actionLabel&quot;: &quot;Setting&quot;, &quot;onClick&quot;: { &quot;action&quot;: { &quot;functionName&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;SETTING&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } }, { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ] ```
+            { # 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.
+              &quot;actionLabel&quot;: &quot;A String&quot;, # The label that displays as the action menu item.
+              &quot;onClick&quot;: { # The onclick action for this action item.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+            },
+          ],
+          &quot;displayStyle&quot;: &quot;A String&quot;, # The display style for peekCardHeader.
+          &quot;fixedFooter&quot;: { # A persistent (sticky) footer that is added to the bottom of the card. # The fixed footer shown at the bottom of this card.
+            &quot;primaryButton&quot;: { # A button. Can be a text button or an image button. # The primary button of the fixed footer. The button must be a text button with text and color set.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+            &quot;secondaryButton&quot;: { # A button. Can be a text button or an image button. # 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.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+          },
+          &quot;header&quot;: { # The header of the card. A header usually contains a title and an image.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;name&quot;: &quot;A String&quot;, # Name of the card, which is used as a identifier for the card in card navigation.
+          &quot;peekCardHeader&quot;: { # 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.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;sections&quot;: [ # Sections are separated by a line divider.
+            { # 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.
+              &quot;collapsible&quot;: True or False, # Indicates whether this section is collapsible. If a section is collapsible, the description must be given.
+              &quot;header&quot;: &quot;A String&quot;, # The header of the section. Formatted text is supported.
+              &quot;uncollapsibleWidgetsCount&quot;: 42, # 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`.
+              &quot;widgets&quot;: [ # A section must contain at least 1 widget.
+                { # A widget is a UI element that presents texts, images, etc.
+                  &quot;buttonList&quot;: { # A list of buttons layed out horizontally. # 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: ``` &quot;buttonList&quot;: { &quot;buttons&quot;: [ &quot;button&quot;: { &quot;text&quot;: &quot;Edit&quot;, &quot;Color&quot;: { &quot;Red&quot;: 255 &quot;Green&quot;: 255 &quot;Blue&quot;: 255 } &quot;disabled&quot;: true }, &quot;button&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;INVITE&quot; &quot;altText&quot;: &quot;check calendar&quot; }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/calendar&quot; } } }, ] } ```
+                    &quot;buttons&quot;: [
+                      { # A button. Can be a text button or an image button.
+                        &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                        &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                          &quot;alpha&quot;: 3.14, # 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).
+                          &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                          &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                          &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                        },
+                        &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                        &quot;icon&quot;: { # The icon image.
+                          &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                          &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                          &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                          &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                        },
+                        &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                          &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                          &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                            &quot;onClose&quot;: &quot;A String&quot;,
+                            &quot;openAs&quot;: &quot;A String&quot;,
+                            &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                          },
+                        },
+                        &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                      },
+                    ],
+                  },
+                  &quot;dateTimePicker&quot;: { # The widget that lets users to specify a date and time. # Displays a selection/input widget for date/time. For example, the following JSON creates a date/time picker for an appointment time: ``` &quot;date_time_picker&quot;: { &quot;name&quot;: &quot;appointment_time&quot;, &quot;label&quot;: &quot;Book your appointment at:&quot;, &quot;type&quot;: &quot;DateTimePickerType.DATE_AND_TIME&quot;, &quot;valueMsEpoch&quot;: &quot;796435200000&quot; } ```
+                    &quot;label&quot;: &quot;A String&quot;, # The label for the field that displays to the user.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input that&#x27;s used in formInput, and uniquely identifies this input.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;timezoneOffsetDate&quot;: 42, # 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&#x27;s time zone setting on the client side.
+                    &quot;type&quot;: &quot;A String&quot;, # The type of the date/time picker.
+                    &quot;valueMsEpoch&quot;: &quot;A String&quot;, # 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.
+                  },
+                  &quot;decoratedText&quot;: { # 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. # Displays a decorated text item in this widget. For example, the following JSON creates a decorated text widget showing email address: ``` &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;topLabel&quot;: &quot;Email Address&quot;, &quot;content&quot;: &quot;heba.salam@example.com&quot;, &quot;bottomLabel&quot;: &quot;This is a new Email address!&quot;, &quot;switchWidget&quot;: { &quot;name&quot;: &quot;has_send_welcome_email_to_heba_salam&quot;, &quot;selected&quot;: false, &quot;controlType&quot;: &quot;ControlType.CHECKBOX&quot; } } ```
+                    &quot;bottomLabel&quot;: &quot;A String&quot;, # The formatted text label that shows below the main text.
+                    &quot;button&quot;: { # A button. Can be a text button or an image button. # A button that can be clicked to trigger an action.
+                      &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                      &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                      &quot;icon&quot;: { # The icon image.
+                        &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                        &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                        &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                        &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                      },
+                      &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                        &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                        &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                          &quot;onClose&quot;: &quot;A String&quot;,
+                          &quot;openAs&quot;: &quot;A String&quot;,
+                          &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                        },
+                      },
+                      &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                    },
+                    &quot;endIcon&quot;: { # An icon displayed after the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;icon&quot;: { # Deprecated in favor of start_icon.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;onClick&quot;: { # Only the top and bottom label and content region are clickable.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;startIcon&quot;: { # The icon displayed in front of the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;switchControl&quot;: { # A switch widget can be clicked to change its state or trigger an action.
+                      &quot;controlType&quot;: &quot;A String&quot;, # The control type, either switch or checkbox.
+                      &quot;name&quot;: &quot;A String&quot;, # The name of the switch widget that&#x27;s used in formInput.
+                      &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The action when the switch state is changed.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;selected&quot;: True or False, # If the switch is selected.
+                      &quot;value&quot;: &quot;A String&quot;, # The value is what is passed back in the callback.
+                    },
+                    &quot;text&quot;: &quot;A String&quot;, # Required. The main widget formatted text. See Text formatting for details.
+                    &quot;topLabel&quot;: &quot;A String&quot;, # The formatted text label that shows above the main text.
+                    &quot;wrapText&quot;: True or False, # The wrap text setting. If `true`, the text is wrapped and displayed in multiline. Otherwise, the text is truncated.
+                  },
+                  &quot;divider&quot;: { # A divider that appears in between widgets. # Displays a divider. For example, the following JSON creates a divider: ``` &quot;divider&quot;: { } ```
+                  },
+                  &quot;grid&quot;: { # Represents a Grid widget that displays items in a configurable grid layout. # Displays a grid with a collection of items. For example, the following JSON creates a 2 column grid with a single item: ``` &quot;grid&quot;: { &quot;title&quot;: &quot;A fine collection of items&quot;, &quot;numColumns&quot;: 2, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot;, &quot;cornerRadius&quot;: 4.0 }, &quot;items&quot;: [ &quot;image&quot;: { &quot;imageUri&quot;: &quot;https://www.example.com/image.png&quot;, &quot;cropStyle&quot;: { &quot;type&quot;: &quot;SQUARE&quot; }, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot; } }, &quot;title&quot;: &quot;An item&quot;, &quot;textAlignment&quot;: &quot;CENTER&quot; ], &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;:&quot;https://www.example.com&quot; } } } ```
+                    &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to each grid item.
+                      &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                      &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;type&quot;: &quot;A String&quot;, # The border type.
+                    },
+                    &quot;columnCount&quot;: 42, # The number of columns to display in the grid. A default value is used if this field isn&#x27;t specified, and that default value is different depending on where the grid is shown (dialog versus companion).
+                    &quot;items&quot;: [ # The items to display in the grid.
+                      { # Represents a single item in the grid layout.
+                        &quot;id&quot;: &quot;A String&quot;, # A user-specified identifier for this grid item. This identifier is returned in the parent Grid&#x27;s onClick callback parameters.
+                        &quot;image&quot;: { # The image that displays in the grid item.
+                          &quot;altText&quot;: &quot;A String&quot;, # The accessibility label for the image.
+                          &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to the image.
+                            &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                            &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                              &quot;alpha&quot;: 3.14, # 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).
+                              &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                              &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                              &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                            },
+                            &quot;type&quot;: &quot;A String&quot;, # The border type.
+                          },
+                          &quot;cropStyle&quot;: { # Represents the crop style applied to an image. # The crop style to apply to the image.
+                            &quot;aspectRatio&quot;: 3.14, # The aspect ratio to use if the crop type is `RECTANGLE_CUSTOM`.
+                            &quot;type&quot;: &quot;A String&quot;, # The crop type.
+                          },
+                          &quot;imageUri&quot;: &quot;A String&quot;, # The image URL.
+                        },
+                        &quot;layout&quot;: &quot;A String&quot;, # The layout to use for the grid item.
+                        &quot;subtitle&quot;: &quot;A String&quot;, # The grid item&#x27;s subtitle.
+                        &quot;textAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of the grid item&#x27;s text.
+                        &quot;title&quot;: &quot;A String&quot;, # The grid item&#x27;s title.
+                      },
+                    ],
+                    &quot;onClick&quot;: { # This callback is reused by each individual grid item, but with the item&#x27;s identifier and index in the items list added to the callback&#x27;s parameters.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;title&quot;: &quot;A String&quot;, # The text that displays in the grid header.
+                  },
+                  &quot;horizontalAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of this widget.
+                  &quot;image&quot;: { # An image that is specified by a URL and can have an onClick action. # Displays an image in this widget. For example, the following JSON creates an image with alternative text: ``` &quot;image&quot;: { &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot; &quot;altText&quot;: &quot;Avatar for Heba Salam&quot; } ```
+                    &quot;altText&quot;: &quot;A String&quot;, # The alternative text of this image, used for accessibility.
+                    &quot;imageUrl&quot;: &quot;A String&quot;, # An image URL.
+                    &quot;onClick&quot;: {
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                  },
+                  &quot;selectionInput&quot;: { # A widget that creates a UI item (for example, a drop-down list) with options for users to select. # Displays a switch control in this widget. For example, the following JSON creates a dropdown selection for size: ``` &quot;switchControl&quot;: { &quot;name&quot;: &quot;size&quot;, &quot;label&quot;: &quot;Size&quot; &quot;type&quot;: &quot;SelectionType.DROPDOWN&quot;, &quot;items&quot;: [ { &quot;text&quot;: &quot;S&quot;, &quot;value&quot;: &quot;small&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;M&quot;, &quot;value&quot;: &quot;medium&quot;, &quot;selected&quot;: true }, { &quot;text&quot;: &quot;L&quot;, &quot;value&quot;: &quot;large&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;XL&quot;, &quot;value&quot;: &quot;extra_large&quot;, &quot;selected&quot;: false } ] } ```
+                    &quot;items&quot;: [
+                      { # The item in the switch control. A radio button, at most one of the items is selected.
+                        &quot;selected&quot;: True or False, # 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.
+                        &quot;text&quot;: &quot;A String&quot;, # The text to be displayed.
+                        &quot;value&quot;: &quot;A String&quot;, # The value associated with this item. The client should use this as a form input value.
+                      },
+                    ],
+                    &quot;label&quot;: &quot;A String&quot;, # The label displayed ahead of the switch control.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, the form is submitted when the selection changes. If not specified, you must specify a separate button.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;,
+                  },
+                  &quot;textInput&quot;: { # A text input is a UI item where users can input text. A text input can also have an onChange action and suggestions. # Displays a text input in this widget. For example, the following JSON creates a text input for mail address: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;mailing_address&quot;, &quot;label&quot;: &quot;Mailing Address&quot; } ``` As another example, the following JSON creates a text input for programming language with static suggestions: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;preferred_programing_language&quot;, &quot;label&quot;: &quot;Preferred Language&quot;, &quot;initialSuggestions&quot;: { &quot;items&quot;: [ { &quot;text&quot;: &quot;C++&quot; }, { &quot;text&quot;: &quot;Java&quot; }, { &quot;text&quot;: &quot;JavaScript&quot; }, { &quot;text&quot;: &quot;Python&quot; } ] } } ```
+                    &quot;autoCompleteAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The refresh function that returns suggestions based on the user&#x27;s input text. If the callback is not specified, autocomplete is done in client side based on the initial suggestion items.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;hintText&quot;: &quot;A String&quot;, # The hint text.
+                    &quot;initialSuggestions&quot;: { # A container wrapping elements necessary for showing suggestion items used in text input autocomplete. # The initial suggestions made before any user input.
+                      &quot;items&quot;: [ # A list of suggestions items which will be used in are used in autocomplete.
+                        { # A suggestion item. Only supports text for now.
+                          &quot;text&quot;: &quot;A String&quot;,
+                        },
+                      ],
+                    },
+                    &quot;label&quot;: &quot;A String&quot;, # At least one of label and hintText must be specified.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The onChange action, for example, invoke a function.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;, # The style of the text, for example, a single line or multiple lines.
+                    &quot;value&quot;: &quot;A String&quot;, # The default value when there is no input from the user.
+                  },
+                  &quot;textParagraph&quot;: { # A paragraph of text that supports formatting. See [Text formatting](workspace/add-ons/concepts/widgets#text_formatting&quot;) for details. # Displays a text paragraph in this widget. For example, the following JSON creates a bolded text: ``` &quot;textParagraph&quot;: { &quot;text&quot;: &quot; *bold text*&quot; } ```
+                    &quot;text&quot;: &quot;A String&quot;, # The text that&#x27;s shown in the widget.
+                  },
+                },
+              ],
+            },
+          ],
+        },
+      },
+    },
     &quot;type&quot;: &quot;A String&quot;, # The type of bot response.
     &quot;url&quot;: &quot;A String&quot;, # URL for users to auth or config. (Only for REQUEST_CONFIG response types.)
   },
@@ -631,6 +1681,531 @@
 
     { # A message in Hangouts Chat.
   &quot;actionResponse&quot;: { # Parameters that a bot can use to configure how it&#x27;s response is posted. # Input only. Parameters that a bot can use to configure how its response is posted.
+    &quot;dialogAction&quot;: { # Contains dialog if present as well as the ActionStatus for the request sent from user. # This response is for Dialog related events and must be accompanied by ResponseType.Dialog
+      &quot;actionStatus&quot;: { # ActionStatus represents status of a request from the bot developer&#x27;s side. In specific, for each request a bot gets, the bot developer will set both fields below in relation to what the response status and message related to status should be. # Status for either invoke dialog or submit dialog requests. This will be used to display a status and message to user if needed. For example in case of an error or success.
+        &quot;statusCode&quot;: &quot;A String&quot;, # The status code.
+        &quot;userFacingMessage&quot;: &quot;A String&quot;, # This message will be the corresponding string to the above status_code. If unset, an appropriate generic message based on the status_code will be shown to the user. If this field is set then the message will be surfaced to the user for both successes and errors.
+      },
+      &quot;dialog&quot;: { # Wrapper around the card body of the dialog. # Dialog for the request.
+        &quot;body&quot;: { # 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. ``` { &quot;header&quot;: { &quot;title&quot;: &quot;Heba Salam&quot;, &quot;subtitle&quot;: &quot;Software Engineer&quot;, &quot;imageStyle&quot;: &quot;ImageStyle.AVATAR&quot;, &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot;, &quot;imageAltText&quot;: &quot;Avatar for Heba Salam&quot; }, &quot;sections&quot; : [ { &quot;header&quot;: &quot;Contact Info&quot;, &quot;widgets&quot;: [ { &quot;decorated_text&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;content&quot;: &quot;heba.salam@example.com&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PERSON&quot; }, &quot;content&quot;: &quot;Online&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PHONE&quot; }, &quot;content&quot;: &quot;+1 (555) 555-1234&quot; } }, { &quot;buttons&quot;: [ { &quot;textButton&quot;: { &quot;text&quot;: &quot;Share&quot;, }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/share&quot; } } }, { &quot;textButton&quot;: { &quot;text&quot;: &quot;Edit&quot;, }, &quot;onClick&quot;: { &quot;action&quot;: { &quot;function&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;EDIT&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } } ] } ], &quot;collapsible&quot;: true, &quot;uncollapsibleWidgetsCount&quot;: 3 } ], &quot;cardActions&quot;: [ { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ], &quot;name&quot;: &quot;contact-card-K3wB6arF2H9L&quot; } ``` # Body of the dialog, which will be rendered in a modal. NOTE: The following fields within the objects are not supported: google.apps.card.v1.Widget.date_time_picker google.apps.card.v1.DecoratedText.SwitchControl.on_change_action google.apps.card.v1.TextInput.on_change_action google.apps.card.v1.SelectionInput.on_change_action google.apps.card.v1.DateTimePicker.on_change_action Setting the fields above will have no effect on the dialog.
+          &quot;cardActions&quot;: [ # The actions of this card. They are added to a card&#x27;s generated toolbar menu. For example, the following JSON constructs a card action menu with Settings and Send Feedback options: ``` &quot;card_actions&quot;: [ { &quot;actionLabel&quot;: &quot;Setting&quot;, &quot;onClick&quot;: { &quot;action&quot;: { &quot;functionName&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;SETTING&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } }, { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ] ```
+            { # 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.
+              &quot;actionLabel&quot;: &quot;A String&quot;, # The label that displays as the action menu item.
+              &quot;onClick&quot;: { # The onclick action for this action item.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+            },
+          ],
+          &quot;displayStyle&quot;: &quot;A String&quot;, # The display style for peekCardHeader.
+          &quot;fixedFooter&quot;: { # A persistent (sticky) footer that is added to the bottom of the card. # The fixed footer shown at the bottom of this card.
+            &quot;primaryButton&quot;: { # A button. Can be a text button or an image button. # The primary button of the fixed footer. The button must be a text button with text and color set.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+            &quot;secondaryButton&quot;: { # A button. Can be a text button or an image button. # 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.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+          },
+          &quot;header&quot;: { # The header of the card. A header usually contains a title and an image.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;name&quot;: &quot;A String&quot;, # Name of the card, which is used as a identifier for the card in card navigation.
+          &quot;peekCardHeader&quot;: { # 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.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;sections&quot;: [ # Sections are separated by a line divider.
+            { # 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.
+              &quot;collapsible&quot;: True or False, # Indicates whether this section is collapsible. If a section is collapsible, the description must be given.
+              &quot;header&quot;: &quot;A String&quot;, # The header of the section. Formatted text is supported.
+              &quot;uncollapsibleWidgetsCount&quot;: 42, # 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`.
+              &quot;widgets&quot;: [ # A section must contain at least 1 widget.
+                { # A widget is a UI element that presents texts, images, etc.
+                  &quot;buttonList&quot;: { # A list of buttons layed out horizontally. # 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: ``` &quot;buttonList&quot;: { &quot;buttons&quot;: [ &quot;button&quot;: { &quot;text&quot;: &quot;Edit&quot;, &quot;Color&quot;: { &quot;Red&quot;: 255 &quot;Green&quot;: 255 &quot;Blue&quot;: 255 } &quot;disabled&quot;: true }, &quot;button&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;INVITE&quot; &quot;altText&quot;: &quot;check calendar&quot; }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/calendar&quot; } } }, ] } ```
+                    &quot;buttons&quot;: [
+                      { # A button. Can be a text button or an image button.
+                        &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                        &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                          &quot;alpha&quot;: 3.14, # 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).
+                          &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                          &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                          &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                        },
+                        &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                        &quot;icon&quot;: { # The icon image.
+                          &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                          &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                          &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                          &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                        },
+                        &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                          &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                          &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                            &quot;onClose&quot;: &quot;A String&quot;,
+                            &quot;openAs&quot;: &quot;A String&quot;,
+                            &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                          },
+                        },
+                        &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                      },
+                    ],
+                  },
+                  &quot;dateTimePicker&quot;: { # The widget that lets users to specify a date and time. # Displays a selection/input widget for date/time. For example, the following JSON creates a date/time picker for an appointment time: ``` &quot;date_time_picker&quot;: { &quot;name&quot;: &quot;appointment_time&quot;, &quot;label&quot;: &quot;Book your appointment at:&quot;, &quot;type&quot;: &quot;DateTimePickerType.DATE_AND_TIME&quot;, &quot;valueMsEpoch&quot;: &quot;796435200000&quot; } ```
+                    &quot;label&quot;: &quot;A String&quot;, # The label for the field that displays to the user.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input that&#x27;s used in formInput, and uniquely identifies this input.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;timezoneOffsetDate&quot;: 42, # 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&#x27;s time zone setting on the client side.
+                    &quot;type&quot;: &quot;A String&quot;, # The type of the date/time picker.
+                    &quot;valueMsEpoch&quot;: &quot;A String&quot;, # 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.
+                  },
+                  &quot;decoratedText&quot;: { # 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. # Displays a decorated text item in this widget. For example, the following JSON creates a decorated text widget showing email address: ``` &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;topLabel&quot;: &quot;Email Address&quot;, &quot;content&quot;: &quot;heba.salam@example.com&quot;, &quot;bottomLabel&quot;: &quot;This is a new Email address!&quot;, &quot;switchWidget&quot;: { &quot;name&quot;: &quot;has_send_welcome_email_to_heba_salam&quot;, &quot;selected&quot;: false, &quot;controlType&quot;: &quot;ControlType.CHECKBOX&quot; } } ```
+                    &quot;bottomLabel&quot;: &quot;A String&quot;, # The formatted text label that shows below the main text.
+                    &quot;button&quot;: { # A button. Can be a text button or an image button. # A button that can be clicked to trigger an action.
+                      &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                      &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                      &quot;icon&quot;: { # The icon image.
+                        &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                        &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                        &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                        &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                      },
+                      &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                        &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                        &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                          &quot;onClose&quot;: &quot;A String&quot;,
+                          &quot;openAs&quot;: &quot;A String&quot;,
+                          &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                        },
+                      },
+                      &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                    },
+                    &quot;endIcon&quot;: { # An icon displayed after the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;icon&quot;: { # Deprecated in favor of start_icon.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;onClick&quot;: { # Only the top and bottom label and content region are clickable.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;startIcon&quot;: { # The icon displayed in front of the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;switchControl&quot;: { # A switch widget can be clicked to change its state or trigger an action.
+                      &quot;controlType&quot;: &quot;A String&quot;, # The control type, either switch or checkbox.
+                      &quot;name&quot;: &quot;A String&quot;, # The name of the switch widget that&#x27;s used in formInput.
+                      &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The action when the switch state is changed.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;selected&quot;: True or False, # If the switch is selected.
+                      &quot;value&quot;: &quot;A String&quot;, # The value is what is passed back in the callback.
+                    },
+                    &quot;text&quot;: &quot;A String&quot;, # Required. The main widget formatted text. See Text formatting for details.
+                    &quot;topLabel&quot;: &quot;A String&quot;, # The formatted text label that shows above the main text.
+                    &quot;wrapText&quot;: True or False, # The wrap text setting. If `true`, the text is wrapped and displayed in multiline. Otherwise, the text is truncated.
+                  },
+                  &quot;divider&quot;: { # A divider that appears in between widgets. # Displays a divider. For example, the following JSON creates a divider: ``` &quot;divider&quot;: { } ```
+                  },
+                  &quot;grid&quot;: { # Represents a Grid widget that displays items in a configurable grid layout. # Displays a grid with a collection of items. For example, the following JSON creates a 2 column grid with a single item: ``` &quot;grid&quot;: { &quot;title&quot;: &quot;A fine collection of items&quot;, &quot;numColumns&quot;: 2, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot;, &quot;cornerRadius&quot;: 4.0 }, &quot;items&quot;: [ &quot;image&quot;: { &quot;imageUri&quot;: &quot;https://www.example.com/image.png&quot;, &quot;cropStyle&quot;: { &quot;type&quot;: &quot;SQUARE&quot; }, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot; } }, &quot;title&quot;: &quot;An item&quot;, &quot;textAlignment&quot;: &quot;CENTER&quot; ], &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;:&quot;https://www.example.com&quot; } } } ```
+                    &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to each grid item.
+                      &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                      &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;type&quot;: &quot;A String&quot;, # The border type.
+                    },
+                    &quot;columnCount&quot;: 42, # The number of columns to display in the grid. A default value is used if this field isn&#x27;t specified, and that default value is different depending on where the grid is shown (dialog versus companion).
+                    &quot;items&quot;: [ # The items to display in the grid.
+                      { # Represents a single item in the grid layout.
+                        &quot;id&quot;: &quot;A String&quot;, # A user-specified identifier for this grid item. This identifier is returned in the parent Grid&#x27;s onClick callback parameters.
+                        &quot;image&quot;: { # The image that displays in the grid item.
+                          &quot;altText&quot;: &quot;A String&quot;, # The accessibility label for the image.
+                          &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to the image.
+                            &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                            &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                              &quot;alpha&quot;: 3.14, # 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).
+                              &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                              &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                              &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                            },
+                            &quot;type&quot;: &quot;A String&quot;, # The border type.
+                          },
+                          &quot;cropStyle&quot;: { # Represents the crop style applied to an image. # The crop style to apply to the image.
+                            &quot;aspectRatio&quot;: 3.14, # The aspect ratio to use if the crop type is `RECTANGLE_CUSTOM`.
+                            &quot;type&quot;: &quot;A String&quot;, # The crop type.
+                          },
+                          &quot;imageUri&quot;: &quot;A String&quot;, # The image URL.
+                        },
+                        &quot;layout&quot;: &quot;A String&quot;, # The layout to use for the grid item.
+                        &quot;subtitle&quot;: &quot;A String&quot;, # The grid item&#x27;s subtitle.
+                        &quot;textAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of the grid item&#x27;s text.
+                        &quot;title&quot;: &quot;A String&quot;, # The grid item&#x27;s title.
+                      },
+                    ],
+                    &quot;onClick&quot;: { # This callback is reused by each individual grid item, but with the item&#x27;s identifier and index in the items list added to the callback&#x27;s parameters.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;title&quot;: &quot;A String&quot;, # The text that displays in the grid header.
+                  },
+                  &quot;horizontalAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of this widget.
+                  &quot;image&quot;: { # An image that is specified by a URL and can have an onClick action. # Displays an image in this widget. For example, the following JSON creates an image with alternative text: ``` &quot;image&quot;: { &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot; &quot;altText&quot;: &quot;Avatar for Heba Salam&quot; } ```
+                    &quot;altText&quot;: &quot;A String&quot;, # The alternative text of this image, used for accessibility.
+                    &quot;imageUrl&quot;: &quot;A String&quot;, # An image URL.
+                    &quot;onClick&quot;: {
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                  },
+                  &quot;selectionInput&quot;: { # A widget that creates a UI item (for example, a drop-down list) with options for users to select. # Displays a switch control in this widget. For example, the following JSON creates a dropdown selection for size: ``` &quot;switchControl&quot;: { &quot;name&quot;: &quot;size&quot;, &quot;label&quot;: &quot;Size&quot; &quot;type&quot;: &quot;SelectionType.DROPDOWN&quot;, &quot;items&quot;: [ { &quot;text&quot;: &quot;S&quot;, &quot;value&quot;: &quot;small&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;M&quot;, &quot;value&quot;: &quot;medium&quot;, &quot;selected&quot;: true }, { &quot;text&quot;: &quot;L&quot;, &quot;value&quot;: &quot;large&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;XL&quot;, &quot;value&quot;: &quot;extra_large&quot;, &quot;selected&quot;: false } ] } ```
+                    &quot;items&quot;: [
+                      { # The item in the switch control. A radio button, at most one of the items is selected.
+                        &quot;selected&quot;: True or False, # 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.
+                        &quot;text&quot;: &quot;A String&quot;, # The text to be displayed.
+                        &quot;value&quot;: &quot;A String&quot;, # The value associated with this item. The client should use this as a form input value.
+                      },
+                    ],
+                    &quot;label&quot;: &quot;A String&quot;, # The label displayed ahead of the switch control.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, the form is submitted when the selection changes. If not specified, you must specify a separate button.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;,
+                  },
+                  &quot;textInput&quot;: { # A text input is a UI item where users can input text. A text input can also have an onChange action and suggestions. # Displays a text input in this widget. For example, the following JSON creates a text input for mail address: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;mailing_address&quot;, &quot;label&quot;: &quot;Mailing Address&quot; } ``` As another example, the following JSON creates a text input for programming language with static suggestions: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;preferred_programing_language&quot;, &quot;label&quot;: &quot;Preferred Language&quot;, &quot;initialSuggestions&quot;: { &quot;items&quot;: [ { &quot;text&quot;: &quot;C++&quot; }, { &quot;text&quot;: &quot;Java&quot; }, { &quot;text&quot;: &quot;JavaScript&quot; }, { &quot;text&quot;: &quot;Python&quot; } ] } } ```
+                    &quot;autoCompleteAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The refresh function that returns suggestions based on the user&#x27;s input text. If the callback is not specified, autocomplete is done in client side based on the initial suggestion items.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;hintText&quot;: &quot;A String&quot;, # The hint text.
+                    &quot;initialSuggestions&quot;: { # A container wrapping elements necessary for showing suggestion items used in text input autocomplete. # The initial suggestions made before any user input.
+                      &quot;items&quot;: [ # A list of suggestions items which will be used in are used in autocomplete.
+                        { # A suggestion item. Only supports text for now.
+                          &quot;text&quot;: &quot;A String&quot;,
+                        },
+                      ],
+                    },
+                    &quot;label&quot;: &quot;A String&quot;, # At least one of label and hintText must be specified.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The onChange action, for example, invoke a function.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;, # The style of the text, for example, a single line or multiple lines.
+                    &quot;value&quot;: &quot;A String&quot;, # The default value when there is no input from the user.
+                  },
+                  &quot;textParagraph&quot;: { # A paragraph of text that supports formatting. See [Text formatting](workspace/add-ons/concepts/widgets#text_formatting&quot;) for details. # Displays a text paragraph in this widget. For example, the following JSON creates a bolded text: ``` &quot;textParagraph&quot;: { &quot;text&quot;: &quot; *bold text*&quot; } ```
+                    &quot;text&quot;: &quot;A String&quot;, # The text that&#x27;s shown in the widget.
+                  },
+                },
+              ],
+            },
+          ],
+        },
+      },
+    },
     &quot;type&quot;: &quot;A String&quot;, # The type of bot response.
     &quot;url&quot;: &quot;A String&quot;, # URL for users to auth or config. (Only for REQUEST_CONFIG response types.)
   },
@@ -880,6 +2455,531 @@
 
 { # A message in Hangouts Chat.
   &quot;actionResponse&quot;: { # Parameters that a bot can use to configure how it&#x27;s response is posted. # Input only. Parameters that a bot can use to configure how its response is posted.
+    &quot;dialogAction&quot;: { # Contains dialog if present as well as the ActionStatus for the request sent from user. # This response is for Dialog related events and must be accompanied by ResponseType.Dialog
+      &quot;actionStatus&quot;: { # ActionStatus represents status of a request from the bot developer&#x27;s side. In specific, for each request a bot gets, the bot developer will set both fields below in relation to what the response status and message related to status should be. # Status for either invoke dialog or submit dialog requests. This will be used to display a status and message to user if needed. For example in case of an error or success.
+        &quot;statusCode&quot;: &quot;A String&quot;, # The status code.
+        &quot;userFacingMessage&quot;: &quot;A String&quot;, # This message will be the corresponding string to the above status_code. If unset, an appropriate generic message based on the status_code will be shown to the user. If this field is set then the message will be surfaced to the user for both successes and errors.
+      },
+      &quot;dialog&quot;: { # Wrapper around the card body of the dialog. # Dialog for the request.
+        &quot;body&quot;: { # 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. ``` { &quot;header&quot;: { &quot;title&quot;: &quot;Heba Salam&quot;, &quot;subtitle&quot;: &quot;Software Engineer&quot;, &quot;imageStyle&quot;: &quot;ImageStyle.AVATAR&quot;, &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot;, &quot;imageAltText&quot;: &quot;Avatar for Heba Salam&quot; }, &quot;sections&quot; : [ { &quot;header&quot;: &quot;Contact Info&quot;, &quot;widgets&quot;: [ { &quot;decorated_text&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;content&quot;: &quot;heba.salam@example.com&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PERSON&quot; }, &quot;content&quot;: &quot;Online&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PHONE&quot; }, &quot;content&quot;: &quot;+1 (555) 555-1234&quot; } }, { &quot;buttons&quot;: [ { &quot;textButton&quot;: { &quot;text&quot;: &quot;Share&quot;, }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/share&quot; } } }, { &quot;textButton&quot;: { &quot;text&quot;: &quot;Edit&quot;, }, &quot;onClick&quot;: { &quot;action&quot;: { &quot;function&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;EDIT&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } } ] } ], &quot;collapsible&quot;: true, &quot;uncollapsibleWidgetsCount&quot;: 3 } ], &quot;cardActions&quot;: [ { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ], &quot;name&quot;: &quot;contact-card-K3wB6arF2H9L&quot; } ``` # Body of the dialog, which will be rendered in a modal. NOTE: The following fields within the objects are not supported: google.apps.card.v1.Widget.date_time_picker google.apps.card.v1.DecoratedText.SwitchControl.on_change_action google.apps.card.v1.TextInput.on_change_action google.apps.card.v1.SelectionInput.on_change_action google.apps.card.v1.DateTimePicker.on_change_action Setting the fields above will have no effect on the dialog.
+          &quot;cardActions&quot;: [ # The actions of this card. They are added to a card&#x27;s generated toolbar menu. For example, the following JSON constructs a card action menu with Settings and Send Feedback options: ``` &quot;card_actions&quot;: [ { &quot;actionLabel&quot;: &quot;Setting&quot;, &quot;onClick&quot;: { &quot;action&quot;: { &quot;functionName&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;SETTING&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } }, { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ] ```
+            { # 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.
+              &quot;actionLabel&quot;: &quot;A String&quot;, # The label that displays as the action menu item.
+              &quot;onClick&quot;: { # The onclick action for this action item.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+            },
+          ],
+          &quot;displayStyle&quot;: &quot;A String&quot;, # The display style for peekCardHeader.
+          &quot;fixedFooter&quot;: { # A persistent (sticky) footer that is added to the bottom of the card. # The fixed footer shown at the bottom of this card.
+            &quot;primaryButton&quot;: { # A button. Can be a text button or an image button. # The primary button of the fixed footer. The button must be a text button with text and color set.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+            &quot;secondaryButton&quot;: { # A button. Can be a text button or an image button. # 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.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+          },
+          &quot;header&quot;: { # The header of the card. A header usually contains a title and an image.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;name&quot;: &quot;A String&quot;, # Name of the card, which is used as a identifier for the card in card navigation.
+          &quot;peekCardHeader&quot;: { # 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.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;sections&quot;: [ # Sections are separated by a line divider.
+            { # 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.
+              &quot;collapsible&quot;: True or False, # Indicates whether this section is collapsible. If a section is collapsible, the description must be given.
+              &quot;header&quot;: &quot;A String&quot;, # The header of the section. Formatted text is supported.
+              &quot;uncollapsibleWidgetsCount&quot;: 42, # 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`.
+              &quot;widgets&quot;: [ # A section must contain at least 1 widget.
+                { # A widget is a UI element that presents texts, images, etc.
+                  &quot;buttonList&quot;: { # A list of buttons layed out horizontally. # 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: ``` &quot;buttonList&quot;: { &quot;buttons&quot;: [ &quot;button&quot;: { &quot;text&quot;: &quot;Edit&quot;, &quot;Color&quot;: { &quot;Red&quot;: 255 &quot;Green&quot;: 255 &quot;Blue&quot;: 255 } &quot;disabled&quot;: true }, &quot;button&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;INVITE&quot; &quot;altText&quot;: &quot;check calendar&quot; }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/calendar&quot; } } }, ] } ```
+                    &quot;buttons&quot;: [
+                      { # A button. Can be a text button or an image button.
+                        &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                        &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                          &quot;alpha&quot;: 3.14, # 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).
+                          &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                          &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                          &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                        },
+                        &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                        &quot;icon&quot;: { # The icon image.
+                          &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                          &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                          &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                          &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                        },
+                        &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                          &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                          &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                            &quot;onClose&quot;: &quot;A String&quot;,
+                            &quot;openAs&quot;: &quot;A String&quot;,
+                            &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                          },
+                        },
+                        &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                      },
+                    ],
+                  },
+                  &quot;dateTimePicker&quot;: { # The widget that lets users to specify a date and time. # Displays a selection/input widget for date/time. For example, the following JSON creates a date/time picker for an appointment time: ``` &quot;date_time_picker&quot;: { &quot;name&quot;: &quot;appointment_time&quot;, &quot;label&quot;: &quot;Book your appointment at:&quot;, &quot;type&quot;: &quot;DateTimePickerType.DATE_AND_TIME&quot;, &quot;valueMsEpoch&quot;: &quot;796435200000&quot; } ```
+                    &quot;label&quot;: &quot;A String&quot;, # The label for the field that displays to the user.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input that&#x27;s used in formInput, and uniquely identifies this input.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;timezoneOffsetDate&quot;: 42, # 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&#x27;s time zone setting on the client side.
+                    &quot;type&quot;: &quot;A String&quot;, # The type of the date/time picker.
+                    &quot;valueMsEpoch&quot;: &quot;A String&quot;, # 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.
+                  },
+                  &quot;decoratedText&quot;: { # 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. # Displays a decorated text item in this widget. For example, the following JSON creates a decorated text widget showing email address: ``` &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;topLabel&quot;: &quot;Email Address&quot;, &quot;content&quot;: &quot;heba.salam@example.com&quot;, &quot;bottomLabel&quot;: &quot;This is a new Email address!&quot;, &quot;switchWidget&quot;: { &quot;name&quot;: &quot;has_send_welcome_email_to_heba_salam&quot;, &quot;selected&quot;: false, &quot;controlType&quot;: &quot;ControlType.CHECKBOX&quot; } } ```
+                    &quot;bottomLabel&quot;: &quot;A String&quot;, # The formatted text label that shows below the main text.
+                    &quot;button&quot;: { # A button. Can be a text button or an image button. # A button that can be clicked to trigger an action.
+                      &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                      &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                      &quot;icon&quot;: { # The icon image.
+                        &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                        &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                        &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                        &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                      },
+                      &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                        &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                        &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                          &quot;onClose&quot;: &quot;A String&quot;,
+                          &quot;openAs&quot;: &quot;A String&quot;,
+                          &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                        },
+                      },
+                      &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                    },
+                    &quot;endIcon&quot;: { # An icon displayed after the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;icon&quot;: { # Deprecated in favor of start_icon.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;onClick&quot;: { # Only the top and bottom label and content region are clickable.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;startIcon&quot;: { # The icon displayed in front of the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;switchControl&quot;: { # A switch widget can be clicked to change its state or trigger an action.
+                      &quot;controlType&quot;: &quot;A String&quot;, # The control type, either switch or checkbox.
+                      &quot;name&quot;: &quot;A String&quot;, # The name of the switch widget that&#x27;s used in formInput.
+                      &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The action when the switch state is changed.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;selected&quot;: True or False, # If the switch is selected.
+                      &quot;value&quot;: &quot;A String&quot;, # The value is what is passed back in the callback.
+                    },
+                    &quot;text&quot;: &quot;A String&quot;, # Required. The main widget formatted text. See Text formatting for details.
+                    &quot;topLabel&quot;: &quot;A String&quot;, # The formatted text label that shows above the main text.
+                    &quot;wrapText&quot;: True or False, # The wrap text setting. If `true`, the text is wrapped and displayed in multiline. Otherwise, the text is truncated.
+                  },
+                  &quot;divider&quot;: { # A divider that appears in between widgets. # Displays a divider. For example, the following JSON creates a divider: ``` &quot;divider&quot;: { } ```
+                  },
+                  &quot;grid&quot;: { # Represents a Grid widget that displays items in a configurable grid layout. # Displays a grid with a collection of items. For example, the following JSON creates a 2 column grid with a single item: ``` &quot;grid&quot;: { &quot;title&quot;: &quot;A fine collection of items&quot;, &quot;numColumns&quot;: 2, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot;, &quot;cornerRadius&quot;: 4.0 }, &quot;items&quot;: [ &quot;image&quot;: { &quot;imageUri&quot;: &quot;https://www.example.com/image.png&quot;, &quot;cropStyle&quot;: { &quot;type&quot;: &quot;SQUARE&quot; }, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot; } }, &quot;title&quot;: &quot;An item&quot;, &quot;textAlignment&quot;: &quot;CENTER&quot; ], &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;:&quot;https://www.example.com&quot; } } } ```
+                    &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to each grid item.
+                      &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                      &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;type&quot;: &quot;A String&quot;, # The border type.
+                    },
+                    &quot;columnCount&quot;: 42, # The number of columns to display in the grid. A default value is used if this field isn&#x27;t specified, and that default value is different depending on where the grid is shown (dialog versus companion).
+                    &quot;items&quot;: [ # The items to display in the grid.
+                      { # Represents a single item in the grid layout.
+                        &quot;id&quot;: &quot;A String&quot;, # A user-specified identifier for this grid item. This identifier is returned in the parent Grid&#x27;s onClick callback parameters.
+                        &quot;image&quot;: { # The image that displays in the grid item.
+                          &quot;altText&quot;: &quot;A String&quot;, # The accessibility label for the image.
+                          &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to the image.
+                            &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                            &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                              &quot;alpha&quot;: 3.14, # 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).
+                              &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                              &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                              &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                            },
+                            &quot;type&quot;: &quot;A String&quot;, # The border type.
+                          },
+                          &quot;cropStyle&quot;: { # Represents the crop style applied to an image. # The crop style to apply to the image.
+                            &quot;aspectRatio&quot;: 3.14, # The aspect ratio to use if the crop type is `RECTANGLE_CUSTOM`.
+                            &quot;type&quot;: &quot;A String&quot;, # The crop type.
+                          },
+                          &quot;imageUri&quot;: &quot;A String&quot;, # The image URL.
+                        },
+                        &quot;layout&quot;: &quot;A String&quot;, # The layout to use for the grid item.
+                        &quot;subtitle&quot;: &quot;A String&quot;, # The grid item&#x27;s subtitle.
+                        &quot;textAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of the grid item&#x27;s text.
+                        &quot;title&quot;: &quot;A String&quot;, # The grid item&#x27;s title.
+                      },
+                    ],
+                    &quot;onClick&quot;: { # This callback is reused by each individual grid item, but with the item&#x27;s identifier and index in the items list added to the callback&#x27;s parameters.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;title&quot;: &quot;A String&quot;, # The text that displays in the grid header.
+                  },
+                  &quot;horizontalAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of this widget.
+                  &quot;image&quot;: { # An image that is specified by a URL and can have an onClick action. # Displays an image in this widget. For example, the following JSON creates an image with alternative text: ``` &quot;image&quot;: { &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot; &quot;altText&quot;: &quot;Avatar for Heba Salam&quot; } ```
+                    &quot;altText&quot;: &quot;A String&quot;, # The alternative text of this image, used for accessibility.
+                    &quot;imageUrl&quot;: &quot;A String&quot;, # An image URL.
+                    &quot;onClick&quot;: {
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                  },
+                  &quot;selectionInput&quot;: { # A widget that creates a UI item (for example, a drop-down list) with options for users to select. # Displays a switch control in this widget. For example, the following JSON creates a dropdown selection for size: ``` &quot;switchControl&quot;: { &quot;name&quot;: &quot;size&quot;, &quot;label&quot;: &quot;Size&quot; &quot;type&quot;: &quot;SelectionType.DROPDOWN&quot;, &quot;items&quot;: [ { &quot;text&quot;: &quot;S&quot;, &quot;value&quot;: &quot;small&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;M&quot;, &quot;value&quot;: &quot;medium&quot;, &quot;selected&quot;: true }, { &quot;text&quot;: &quot;L&quot;, &quot;value&quot;: &quot;large&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;XL&quot;, &quot;value&quot;: &quot;extra_large&quot;, &quot;selected&quot;: false } ] } ```
+                    &quot;items&quot;: [
+                      { # The item in the switch control. A radio button, at most one of the items is selected.
+                        &quot;selected&quot;: True or False, # 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.
+                        &quot;text&quot;: &quot;A String&quot;, # The text to be displayed.
+                        &quot;value&quot;: &quot;A String&quot;, # The value associated with this item. The client should use this as a form input value.
+                      },
+                    ],
+                    &quot;label&quot;: &quot;A String&quot;, # The label displayed ahead of the switch control.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, the form is submitted when the selection changes. If not specified, you must specify a separate button.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;,
+                  },
+                  &quot;textInput&quot;: { # A text input is a UI item where users can input text. A text input can also have an onChange action and suggestions. # Displays a text input in this widget. For example, the following JSON creates a text input for mail address: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;mailing_address&quot;, &quot;label&quot;: &quot;Mailing Address&quot; } ``` As another example, the following JSON creates a text input for programming language with static suggestions: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;preferred_programing_language&quot;, &quot;label&quot;: &quot;Preferred Language&quot;, &quot;initialSuggestions&quot;: { &quot;items&quot;: [ { &quot;text&quot;: &quot;C++&quot; }, { &quot;text&quot;: &quot;Java&quot; }, { &quot;text&quot;: &quot;JavaScript&quot; }, { &quot;text&quot;: &quot;Python&quot; } ] } } ```
+                    &quot;autoCompleteAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The refresh function that returns suggestions based on the user&#x27;s input text. If the callback is not specified, autocomplete is done in client side based on the initial suggestion items.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;hintText&quot;: &quot;A String&quot;, # The hint text.
+                    &quot;initialSuggestions&quot;: { # A container wrapping elements necessary for showing suggestion items used in text input autocomplete. # The initial suggestions made before any user input.
+                      &quot;items&quot;: [ # A list of suggestions items which will be used in are used in autocomplete.
+                        { # A suggestion item. Only supports text for now.
+                          &quot;text&quot;: &quot;A String&quot;,
+                        },
+                      ],
+                    },
+                    &quot;label&quot;: &quot;A String&quot;, # At least one of label and hintText must be specified.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The onChange action, for example, invoke a function.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;, # The style of the text, for example, a single line or multiple lines.
+                    &quot;value&quot;: &quot;A String&quot;, # The default value when there is no input from the user.
+                  },
+                  &quot;textParagraph&quot;: { # A paragraph of text that supports formatting. See [Text formatting](workspace/add-ons/concepts/widgets#text_formatting&quot;) for details. # Displays a text paragraph in this widget. For example, the following JSON creates a bolded text: ``` &quot;textParagraph&quot;: { &quot;text&quot;: &quot; *bold text*&quot; } ```
+                    &quot;text&quot;: &quot;A String&quot;, # The text that&#x27;s shown in the widget.
+                  },
+                },
+              ],
+            },
+          ],
+        },
+      },
+    },
     &quot;type&quot;: &quot;A String&quot;, # The type of bot response.
     &quot;url&quot;: &quot;A String&quot;, # URL for users to auth or config. (Only for REQUEST_CONFIG response types.)
   },
@@ -1128,6 +3228,531 @@
 
     { # A message in Hangouts Chat.
   &quot;actionResponse&quot;: { # Parameters that a bot can use to configure how it&#x27;s response is posted. # Input only. Parameters that a bot can use to configure how its response is posted.
+    &quot;dialogAction&quot;: { # Contains dialog if present as well as the ActionStatus for the request sent from user. # This response is for Dialog related events and must be accompanied by ResponseType.Dialog
+      &quot;actionStatus&quot;: { # ActionStatus represents status of a request from the bot developer&#x27;s side. In specific, for each request a bot gets, the bot developer will set both fields below in relation to what the response status and message related to status should be. # Status for either invoke dialog or submit dialog requests. This will be used to display a status and message to user if needed. For example in case of an error or success.
+        &quot;statusCode&quot;: &quot;A String&quot;, # The status code.
+        &quot;userFacingMessage&quot;: &quot;A String&quot;, # This message will be the corresponding string to the above status_code. If unset, an appropriate generic message based on the status_code will be shown to the user. If this field is set then the message will be surfaced to the user for both successes and errors.
+      },
+      &quot;dialog&quot;: { # Wrapper around the card body of the dialog. # Dialog for the request.
+        &quot;body&quot;: { # 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. ``` { &quot;header&quot;: { &quot;title&quot;: &quot;Heba Salam&quot;, &quot;subtitle&quot;: &quot;Software Engineer&quot;, &quot;imageStyle&quot;: &quot;ImageStyle.AVATAR&quot;, &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot;, &quot;imageAltText&quot;: &quot;Avatar for Heba Salam&quot; }, &quot;sections&quot; : [ { &quot;header&quot;: &quot;Contact Info&quot;, &quot;widgets&quot;: [ { &quot;decorated_text&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;content&quot;: &quot;heba.salam@example.com&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PERSON&quot; }, &quot;content&quot;: &quot;Online&quot; } }, { &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;PHONE&quot; }, &quot;content&quot;: &quot;+1 (555) 555-1234&quot; } }, { &quot;buttons&quot;: [ { &quot;textButton&quot;: { &quot;text&quot;: &quot;Share&quot;, }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/share&quot; } } }, { &quot;textButton&quot;: { &quot;text&quot;: &quot;Edit&quot;, }, &quot;onClick&quot;: { &quot;action&quot;: { &quot;function&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;EDIT&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } } ] } ], &quot;collapsible&quot;: true, &quot;uncollapsibleWidgetsCount&quot;: 3 } ], &quot;cardActions&quot;: [ { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ], &quot;name&quot;: &quot;contact-card-K3wB6arF2H9L&quot; } ``` # Body of the dialog, which will be rendered in a modal. NOTE: The following fields within the objects are not supported: google.apps.card.v1.Widget.date_time_picker google.apps.card.v1.DecoratedText.SwitchControl.on_change_action google.apps.card.v1.TextInput.on_change_action google.apps.card.v1.SelectionInput.on_change_action google.apps.card.v1.DateTimePicker.on_change_action Setting the fields above will have no effect on the dialog.
+          &quot;cardActions&quot;: [ # The actions of this card. They are added to a card&#x27;s generated toolbar menu. For example, the following JSON constructs a card action menu with Settings and Send Feedback options: ``` &quot;card_actions&quot;: [ { &quot;actionLabel&quot;: &quot;Setting&quot;, &quot;onClick&quot;: { &quot;action&quot;: { &quot;functionName&quot;: &quot;goToView&quot;, &quot;parameters&quot;: [ { &quot;key&quot;: &quot;viewType&quot;, &quot;value&quot;: &quot;SETTING&quot; } ], &quot;loadIndicator&quot;: &quot;LoadIndicator.SPINNER&quot; } } }, { &quot;actionLabel&quot;: &quot;Send Feedback&quot;, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/feedback&quot; } } } ] ```
+            { # 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.
+              &quot;actionLabel&quot;: &quot;A String&quot;, # The label that displays as the action menu item.
+              &quot;onClick&quot;: { # The onclick action for this action item.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+            },
+          ],
+          &quot;displayStyle&quot;: &quot;A String&quot;, # The display style for peekCardHeader.
+          &quot;fixedFooter&quot;: { # A persistent (sticky) footer that is added to the bottom of the card. # The fixed footer shown at the bottom of this card.
+            &quot;primaryButton&quot;: { # A button. Can be a text button or an image button. # The primary button of the fixed footer. The button must be a text button with text and color set.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+            &quot;secondaryButton&quot;: { # A button. Can be a text button or an image button. # 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.
+              &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+              &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                &quot;alpha&quot;: 3.14, # 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).
+                &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+              &quot;icon&quot;: { # The icon image.
+                &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+              },
+              &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                  &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                  &quot;loadIndicator&quot;: &quot;A String&quot;,
+                  &quot;parameters&quot;: [ # List of action parameters.
+                    { # 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.
+                      &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                      &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                    },
+                  ],
+                  &quot;persistValues&quot;: True or False, # 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.
+                },
+                &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                  &quot;onClose&quot;: &quot;A String&quot;,
+                  &quot;openAs&quot;: &quot;A String&quot;,
+                  &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                },
+              },
+              &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+            },
+          },
+          &quot;header&quot;: { # The header of the card. A header usually contains a title and an image.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;name&quot;: &quot;A String&quot;, # Name of the card, which is used as a identifier for the card in card navigation.
+          &quot;peekCardHeader&quot;: { # 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.
+            &quot;imageAltText&quot;: &quot;A String&quot;, # The alternative text of this image which is used for accessibility.
+            &quot;imageType&quot;: &quot;A String&quot;, # The image&#x27;s type.
+            &quot;imageUrl&quot;: &quot;A String&quot;, # The URL of the image in the card header.
+            &quot;subtitle&quot;: &quot;A String&quot;, # The subtitle of the card header.
+            &quot;title&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;sections&quot;: [ # Sections are separated by a line divider.
+            { # 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.
+              &quot;collapsible&quot;: True or False, # Indicates whether this section is collapsible. If a section is collapsible, the description must be given.
+              &quot;header&quot;: &quot;A String&quot;, # The header of the section. Formatted text is supported.
+              &quot;uncollapsibleWidgetsCount&quot;: 42, # 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`.
+              &quot;widgets&quot;: [ # A section must contain at least 1 widget.
+                { # A widget is a UI element that presents texts, images, etc.
+                  &quot;buttonList&quot;: { # A list of buttons layed out horizontally. # 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: ``` &quot;buttonList&quot;: { &quot;buttons&quot;: [ &quot;button&quot;: { &quot;text&quot;: &quot;Edit&quot;, &quot;Color&quot;: { &quot;Red&quot;: 255 &quot;Green&quot;: 255 &quot;Blue&quot;: 255 } &quot;disabled&quot;: true }, &quot;button&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;INVITE&quot; &quot;altText&quot;: &quot;check calendar&quot; }, &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;: &quot;https://example.com/calendar&quot; } } }, ] } ```
+                    &quot;buttons&quot;: [
+                      { # A button. Can be a text button or an image button.
+                        &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                        &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                          &quot;alpha&quot;: 3.14, # 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).
+                          &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                          &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                          &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                        },
+                        &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                        &quot;icon&quot;: { # The icon image.
+                          &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                          &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                          &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                          &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                        },
+                        &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                          &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                          &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                            &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                            &quot;loadIndicator&quot;: &quot;A String&quot;,
+                            &quot;parameters&quot;: [ # List of action parameters.
+                              { # 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.
+                                &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                                &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                              },
+                            ],
+                            &quot;persistValues&quot;: True or False, # 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.
+                          },
+                          &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                            &quot;onClose&quot;: &quot;A String&quot;,
+                            &quot;openAs&quot;: &quot;A String&quot;,
+                            &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                          },
+                        },
+                        &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                      },
+                    ],
+                  },
+                  &quot;dateTimePicker&quot;: { # The widget that lets users to specify a date and time. # Displays a selection/input widget for date/time. For example, the following JSON creates a date/time picker for an appointment time: ``` &quot;date_time_picker&quot;: { &quot;name&quot;: &quot;appointment_time&quot;, &quot;label&quot;: &quot;Book your appointment at:&quot;, &quot;type&quot;: &quot;DateTimePickerType.DATE_AND_TIME&quot;, &quot;valueMsEpoch&quot;: &quot;796435200000&quot; } ```
+                    &quot;label&quot;: &quot;A String&quot;, # The label for the field that displays to the user.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input that&#x27;s used in formInput, and uniquely identifies this input.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;timezoneOffsetDate&quot;: 42, # 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&#x27;s time zone setting on the client side.
+                    &quot;type&quot;: &quot;A String&quot;, # The type of the date/time picker.
+                    &quot;valueMsEpoch&quot;: &quot;A String&quot;, # 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.
+                  },
+                  &quot;decoratedText&quot;: { # 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. # Displays a decorated text item in this widget. For example, the following JSON creates a decorated text widget showing email address: ``` &quot;decoratedText&quot;: { &quot;icon&quot;: { &quot;knownIcon&quot;: &quot;EMAIL&quot; }, &quot;topLabel&quot;: &quot;Email Address&quot;, &quot;content&quot;: &quot;heba.salam@example.com&quot;, &quot;bottomLabel&quot;: &quot;This is a new Email address!&quot;, &quot;switchWidget&quot;: { &quot;name&quot;: &quot;has_send_welcome_email_to_heba_salam&quot;, &quot;selected&quot;: false, &quot;controlType&quot;: &quot;ControlType.CHECKBOX&quot; } } ```
+                    &quot;bottomLabel&quot;: &quot;A String&quot;, # The formatted text label that shows below the main text.
+                    &quot;button&quot;: { # A button. Can be a text button or an image button. # A button that can be clicked to trigger an action.
+                      &quot;altText&quot;: &quot;A String&quot;, # The alternative text used for accessibility. Has no effect when an icon is set; use `icon.alt_text` instead.
+                      &quot;color&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # If set, the button is filled with a solid background.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;disabled&quot;: True or False, # If true, the button is displayed in a disabled state and doesn&#x27;t respond to user actions.
+                      &quot;icon&quot;: { # The icon image.
+                        &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                        &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                        &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                        &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                      },
+                      &quot;onClick&quot;: { # The action to perform when the button is clicked.
+                        &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                        &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                          &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                          &quot;loadIndicator&quot;: &quot;A String&quot;,
+                          &quot;parameters&quot;: [ # List of action parameters.
+                            { # 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.
+                              &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                              &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                            },
+                          ],
+                          &quot;persistValues&quot;: True or False, # 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.
+                        },
+                        &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                          &quot;onClose&quot;: &quot;A String&quot;,
+                          &quot;openAs&quot;: &quot;A String&quot;,
+                          &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                        },
+                      },
+                      &quot;text&quot;: &quot;A String&quot;, # The text of the button.
+                    },
+                    &quot;endIcon&quot;: { # An icon displayed after the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;icon&quot;: { # Deprecated in favor of start_icon.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;onClick&quot;: { # Only the top and bottom label and content region are clickable.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;startIcon&quot;: { # The icon displayed in front of the text.
+                      &quot;altText&quot;: &quot;A String&quot;, # The description of the icon, used for accessibility. The default value is provided if you don&#x27;t specify one.
+                      &quot;iconUrl&quot;: &quot;A String&quot;, # The icon specified by a URL.
+                      &quot;imageType&quot;: &quot;A String&quot;, # 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.
+                      &quot;knownIcon&quot;: &quot;A String&quot;, # The icon specified by the string name of a list of known icons
+                    },
+                    &quot;switchControl&quot;: { # A switch widget can be clicked to change its state or trigger an action.
+                      &quot;controlType&quot;: &quot;A String&quot;, # The control type, either switch or checkbox.
+                      &quot;name&quot;: &quot;A String&quot;, # The name of the switch widget that&#x27;s used in formInput.
+                      &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The action when the switch state is changed.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;selected&quot;: True or False, # If the switch is selected.
+                      &quot;value&quot;: &quot;A String&quot;, # The value is what is passed back in the callback.
+                    },
+                    &quot;text&quot;: &quot;A String&quot;, # Required. The main widget formatted text. See Text formatting for details.
+                    &quot;topLabel&quot;: &quot;A String&quot;, # The formatted text label that shows above the main text.
+                    &quot;wrapText&quot;: True or False, # The wrap text setting. If `true`, the text is wrapped and displayed in multiline. Otherwise, the text is truncated.
+                  },
+                  &quot;divider&quot;: { # A divider that appears in between widgets. # Displays a divider. For example, the following JSON creates a divider: ``` &quot;divider&quot;: { } ```
+                  },
+                  &quot;grid&quot;: { # Represents a Grid widget that displays items in a configurable grid layout. # Displays a grid with a collection of items. For example, the following JSON creates a 2 column grid with a single item: ``` &quot;grid&quot;: { &quot;title&quot;: &quot;A fine collection of items&quot;, &quot;numColumns&quot;: 2, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot;, &quot;cornerRadius&quot;: 4.0 }, &quot;items&quot;: [ &quot;image&quot;: { &quot;imageUri&quot;: &quot;https://www.example.com/image.png&quot;, &quot;cropStyle&quot;: { &quot;type&quot;: &quot;SQUARE&quot; }, &quot;borderStyle&quot;: { &quot;type&quot;: &quot;STROKE&quot; } }, &quot;title&quot;: &quot;An item&quot;, &quot;textAlignment&quot;: &quot;CENTER&quot; ], &quot;onClick&quot;: { &quot;openLink&quot;: { &quot;url&quot;:&quot;https://www.example.com&quot; } } } ```
+                    &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to each grid item.
+                      &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                      &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                        &quot;alpha&quot;: 3.14, # 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).
+                        &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      &quot;type&quot;: &quot;A String&quot;, # The border type.
+                    },
+                    &quot;columnCount&quot;: 42, # The number of columns to display in the grid. A default value is used if this field isn&#x27;t specified, and that default value is different depending on where the grid is shown (dialog versus companion).
+                    &quot;items&quot;: [ # The items to display in the grid.
+                      { # Represents a single item in the grid layout.
+                        &quot;id&quot;: &quot;A String&quot;, # A user-specified identifier for this grid item. This identifier is returned in the parent Grid&#x27;s onClick callback parameters.
+                        &quot;image&quot;: { # The image that displays in the grid item.
+                          &quot;altText&quot;: &quot;A String&quot;, # The accessibility label for the image.
+                          &quot;borderStyle&quot;: { # Represents the complete border style applied to widgets. # The border style to apply to the image.
+                            &quot;cornerRadius&quot;: 42, # The corner radius for the border.
+                            &quot;strokeColor&quot;: { # 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&#x27;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&#x27;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:&amp;red green:&amp;green blue:&amp;blue alpha:&amp;alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha &lt;= 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 (!(&#x27;alpha&#x27; in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(&#x27;,&#x27;); return [&#x27;rgba(&#x27;, rgbParams, &#x27;,&#x27;, alphaFrac, &#x27;)&#x27;].join(&#x27;&#x27;); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red &lt;&lt; 16) | (green &lt;&lt; 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = [&#x27;#&#x27;]; for (var i = 0; i &lt; missingZeros; i++) { resultBuilder.push(&#x27;0&#x27;); } resultBuilder.push(hexString); return resultBuilder.join(&#x27;&#x27;); }; // ... # The colors to use when the type is `BORDER_TYPE_STROKE`.
+                              &quot;alpha&quot;: 3.14, # 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).
+                              &quot;blue&quot;: 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                              &quot;green&quot;: 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                              &quot;red&quot;: 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                            },
+                            &quot;type&quot;: &quot;A String&quot;, # The border type.
+                          },
+                          &quot;cropStyle&quot;: { # Represents the crop style applied to an image. # The crop style to apply to the image.
+                            &quot;aspectRatio&quot;: 3.14, # The aspect ratio to use if the crop type is `RECTANGLE_CUSTOM`.
+                            &quot;type&quot;: &quot;A String&quot;, # The crop type.
+                          },
+                          &quot;imageUri&quot;: &quot;A String&quot;, # The image URL.
+                        },
+                        &quot;layout&quot;: &quot;A String&quot;, # The layout to use for the grid item.
+                        &quot;subtitle&quot;: &quot;A String&quot;, # The grid item&#x27;s subtitle.
+                        &quot;textAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of the grid item&#x27;s text.
+                        &quot;title&quot;: &quot;A String&quot;, # The grid item&#x27;s title.
+                      },
+                    ],
+                    &quot;onClick&quot;: { # This callback is reused by each individual grid item, but with the item&#x27;s identifier and index in the items list added to the callback&#x27;s parameters.
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                    &quot;title&quot;: &quot;A String&quot;, # The text that displays in the grid header.
+                  },
+                  &quot;horizontalAlignment&quot;: &quot;A String&quot;, # The horizontal alignment of this widget.
+                  &quot;image&quot;: { # An image that is specified by a URL and can have an onClick action. # Displays an image in this widget. For example, the following JSON creates an image with alternative text: ``` &quot;image&quot;: { &quot;imageUrl&quot;: &quot;https://example.com/heba_salam.png&quot; &quot;altText&quot;: &quot;Avatar for Heba Salam&quot; } ```
+                    &quot;altText&quot;: &quot;A String&quot;, # The alternative text of this image, used for accessibility.
+                    &quot;imageUrl&quot;: &quot;A String&quot;, # An image URL.
+                    &quot;onClick&quot;: {
+                      &quot;action&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, an action is triggered by this onClick.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;card&quot;: # Object with schema name: GoogleAppsCardV1Card # A new card is pushed to the card stack after clicking if specified.
+                      &quot;openDynamicLinkAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # 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.
+                        &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                        &quot;loadIndicator&quot;: &quot;A String&quot;,
+                        &quot;parameters&quot;: [ # List of action parameters.
+                          { # 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.
+                            &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                            &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                          },
+                        ],
+                        &quot;persistValues&quot;: True or False, # 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.
+                      },
+                      &quot;openLink&quot;: { # If specified, this onClick triggers an open link action.
+                        &quot;onClose&quot;: &quot;A String&quot;,
+                        &quot;openAs&quot;: &quot;A String&quot;,
+                        &quot;url&quot;: &quot;A String&quot;, # The URL to open.
+                      },
+                    },
+                  },
+                  &quot;selectionInput&quot;: { # A widget that creates a UI item (for example, a drop-down list) with options for users to select. # Displays a switch control in this widget. For example, the following JSON creates a dropdown selection for size: ``` &quot;switchControl&quot;: { &quot;name&quot;: &quot;size&quot;, &quot;label&quot;: &quot;Size&quot; &quot;type&quot;: &quot;SelectionType.DROPDOWN&quot;, &quot;items&quot;: [ { &quot;text&quot;: &quot;S&quot;, &quot;value&quot;: &quot;small&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;M&quot;, &quot;value&quot;: &quot;medium&quot;, &quot;selected&quot;: true }, { &quot;text&quot;: &quot;L&quot;, &quot;value&quot;: &quot;large&quot;, &quot;selected&quot;: false }, { &quot;text&quot;: &quot;XL&quot;, &quot;value&quot;: &quot;extra_large&quot;, &quot;selected&quot;: false } ] } ```
+                    &quot;items&quot;: [
+                      { # The item in the switch control. A radio button, at most one of the items is selected.
+                        &quot;selected&quot;: True or False, # 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.
+                        &quot;text&quot;: &quot;A String&quot;, # The text to be displayed.
+                        &quot;value&quot;: &quot;A String&quot;, # The value associated with this item. The client should use this as a form input value.
+                      },
+                    ],
+                    &quot;label&quot;: &quot;A String&quot;, # The label displayed ahead of the switch control.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # If specified, the form is submitted when the selection changes. If not specified, you must specify a separate button.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;,
+                  },
+                  &quot;textInput&quot;: { # A text input is a UI item where users can input text. A text input can also have an onChange action and suggestions. # Displays a text input in this widget. For example, the following JSON creates a text input for mail address: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;mailing_address&quot;, &quot;label&quot;: &quot;Mailing Address&quot; } ``` As another example, the following JSON creates a text input for programming language with static suggestions: ``` &quot;textInput&quot;: { &quot;name&quot;: &quot;preferred_programing_language&quot;, &quot;label&quot;: &quot;Preferred Language&quot;, &quot;initialSuggestions&quot;: { &quot;items&quot;: [ { &quot;text&quot;: &quot;C++&quot; }, { &quot;text&quot;: &quot;Java&quot; }, { &quot;text&quot;: &quot;JavaScript&quot; }, { &quot;text&quot;: &quot;Python&quot; } ] } } ```
+                    &quot;autoCompleteAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The refresh function that returns suggestions based on the user&#x27;s input text. If the callback is not specified, autocomplete is done in client side based on the initial suggestion items.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;hintText&quot;: &quot;A String&quot;, # The hint text.
+                    &quot;initialSuggestions&quot;: { # A container wrapping elements necessary for showing suggestion items used in text input autocomplete. # The initial suggestions made before any user input.
+                      &quot;items&quot;: [ # A list of suggestions items which will be used in are used in autocomplete.
+                        { # A suggestion item. Only supports text for now.
+                          &quot;text&quot;: &quot;A String&quot;,
+                        },
+                      ],
+                    },
+                    &quot;label&quot;: &quot;A String&quot;, # At least one of label and hintText must be specified.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the text input which is used in formInput.
+                    &quot;onChangeAction&quot;: { # An action that describes the behavior when the form is submitted. For example, an Apps Script can be invoked to handle the form. # The onChange action, for example, invoke a function.
+                      &quot;function&quot;: &quot;A String&quot;, # Apps Script function to invoke when the containing element is clicked/activated.
+                      &quot;loadIndicator&quot;: &quot;A String&quot;,
+                      &quot;parameters&quot;: [ # List of action parameters.
+                        { # 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.
+                          &quot;key&quot;: &quot;A String&quot;, # The name of the parameter for the action script.
+                          &quot;value&quot;: &quot;A String&quot;, # The value of the parameter.
+                        },
+                      ],
+                      &quot;persistValues&quot;: True or False, # 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.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;, # The style of the text, for example, a single line or multiple lines.
+                    &quot;value&quot;: &quot;A String&quot;, # The default value when there is no input from the user.
+                  },
+                  &quot;textParagraph&quot;: { # A paragraph of text that supports formatting. See [Text formatting](workspace/add-ons/concepts/widgets#text_formatting&quot;) for details. # Displays a text paragraph in this widget. For example, the following JSON creates a bolded text: ``` &quot;textParagraph&quot;: { &quot;text&quot;: &quot; *bold text*&quot; } ```
+                    &quot;text&quot;: &quot;A String&quot;, # The text that&#x27;s shown in the widget.
+                  },
+                },
+              ],
+            },
+          ],
+        },
+      },
+    },
     &quot;type&quot;: &quot;A String&quot;, # The type of bot response.
     &quot;url&quot;: &quot;A String&quot;, # URL for users to auth or config. (Only for REQUEST_CONFIG response types.)
   },
diff --git a/docs/dyn/cloudasset_v1.v1.html b/docs/dyn/cloudasset_v1.v1.html
index a3a7f9b..3f1a469 100644
--- a/docs/dyn/cloudasset_v1.v1.html
+++ b/docs/dyn/cloudasset_v1.v1.html
@@ -79,7 +79,7 @@
 <p class="firstline">Analyzes IAM policies to answer which identities have what accesses on which resources.</p>
 <p class="toc_element">
   <code><a href="#analyzeIamPolicyLongrunning">analyzeIamPolicyLongrunning(scope, body=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Analyzes IAM policies asynchronously to answer which identities have what accesses on which resources, and writes the analysis results to a Google Cloud Storage or a BigQuery destination. For Cloud Storage destination, the output format is the JSON format that represents a AnalyzeIamPolicyResponse. This method implements the google.longrunning.Operation, which allows you to track the operation status. We recommend intervals of at least 2 seconds with exponential backoff retry to poll the operation result. The metadata contains the request to help callers to map responses to requests.</p>
+<p class="firstline">Analyzes IAM policies asynchronously to answer which identities have what accesses on which resources, and writes the analysis results to a Google Cloud Storage or a BigQuery destination. For Cloud Storage destination, the output format is the JSON format that represents a AnalyzeIamPolicyResponse. This method implements the google.longrunning.Operation, which allows you to track the operation status. We recommend intervals of at least 2 seconds with exponential backoff retry to poll the operation result. The metadata contains the metadata for the long-running operation.</p>
 <p class="toc_element">
   <code><a href="#analyzeMove">analyzeMove(resource, destinationParent=None, view=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Analyze moving a resource to a specified destination without kicking off the actual move. The analysis is best effort depending on the user's permissions of viewing different hierarchical policies and configurations. The policies and configuration are subject to change before the actual resource migration takes place.</p>
@@ -348,7 +348,7 @@
 
 <div class="method">
     <code class="details" id="analyzeIamPolicyLongrunning">analyzeIamPolicyLongrunning(scope, body=None, x__xgafv=None)</code>
-  <pre>Analyzes IAM policies asynchronously to answer which identities have what accesses on which resources, and writes the analysis results to a Google Cloud Storage or a BigQuery destination. For Cloud Storage destination, the output format is the JSON format that represents a AnalyzeIamPolicyResponse. This method implements the google.longrunning.Operation, which allows you to track the operation status. We recommend intervals of at least 2 seconds with exponential backoff retry to poll the operation result. The metadata contains the request to help callers to map responses to requests.
+  <pre>Analyzes IAM policies asynchronously to answer which identities have what accesses on which resources, and writes the analysis results to a Google Cloud Storage or a BigQuery destination. For Cloud Storage destination, the output format is the JSON format that represents a AnalyzeIamPolicyResponse. This method implements the google.longrunning.Operation, which allows you to track the operation status. We recommend intervals of at least 2 seconds with exponential backoff retry to poll the operation result. The metadata contains the metadata for the long-running operation.
 
 Args:
   scope: string, Required. The relative name of the root asset. Only resources and IAM policies within the scope will be analyzed. This can only be an organization number (such as &quot;organizations/123&quot;), a folder number (such as &quot;folders/123&quot;), a project ID (such as &quot;projects/my-project-id&quot;), or a project number (such as &quot;projects/12345&quot;). To know how to get organization id, visit [here ](https://cloud.google.com/resource-manager/docs/creating-managing-organization#retrieving_your_organization_id). To know how to get folder or project id, visit [here ](https://cloud.google.com/resource-manager/docs/creating-managing-folders#viewing_or_listing_folders_and_projects). (required)
diff --git a/docs/dyn/cloudbuild_v1.projects.builds.html b/docs/dyn/cloudbuild_v1.projects.builds.html
index 6ed4772..ffa4e80 100644
--- a/docs/dyn/cloudbuild_v1.projects.builds.html
+++ b/docs/dyn/cloudbuild_v1.projects.builds.html
@@ -154,6 +154,10 @@
   },
   &quot;buildTriggerId&quot;: &quot;A String&quot;, # Output only. The ID of the `BuildTrigger` that triggered this build, if it was triggered automatically.
   &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the request to create the build was received.
+  &quot;failureInfo&quot;: { # A fatal problem encountered during the execution of the build. # Output only. Contains information about the build when status=FAILURE.
+    &quot;detail&quot;: &quot;A String&quot;, # Explains the failure issue in more detail using hard-coded text.
+    &quot;type&quot;: &quot;A String&quot;, # The name of the failure.
+  },
   &quot;finishTime&quot;: &quot;A String&quot;, # Output only. Time at which execution of the build was finished. The difference between finish_time and start_time is the duration of the build&#x27;s execution.
   &quot;id&quot;: &quot;A String&quot;, # Output only. Unique identifier of the build.
   &quot;images&quot;: [ # A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account&#x27;s credentials. The digests of the pushed images will be stored in the `Build` resource&#x27;s results field. If any of the images fail to be pushed, the build status is marked `FAILURE`.
@@ -392,6 +396,10 @@
   },
   &quot;buildTriggerId&quot;: &quot;A String&quot;, # Output only. The ID of the `BuildTrigger` that triggered this build, if it was triggered automatically.
   &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the request to create the build was received.
+  &quot;failureInfo&quot;: { # A fatal problem encountered during the execution of the build. # Output only. Contains information about the build when status=FAILURE.
+    &quot;detail&quot;: &quot;A String&quot;, # Explains the failure issue in more detail using hard-coded text.
+    &quot;type&quot;: &quot;A String&quot;, # The name of the failure.
+  },
   &quot;finishTime&quot;: &quot;A String&quot;, # Output only. Time at which execution of the build was finished. The difference between finish_time and start_time is the duration of the build&#x27;s execution.
   &quot;id&quot;: &quot;A String&quot;, # Output only. Unique identifier of the build.
   &quot;images&quot;: [ # A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account&#x27;s credentials. The digests of the pushed images will be stored in the `Build` resource&#x27;s results field. If any of the images fail to be pushed, the build status is marked `FAILURE`.
@@ -661,6 +669,10 @@
   },
   &quot;buildTriggerId&quot;: &quot;A String&quot;, # Output only. The ID of the `BuildTrigger` that triggered this build, if it was triggered automatically.
   &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the request to create the build was received.
+  &quot;failureInfo&quot;: { # A fatal problem encountered during the execution of the build. # Output only. Contains information about the build when status=FAILURE.
+    &quot;detail&quot;: &quot;A String&quot;, # Explains the failure issue in more detail using hard-coded text.
+    &quot;type&quot;: &quot;A String&quot;, # The name of the failure.
+  },
   &quot;finishTime&quot;: &quot;A String&quot;, # Output only. Time at which execution of the build was finished. The difference between finish_time and start_time is the duration of the build&#x27;s execution.
   &quot;id&quot;: &quot;A String&quot;, # Output only. Unique identifier of the build.
   &quot;images&quot;: [ # A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account&#x27;s credentials. The digests of the pushed images will be stored in the `Build` resource&#x27;s results field. If any of the images fail to be pushed, the build status is marked `FAILURE`.
@@ -905,6 +917,10 @@
       },
       &quot;buildTriggerId&quot;: &quot;A String&quot;, # Output only. The ID of the `BuildTrigger` that triggered this build, if it was triggered automatically.
       &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the request to create the build was received.
+      &quot;failureInfo&quot;: { # A fatal problem encountered during the execution of the build. # Output only. Contains information about the build when status=FAILURE.
+        &quot;detail&quot;: &quot;A String&quot;, # Explains the failure issue in more detail using hard-coded text.
+        &quot;type&quot;: &quot;A String&quot;, # The name of the failure.
+      },
       &quot;finishTime&quot;: &quot;A String&quot;, # Output only. Time at which execution of the build was finished. The difference between finish_time and start_time is the duration of the build&#x27;s execution.
       &quot;id&quot;: &quot;A String&quot;, # Output only. Unique identifier of the build.
       &quot;images&quot;: [ # A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account&#x27;s credentials. The digests of the pushed images will be stored in the `Build` resource&#x27;s results field. If any of the images fail to be pushed, the build status is marked `FAILURE`.
diff --git a/docs/dyn/cloudbuild_v1.projects.locations.builds.html b/docs/dyn/cloudbuild_v1.projects.locations.builds.html
index fb4b582..3e2fd20 100644
--- a/docs/dyn/cloudbuild_v1.projects.locations.builds.html
+++ b/docs/dyn/cloudbuild_v1.projects.locations.builds.html
@@ -153,6 +153,10 @@
   },
   &quot;buildTriggerId&quot;: &quot;A String&quot;, # Output only. The ID of the `BuildTrigger` that triggered this build, if it was triggered automatically.
   &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the request to create the build was received.
+  &quot;failureInfo&quot;: { # A fatal problem encountered during the execution of the build. # Output only. Contains information about the build when status=FAILURE.
+    &quot;detail&quot;: &quot;A String&quot;, # Explains the failure issue in more detail using hard-coded text.
+    &quot;type&quot;: &quot;A String&quot;, # The name of the failure.
+  },
   &quot;finishTime&quot;: &quot;A String&quot;, # Output only. Time at which execution of the build was finished. The difference between finish_time and start_time is the duration of the build&#x27;s execution.
   &quot;id&quot;: &quot;A String&quot;, # Output only. Unique identifier of the build.
   &quot;images&quot;: [ # A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account&#x27;s credentials. The digests of the pushed images will be stored in the `Build` resource&#x27;s results field. If any of the images fail to be pushed, the build status is marked `FAILURE`.
@@ -391,6 +395,10 @@
   },
   &quot;buildTriggerId&quot;: &quot;A String&quot;, # Output only. The ID of the `BuildTrigger` that triggered this build, if it was triggered automatically.
   &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the request to create the build was received.
+  &quot;failureInfo&quot;: { # A fatal problem encountered during the execution of the build. # Output only. Contains information about the build when status=FAILURE.
+    &quot;detail&quot;: &quot;A String&quot;, # Explains the failure issue in more detail using hard-coded text.
+    &quot;type&quot;: &quot;A String&quot;, # The name of the failure.
+  },
   &quot;finishTime&quot;: &quot;A String&quot;, # Output only. Time at which execution of the build was finished. The difference between finish_time and start_time is the duration of the build&#x27;s execution.
   &quot;id&quot;: &quot;A String&quot;, # Output only. Unique identifier of the build.
   &quot;images&quot;: [ # A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account&#x27;s credentials. The digests of the pushed images will be stored in the `Build` resource&#x27;s results field. If any of the images fail to be pushed, the build status is marked `FAILURE`.
@@ -660,6 +668,10 @@
   },
   &quot;buildTriggerId&quot;: &quot;A String&quot;, # Output only. The ID of the `BuildTrigger` that triggered this build, if it was triggered automatically.
   &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the request to create the build was received.
+  &quot;failureInfo&quot;: { # A fatal problem encountered during the execution of the build. # Output only. Contains information about the build when status=FAILURE.
+    &quot;detail&quot;: &quot;A String&quot;, # Explains the failure issue in more detail using hard-coded text.
+    &quot;type&quot;: &quot;A String&quot;, # The name of the failure.
+  },
   &quot;finishTime&quot;: &quot;A String&quot;, # Output only. Time at which execution of the build was finished. The difference between finish_time and start_time is the duration of the build&#x27;s execution.
   &quot;id&quot;: &quot;A String&quot;, # Output only. Unique identifier of the build.
   &quot;images&quot;: [ # A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account&#x27;s credentials. The digests of the pushed images will be stored in the `Build` resource&#x27;s results field. If any of the images fail to be pushed, the build status is marked `FAILURE`.
@@ -904,6 +916,10 @@
       },
       &quot;buildTriggerId&quot;: &quot;A String&quot;, # Output only. The ID of the `BuildTrigger` that triggered this build, if it was triggered automatically.
       &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the request to create the build was received.
+      &quot;failureInfo&quot;: { # A fatal problem encountered during the execution of the build. # Output only. Contains information about the build when status=FAILURE.
+        &quot;detail&quot;: &quot;A String&quot;, # Explains the failure issue in more detail using hard-coded text.
+        &quot;type&quot;: &quot;A String&quot;, # The name of the failure.
+      },
       &quot;finishTime&quot;: &quot;A String&quot;, # Output only. Time at which execution of the build was finished. The difference between finish_time and start_time is the duration of the build&#x27;s execution.
       &quot;id&quot;: &quot;A String&quot;, # Output only. Unique identifier of the build.
       &quot;images&quot;: [ # A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account&#x27;s credentials. The digests of the pushed images will be stored in the `Build` resource&#x27;s results field. If any of the images fail to be pushed, the build status is marked `FAILURE`.
diff --git a/docs/dyn/cloudbuild_v1.projects.locations.triggers.html b/docs/dyn/cloudbuild_v1.projects.locations.triggers.html
index faec061..5c2898e 100644
--- a/docs/dyn/cloudbuild_v1.projects.locations.triggers.html
+++ b/docs/dyn/cloudbuild_v1.projects.locations.triggers.html
@@ -78,7 +78,7 @@
   <code><a href="#close">close()</a></code></p>
 <p class="firstline">Close httplib2 connections.</p>
 <p class="toc_element">
-  <code><a href="#create">create(parent, body=None, projectId=None, x__xgafv=None)</a></code></p>
+  <code><a href="#create">create(parent, body, projectId=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Creates a new `BuildTrigger`. This API is experimental.</p>
 <p class="toc_element">
   <code><a href="#delete">delete(name, projectId=None, triggerId=None, x__xgafv=None)</a></code></p>
@@ -93,7 +93,7 @@
   <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
 <p class="firstline">Retrieves the next page of results.</p>
 <p class="toc_element">
-  <code><a href="#patch">patch(resourceName, body=None, projectId=None, triggerId=None, x__xgafv=None)</a></code></p>
+  <code><a href="#patch">patch(resourceName, body, projectId=None, triggerId=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Updates a `BuildTrigger` by its project ID and trigger ID. This API is experimental.</p>
 <p class="toc_element">
   <code><a href="#run">run(name, body=None, x__xgafv=None)</a></code></p>
@@ -108,7 +108,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="create">create(parent, body=None, projectId=None, x__xgafv=None)</code>
+    <code class="details" id="create">create(parent, body, projectId=None, x__xgafv=None)</code>
   <pre>Creates a new `BuildTrigger`. This API is experimental.
 
 Args:
@@ -152,6 +152,10 @@
     },
     &quot;buildTriggerId&quot;: &quot;A String&quot;, # Output only. The ID of the `BuildTrigger` that triggered this build, if it was triggered automatically.
     &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the request to create the build was received.
+    &quot;failureInfo&quot;: { # A fatal problem encountered during the execution of the build. # Output only. Contains information about the build when status=FAILURE.
+      &quot;detail&quot;: &quot;A String&quot;, # Explains the failure issue in more detail using hard-coded text.
+      &quot;type&quot;: &quot;A String&quot;, # The name of the failure.
+    },
     &quot;finishTime&quot;: &quot;A String&quot;, # Output only. Time at which execution of the build was finished. The difference between finish_time and start_time is the duration of the build&#x27;s execution.
     &quot;id&quot;: &quot;A String&quot;, # Output only. Unique identifier of the build.
     &quot;images&quot;: [ # A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account&#x27;s credentials. The digests of the pushed images will be stored in the `Build` resource&#x27;s results field. If any of the images fail to be pushed, the build status is marked `FAILURE`.
@@ -375,6 +379,11 @@
     &quot;topic&quot;: &quot;A String&quot;, # The name of the topic from which this subscription is receiving messages. Format is `projects/{project}/topics/{topic}`.
   },
   &quot;resourceName&quot;: &quot;A String&quot;, # The `Trigger` name with format: `projects/{project}/locations/{location}/triggers/{trigger}`, where {trigger} is a unique identifier generated by the service.
+  &quot;sourceToBuild&quot;: { # GitRepoSource describes a repo and ref of a code repository. # The repo and ref of the repository from which to build. This field is used only for those triggers that do not respond to SCM events. Triggers that respond to such events build source at whatever commit caused the event. This field is currently only used by Webhook, Pub/Sub, Manual, and Cron triggers.
+    &quot;ref&quot;: &quot;A String&quot;, # The branch or tag to use. Must start with &quot;refs/&quot; (required).
+    &quot;repoType&quot;: &quot;A String&quot;, # See RepoType below.
+    &quot;uri&quot;: &quot;A String&quot;, # The URI of the repo (required).
+  },
   &quot;substitutions&quot;: { # Substitutions for Build resource. The keys must match the following regular expression: `^_[A-Z0-9_]+$`.
     &quot;a_key&quot;: &quot;A String&quot;,
   },
@@ -444,6 +453,10 @@
     },
     &quot;buildTriggerId&quot;: &quot;A String&quot;, # Output only. The ID of the `BuildTrigger` that triggered this build, if it was triggered automatically.
     &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the request to create the build was received.
+    &quot;failureInfo&quot;: { # A fatal problem encountered during the execution of the build. # Output only. Contains information about the build when status=FAILURE.
+      &quot;detail&quot;: &quot;A String&quot;, # Explains the failure issue in more detail using hard-coded text.
+      &quot;type&quot;: &quot;A String&quot;, # The name of the failure.
+    },
     &quot;finishTime&quot;: &quot;A String&quot;, # Output only. Time at which execution of the build was finished. The difference between finish_time and start_time is the duration of the build&#x27;s execution.
     &quot;id&quot;: &quot;A String&quot;, # Output only. Unique identifier of the build.
     &quot;images&quot;: [ # A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account&#x27;s credentials. The digests of the pushed images will be stored in the `Build` resource&#x27;s results field. If any of the images fail to be pushed, the build status is marked `FAILURE`.
@@ -667,6 +680,11 @@
     &quot;topic&quot;: &quot;A String&quot;, # The name of the topic from which this subscription is receiving messages. Format is `projects/{project}/topics/{topic}`.
   },
   &quot;resourceName&quot;: &quot;A String&quot;, # The `Trigger` name with format: `projects/{project}/locations/{location}/triggers/{trigger}`, where {trigger} is a unique identifier generated by the service.
+  &quot;sourceToBuild&quot;: { # GitRepoSource describes a repo and ref of a code repository. # The repo and ref of the repository from which to build. This field is used only for those triggers that do not respond to SCM events. Triggers that respond to such events build source at whatever commit caused the event. This field is currently only used by Webhook, Pub/Sub, Manual, and Cron triggers.
+    &quot;ref&quot;: &quot;A String&quot;, # The branch or tag to use. Must start with &quot;refs/&quot; (required).
+    &quot;repoType&quot;: &quot;A String&quot;, # See RepoType below.
+    &quot;uri&quot;: &quot;A String&quot;, # The URI of the repo (required).
+  },
   &quot;substitutions&quot;: { # Substitutions for Build resource. The keys must match the following regular expression: `^_[A-Z0-9_]+$`.
     &quot;a_key&quot;: &quot;A String&quot;,
   },
@@ -764,6 +782,10 @@
     },
     &quot;buildTriggerId&quot;: &quot;A String&quot;, # Output only. The ID of the `BuildTrigger` that triggered this build, if it was triggered automatically.
     &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the request to create the build was received.
+    &quot;failureInfo&quot;: { # A fatal problem encountered during the execution of the build. # Output only. Contains information about the build when status=FAILURE.
+      &quot;detail&quot;: &quot;A String&quot;, # Explains the failure issue in more detail using hard-coded text.
+      &quot;type&quot;: &quot;A String&quot;, # The name of the failure.
+    },
     &quot;finishTime&quot;: &quot;A String&quot;, # Output only. Time at which execution of the build was finished. The difference between finish_time and start_time is the duration of the build&#x27;s execution.
     &quot;id&quot;: &quot;A String&quot;, # Output only. Unique identifier of the build.
     &quot;images&quot;: [ # A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account&#x27;s credentials. The digests of the pushed images will be stored in the `Build` resource&#x27;s results field. If any of the images fail to be pushed, the build status is marked `FAILURE`.
@@ -987,6 +1009,11 @@
     &quot;topic&quot;: &quot;A String&quot;, # The name of the topic from which this subscription is receiving messages. Format is `projects/{project}/topics/{topic}`.
   },
   &quot;resourceName&quot;: &quot;A String&quot;, # The `Trigger` name with format: `projects/{project}/locations/{location}/triggers/{trigger}`, where {trigger} is a unique identifier generated by the service.
+  &quot;sourceToBuild&quot;: { # GitRepoSource describes a repo and ref of a code repository. # The repo and ref of the repository from which to build. This field is used only for those triggers that do not respond to SCM events. Triggers that respond to such events build source at whatever commit caused the event. This field is currently only used by Webhook, Pub/Sub, Manual, and Cron triggers.
+    &quot;ref&quot;: &quot;A String&quot;, # The branch or tag to use. Must start with &quot;refs/&quot; (required).
+    &quot;repoType&quot;: &quot;A String&quot;, # See RepoType below.
+    &quot;uri&quot;: &quot;A String&quot;, # The URI of the repo (required).
+  },
   &quot;substitutions&quot;: { # Substitutions for Build resource. The keys must match the following regular expression: `^_[A-Z0-9_]+$`.
     &quot;a_key&quot;: &quot;A String&quot;,
   },
@@ -1068,6 +1095,10 @@
         },
         &quot;buildTriggerId&quot;: &quot;A String&quot;, # Output only. The ID of the `BuildTrigger` that triggered this build, if it was triggered automatically.
         &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the request to create the build was received.
+        &quot;failureInfo&quot;: { # A fatal problem encountered during the execution of the build. # Output only. Contains information about the build when status=FAILURE.
+          &quot;detail&quot;: &quot;A String&quot;, # Explains the failure issue in more detail using hard-coded text.
+          &quot;type&quot;: &quot;A String&quot;, # The name of the failure.
+        },
         &quot;finishTime&quot;: &quot;A String&quot;, # Output only. Time at which execution of the build was finished. The difference between finish_time and start_time is the duration of the build&#x27;s execution.
         &quot;id&quot;: &quot;A String&quot;, # Output only. Unique identifier of the build.
         &quot;images&quot;: [ # A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account&#x27;s credentials. The digests of the pushed images will be stored in the `Build` resource&#x27;s results field. If any of the images fail to be pushed, the build status is marked `FAILURE`.
@@ -1291,6 +1322,11 @@
         &quot;topic&quot;: &quot;A String&quot;, # The name of the topic from which this subscription is receiving messages. Format is `projects/{project}/topics/{topic}`.
       },
       &quot;resourceName&quot;: &quot;A String&quot;, # The `Trigger` name with format: `projects/{project}/locations/{location}/triggers/{trigger}`, where {trigger} is a unique identifier generated by the service.
+      &quot;sourceToBuild&quot;: { # GitRepoSource describes a repo and ref of a code repository. # The repo and ref of the repository from which to build. This field is used only for those triggers that do not respond to SCM events. Triggers that respond to such events build source at whatever commit caused the event. This field is currently only used by Webhook, Pub/Sub, Manual, and Cron triggers.
+        &quot;ref&quot;: &quot;A String&quot;, # The branch or tag to use. Must start with &quot;refs/&quot; (required).
+        &quot;repoType&quot;: &quot;A String&quot;, # See RepoType below.
+        &quot;uri&quot;: &quot;A String&quot;, # The URI of the repo (required).
+      },
       &quot;substitutions&quot;: { # Substitutions for Build resource. The keys must match the following regular expression: `^_[A-Z0-9_]+$`.
         &quot;a_key&quot;: &quot;A String&quot;,
       },
@@ -1333,7 +1369,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="patch">patch(resourceName, body=None, projectId=None, triggerId=None, x__xgafv=None)</code>
+    <code class="details" id="patch">patch(resourceName, body, projectId=None, triggerId=None, x__xgafv=None)</code>
   <pre>Updates a `BuildTrigger` by its project ID and trigger ID. This API is experimental.
 
 Args:
@@ -1377,6 +1413,10 @@
     },
     &quot;buildTriggerId&quot;: &quot;A String&quot;, # Output only. The ID of the `BuildTrigger` that triggered this build, if it was triggered automatically.
     &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the request to create the build was received.
+    &quot;failureInfo&quot;: { # A fatal problem encountered during the execution of the build. # Output only. Contains information about the build when status=FAILURE.
+      &quot;detail&quot;: &quot;A String&quot;, # Explains the failure issue in more detail using hard-coded text.
+      &quot;type&quot;: &quot;A String&quot;, # The name of the failure.
+    },
     &quot;finishTime&quot;: &quot;A String&quot;, # Output only. Time at which execution of the build was finished. The difference between finish_time and start_time is the duration of the build&#x27;s execution.
     &quot;id&quot;: &quot;A String&quot;, # Output only. Unique identifier of the build.
     &quot;images&quot;: [ # A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account&#x27;s credentials. The digests of the pushed images will be stored in the `Build` resource&#x27;s results field. If any of the images fail to be pushed, the build status is marked `FAILURE`.
@@ -1600,6 +1640,11 @@
     &quot;topic&quot;: &quot;A String&quot;, # The name of the topic from which this subscription is receiving messages. Format is `projects/{project}/topics/{topic}`.
   },
   &quot;resourceName&quot;: &quot;A String&quot;, # The `Trigger` name with format: `projects/{project}/locations/{location}/triggers/{trigger}`, where {trigger} is a unique identifier generated by the service.
+  &quot;sourceToBuild&quot;: { # GitRepoSource describes a repo and ref of a code repository. # The repo and ref of the repository from which to build. This field is used only for those triggers that do not respond to SCM events. Triggers that respond to such events build source at whatever commit caused the event. This field is currently only used by Webhook, Pub/Sub, Manual, and Cron triggers.
+    &quot;ref&quot;: &quot;A String&quot;, # The branch or tag to use. Must start with &quot;refs/&quot; (required).
+    &quot;repoType&quot;: &quot;A String&quot;, # See RepoType below.
+    &quot;uri&quot;: &quot;A String&quot;, # The URI of the repo (required).
+  },
   &quot;substitutions&quot;: { # Substitutions for Build resource. The keys must match the following regular expression: `^_[A-Z0-9_]+$`.
     &quot;a_key&quot;: &quot;A String&quot;,
   },
@@ -1670,6 +1715,10 @@
     },
     &quot;buildTriggerId&quot;: &quot;A String&quot;, # Output only. The ID of the `BuildTrigger` that triggered this build, if it was triggered automatically.
     &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the request to create the build was received.
+    &quot;failureInfo&quot;: { # A fatal problem encountered during the execution of the build. # Output only. Contains information about the build when status=FAILURE.
+      &quot;detail&quot;: &quot;A String&quot;, # Explains the failure issue in more detail using hard-coded text.
+      &quot;type&quot;: &quot;A String&quot;, # The name of the failure.
+    },
     &quot;finishTime&quot;: &quot;A String&quot;, # Output only. Time at which execution of the build was finished. The difference between finish_time and start_time is the duration of the build&#x27;s execution.
     &quot;id&quot;: &quot;A String&quot;, # Output only. Unique identifier of the build.
     &quot;images&quot;: [ # A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account&#x27;s credentials. The digests of the pushed images will be stored in the `Build` resource&#x27;s results field. If any of the images fail to be pushed, the build status is marked `FAILURE`.
@@ -1893,6 +1942,11 @@
     &quot;topic&quot;: &quot;A String&quot;, # The name of the topic from which this subscription is receiving messages. Format is `projects/{project}/topics/{topic}`.
   },
   &quot;resourceName&quot;: &quot;A String&quot;, # The `Trigger` name with format: `projects/{project}/locations/{location}/triggers/{trigger}`, where {trigger} is a unique identifier generated by the service.
+  &quot;sourceToBuild&quot;: { # GitRepoSource describes a repo and ref of a code repository. # The repo and ref of the repository from which to build. This field is used only for those triggers that do not respond to SCM events. Triggers that respond to such events build source at whatever commit caused the event. This field is currently only used by Webhook, Pub/Sub, Manual, and Cron triggers.
+    &quot;ref&quot;: &quot;A String&quot;, # The branch or tag to use. Must start with &quot;refs/&quot; (required).
+    &quot;repoType&quot;: &quot;A String&quot;, # See RepoType below.
+    &quot;uri&quot;: &quot;A String&quot;, # The URI of the repo (required).
+  },
   &quot;substitutions&quot;: { # Substitutions for Build resource. The keys must match the following regular expression: `^_[A-Z0-9_]+$`.
     &quot;a_key&quot;: &quot;A String&quot;,
   },
diff --git a/docs/dyn/cloudbuild_v1.projects.locations.workerPools.html b/docs/dyn/cloudbuild_v1.projects.locations.workerPools.html
index b154dfe..525a4ac 100644
--- a/docs/dyn/cloudbuild_v1.projects.locations.workerPools.html
+++ b/docs/dyn/cloudbuild_v1.projects.locations.workerPools.html
@@ -247,7 +247,7 @@
   <pre>Lists `WorkerPool`s.
 
 Args:
-  parent: string, Required. The parent of the collection of `WorkerPools`. Format: `projects/{project}/locations/location`. (required)
+  parent: string, Required. The parent of the collection of `WorkerPools`. Format: `projects/{project}/locations/{location}`. (required)
   pageSize: integer, The maximum number of `WorkerPool`s to return. The service may return fewer than this value. If omitted, the server will use a sensible default.
   pageToken: string, A page token, received from a previous `ListWorkerPools` call. Provide this to retrieve the subsequent page.
   x__xgafv: string, V1 error format.
diff --git a/docs/dyn/cloudbuild_v1.projects.triggers.html b/docs/dyn/cloudbuild_v1.projects.triggers.html
index 0ae72e4..14c7e60 100644
--- a/docs/dyn/cloudbuild_v1.projects.triggers.html
+++ b/docs/dyn/cloudbuild_v1.projects.triggers.html
@@ -78,7 +78,7 @@
   <code><a href="#close">close()</a></code></p>
 <p class="firstline">Close httplib2 connections.</p>
 <p class="toc_element">
-  <code><a href="#create">create(projectId, body=None, parent=None, x__xgafv=None)</a></code></p>
+  <code><a href="#create">create(projectId, body, parent=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Creates a new `BuildTrigger`. This API is experimental.</p>
 <p class="toc_element">
   <code><a href="#delete">delete(projectId, triggerId, name=None, x__xgafv=None)</a></code></p>
@@ -93,7 +93,7 @@
   <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
 <p class="firstline">Retrieves the next page of results.</p>
 <p class="toc_element">
-  <code><a href="#patch">patch(projectId, triggerId, body=None, x__xgafv=None)</a></code></p>
+  <code><a href="#patch">patch(projectId, triggerId, body, x__xgafv=None)</a></code></p>
 <p class="firstline">Updates a `BuildTrigger` by its project ID and trigger ID. This API is experimental.</p>
 <p class="toc_element">
   <code><a href="#run">run(projectId, triggerId, body=None, name=None, x__xgafv=None)</a></code></p>
@@ -108,7 +108,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="create">create(projectId, body=None, parent=None, x__xgafv=None)</code>
+    <code class="details" id="create">create(projectId, body, parent=None, x__xgafv=None)</code>
   <pre>Creates a new `BuildTrigger`. This API is experimental.
 
 Args:
@@ -152,6 +152,10 @@
     },
     &quot;buildTriggerId&quot;: &quot;A String&quot;, # Output only. The ID of the `BuildTrigger` that triggered this build, if it was triggered automatically.
     &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the request to create the build was received.
+    &quot;failureInfo&quot;: { # A fatal problem encountered during the execution of the build. # Output only. Contains information about the build when status=FAILURE.
+      &quot;detail&quot;: &quot;A String&quot;, # Explains the failure issue in more detail using hard-coded text.
+      &quot;type&quot;: &quot;A String&quot;, # The name of the failure.
+    },
     &quot;finishTime&quot;: &quot;A String&quot;, # Output only. Time at which execution of the build was finished. The difference between finish_time and start_time is the duration of the build&#x27;s execution.
     &quot;id&quot;: &quot;A String&quot;, # Output only. Unique identifier of the build.
     &quot;images&quot;: [ # A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account&#x27;s credentials. The digests of the pushed images will be stored in the `Build` resource&#x27;s results field. If any of the images fail to be pushed, the build status is marked `FAILURE`.
@@ -375,6 +379,11 @@
     &quot;topic&quot;: &quot;A String&quot;, # The name of the topic from which this subscription is receiving messages. Format is `projects/{project}/topics/{topic}`.
   },
   &quot;resourceName&quot;: &quot;A String&quot;, # The `Trigger` name with format: `projects/{project}/locations/{location}/triggers/{trigger}`, where {trigger} is a unique identifier generated by the service.
+  &quot;sourceToBuild&quot;: { # GitRepoSource describes a repo and ref of a code repository. # The repo and ref of the repository from which to build. This field is used only for those triggers that do not respond to SCM events. Triggers that respond to such events build source at whatever commit caused the event. This field is currently only used by Webhook, Pub/Sub, Manual, and Cron triggers.
+    &quot;ref&quot;: &quot;A String&quot;, # The branch or tag to use. Must start with &quot;refs/&quot; (required).
+    &quot;repoType&quot;: &quot;A String&quot;, # See RepoType below.
+    &quot;uri&quot;: &quot;A String&quot;, # The URI of the repo (required).
+  },
   &quot;substitutions&quot;: { # Substitutions for Build resource. The keys must match the following regular expression: `^_[A-Z0-9_]+$`.
     &quot;a_key&quot;: &quot;A String&quot;,
   },
@@ -444,6 +453,10 @@
     },
     &quot;buildTriggerId&quot;: &quot;A String&quot;, # Output only. The ID of the `BuildTrigger` that triggered this build, if it was triggered automatically.
     &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the request to create the build was received.
+    &quot;failureInfo&quot;: { # A fatal problem encountered during the execution of the build. # Output only. Contains information about the build when status=FAILURE.
+      &quot;detail&quot;: &quot;A String&quot;, # Explains the failure issue in more detail using hard-coded text.
+      &quot;type&quot;: &quot;A String&quot;, # The name of the failure.
+    },
     &quot;finishTime&quot;: &quot;A String&quot;, # Output only. Time at which execution of the build was finished. The difference between finish_time and start_time is the duration of the build&#x27;s execution.
     &quot;id&quot;: &quot;A String&quot;, # Output only. Unique identifier of the build.
     &quot;images&quot;: [ # A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account&#x27;s credentials. The digests of the pushed images will be stored in the `Build` resource&#x27;s results field. If any of the images fail to be pushed, the build status is marked `FAILURE`.
@@ -667,6 +680,11 @@
     &quot;topic&quot;: &quot;A String&quot;, # The name of the topic from which this subscription is receiving messages. Format is `projects/{project}/topics/{topic}`.
   },
   &quot;resourceName&quot;: &quot;A String&quot;, # The `Trigger` name with format: `projects/{project}/locations/{location}/triggers/{trigger}`, where {trigger} is a unique identifier generated by the service.
+  &quot;sourceToBuild&quot;: { # GitRepoSource describes a repo and ref of a code repository. # The repo and ref of the repository from which to build. This field is used only for those triggers that do not respond to SCM events. Triggers that respond to such events build source at whatever commit caused the event. This field is currently only used by Webhook, Pub/Sub, Manual, and Cron triggers.
+    &quot;ref&quot;: &quot;A String&quot;, # The branch or tag to use. Must start with &quot;refs/&quot; (required).
+    &quot;repoType&quot;: &quot;A String&quot;, # See RepoType below.
+    &quot;uri&quot;: &quot;A String&quot;, # The URI of the repo (required).
+  },
   &quot;substitutions&quot;: { # Substitutions for Build resource. The keys must match the following regular expression: `^_[A-Z0-9_]+$`.
     &quot;a_key&quot;: &quot;A String&quot;,
   },
@@ -764,6 +782,10 @@
     },
     &quot;buildTriggerId&quot;: &quot;A String&quot;, # Output only. The ID of the `BuildTrigger` that triggered this build, if it was triggered automatically.
     &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the request to create the build was received.
+    &quot;failureInfo&quot;: { # A fatal problem encountered during the execution of the build. # Output only. Contains information about the build when status=FAILURE.
+      &quot;detail&quot;: &quot;A String&quot;, # Explains the failure issue in more detail using hard-coded text.
+      &quot;type&quot;: &quot;A String&quot;, # The name of the failure.
+    },
     &quot;finishTime&quot;: &quot;A String&quot;, # Output only. Time at which execution of the build was finished. The difference between finish_time and start_time is the duration of the build&#x27;s execution.
     &quot;id&quot;: &quot;A String&quot;, # Output only. Unique identifier of the build.
     &quot;images&quot;: [ # A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account&#x27;s credentials. The digests of the pushed images will be stored in the `Build` resource&#x27;s results field. If any of the images fail to be pushed, the build status is marked `FAILURE`.
@@ -987,6 +1009,11 @@
     &quot;topic&quot;: &quot;A String&quot;, # The name of the topic from which this subscription is receiving messages. Format is `projects/{project}/topics/{topic}`.
   },
   &quot;resourceName&quot;: &quot;A String&quot;, # The `Trigger` name with format: `projects/{project}/locations/{location}/triggers/{trigger}`, where {trigger} is a unique identifier generated by the service.
+  &quot;sourceToBuild&quot;: { # GitRepoSource describes a repo and ref of a code repository. # The repo and ref of the repository from which to build. This field is used only for those triggers that do not respond to SCM events. Triggers that respond to such events build source at whatever commit caused the event. This field is currently only used by Webhook, Pub/Sub, Manual, and Cron triggers.
+    &quot;ref&quot;: &quot;A String&quot;, # The branch or tag to use. Must start with &quot;refs/&quot; (required).
+    &quot;repoType&quot;: &quot;A String&quot;, # See RepoType below.
+    &quot;uri&quot;: &quot;A String&quot;, # The URI of the repo (required).
+  },
   &quot;substitutions&quot;: { # Substitutions for Build resource. The keys must match the following regular expression: `^_[A-Z0-9_]+$`.
     &quot;a_key&quot;: &quot;A String&quot;,
   },
@@ -1068,6 +1095,10 @@
         },
         &quot;buildTriggerId&quot;: &quot;A String&quot;, # Output only. The ID of the `BuildTrigger` that triggered this build, if it was triggered automatically.
         &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the request to create the build was received.
+        &quot;failureInfo&quot;: { # A fatal problem encountered during the execution of the build. # Output only. Contains information about the build when status=FAILURE.
+          &quot;detail&quot;: &quot;A String&quot;, # Explains the failure issue in more detail using hard-coded text.
+          &quot;type&quot;: &quot;A String&quot;, # The name of the failure.
+        },
         &quot;finishTime&quot;: &quot;A String&quot;, # Output only. Time at which execution of the build was finished. The difference between finish_time and start_time is the duration of the build&#x27;s execution.
         &quot;id&quot;: &quot;A String&quot;, # Output only. Unique identifier of the build.
         &quot;images&quot;: [ # A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account&#x27;s credentials. The digests of the pushed images will be stored in the `Build` resource&#x27;s results field. If any of the images fail to be pushed, the build status is marked `FAILURE`.
@@ -1291,6 +1322,11 @@
         &quot;topic&quot;: &quot;A String&quot;, # The name of the topic from which this subscription is receiving messages. Format is `projects/{project}/topics/{topic}`.
       },
       &quot;resourceName&quot;: &quot;A String&quot;, # The `Trigger` name with format: `projects/{project}/locations/{location}/triggers/{trigger}`, where {trigger} is a unique identifier generated by the service.
+      &quot;sourceToBuild&quot;: { # GitRepoSource describes a repo and ref of a code repository. # The repo and ref of the repository from which to build. This field is used only for those triggers that do not respond to SCM events. Triggers that respond to such events build source at whatever commit caused the event. This field is currently only used by Webhook, Pub/Sub, Manual, and Cron triggers.
+        &quot;ref&quot;: &quot;A String&quot;, # The branch or tag to use. Must start with &quot;refs/&quot; (required).
+        &quot;repoType&quot;: &quot;A String&quot;, # See RepoType below.
+        &quot;uri&quot;: &quot;A String&quot;, # The URI of the repo (required).
+      },
       &quot;substitutions&quot;: { # Substitutions for Build resource. The keys must match the following regular expression: `^_[A-Z0-9_]+$`.
         &quot;a_key&quot;: &quot;A String&quot;,
       },
@@ -1333,7 +1369,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="patch">patch(projectId, triggerId, body=None, x__xgafv=None)</code>
+    <code class="details" id="patch">patch(projectId, triggerId, body, x__xgafv=None)</code>
   <pre>Updates a `BuildTrigger` by its project ID and trigger ID. This API is experimental.
 
 Args:
@@ -1378,6 +1414,10 @@
     },
     &quot;buildTriggerId&quot;: &quot;A String&quot;, # Output only. The ID of the `BuildTrigger` that triggered this build, if it was triggered automatically.
     &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the request to create the build was received.
+    &quot;failureInfo&quot;: { # A fatal problem encountered during the execution of the build. # Output only. Contains information about the build when status=FAILURE.
+      &quot;detail&quot;: &quot;A String&quot;, # Explains the failure issue in more detail using hard-coded text.
+      &quot;type&quot;: &quot;A String&quot;, # The name of the failure.
+    },
     &quot;finishTime&quot;: &quot;A String&quot;, # Output only. Time at which execution of the build was finished. The difference between finish_time and start_time is the duration of the build&#x27;s execution.
     &quot;id&quot;: &quot;A String&quot;, # Output only. Unique identifier of the build.
     &quot;images&quot;: [ # A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account&#x27;s credentials. The digests of the pushed images will be stored in the `Build` resource&#x27;s results field. If any of the images fail to be pushed, the build status is marked `FAILURE`.
@@ -1601,6 +1641,11 @@
     &quot;topic&quot;: &quot;A String&quot;, # The name of the topic from which this subscription is receiving messages. Format is `projects/{project}/topics/{topic}`.
   },
   &quot;resourceName&quot;: &quot;A String&quot;, # The `Trigger` name with format: `projects/{project}/locations/{location}/triggers/{trigger}`, where {trigger} is a unique identifier generated by the service.
+  &quot;sourceToBuild&quot;: { # GitRepoSource describes a repo and ref of a code repository. # The repo and ref of the repository from which to build. This field is used only for those triggers that do not respond to SCM events. Triggers that respond to such events build source at whatever commit caused the event. This field is currently only used by Webhook, Pub/Sub, Manual, and Cron triggers.
+    &quot;ref&quot;: &quot;A String&quot;, # The branch or tag to use. Must start with &quot;refs/&quot; (required).
+    &quot;repoType&quot;: &quot;A String&quot;, # See RepoType below.
+    &quot;uri&quot;: &quot;A String&quot;, # The URI of the repo (required).
+  },
   &quot;substitutions&quot;: { # Substitutions for Build resource. The keys must match the following regular expression: `^_[A-Z0-9_]+$`.
     &quot;a_key&quot;: &quot;A String&quot;,
   },
@@ -1669,6 +1714,10 @@
     },
     &quot;buildTriggerId&quot;: &quot;A String&quot;, # Output only. The ID of the `BuildTrigger` that triggered this build, if it was triggered automatically.
     &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the request to create the build was received.
+    &quot;failureInfo&quot;: { # A fatal problem encountered during the execution of the build. # Output only. Contains information about the build when status=FAILURE.
+      &quot;detail&quot;: &quot;A String&quot;, # Explains the failure issue in more detail using hard-coded text.
+      &quot;type&quot;: &quot;A String&quot;, # The name of the failure.
+    },
     &quot;finishTime&quot;: &quot;A String&quot;, # Output only. Time at which execution of the build was finished. The difference between finish_time and start_time is the duration of the build&#x27;s execution.
     &quot;id&quot;: &quot;A String&quot;, # Output only. Unique identifier of the build.
     &quot;images&quot;: [ # A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account&#x27;s credentials. The digests of the pushed images will be stored in the `Build` resource&#x27;s results field. If any of the images fail to be pushed, the build status is marked `FAILURE`.
@@ -1892,6 +1941,11 @@
     &quot;topic&quot;: &quot;A String&quot;, # The name of the topic from which this subscription is receiving messages. Format is `projects/{project}/topics/{topic}`.
   },
   &quot;resourceName&quot;: &quot;A String&quot;, # The `Trigger` name with format: `projects/{project}/locations/{location}/triggers/{trigger}`, where {trigger} is a unique identifier generated by the service.
+  &quot;sourceToBuild&quot;: { # GitRepoSource describes a repo and ref of a code repository. # The repo and ref of the repository from which to build. This field is used only for those triggers that do not respond to SCM events. Triggers that respond to such events build source at whatever commit caused the event. This field is currently only used by Webhook, Pub/Sub, Manual, and Cron triggers.
+    &quot;ref&quot;: &quot;A String&quot;, # The branch or tag to use. Must start with &quot;refs/&quot; (required).
+    &quot;repoType&quot;: &quot;A String&quot;, # See RepoType below.
+    &quot;uri&quot;: &quot;A String&quot;, # The URI of the repo (required).
+  },
   &quot;substitutions&quot;: { # Substitutions for Build resource. The keys must match the following regular expression: `^_[A-Z0-9_]+$`.
     &quot;a_key&quot;: &quot;A String&quot;,
   },
diff --git a/docs/dyn/cloudfunctions_v1.projects.locations.functions.html b/docs/dyn/cloudfunctions_v1.projects.locations.functions.html
index 5f0964a..3c7682a 100644
--- a/docs/dyn/cloudfunctions_v1.projects.locations.functions.html
+++ b/docs/dyn/cloudfunctions_v1.projects.locations.functions.html
@@ -156,7 +156,7 @@
   body: object, The request body.
     The object takes the form of:
 
-{ # Describes a Cloud Function that contains user computation executed in response to an event. It encapsulate function and triggers configurations.
+{ # Describes a Cloud Function that contains user computation executed in response to an event. It encapsulate function and triggers configurations. Next tag: 35
   &quot;availableMemoryMb&quot;: 42, # The amount of memory in MB available for a function. Defaults to 256MB.
   &quot;buildEnvironmentVariables&quot;: { # Build environment variables that shall be available during build time.
     &quot;a_key&quot;: &quot;A String&quot;,
@@ -192,7 +192,7 @@
   &quot;secretEnvironmentVariables&quot;: [ # Secret environment variables configuration.
     { # Configuration for a secret environment variable. It has the information necessary to fetch the secret value from secret manager and expose it as an environment variable. Secret value is not a part of the configuration. Secret values are only fetched when a new clone starts.
       &quot;key&quot;: &quot;A String&quot;, # Name of the environment variable.
-      &quot;projectId&quot;: &quot;A String&quot;, # Project whose secret manager data is being referenced. Cross project secrets are not supported.
+      &quot;projectId&quot;: &quot;A String&quot;, # Project identifier (preferrably project number but can also be the project ID) of the project that contains the secret. If not set, it will be populated with the function&#x27;s project assuming that the secret exists in the same project as of the function.
       &quot;secret&quot;: &quot;A String&quot;, # Name of the secret in secret manager (not the full resource name).
       &quot;version&quot;: &quot;A String&quot;, # Version of the secret (version number or the string &#x27;latest&#x27;). It is recommended to use a numeric version for secret environment variables as any updates to the secret value is not reflected until new clones start.
     },
@@ -200,7 +200,7 @@
   &quot;secretVolumes&quot;: [ # Secret volumes configuration.
     { # Configuration for a secret volume. It has the information necessary to fetch the secret value from secret manager and make it available as files mounted at the requested paths within the application container. Secret value is not a part of the configuration. Every filesystem read operation performs a lookup in secret manager to retrieve the secret value.
       &quot;mountPath&quot;: &quot;A String&quot;, # The path within the container to mount the secret volume. For example, setting the mount_path as `/etc/secrets` would mount the secret value files under the `/etc/secrets` directory. This directory will also be completely shadowed and unavailable to mount any other secrets. Recommended mount paths: /etc/secrets Restricted mount paths: /cloudsql, /dev/log, /pod, /proc, /var/log
-      &quot;projectId&quot;: &quot;A String&quot;, # Project whose secret manager data is being referenced. Cross project secrets are not supported.
+      &quot;projectId&quot;: &quot;A String&quot;, # Project identifier (preferrably project number but can also be the project ID) of the project that contains the secret. If not set, it will be populated with the function&#x27;s project assuming that the secret exists in the same project as of the function.
       &quot;secret&quot;: &quot;A String&quot;, # Name of the secret in secret manager (not the full resource name).
       &quot;versions&quot;: [ # List of secret versions to mount for this secret. If empty, the `latest` version of the secret will be made available in a file named after the secret under the mount point.
         { # Configuration for a single version.
@@ -355,7 +355,7 @@
 Returns:
   An object of the form:
 
-    { # Describes a Cloud Function that contains user computation executed in response to an event. It encapsulate function and triggers configurations.
+    { # Describes a Cloud Function that contains user computation executed in response to an event. It encapsulate function and triggers configurations. Next tag: 35
   &quot;availableMemoryMb&quot;: 42, # The amount of memory in MB available for a function. Defaults to 256MB.
   &quot;buildEnvironmentVariables&quot;: { # Build environment variables that shall be available during build time.
     &quot;a_key&quot;: &quot;A String&quot;,
@@ -391,7 +391,7 @@
   &quot;secretEnvironmentVariables&quot;: [ # Secret environment variables configuration.
     { # Configuration for a secret environment variable. It has the information necessary to fetch the secret value from secret manager and expose it as an environment variable. Secret value is not a part of the configuration. Secret values are only fetched when a new clone starts.
       &quot;key&quot;: &quot;A String&quot;, # Name of the environment variable.
-      &quot;projectId&quot;: &quot;A String&quot;, # Project whose secret manager data is being referenced. Cross project secrets are not supported.
+      &quot;projectId&quot;: &quot;A String&quot;, # Project identifier (preferrably project number but can also be the project ID) of the project that contains the secret. If not set, it will be populated with the function&#x27;s project assuming that the secret exists in the same project as of the function.
       &quot;secret&quot;: &quot;A String&quot;, # Name of the secret in secret manager (not the full resource name).
       &quot;version&quot;: &quot;A String&quot;, # Version of the secret (version number or the string &#x27;latest&#x27;). It is recommended to use a numeric version for secret environment variables as any updates to the secret value is not reflected until new clones start.
     },
@@ -399,7 +399,7 @@
   &quot;secretVolumes&quot;: [ # Secret volumes configuration.
     { # Configuration for a secret volume. It has the information necessary to fetch the secret value from secret manager and make it available as files mounted at the requested paths within the application container. Secret value is not a part of the configuration. Every filesystem read operation performs a lookup in secret manager to retrieve the secret value.
       &quot;mountPath&quot;: &quot;A String&quot;, # The path within the container to mount the secret volume. For example, setting the mount_path as `/etc/secrets` would mount the secret value files under the `/etc/secrets` directory. This directory will also be completely shadowed and unavailable to mount any other secrets. Recommended mount paths: /etc/secrets Restricted mount paths: /cloudsql, /dev/log, /pod, /proc, /var/log
-      &quot;projectId&quot;: &quot;A String&quot;, # Project whose secret manager data is being referenced. Cross project secrets are not supported.
+      &quot;projectId&quot;: &quot;A String&quot;, # Project identifier (preferrably project number but can also be the project ID) of the project that contains the secret. If not set, it will be populated with the function&#x27;s project assuming that the secret exists in the same project as of the function.
       &quot;secret&quot;: &quot;A String&quot;, # Name of the secret in secret manager (not the full resource name).
       &quot;versions&quot;: [ # List of secret versions to mount for this secret. If empty, the `latest` version of the secret will be made available in a file named after the secret under the mount point.
         { # Configuration for a single version.
@@ -492,7 +492,7 @@
 
     { # Response for the `ListFunctions` method.
   &quot;functions&quot;: [ # The functions that match the request.
-    { # Describes a Cloud Function that contains user computation executed in response to an event. It encapsulate function and triggers configurations.
+    { # Describes a Cloud Function that contains user computation executed in response to an event. It encapsulate function and triggers configurations. Next tag: 35
       &quot;availableMemoryMb&quot;: 42, # The amount of memory in MB available for a function. Defaults to 256MB.
       &quot;buildEnvironmentVariables&quot;: { # Build environment variables that shall be available during build time.
         &quot;a_key&quot;: &quot;A String&quot;,
@@ -528,7 +528,7 @@
       &quot;secretEnvironmentVariables&quot;: [ # Secret environment variables configuration.
         { # Configuration for a secret environment variable. It has the information necessary to fetch the secret value from secret manager and expose it as an environment variable. Secret value is not a part of the configuration. Secret values are only fetched when a new clone starts.
           &quot;key&quot;: &quot;A String&quot;, # Name of the environment variable.
-          &quot;projectId&quot;: &quot;A String&quot;, # Project whose secret manager data is being referenced. Cross project secrets are not supported.
+          &quot;projectId&quot;: &quot;A String&quot;, # Project identifier (preferrably project number but can also be the project ID) of the project that contains the secret. If not set, it will be populated with the function&#x27;s project assuming that the secret exists in the same project as of the function.
           &quot;secret&quot;: &quot;A String&quot;, # Name of the secret in secret manager (not the full resource name).
           &quot;version&quot;: &quot;A String&quot;, # Version of the secret (version number or the string &#x27;latest&#x27;). It is recommended to use a numeric version for secret environment variables as any updates to the secret value is not reflected until new clones start.
         },
@@ -536,7 +536,7 @@
       &quot;secretVolumes&quot;: [ # Secret volumes configuration.
         { # Configuration for a secret volume. It has the information necessary to fetch the secret value from secret manager and make it available as files mounted at the requested paths within the application container. Secret value is not a part of the configuration. Every filesystem read operation performs a lookup in secret manager to retrieve the secret value.
           &quot;mountPath&quot;: &quot;A String&quot;, # The path within the container to mount the secret volume. For example, setting the mount_path as `/etc/secrets` would mount the secret value files under the `/etc/secrets` directory. This directory will also be completely shadowed and unavailable to mount any other secrets. Recommended mount paths: /etc/secrets Restricted mount paths: /cloudsql, /dev/log, /pod, /proc, /var/log
-          &quot;projectId&quot;: &quot;A String&quot;, # Project whose secret manager data is being referenced. Cross project secrets are not supported.
+          &quot;projectId&quot;: &quot;A String&quot;, # Project identifier (preferrably project number but can also be the project ID) of the project that contains the secret. If not set, it will be populated with the function&#x27;s project assuming that the secret exists in the same project as of the function.
           &quot;secret&quot;: &quot;A String&quot;, # Name of the secret in secret manager (not the full resource name).
           &quot;versions&quot;: [ # List of secret versions to mount for this secret. If empty, the `latest` version of the secret will be made available in a file named after the secret under the mount point.
             { # Configuration for a single version.
@@ -592,7 +592,7 @@
   body: object, The request body.
     The object takes the form of:
 
-{ # Describes a Cloud Function that contains user computation executed in response to an event. It encapsulate function and triggers configurations.
+{ # Describes a Cloud Function that contains user computation executed in response to an event. It encapsulate function and triggers configurations. Next tag: 35
   &quot;availableMemoryMb&quot;: 42, # The amount of memory in MB available for a function. Defaults to 256MB.
   &quot;buildEnvironmentVariables&quot;: { # Build environment variables that shall be available during build time.
     &quot;a_key&quot;: &quot;A String&quot;,
@@ -628,7 +628,7 @@
   &quot;secretEnvironmentVariables&quot;: [ # Secret environment variables configuration.
     { # Configuration for a secret environment variable. It has the information necessary to fetch the secret value from secret manager and expose it as an environment variable. Secret value is not a part of the configuration. Secret values are only fetched when a new clone starts.
       &quot;key&quot;: &quot;A String&quot;, # Name of the environment variable.
-      &quot;projectId&quot;: &quot;A String&quot;, # Project whose secret manager data is being referenced. Cross project secrets are not supported.
+      &quot;projectId&quot;: &quot;A String&quot;, # Project identifier (preferrably project number but can also be the project ID) of the project that contains the secret. If not set, it will be populated with the function&#x27;s project assuming that the secret exists in the same project as of the function.
       &quot;secret&quot;: &quot;A String&quot;, # Name of the secret in secret manager (not the full resource name).
       &quot;version&quot;: &quot;A String&quot;, # Version of the secret (version number or the string &#x27;latest&#x27;). It is recommended to use a numeric version for secret environment variables as any updates to the secret value is not reflected until new clones start.
     },
@@ -636,7 +636,7 @@
   &quot;secretVolumes&quot;: [ # Secret volumes configuration.
     { # Configuration for a secret volume. It has the information necessary to fetch the secret value from secret manager and make it available as files mounted at the requested paths within the application container. Secret value is not a part of the configuration. Every filesystem read operation performs a lookup in secret manager to retrieve the secret value.
       &quot;mountPath&quot;: &quot;A String&quot;, # The path within the container to mount the secret volume. For example, setting the mount_path as `/etc/secrets` would mount the secret value files under the `/etc/secrets` directory. This directory will also be completely shadowed and unavailable to mount any other secrets. Recommended mount paths: /etc/secrets Restricted mount paths: /cloudsql, /dev/log, /pod, /proc, /var/log
-      &quot;projectId&quot;: &quot;A String&quot;, # Project whose secret manager data is being referenced. Cross project secrets are not supported.
+      &quot;projectId&quot;: &quot;A String&quot;, # Project identifier (preferrably project number but can also be the project ID) of the project that contains the secret. If not set, it will be populated with the function&#x27;s project assuming that the secret exists in the same project as of the function.
       &quot;secret&quot;: &quot;A String&quot;, # Name of the secret in secret manager (not the full resource name).
       &quot;versions&quot;: [ # List of secret versions to mount for this secret. If empty, the `latest` version of the secret will be made available in a file named after the secret under the mount point.
         { # Configuration for a single version.
diff --git a/docs/dyn/content_v2_1.accounts.html b/docs/dyn/content_v2_1.accounts.html
index 86b8370..cee61c6 100644
--- a/docs/dyn/content_v2_1.accounts.html
+++ b/docs/dyn/content_v2_1.accounts.html
@@ -126,11 +126,17 @@
   <code><a href="#listlinks_next">listlinks_next(previous_request, previous_response)</a></code></p>
 <p class="firstline">Retrieves the next page of results.</p>
 <p class="toc_element">
+  <code><a href="#requestphoneverification">requestphoneverification(merchantId, accountId, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Request verification code to start phone verification.</p>
+<p class="toc_element">
   <code><a href="#update">update(merchantId, accountId, body=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Updates a Merchant Center account. Any fields that are not provided are deleted from the resource.</p>
 <p class="toc_element">
   <code><a href="#updatelabels">updatelabels(merchantId, accountId, body=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Updates labels that are assigned to the Merchant Center account by CSS user.</p>
+<p class="toc_element">
+  <code><a href="#verifyphonenumber">verifyphonenumber(merchantId, accountId, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Validates verification code to verify phone number for the account.</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="authinfo">authinfo(x__xgafv=None)</code>
@@ -772,6 +778,36 @@
 </div>
 
 <div class="method">
+    <code class="details" id="requestphoneverification">requestphoneverification(merchantId, accountId, body=None, x__xgafv=None)</code>
+  <pre>Request verification code to start phone verification.
+
+Args:
+  merchantId: string, Required. The ID of the managing account. If this parameter is not the same as accountId, then this account must be a multi-client account and accountId must be the ID of a sub-account of this account. (required)
+  accountId: string, Required. The ID of the account. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Request message for the RequestPhoneVerification method.
+  &quot;languageCode&quot;: &quot;A String&quot;, # Language code [IETF BCP 47 syntax](https://tools.ietf.org/html/bcp47) (for example, en-US). Language code is used to provide localized `SMS` and `PHONE_CALL`. Default language used is en-US if not provided.
+  &quot;phoneNumber&quot;: &quot;A String&quot;, # Phone number to be verified.
+  &quot;phoneRegionCode&quot;: &quot;A String&quot;, # Required. Two letter country code for the phone number, for example `CA` for Canadian numbers. See the [ISO 3166-1 alpha-2](https://wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements) officially assigned codes.
+  &quot;phoneVerificationMethod&quot;: &quot;A String&quot;, # Verification method to receive verification code.
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Response message for the RequestPhoneVerification method.
+  &quot;verificationId&quot;: &quot;A String&quot;, # The verification ID to use in subsequent calls to `verifyphonenumber`.
+}</pre>
+</div>
+
+<div class="method">
     <code class="details" id="update">update(merchantId, accountId, body=None, x__xgafv=None)</code>
   <pre>Updates a Merchant Center account. Any fields that are not provided are deleted from the resource.
 
@@ -935,4 +971,33 @@
 }</pre>
 </div>
 
+<div class="method">
+    <code class="details" id="verifyphonenumber">verifyphonenumber(merchantId, accountId, body=None, x__xgafv=None)</code>
+  <pre>Validates verification code to verify phone number for the account.
+
+Args:
+  merchantId: string, Required. The ID of the managing account. If this parameter is not the same as accountId, then this account must be a multi-client account and accountId must be the ID of a sub-account of this account. (required)
+  accountId: string, Required. The ID of the account. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Request message for the VerifyPhoneNumber method.
+  &quot;phoneVerificationMethod&quot;: &quot;A String&quot;, # Verification method used to receive verification code.
+  &quot;verificationCode&quot;: &quot;A String&quot;, # The verification code that was sent to the phone number for validation.
+  &quot;verificationId&quot;: &quot;A String&quot;, # The verification ID returned by `requestphoneverification`.
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Response message for the VerifyPhoneNumber method.
+  &quot;verifiedPhoneNumber&quot;: &quot;A String&quot;, # Verified phone number if verification is successful.
+}</pre>
+</div>
+
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/content_v2_1.freelistingsprogram.html b/docs/dyn/content_v2_1.freelistingsprogram.html
new file mode 100644
index 0000000..48fe4d6
--- /dev/null
+++ b/docs/dyn/content_v2_1.freelistingsprogram.html
@@ -0,0 +1,146 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="content_v2_1.html">Content API for Shopping</a> . <a href="content_v2_1.freelistingsprogram.html">freelistingsprogram</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#close">close()</a></code></p>
+<p class="firstline">Close httplib2 connections.</p>
+<p class="toc_element">
+  <code><a href="#get">get(merchantId, x__xgafv=None)</a></code></p>
+<p class="firstline">Retrieves the status and review eligibility for the free listing program.</p>
+<p class="toc_element">
+  <code><a href="#requestreview">requestreview(merchantId, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Requests a review for Free Listings program in the provided region. Important: This method is only whitelisted for selected merchants.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="close">close()</code>
+  <pre>Close httplib2 connections.</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(merchantId, x__xgafv=None)</code>
+  <pre>Retrieves the status and review eligibility for the free listing program.
+
+Args:
+  merchantId: string, Required. The ID of the account. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Response message for GetFreeListingsProgramStatus.
+  &quot;regionStatuses&quot;: [ # Status of the program in each region. Regions with the same status and review eligibility are grouped together in `regionCodes`.
+    { # Status of program and region.
+      &quot;disapprovalDate&quot;: &quot;A String&quot;, # Date by which `eligibility_status` will go from `WARNING` to `DISAPPROVED`. It will be present when `eligibility_status` is `WARNING`. Date will be provided in ISO 8601 format i.e. YYYY-MM-DD
+      &quot;eligibilityStatus&quot;: &quot;A String&quot;, # Eligibility status of the standard free listing program.
+      &quot;enhancedEligibilityStatus&quot;: &quot;A String&quot;, # Eligibility status of the enhanced free listing program.
+      &quot;ineligibilityReason&quot;: &quot;A String&quot;, # Reason if a program in a given country is not eligible for review. Populated only if `review_eligibility_status` is `INELIGIBLE`.
+      &quot;regionCodes&quot;: [ # The two-letter [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) codes for all the regions with the same `eligibilityStatus` and `reviewEligibility`.
+        &quot;A String&quot;,
+      ],
+      &quot;reviewEligibilityStatus&quot;: &quot;A String&quot;, # If a program in a given country is eligible for review. It will be present only if eligibility status is `DISAPPROVED`.
+      &quot;reviewIssues&quot;: [ # These issues will be evaluated in review process. Fix all the issues before requesting the review.
+        &quot;A String&quot;,
+      ],
+    },
+  ],
+  &quot;state&quot;: &quot;A String&quot;, # If program is successfully onboarded for at least one region.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="requestreview">requestreview(merchantId, body=None, x__xgafv=None)</code>
+  <pre>Requests a review for Free Listings program in the provided region. Important: This method is only whitelisted for selected merchants.
+
+Args:
+  merchantId: string, Required. The ID of the account. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Request message for the RequestReviewFreeListings Program method.
+  &quot;regionCode&quot;: &quot;A String&quot;, # The code [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) of the country for which review is to be requested.
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/content_v2_1.html b/docs/dyn/content_v2_1.html
index 231fb1c..82c9b4f 100644
--- a/docs/dyn/content_v2_1.html
+++ b/docs/dyn/content_v2_1.html
@@ -120,6 +120,11 @@
 <p class="firstline">Returns the datafeedstatuses Resource.</p>
 
 <p class="toc_element">
+  <code><a href="content_v2_1.freelistingsprogram.html">freelistingsprogram()</a></code>
+</p>
+<p class="firstline">Returns the freelistingsprogram Resource.</p>
+
+<p class="toc_element">
   <code><a href="content_v2_1.liasettings.html">liasettings()</a></code>
 </p>
 <p class="firstline">Returns the liasettings Resource.</p>
@@ -225,6 +230,11 @@
 <p class="firstline">Returns the shippingsettings Resource.</p>
 
 <p class="toc_element">
+  <code><a href="content_v2_1.shoppingadsprogram.html">shoppingadsprogram()</a></code>
+</p>
+<p class="firstline">Returns the shoppingadsprogram Resource.</p>
+
+<p class="toc_element">
   <code><a href="#close">close()</a></code></p>
 <p class="firstline">Close httplib2 connections.</p>
 <p class="toc_element">
diff --git a/docs/dyn/content_v2_1.reports.html b/docs/dyn/content_v2_1.reports.html
index 769ad21..81c4f67 100644
--- a/docs/dyn/content_v2_1.reports.html
+++ b/docs/dyn/content_v2_1.reports.html
@@ -101,7 +101,7 @@
 { # Request message for the ReportService.Search method.
   &quot;pageSize&quot;: 42, # Number of ReportRows to retrieve in a single page. Defaults to the maximum of 1000. Values above 1000 are coerced to 1000.
   &quot;pageToken&quot;: &quot;A String&quot;, # Token of the page to retrieve. If not specified, the first page of results is returned. In order to request the next page of results, the value obtained from `next_page_token` in the previous response should be used.
-  &quot;query&quot;: &quot;A String&quot;, # Required. Query that defines performance metrics to retrieve and dimensions according to which the metrics are to be segmented.
+  &quot;query&quot;: &quot;A String&quot;, # Required. Query that defines performance metrics to retrieve and dimensions according to which the metrics are to be segmented. For details on how to construct your query, see the [Query Language guide](https://developers.google.com/shopping-content/guides/reports/query-language/overview).
 }
 
   x__xgafv: string, V1 error format.
@@ -140,11 +140,11 @@
       },
       &quot;segments&quot;: { # Dimensions according to which metrics are segmented in the response. Values of product dimensions, e.g., offer id, reflect the state of a product at the time of the corresponding event, e.g., impression or order. Segment fields cannot be selected in queries without also selecting at least one metric field. Values are only set for dimensions requested explicitly in the request&#x27;s search query. # Segmentation dimensions requested by the merchant in the query. Dimension values are only set for dimensions requested explicitly in the query.
         &quot;brand&quot;: &quot;A String&quot;, # Brand of the product.
-        &quot;categoryL1&quot;: &quot;A String&quot;, # Product category (1st level) in Google&#x27;s product taxonomy.
-        &quot;categoryL2&quot;: &quot;A String&quot;, # Product category (2nd level) in Google&#x27;s product taxonomy.
-        &quot;categoryL3&quot;: &quot;A String&quot;, # Product category (3rd level) in Google&#x27;s product taxonomy.
-        &quot;categoryL4&quot;: &quot;A String&quot;, # Product category (4th level) in Google&#x27;s product taxonomy.
-        &quot;categoryL5&quot;: &quot;A String&quot;, # Product category (5th level) in Google&#x27;s product taxonomy.
+        &quot;categoryL1&quot;: &quot;A String&quot;, # [Product category (1st level)](https://developers.google.com/shopping-content/guides/reports/segmentation#category_and_product_type) in Google&#x27;s product taxonomy.
+        &quot;categoryL2&quot;: &quot;A String&quot;, # [Product category (2nd level)](https://developers.google.com/shopping-content/guides/reports/segmentation#category_and_product_type) in Google&#x27;s product taxonomy.
+        &quot;categoryL3&quot;: &quot;A String&quot;, # [Product category (3rd level)](https://developers.google.com/shopping-content/guides/reports/segmentation#category_and_product_type) in Google&#x27;s product taxonomy.
+        &quot;categoryL4&quot;: &quot;A String&quot;, # [Product category (4th level)](https://developers.google.com/shopping-content/guides/reports/segmentation#category_and_product_type) in Google&#x27;s product taxonomy.
+        &quot;categoryL5&quot;: &quot;A String&quot;, # [Product category (5th level)](https://developers.google.com/shopping-content/guides/reports/segmentation#category_and_product_type) in Google&#x27;s product taxonomy.
         &quot;currencyCode&quot;: &quot;A String&quot;, # Currency in which price metrics are represented, e.g., if you select `ordered_item_sales_micros`, the returned value will be represented by this currency.
         &quot;customLabel0&quot;: &quot;A String&quot;, # Custom label 0 for custom grouping of products.
         &quot;customLabel1&quot;: &quot;A String&quot;, # Custom label 1 for custom grouping of products.
@@ -157,11 +157,11 @@
           &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
         },
         &quot;offerId&quot;: &quot;A String&quot;, # Merchant-provided id of the product.
-        &quot;productTypeL1&quot;: &quot;A String&quot;, # Product category (1st level) in merchant&#x27;s own product taxonomy.
-        &quot;productTypeL2&quot;: &quot;A String&quot;, # Product category (2nd level) in merchant&#x27;s own product taxonomy.
-        &quot;productTypeL3&quot;: &quot;A String&quot;, # Product category (3rd level) in merchant&#x27;s own product taxonomy.
-        &quot;productTypeL4&quot;: &quot;A String&quot;, # Product category (4th level) in merchant&#x27;s own product taxonomy.
-        &quot;productTypeL5&quot;: &quot;A String&quot;, # Product category (5th level) in merchant&#x27;s own product taxonomy.
+        &quot;productTypeL1&quot;: &quot;A String&quot;, # [Product type (1st level)](https://developers.google.com/shopping-content/guides/reports/segmentation#category_and_product_type) in merchant&#x27;s own product taxonomy.
+        &quot;productTypeL2&quot;: &quot;A String&quot;, # [Product type (2nd level)](https://developers.google.com/shopping-content/guides/reports/segmentation#category_and_product_type) in merchant&#x27;s own product taxonomy.
+        &quot;productTypeL3&quot;: &quot;A String&quot;, # [Product type (3rd level)](https://developers.google.com/shopping-content/guides/reports/segmentation#category_and_product_type) in merchant&#x27;s own product taxonomy.
+        &quot;productTypeL4&quot;: &quot;A String&quot;, # [Product type (4th level)](https://developers.google.com/shopping-content/guides/reports/segmentation#category_and_product_type) in merchant&#x27;s own product taxonomy.
+        &quot;productTypeL5&quot;: &quot;A String&quot;, # [Product type (5th level)](https://developers.google.com/shopping-content/guides/reports/segmentation#category_and_product_type) in merchant&#x27;s own product taxonomy.
         &quot;program&quot;: &quot;A String&quot;, # Program to which metrics apply, e.g., Free Product Listing.
         &quot;title&quot;: &quot;A String&quot;, # Title of the product.
         &quot;week&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # First day of the week (Monday) of the metrics date in the merchant timezone.
diff --git a/docs/dyn/content_v2_1.shoppingadsprogram.html b/docs/dyn/content_v2_1.shoppingadsprogram.html
new file mode 100644
index 0000000..4d7eb62
--- /dev/null
+++ b/docs/dyn/content_v2_1.shoppingadsprogram.html
@@ -0,0 +1,145 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="content_v2_1.html">Content API for Shopping</a> . <a href="content_v2_1.shoppingadsprogram.html">shoppingadsprogram</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#close">close()</a></code></p>
+<p class="firstline">Close httplib2 connections.</p>
+<p class="toc_element">
+  <code><a href="#get">get(merchantId, x__xgafv=None)</a></code></p>
+<p class="firstline">Retrieves the status and review eligibility for the Shopping Ads program.</p>
+<p class="toc_element">
+  <code><a href="#requestreview">requestreview(merchantId, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Requests a review for Shopping Ads program in the provided country.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="close">close()</code>
+  <pre>Close httplib2 connections.</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(merchantId, x__xgafv=None)</code>
+  <pre>Retrieves the status and review eligibility for the Shopping Ads program.
+
+Args:
+  merchantId: string, Required. The ID of the account. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Response message for GetShoppingAdsProgramStatus.
+  &quot;regionStatuses&quot;: [ # Status of the program in each region. Regions with the same status and review eligibility are grouped together in `regionCodes`.
+    { # Status of program and region.
+      &quot;disapprovalDate&quot;: &quot;A String&quot;, # Date by which `eligibility_status` will go from `WARNING` to `DISAPPROVED`. It will be present when `eligibility_status` is `WARNING`. Date will be provided in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format i.e. YYYY-MM-DD
+      &quot;eligibilityStatus&quot;: &quot;A String&quot;, # Eligibility status of the Shopping Ads program.
+      &quot;ineligibilityReason&quot;: &quot;A String&quot;, # Reason if a program in a given country is not eligible for review. Populated only if `review_eligibility_status` is `INELIGIBLE`.
+      &quot;regionCodes&quot;: [ # The two-letter [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) codes for all the regions with the same `eligibilityStatus` and `reviewEligibility`.
+        &quot;A String&quot;,
+      ],
+      &quot;reviewEligibilityStatus&quot;: &quot;A String&quot;, # If a program in a given country is eligible for review. It will be present only if eligibility status is `DISAPPROVED`.
+      &quot;reviewIssues&quot;: [ # These issues will be evaluated in review process. Fix all the issues before requesting the review.
+        &quot;A String&quot;,
+      ],
+    },
+  ],
+  &quot;state&quot;: &quot;A String&quot;, # If program is successfully onboarded for at least one region.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="requestreview">requestreview(merchantId, body=None, x__xgafv=None)</code>
+  <pre>Requests a review for Shopping Ads program in the provided country.
+
+Args:
+  merchantId: string, Required. The ID of the account. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Request message for the RequestReviewShoppingAds program method.
+  &quot;regionCode&quot;: &quot;A String&quot;, # The code [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) of the country for which review is to be requested.
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/datastore_v1.projects.html b/docs/dyn/datastore_v1.projects.html
index 4f71a3f..96acf9c 100644
--- a/docs/dyn/datastore_v1.projects.html
+++ b/docs/dyn/datastore_v1.projects.html
@@ -248,7 +248,40 @@
           ],
         },
         &quot;properties&quot;: { # The entity&#x27;s properties. The map&#x27;s keys are property names. A property name matching regex `__.*__` is reserved. A reserved property name is forbidden in certain documented contexts. The name must not contain more than 500 characters. The name cannot be `&quot;&quot;`.
-          &quot;a_key&quot;: # Object with schema name: Value
+          &quot;a_key&quot;: { # A message that can hold any of the supported value types and associated metadata.
+            &quot;arrayValue&quot;: { # An array value. # An array value. Cannot contain another array value. A `Value` instance that sets field `array_value` must not set fields `meaning` or `exclude_from_indexes`.
+              &quot;values&quot;: [ # Values in the array. The order of values in an array is preserved as long as all values have identical settings for &#x27;exclude_from_indexes&#x27;.
+                # Object with schema name: Value
+              ],
+            },
+            &quot;blobValue&quot;: &quot;A String&quot;, # A blob value. May have at most 1,000,000 bytes. When `exclude_from_indexes` is false, may have at most 1500 bytes. In JSON requests, must be base64-encoded.
+            &quot;booleanValue&quot;: True or False, # A boolean value.
+            &quot;doubleValue&quot;: 3.14, # A double value.
+            &quot;entityValue&quot;: # Object with schema name: Entity # An entity value. - May have no key. - May have a key with an incomplete key path. - May have a reserved/read-only key.
+            &quot;excludeFromIndexes&quot;: True or False, # If the value should be excluded from all indexes including those defined explicitly.
+            &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
+              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
+              &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
+            },
+            &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
+            &quot;keyValue&quot;: { # A unique identifier for an entity. If a key&#x27;s partition ID or any of its path kinds or names are reserved/read-only, the key is reserved/read-only. A reserved/read-only key is forbidden in certain documented contexts. # A key value.
+              &quot;partitionId&quot;: { # A partition ID identifies a grouping of entities. The grouping is always by project and namespace, however the namespace ID may be empty. A partition ID contains several dimensions: project ID and namespace ID. Partition dimensions: - May be `&quot;&quot;`. - Must be valid UTF-8 bytes. - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}` If the value of any dimension matches regex `__.*__`, the partition is reserved/read-only. A reserved/read-only partition ID is forbidden in certain documented contexts. Foreign partition IDs (in which the project ID does not match the context project ID ) are discouraged. Reads and writes of foreign partition IDs may fail if the project is not in an active state. # Entities are partitioned into subsets, currently identified by a project ID and namespace ID. Queries are scoped to a single partition.
+                &quot;namespaceId&quot;: &quot;A String&quot;, # If not empty, the ID of the namespace to which the entities belong.
+                &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project to which the entities belong.
+              },
+              &quot;path&quot;: [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a _root entity_, the second element identifies a _child_ of the root entity, the third element identifies a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element&#x27;s _ancestors_. An entity path is always fully complete: *all* of the entity&#x27;s ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. For example, the last path element of the key of `Mutation.insert` may have no identifier. A path can never be empty, and a path can have at most 100 elements.
+                { # A (kind, ID/name) pair used to construct a key path. If either name or ID is set, the element is complete. If neither is set, the element is incomplete.
+                  &quot;id&quot;: &quot;A String&quot;, # The auto-allocated ID of the entity. Never equal to zero. Values less than zero are discouraged and may not be supported in the future.
+                  &quot;kind&quot;: &quot;A String&quot;, # The kind of the entity. A kind matching regex `__.*__` is reserved/read-only. A kind must not contain more than 1500 bytes when UTF-8 encoded. Cannot be `&quot;&quot;`.
+                  &quot;name&quot;: &quot;A String&quot;, # The name of the entity. A name matching regex `__.*__` is reserved/read-only. A name must not be more than 1500 bytes when UTF-8 encoded. Cannot be `&quot;&quot;`.
+                },
+              ],
+            },
+            &quot;meaning&quot;: 42, # The `meaning` field should only be populated for backwards compatibility.
+            &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
+            &quot;stringValue&quot;: &quot;A String&quot;, # A UTF-8 encoded string value. When `exclude_from_indexes` is false (it is indexed) , may have at most 1500 bytes. Otherwise, may be set to at most 1,000,000 bytes.
+            &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. When stored in the Datastore, precise only to microseconds; any additional precision is rounded down.
+          },
         },
       },
       &quot;update&quot;: { # A Datastore data object. An entity is limited to 1 megabyte when stored. That _roughly_ corresponds to a limit of 1 megabyte for the serialized form of this message. # The entity to update. The entity must already exist. Must have a complete key path.
@@ -266,7 +299,40 @@
           ],
         },
         &quot;properties&quot;: { # The entity&#x27;s properties. The map&#x27;s keys are property names. A property name matching regex `__.*__` is reserved. A reserved property name is forbidden in certain documented contexts. The name must not contain more than 500 characters. The name cannot be `&quot;&quot;`.
-          &quot;a_key&quot;: # Object with schema name: Value
+          &quot;a_key&quot;: { # A message that can hold any of the supported value types and associated metadata.
+            &quot;arrayValue&quot;: { # An array value. # An array value. Cannot contain another array value. A `Value` instance that sets field `array_value` must not set fields `meaning` or `exclude_from_indexes`.
+              &quot;values&quot;: [ # Values in the array. The order of values in an array is preserved as long as all values have identical settings for &#x27;exclude_from_indexes&#x27;.
+                # Object with schema name: Value
+              ],
+            },
+            &quot;blobValue&quot;: &quot;A String&quot;, # A blob value. May have at most 1,000,000 bytes. When `exclude_from_indexes` is false, may have at most 1500 bytes. In JSON requests, must be base64-encoded.
+            &quot;booleanValue&quot;: True or False, # A boolean value.
+            &quot;doubleValue&quot;: 3.14, # A double value.
+            &quot;entityValue&quot;: # Object with schema name: Entity # An entity value. - May have no key. - May have a key with an incomplete key path. - May have a reserved/read-only key.
+            &quot;excludeFromIndexes&quot;: True or False, # If the value should be excluded from all indexes including those defined explicitly.
+            &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
+              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
+              &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
+            },
+            &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
+            &quot;keyValue&quot;: { # A unique identifier for an entity. If a key&#x27;s partition ID or any of its path kinds or names are reserved/read-only, the key is reserved/read-only. A reserved/read-only key is forbidden in certain documented contexts. # A key value.
+              &quot;partitionId&quot;: { # A partition ID identifies a grouping of entities. The grouping is always by project and namespace, however the namespace ID may be empty. A partition ID contains several dimensions: project ID and namespace ID. Partition dimensions: - May be `&quot;&quot;`. - Must be valid UTF-8 bytes. - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}` If the value of any dimension matches regex `__.*__`, the partition is reserved/read-only. A reserved/read-only partition ID is forbidden in certain documented contexts. Foreign partition IDs (in which the project ID does not match the context project ID ) are discouraged. Reads and writes of foreign partition IDs may fail if the project is not in an active state. # Entities are partitioned into subsets, currently identified by a project ID and namespace ID. Queries are scoped to a single partition.
+                &quot;namespaceId&quot;: &quot;A String&quot;, # If not empty, the ID of the namespace to which the entities belong.
+                &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project to which the entities belong.
+              },
+              &quot;path&quot;: [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a _root entity_, the second element identifies a _child_ of the root entity, the third element identifies a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element&#x27;s _ancestors_. An entity path is always fully complete: *all* of the entity&#x27;s ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. For example, the last path element of the key of `Mutation.insert` may have no identifier. A path can never be empty, and a path can have at most 100 elements.
+                { # A (kind, ID/name) pair used to construct a key path. If either name or ID is set, the element is complete. If neither is set, the element is incomplete.
+                  &quot;id&quot;: &quot;A String&quot;, # The auto-allocated ID of the entity. Never equal to zero. Values less than zero are discouraged and may not be supported in the future.
+                  &quot;kind&quot;: &quot;A String&quot;, # The kind of the entity. A kind matching regex `__.*__` is reserved/read-only. A kind must not contain more than 1500 bytes when UTF-8 encoded. Cannot be `&quot;&quot;`.
+                  &quot;name&quot;: &quot;A String&quot;, # The name of the entity. A name matching regex `__.*__` is reserved/read-only. A name must not be more than 1500 bytes when UTF-8 encoded. Cannot be `&quot;&quot;`.
+                },
+              ],
+            },
+            &quot;meaning&quot;: 42, # The `meaning` field should only be populated for backwards compatibility.
+            &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
+            &quot;stringValue&quot;: &quot;A String&quot;, # A UTF-8 encoded string value. When `exclude_from_indexes` is false (it is indexed) , may have at most 1500 bytes. Otherwise, may be set to at most 1,000,000 bytes.
+            &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. When stored in the Datastore, precise only to microseconds; any additional precision is rounded down.
+          },
         },
       },
       &quot;upsert&quot;: { # A Datastore data object. An entity is limited to 1 megabyte when stored. That _roughly_ corresponds to a limit of 1 megabyte for the serialized form of this message. # The entity to upsert. The entity may or may not already exist. The entity key&#x27;s final path element may be incomplete.
@@ -284,7 +350,40 @@
           ],
         },
         &quot;properties&quot;: { # The entity&#x27;s properties. The map&#x27;s keys are property names. A property name matching regex `__.*__` is reserved. A reserved property name is forbidden in certain documented contexts. The name must not contain more than 500 characters. The name cannot be `&quot;&quot;`.
-          &quot;a_key&quot;: # Object with schema name: Value
+          &quot;a_key&quot;: { # A message that can hold any of the supported value types and associated metadata.
+            &quot;arrayValue&quot;: { # An array value. # An array value. Cannot contain another array value. A `Value` instance that sets field `array_value` must not set fields `meaning` or `exclude_from_indexes`.
+              &quot;values&quot;: [ # Values in the array. The order of values in an array is preserved as long as all values have identical settings for &#x27;exclude_from_indexes&#x27;.
+                # Object with schema name: Value
+              ],
+            },
+            &quot;blobValue&quot;: &quot;A String&quot;, # A blob value. May have at most 1,000,000 bytes. When `exclude_from_indexes` is false, may have at most 1500 bytes. In JSON requests, must be base64-encoded.
+            &quot;booleanValue&quot;: True or False, # A boolean value.
+            &quot;doubleValue&quot;: 3.14, # A double value.
+            &quot;entityValue&quot;: # Object with schema name: Entity # An entity value. - May have no key. - May have a key with an incomplete key path. - May have a reserved/read-only key.
+            &quot;excludeFromIndexes&quot;: True or False, # If the value should be excluded from all indexes including those defined explicitly.
+            &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
+              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
+              &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
+            },
+            &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
+            &quot;keyValue&quot;: { # A unique identifier for an entity. If a key&#x27;s partition ID or any of its path kinds or names are reserved/read-only, the key is reserved/read-only. A reserved/read-only key is forbidden in certain documented contexts. # A key value.
+              &quot;partitionId&quot;: { # A partition ID identifies a grouping of entities. The grouping is always by project and namespace, however the namespace ID may be empty. A partition ID contains several dimensions: project ID and namespace ID. Partition dimensions: - May be `&quot;&quot;`. - Must be valid UTF-8 bytes. - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}` If the value of any dimension matches regex `__.*__`, the partition is reserved/read-only. A reserved/read-only partition ID is forbidden in certain documented contexts. Foreign partition IDs (in which the project ID does not match the context project ID ) are discouraged. Reads and writes of foreign partition IDs may fail if the project is not in an active state. # Entities are partitioned into subsets, currently identified by a project ID and namespace ID. Queries are scoped to a single partition.
+                &quot;namespaceId&quot;: &quot;A String&quot;, # If not empty, the ID of the namespace to which the entities belong.
+                &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project to which the entities belong.
+              },
+              &quot;path&quot;: [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a _root entity_, the second element identifies a _child_ of the root entity, the third element identifies a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element&#x27;s _ancestors_. An entity path is always fully complete: *all* of the entity&#x27;s ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. For example, the last path element of the key of `Mutation.insert` may have no identifier. A path can never be empty, and a path can have at most 100 elements.
+                { # A (kind, ID/name) pair used to construct a key path. If either name or ID is set, the element is complete. If neither is set, the element is incomplete.
+                  &quot;id&quot;: &quot;A String&quot;, # The auto-allocated ID of the entity. Never equal to zero. Values less than zero are discouraged and may not be supported in the future.
+                  &quot;kind&quot;: &quot;A String&quot;, # The kind of the entity. A kind matching regex `__.*__` is reserved/read-only. A kind must not contain more than 1500 bytes when UTF-8 encoded. Cannot be `&quot;&quot;`.
+                  &quot;name&quot;: &quot;A String&quot;, # The name of the entity. A name matching regex `__.*__` is reserved/read-only. A name must not be more than 1500 bytes when UTF-8 encoded. Cannot be `&quot;&quot;`.
+                },
+              ],
+            },
+            &quot;meaning&quot;: 42, # The `meaning` field should only be populated for backwards compatibility.
+            &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
+            &quot;stringValue&quot;: &quot;A String&quot;, # A UTF-8 encoded string value. When `exclude_from_indexes` is false (it is indexed) , may have at most 1500 bytes. Otherwise, may be set to at most 1,000,000 bytes.
+            &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. When stored in the Datastore, precise only to microseconds; any additional precision is rounded down.
+          },
         },
       },
     },
@@ -503,7 +602,40 @@
           ],
         },
         &quot;properties&quot;: { # The entity&#x27;s properties. The map&#x27;s keys are property names. A property name matching regex `__.*__` is reserved. A reserved property name is forbidden in certain documented contexts. The name must not contain more than 500 characters. The name cannot be `&quot;&quot;`.
-          &quot;a_key&quot;: # Object with schema name: Value
+          &quot;a_key&quot;: { # A message that can hold any of the supported value types and associated metadata.
+            &quot;arrayValue&quot;: { # An array value. # An array value. Cannot contain another array value. A `Value` instance that sets field `array_value` must not set fields `meaning` or `exclude_from_indexes`.
+              &quot;values&quot;: [ # Values in the array. The order of values in an array is preserved as long as all values have identical settings for &#x27;exclude_from_indexes&#x27;.
+                # Object with schema name: Value
+              ],
+            },
+            &quot;blobValue&quot;: &quot;A String&quot;, # A blob value. May have at most 1,000,000 bytes. When `exclude_from_indexes` is false, may have at most 1500 bytes. In JSON requests, must be base64-encoded.
+            &quot;booleanValue&quot;: True or False, # A boolean value.
+            &quot;doubleValue&quot;: 3.14, # A double value.
+            &quot;entityValue&quot;: # Object with schema name: Entity # An entity value. - May have no key. - May have a key with an incomplete key path. - May have a reserved/read-only key.
+            &quot;excludeFromIndexes&quot;: True or False, # If the value should be excluded from all indexes including those defined explicitly.
+            &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
+              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
+              &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
+            },
+            &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
+            &quot;keyValue&quot;: { # A unique identifier for an entity. If a key&#x27;s partition ID or any of its path kinds or names are reserved/read-only, the key is reserved/read-only. A reserved/read-only key is forbidden in certain documented contexts. # A key value.
+              &quot;partitionId&quot;: { # A partition ID identifies a grouping of entities. The grouping is always by project and namespace, however the namespace ID may be empty. A partition ID contains several dimensions: project ID and namespace ID. Partition dimensions: - May be `&quot;&quot;`. - Must be valid UTF-8 bytes. - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}` If the value of any dimension matches regex `__.*__`, the partition is reserved/read-only. A reserved/read-only partition ID is forbidden in certain documented contexts. Foreign partition IDs (in which the project ID does not match the context project ID ) are discouraged. Reads and writes of foreign partition IDs may fail if the project is not in an active state. # Entities are partitioned into subsets, currently identified by a project ID and namespace ID. Queries are scoped to a single partition.
+                &quot;namespaceId&quot;: &quot;A String&quot;, # If not empty, the ID of the namespace to which the entities belong.
+                &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project to which the entities belong.
+              },
+              &quot;path&quot;: [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a _root entity_, the second element identifies a _child_ of the root entity, the third element identifies a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element&#x27;s _ancestors_. An entity path is always fully complete: *all* of the entity&#x27;s ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. For example, the last path element of the key of `Mutation.insert` may have no identifier. A path can never be empty, and a path can have at most 100 elements.
+                { # A (kind, ID/name) pair used to construct a key path. If either name or ID is set, the element is complete. If neither is set, the element is incomplete.
+                  &quot;id&quot;: &quot;A String&quot;, # The auto-allocated ID of the entity. Never equal to zero. Values less than zero are discouraged and may not be supported in the future.
+                  &quot;kind&quot;: &quot;A String&quot;, # The kind of the entity. A kind matching regex `__.*__` is reserved/read-only. A kind must not contain more than 1500 bytes when UTF-8 encoded. Cannot be `&quot;&quot;`.
+                  &quot;name&quot;: &quot;A String&quot;, # The name of the entity. A name matching regex `__.*__` is reserved/read-only. A name must not be more than 1500 bytes when UTF-8 encoded. Cannot be `&quot;&quot;`.
+                },
+              ],
+            },
+            &quot;meaning&quot;: 42, # The `meaning` field should only be populated for backwards compatibility.
+            &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
+            &quot;stringValue&quot;: &quot;A String&quot;, # A UTF-8 encoded string value. When `exclude_from_indexes` is false (it is indexed) , may have at most 1500 bytes. Otherwise, may be set to at most 1,000,000 bytes.
+            &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. When stored in the Datastore, precise only to microseconds; any additional precision is rounded down.
+          },
         },
       },
       &quot;version&quot;: &quot;A String&quot;, # The version of the entity, a strictly positive number that monotonically increases with changes to the entity. This field is set for `FULL` entity results. For missing entities in `LookupResponse`, this is the version of the snapshot that was used to look up the entity, and it is always set except for eventually consistent reads.
@@ -527,7 +659,40 @@
           ],
         },
         &quot;properties&quot;: { # The entity&#x27;s properties. The map&#x27;s keys are property names. A property name matching regex `__.*__` is reserved. A reserved property name is forbidden in certain documented contexts. The name must not contain more than 500 characters. The name cannot be `&quot;&quot;`.
-          &quot;a_key&quot;: # Object with schema name: Value
+          &quot;a_key&quot;: { # A message that can hold any of the supported value types and associated metadata.
+            &quot;arrayValue&quot;: { # An array value. # An array value. Cannot contain another array value. A `Value` instance that sets field `array_value` must not set fields `meaning` or `exclude_from_indexes`.
+              &quot;values&quot;: [ # Values in the array. The order of values in an array is preserved as long as all values have identical settings for &#x27;exclude_from_indexes&#x27;.
+                # Object with schema name: Value
+              ],
+            },
+            &quot;blobValue&quot;: &quot;A String&quot;, # A blob value. May have at most 1,000,000 bytes. When `exclude_from_indexes` is false, may have at most 1500 bytes. In JSON requests, must be base64-encoded.
+            &quot;booleanValue&quot;: True or False, # A boolean value.
+            &quot;doubleValue&quot;: 3.14, # A double value.
+            &quot;entityValue&quot;: # Object with schema name: Entity # An entity value. - May have no key. - May have a key with an incomplete key path. - May have a reserved/read-only key.
+            &quot;excludeFromIndexes&quot;: True or False, # If the value should be excluded from all indexes including those defined explicitly.
+            &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
+              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
+              &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
+            },
+            &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
+            &quot;keyValue&quot;: { # A unique identifier for an entity. If a key&#x27;s partition ID or any of its path kinds or names are reserved/read-only, the key is reserved/read-only. A reserved/read-only key is forbidden in certain documented contexts. # A key value.
+              &quot;partitionId&quot;: { # A partition ID identifies a grouping of entities. The grouping is always by project and namespace, however the namespace ID may be empty. A partition ID contains several dimensions: project ID and namespace ID. Partition dimensions: - May be `&quot;&quot;`. - Must be valid UTF-8 bytes. - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}` If the value of any dimension matches regex `__.*__`, the partition is reserved/read-only. A reserved/read-only partition ID is forbidden in certain documented contexts. Foreign partition IDs (in which the project ID does not match the context project ID ) are discouraged. Reads and writes of foreign partition IDs may fail if the project is not in an active state. # Entities are partitioned into subsets, currently identified by a project ID and namespace ID. Queries are scoped to a single partition.
+                &quot;namespaceId&quot;: &quot;A String&quot;, # If not empty, the ID of the namespace to which the entities belong.
+                &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project to which the entities belong.
+              },
+              &quot;path&quot;: [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a _root entity_, the second element identifies a _child_ of the root entity, the third element identifies a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element&#x27;s _ancestors_. An entity path is always fully complete: *all* of the entity&#x27;s ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. For example, the last path element of the key of `Mutation.insert` may have no identifier. A path can never be empty, and a path can have at most 100 elements.
+                { # A (kind, ID/name) pair used to construct a key path. If either name or ID is set, the element is complete. If neither is set, the element is incomplete.
+                  &quot;id&quot;: &quot;A String&quot;, # The auto-allocated ID of the entity. Never equal to zero. Values less than zero are discouraged and may not be supported in the future.
+                  &quot;kind&quot;: &quot;A String&quot;, # The kind of the entity. A kind matching regex `__.*__` is reserved/read-only. A kind must not contain more than 1500 bytes when UTF-8 encoded. Cannot be `&quot;&quot;`.
+                  &quot;name&quot;: &quot;A String&quot;, # The name of the entity. A name matching regex `__.*__` is reserved/read-only. A name must not be more than 1500 bytes when UTF-8 encoded. Cannot be `&quot;&quot;`.
+                },
+              ],
+            },
+            &quot;meaning&quot;: 42, # The `meaning` field should only be populated for backwards compatibility.
+            &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
+            &quot;stringValue&quot;: &quot;A String&quot;, # A UTF-8 encoded string value. When `exclude_from_indexes` is false (it is indexed) , may have at most 1500 bytes. Otherwise, may be set to at most 1,000,000 bytes.
+            &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. When stored in the Datastore, precise only to microseconds; any additional precision is rounded down.
+          },
         },
       },
       &quot;version&quot;: &quot;A String&quot;, # The version of the entity, a strictly positive number that monotonically increases with changes to the entity. This field is set for `FULL` entity results. For missing entities in `LookupResponse`, this is the version of the snapshot that was used to look up the entity, and it is always set except for eventually consistent reads.
@@ -625,24 +790,7 @@
           &quot;blobValue&quot;: &quot;A String&quot;, # A blob value. May have at most 1,000,000 bytes. When `exclude_from_indexes` is false, may have at most 1500 bytes. In JSON requests, must be base64-encoded.
           &quot;booleanValue&quot;: True or False, # A boolean value.
           &quot;doubleValue&quot;: 3.14, # A double value.
-          &quot;entityValue&quot;: { # A Datastore data object. An entity is limited to 1 megabyte when stored. That _roughly_ corresponds to a limit of 1 megabyte for the serialized form of this message. # An entity value. - May have no key. - May have a key with an incomplete key path. - May have a reserved/read-only key.
-            &quot;key&quot;: { # A unique identifier for an entity. If a key&#x27;s partition ID or any of its path kinds or names are reserved/read-only, the key is reserved/read-only. A reserved/read-only key is forbidden in certain documented contexts. # The entity&#x27;s key. An entity must have a key, unless otherwise documented (for example, an entity in `Value.entity_value` may have no key). An entity&#x27;s kind is its key path&#x27;s last element&#x27;s kind, or null if it has no key.
-              &quot;partitionId&quot;: { # A partition ID identifies a grouping of entities. The grouping is always by project and namespace, however the namespace ID may be empty. A partition ID contains several dimensions: project ID and namespace ID. Partition dimensions: - May be `&quot;&quot;`. - Must be valid UTF-8 bytes. - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}` If the value of any dimension matches regex `__.*__`, the partition is reserved/read-only. A reserved/read-only partition ID is forbidden in certain documented contexts. Foreign partition IDs (in which the project ID does not match the context project ID ) are discouraged. Reads and writes of foreign partition IDs may fail if the project is not in an active state. # Entities are partitioned into subsets, currently identified by a project ID and namespace ID. Queries are scoped to a single partition.
-                &quot;namespaceId&quot;: &quot;A String&quot;, # If not empty, the ID of the namespace to which the entities belong.
-                &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project to which the entities belong.
-              },
-              &quot;path&quot;: [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a _root entity_, the second element identifies a _child_ of the root entity, the third element identifies a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element&#x27;s _ancestors_. An entity path is always fully complete: *all* of the entity&#x27;s ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. For example, the last path element of the key of `Mutation.insert` may have no identifier. A path can never be empty, and a path can have at most 100 elements.
-                { # A (kind, ID/name) pair used to construct a key path. If either name or ID is set, the element is complete. If neither is set, the element is incomplete.
-                  &quot;id&quot;: &quot;A String&quot;, # The auto-allocated ID of the entity. Never equal to zero. Values less than zero are discouraged and may not be supported in the future.
-                  &quot;kind&quot;: &quot;A String&quot;, # The kind of the entity. A kind matching regex `__.*__` is reserved/read-only. A kind must not contain more than 1500 bytes when UTF-8 encoded. Cannot be `&quot;&quot;`.
-                  &quot;name&quot;: &quot;A String&quot;, # The name of the entity. A name matching regex `__.*__` is reserved/read-only. A name must not be more than 1500 bytes when UTF-8 encoded. Cannot be `&quot;&quot;`.
-                },
-              ],
-            },
-            &quot;properties&quot;: { # The entity&#x27;s properties. The map&#x27;s keys are property names. A property name matching regex `__.*__` is reserved. A reserved property name is forbidden in certain documented contexts. The name must not contain more than 500 characters. The name cannot be `&quot;&quot;`.
-              &quot;a_key&quot;: # Object with schema name: Value
-            },
-          },
+          &quot;entityValue&quot;: # Object with schema name: Entity # An entity value. - May have no key. - May have a key with an incomplete key path. - May have a reserved/read-only key.
           &quot;excludeFromIndexes&quot;: True or False, # If the value should be excluded from all indexes including those defined explicitly.
           &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
             &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
@@ -681,24 +829,7 @@
           &quot;blobValue&quot;: &quot;A String&quot;, # A blob value. May have at most 1,000,000 bytes. When `exclude_from_indexes` is false, may have at most 1500 bytes. In JSON requests, must be base64-encoded.
           &quot;booleanValue&quot;: True or False, # A boolean value.
           &quot;doubleValue&quot;: 3.14, # A double value.
-          &quot;entityValue&quot;: { # A Datastore data object. An entity is limited to 1 megabyte when stored. That _roughly_ corresponds to a limit of 1 megabyte for the serialized form of this message. # An entity value. - May have no key. - May have a key with an incomplete key path. - May have a reserved/read-only key.
-            &quot;key&quot;: { # A unique identifier for an entity. If a key&#x27;s partition ID or any of its path kinds or names are reserved/read-only, the key is reserved/read-only. A reserved/read-only key is forbidden in certain documented contexts. # The entity&#x27;s key. An entity must have a key, unless otherwise documented (for example, an entity in `Value.entity_value` may have no key). An entity&#x27;s kind is its key path&#x27;s last element&#x27;s kind, or null if it has no key.
-              &quot;partitionId&quot;: { # A partition ID identifies a grouping of entities. The grouping is always by project and namespace, however the namespace ID may be empty. A partition ID contains several dimensions: project ID and namespace ID. Partition dimensions: - May be `&quot;&quot;`. - Must be valid UTF-8 bytes. - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}` If the value of any dimension matches regex `__.*__`, the partition is reserved/read-only. A reserved/read-only partition ID is forbidden in certain documented contexts. Foreign partition IDs (in which the project ID does not match the context project ID ) are discouraged. Reads and writes of foreign partition IDs may fail if the project is not in an active state. # Entities are partitioned into subsets, currently identified by a project ID and namespace ID. Queries are scoped to a single partition.
-                &quot;namespaceId&quot;: &quot;A String&quot;, # If not empty, the ID of the namespace to which the entities belong.
-                &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project to which the entities belong.
-              },
-              &quot;path&quot;: [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a _root entity_, the second element identifies a _child_ of the root entity, the third element identifies a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element&#x27;s _ancestors_. An entity path is always fully complete: *all* of the entity&#x27;s ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. For example, the last path element of the key of `Mutation.insert` may have no identifier. A path can never be empty, and a path can have at most 100 elements.
-                { # A (kind, ID/name) pair used to construct a key path. If either name or ID is set, the element is complete. If neither is set, the element is incomplete.
-                  &quot;id&quot;: &quot;A String&quot;, # The auto-allocated ID of the entity. Never equal to zero. Values less than zero are discouraged and may not be supported in the future.
-                  &quot;kind&quot;: &quot;A String&quot;, # The kind of the entity. A kind matching regex `__.*__` is reserved/read-only. A kind must not contain more than 1500 bytes when UTF-8 encoded. Cannot be `&quot;&quot;`.
-                  &quot;name&quot;: &quot;A String&quot;, # The name of the entity. A name matching regex `__.*__` is reserved/read-only. A name must not be more than 1500 bytes when UTF-8 encoded. Cannot be `&quot;&quot;`.
-                },
-              ],
-            },
-            &quot;properties&quot;: { # The entity&#x27;s properties. The map&#x27;s keys are property names. A property name matching regex `__.*__` is reserved. A reserved property name is forbidden in certain documented contexts. The name must not contain more than 500 characters. The name cannot be `&quot;&quot;`.
-              &quot;a_key&quot;: # Object with schema name: Value
-            },
-          },
+          &quot;entityValue&quot;: # Object with schema name: Entity # An entity value. - May have no key. - May have a key with an incomplete key path. - May have a reserved/read-only key.
           &quot;excludeFromIndexes&quot;: True or False, # If the value should be excluded from all indexes including those defined explicitly.
           &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
             &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
@@ -759,24 +890,7 @@
           &quot;blobValue&quot;: &quot;A String&quot;, # A blob value. May have at most 1,000,000 bytes. When `exclude_from_indexes` is false, may have at most 1500 bytes. In JSON requests, must be base64-encoded.
           &quot;booleanValue&quot;: True or False, # A boolean value.
           &quot;doubleValue&quot;: 3.14, # A double value.
-          &quot;entityValue&quot;: { # A Datastore data object. An entity is limited to 1 megabyte when stored. That _roughly_ corresponds to a limit of 1 megabyte for the serialized form of this message. # An entity value. - May have no key. - May have a key with an incomplete key path. - May have a reserved/read-only key.
-            &quot;key&quot;: { # A unique identifier for an entity. If a key&#x27;s partition ID or any of its path kinds or names are reserved/read-only, the key is reserved/read-only. A reserved/read-only key is forbidden in certain documented contexts. # The entity&#x27;s key. An entity must have a key, unless otherwise documented (for example, an entity in `Value.entity_value` may have no key). An entity&#x27;s kind is its key path&#x27;s last element&#x27;s kind, or null if it has no key.
-              &quot;partitionId&quot;: { # A partition ID identifies a grouping of entities. The grouping is always by project and namespace, however the namespace ID may be empty. A partition ID contains several dimensions: project ID and namespace ID. Partition dimensions: - May be `&quot;&quot;`. - Must be valid UTF-8 bytes. - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}` If the value of any dimension matches regex `__.*__`, the partition is reserved/read-only. A reserved/read-only partition ID is forbidden in certain documented contexts. Foreign partition IDs (in which the project ID does not match the context project ID ) are discouraged. Reads and writes of foreign partition IDs may fail if the project is not in an active state. # Entities are partitioned into subsets, currently identified by a project ID and namespace ID. Queries are scoped to a single partition.
-                &quot;namespaceId&quot;: &quot;A String&quot;, # If not empty, the ID of the namespace to which the entities belong.
-                &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project to which the entities belong.
-              },
-              &quot;path&quot;: [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a _root entity_, the second element identifies a _child_ of the root entity, the third element identifies a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element&#x27;s _ancestors_. An entity path is always fully complete: *all* of the entity&#x27;s ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. For example, the last path element of the key of `Mutation.insert` may have no identifier. A path can never be empty, and a path can have at most 100 elements.
-                { # A (kind, ID/name) pair used to construct a key path. If either name or ID is set, the element is complete. If neither is set, the element is incomplete.
-                  &quot;id&quot;: &quot;A String&quot;, # The auto-allocated ID of the entity. Never equal to zero. Values less than zero are discouraged and may not be supported in the future.
-                  &quot;kind&quot;: &quot;A String&quot;, # The kind of the entity. A kind matching regex `__.*__` is reserved/read-only. A kind must not contain more than 1500 bytes when UTF-8 encoded. Cannot be `&quot;&quot;`.
-                  &quot;name&quot;: &quot;A String&quot;, # The name of the entity. A name matching regex `__.*__` is reserved/read-only. A name must not be more than 1500 bytes when UTF-8 encoded. Cannot be `&quot;&quot;`.
-                },
-              ],
-            },
-            &quot;properties&quot;: { # The entity&#x27;s properties. The map&#x27;s keys are property names. A property name matching regex `__.*__` is reserved. A reserved property name is forbidden in certain documented contexts. The name must not contain more than 500 characters. The name cannot be `&quot;&quot;`.
-              &quot;a_key&quot;: # Object with schema name: Value
-            },
-          },
+          &quot;entityValue&quot;: # Object with schema name: Entity # An entity value. - May have no key. - May have a key with an incomplete key path. - May have a reserved/read-only key.
           &quot;excludeFromIndexes&quot;: True or False, # If the value should be excluded from all indexes including those defined explicitly.
           &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
             &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
@@ -863,7 +977,40 @@
             ],
           },
           &quot;properties&quot;: { # The entity&#x27;s properties. The map&#x27;s keys are property names. A property name matching regex `__.*__` is reserved. A reserved property name is forbidden in certain documented contexts. The name must not contain more than 500 characters. The name cannot be `&quot;&quot;`.
-            &quot;a_key&quot;: # Object with schema name: Value
+            &quot;a_key&quot;: { # A message that can hold any of the supported value types and associated metadata.
+              &quot;arrayValue&quot;: { # An array value. # An array value. Cannot contain another array value. A `Value` instance that sets field `array_value` must not set fields `meaning` or `exclude_from_indexes`.
+                &quot;values&quot;: [ # Values in the array. The order of values in an array is preserved as long as all values have identical settings for &#x27;exclude_from_indexes&#x27;.
+                  # Object with schema name: Value
+                ],
+              },
+              &quot;blobValue&quot;: &quot;A String&quot;, # A blob value. May have at most 1,000,000 bytes. When `exclude_from_indexes` is false, may have at most 1500 bytes. In JSON requests, must be base64-encoded.
+              &quot;booleanValue&quot;: True or False, # A boolean value.
+              &quot;doubleValue&quot;: 3.14, # A double value.
+              &quot;entityValue&quot;: # Object with schema name: Entity # An entity value. - May have no key. - May have a key with an incomplete key path. - May have a reserved/read-only key.
+              &quot;excludeFromIndexes&quot;: True or False, # If the value should be excluded from all indexes including those defined explicitly.
+              &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
+                &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
+                &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
+              },
+              &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
+              &quot;keyValue&quot;: { # A unique identifier for an entity. If a key&#x27;s partition ID or any of its path kinds or names are reserved/read-only, the key is reserved/read-only. A reserved/read-only key is forbidden in certain documented contexts. # A key value.
+                &quot;partitionId&quot;: { # A partition ID identifies a grouping of entities. The grouping is always by project and namespace, however the namespace ID may be empty. A partition ID contains several dimensions: project ID and namespace ID. Partition dimensions: - May be `&quot;&quot;`. - Must be valid UTF-8 bytes. - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}` If the value of any dimension matches regex `__.*__`, the partition is reserved/read-only. A reserved/read-only partition ID is forbidden in certain documented contexts. Foreign partition IDs (in which the project ID does not match the context project ID ) are discouraged. Reads and writes of foreign partition IDs may fail if the project is not in an active state. # Entities are partitioned into subsets, currently identified by a project ID and namespace ID. Queries are scoped to a single partition.
+                  &quot;namespaceId&quot;: &quot;A String&quot;, # If not empty, the ID of the namespace to which the entities belong.
+                  &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project to which the entities belong.
+                },
+                &quot;path&quot;: [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a _root entity_, the second element identifies a _child_ of the root entity, the third element identifies a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element&#x27;s _ancestors_. An entity path is always fully complete: *all* of the entity&#x27;s ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. For example, the last path element of the key of `Mutation.insert` may have no identifier. A path can never be empty, and a path can have at most 100 elements.
+                  { # A (kind, ID/name) pair used to construct a key path. If either name or ID is set, the element is complete. If neither is set, the element is incomplete.
+                    &quot;id&quot;: &quot;A String&quot;, # The auto-allocated ID of the entity. Never equal to zero. Values less than zero are discouraged and may not be supported in the future.
+                    &quot;kind&quot;: &quot;A String&quot;, # The kind of the entity. A kind matching regex `__.*__` is reserved/read-only. A kind must not contain more than 1500 bytes when UTF-8 encoded. Cannot be `&quot;&quot;`.
+                    &quot;name&quot;: &quot;A String&quot;, # The name of the entity. A name matching regex `__.*__` is reserved/read-only. A name must not be more than 1500 bytes when UTF-8 encoded. Cannot be `&quot;&quot;`.
+                  },
+                ],
+              },
+              &quot;meaning&quot;: 42, # The `meaning` field should only be populated for backwards compatibility.
+              &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
+              &quot;stringValue&quot;: &quot;A String&quot;, # A UTF-8 encoded string value. When `exclude_from_indexes` is false (it is indexed) , may have at most 1500 bytes. Otherwise, may be set to at most 1,000,000 bytes.
+              &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. When stored in the Datastore, precise only to microseconds; any additional precision is rounded down.
+            },
           },
         },
         &quot;version&quot;: &quot;A String&quot;, # The version of the entity, a strictly positive number that monotonically increases with changes to the entity. This field is set for `FULL` entity results. For missing entities in `LookupResponse`, this is the version of the snapshot that was used to look up the entity, and it is always set except for eventually consistent reads.
@@ -902,24 +1049,7 @@
           &quot;blobValue&quot;: &quot;A String&quot;, # A blob value. May have at most 1,000,000 bytes. When `exclude_from_indexes` is false, may have at most 1500 bytes. In JSON requests, must be base64-encoded.
           &quot;booleanValue&quot;: True or False, # A boolean value.
           &quot;doubleValue&quot;: 3.14, # A double value.
-          &quot;entityValue&quot;: { # A Datastore data object. An entity is limited to 1 megabyte when stored. That _roughly_ corresponds to a limit of 1 megabyte for the serialized form of this message. # An entity value. - May have no key. - May have a key with an incomplete key path. - May have a reserved/read-only key.
-            &quot;key&quot;: { # A unique identifier for an entity. If a key&#x27;s partition ID or any of its path kinds or names are reserved/read-only, the key is reserved/read-only. A reserved/read-only key is forbidden in certain documented contexts. # The entity&#x27;s key. An entity must have a key, unless otherwise documented (for example, an entity in `Value.entity_value` may have no key). An entity&#x27;s kind is its key path&#x27;s last element&#x27;s kind, or null if it has no key.
-              &quot;partitionId&quot;: { # A partition ID identifies a grouping of entities. The grouping is always by project and namespace, however the namespace ID may be empty. A partition ID contains several dimensions: project ID and namespace ID. Partition dimensions: - May be `&quot;&quot;`. - Must be valid UTF-8 bytes. - Must have values that match regex `[A-Za-z\d\.\-_]{1,100}` If the value of any dimension matches regex `__.*__`, the partition is reserved/read-only. A reserved/read-only partition ID is forbidden in certain documented contexts. Foreign partition IDs (in which the project ID does not match the context project ID ) are discouraged. Reads and writes of foreign partition IDs may fail if the project is not in an active state. # Entities are partitioned into subsets, currently identified by a project ID and namespace ID. Queries are scoped to a single partition.
-                &quot;namespaceId&quot;: &quot;A String&quot;, # If not empty, the ID of the namespace to which the entities belong.
-                &quot;projectId&quot;: &quot;A String&quot;, # The ID of the project to which the entities belong.
-              },
-              &quot;path&quot;: [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a _root entity_, the second element identifies a _child_ of the root entity, the third element identifies a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element&#x27;s _ancestors_. An entity path is always fully complete: *all* of the entity&#x27;s ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. For example, the last path element of the key of `Mutation.insert` may have no identifier. A path can never be empty, and a path can have at most 100 elements.
-                { # A (kind, ID/name) pair used to construct a key path. If either name or ID is set, the element is complete. If neither is set, the element is incomplete.
-                  &quot;id&quot;: &quot;A String&quot;, # The auto-allocated ID of the entity. Never equal to zero. Values less than zero are discouraged and may not be supported in the future.
-                  &quot;kind&quot;: &quot;A String&quot;, # The kind of the entity. A kind matching regex `__.*__` is reserved/read-only. A kind must not contain more than 1500 bytes when UTF-8 encoded. Cannot be `&quot;&quot;`.
-                  &quot;name&quot;: &quot;A String&quot;, # The name of the entity. A name matching regex `__.*__` is reserved/read-only. A name must not be more than 1500 bytes when UTF-8 encoded. Cannot be `&quot;&quot;`.
-                },
-              ],
-            },
-            &quot;properties&quot;: { # The entity&#x27;s properties. The map&#x27;s keys are property names. A property name matching regex `__.*__` is reserved. A reserved property name is forbidden in certain documented contexts. The name must not contain more than 500 characters. The name cannot be `&quot;&quot;`.
-              &quot;a_key&quot;: # Object with schema name: Value
-            },
-          },
+          &quot;entityValue&quot;: # Object with schema name: Entity # An entity value. - May have no key. - May have a key with an incomplete key path. - May have a reserved/read-only key.
           &quot;excludeFromIndexes&quot;: True or False, # If the value should be excluded from all indexes including those defined explicitly.
           &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
             &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
diff --git a/docs/dyn/displayvideo_v1.advertisers.campaigns.html b/docs/dyn/displayvideo_v1.advertisers.campaigns.html
index 404913e..50adcd9 100644
--- a/docs/dyn/displayvideo_v1.advertisers.campaigns.html
+++ b/docs/dyn/displayvideo_v1.advertisers.campaigns.html
@@ -202,6 +202,12 @@
         &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned browser targeting options on the same resource must have the same value for this field.
         &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BROWSER`.
       },
+      &quot;businessChainDetails&quot;: { # Details for assigned Business chain targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`. # Business chain details. This field will be populated when the targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`.
+        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a business chain, e.g. &quot;KFC&quot;, &quot;Chase Bank&quot;.
+        &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the business chain that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`. The minimum increment for both cases is 0.1. Inputs will be rounded to the nearest acceptable value if it is too granular, e.g. 15.57 will become 15.6.
+        &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BUSINESS_CHAIN`.
+      },
       &quot;carrierAndIspDetails&quot;: { # Details for assigned carrier and ISP targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`. # Carrier and ISP details. This field will be populated when the targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`.
         &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the carrier or ISP.
         &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned carrier and ISP targeting options on the same resource must have the same value for this field.
@@ -290,6 +296,10 @@
       &quot;negativeKeywordListDetails&quot;: { # Targeting details for negative keyword list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. # Keyword details. This field will be populated when the targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. A maximum of 4 negative keyword lists can be assigned to a resource.
         &quot;negativeKeywordListId&quot;: &quot;A String&quot;, # Required. ID of the negative keyword list. Should refer to the negative_keyword_list_id field of a NegativeKeywordList resource.
       },
+      &quot;omidDetails&quot;: { # Represents a targetable Open Measurement enabled inventory type. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_OMID`. # Open Measurement enabled inventory details. This field will be populated when the targeting_type is `TARGETING_TYPE_OMID`.
+        &quot;omid&quot;: &quot;A String&quot;, # Output only. The type of Open Measurement enabled inventory.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_OMID`.
+      },
       &quot;onScreenPositionDetails&quot;: { # On screen position targeting option details. This will be populated in the on_screen_position_details field when targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`. # On screen position details. This field will be populated when the targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`.
         &quot;adType&quot;: &quot;A String&quot;, # Output only. The ad type to target. Only applicable to insertion order targeting and new line items supporting the specified ad type will inherit this targeting option by default. Possible values are: * `AD_TYPE_DISPLAY`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_DISPLAY_DEFAULT`. * `AD_TYPE_VIDEO`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
         &quot;onScreenPosition&quot;: &quot;A String&quot;, # Output only. The on screen position.
@@ -304,6 +314,14 @@
         &quot;parentalStatus&quot;: &quot;A String&quot;, # Output only. The parental status of the audience.
         &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_PARENTAL_STATUS`.
       },
+      &quot;poiDetails&quot;: { # Details for assigned POI targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_POI`. # POI details. This field will be populated when the targeting_type is `TARGETING_TYPE_POI`.
+        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a POI, e.g. &quot;Times Square&quot;, &quot;Space Needle&quot;.
+        &quot;latitude&quot;: 3.14, # Output only. Latitude of the POI rounding to 6th decimal place.
+        &quot;longitude&quot;: 3.14, # Output only. Longitude of the POI rounding to 6th decimal place.
+        &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the POI that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`.
+        &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Input only. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_POI`.
+      },
       &quot;proximityLocationListDetails&quot;: { # Targeting details for proximity location list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`. # Proximity location list details. This field will be populated when the targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`.
         &quot;proximityLocationListId&quot;: &quot;A String&quot;, # Required. ID of the proximity location list. Should refer to the location_list_id field of a LocationList resource whose type is `TARGETING_LOCATION_TYPE_PROXIMITY`.
         &quot;proximityRadiusRange&quot;: &quot;A String&quot;, # Required. Radius range for proximity location list. This represents the size of the area around a chosen location that will be targeted. `All` proximity location targeting under a single resource must have the same radius range value. Set this value to match any existing targeting. If updated, this field will change the radius range for all proximity targeting under the resource.
diff --git a/docs/dyn/displayvideo_v1.advertisers.campaigns.targetingTypes.assignedTargetingOptions.html b/docs/dyn/displayvideo_v1.advertisers.campaigns.targetingTypes.assignedTargetingOptions.html
index 9a97a86..78e7e9c 100644
--- a/docs/dyn/displayvideo_v1.advertisers.campaigns.targetingTypes.assignedTargetingOptions.html
+++ b/docs/dyn/displayvideo_v1.advertisers.campaigns.targetingTypes.assignedTargetingOptions.html
@@ -139,7 +139,10 @@
       TARGETING_TYPE_INVENTORY_SOURCE_GROUP - Purchase impressions from a group of deals and auction packages.
       TARGETING_TYPE_EXCHANGE - Purchase impressions from specific exchanges.
       TARGETING_TYPE_SUB_EXCHANGE - Purchase impressions from specific sub-exchanges.
+      TARGETING_TYPE_POI - Target ads around a specific point of interest, such as a notable building, a street address, or latitude/longitude coordinates.
+      TARGETING_TYPE_BUSINESS_CHAIN - Target ads around locations of a business chain within a specific geo region.
       TARGETING_TYPE_NATIVE_CONTENT_POSITION - Target ads to a specific native content position.
+      TARGETING_TYPE_OMID - Target ads in an Open Measurement enabled inventory.
   assignedTargetingOptionId: string, Required. An identifier unique to the targeting type in this campaign that identifies the assigned targeting option being requested. (required)
   x__xgafv: string, V1 error format.
     Allowed values
@@ -223,6 +226,12 @@
     &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned browser targeting options on the same resource must have the same value for this field.
     &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BROWSER`.
   },
+  &quot;businessChainDetails&quot;: { # Details for assigned Business chain targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`. # Business chain details. This field will be populated when the targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`.
+    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a business chain, e.g. &quot;KFC&quot;, &quot;Chase Bank&quot;.
+    &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the business chain that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`. The minimum increment for both cases is 0.1. Inputs will be rounded to the nearest acceptable value if it is too granular, e.g. 15.57 will become 15.6.
+    &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BUSINESS_CHAIN`.
+  },
   &quot;carrierAndIspDetails&quot;: { # Details for assigned carrier and ISP targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`. # Carrier and ISP details. This field will be populated when the targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`.
     &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the carrier or ISP.
     &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned carrier and ISP targeting options on the same resource must have the same value for this field.
@@ -311,6 +320,10 @@
   &quot;negativeKeywordListDetails&quot;: { # Targeting details for negative keyword list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. # Keyword details. This field will be populated when the targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. A maximum of 4 negative keyword lists can be assigned to a resource.
     &quot;negativeKeywordListId&quot;: &quot;A String&quot;, # Required. ID of the negative keyword list. Should refer to the negative_keyword_list_id field of a NegativeKeywordList resource.
   },
+  &quot;omidDetails&quot;: { # Represents a targetable Open Measurement enabled inventory type. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_OMID`. # Open Measurement enabled inventory details. This field will be populated when the targeting_type is `TARGETING_TYPE_OMID`.
+    &quot;omid&quot;: &quot;A String&quot;, # Output only. The type of Open Measurement enabled inventory.
+    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_OMID`.
+  },
   &quot;onScreenPositionDetails&quot;: { # On screen position targeting option details. This will be populated in the on_screen_position_details field when targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`. # On screen position details. This field will be populated when the targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`.
     &quot;adType&quot;: &quot;A String&quot;, # Output only. The ad type to target. Only applicable to insertion order targeting and new line items supporting the specified ad type will inherit this targeting option by default. Possible values are: * `AD_TYPE_DISPLAY`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_DISPLAY_DEFAULT`. * `AD_TYPE_VIDEO`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
     &quot;onScreenPosition&quot;: &quot;A String&quot;, # Output only. The on screen position.
@@ -325,6 +338,14 @@
     &quot;parentalStatus&quot;: &quot;A String&quot;, # Output only. The parental status of the audience.
     &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_PARENTAL_STATUS`.
   },
+  &quot;poiDetails&quot;: { # Details for assigned POI targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_POI`. # POI details. This field will be populated when the targeting_type is `TARGETING_TYPE_POI`.
+    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a POI, e.g. &quot;Times Square&quot;, &quot;Space Needle&quot;.
+    &quot;latitude&quot;: 3.14, # Output only. Latitude of the POI rounding to 6th decimal place.
+    &quot;longitude&quot;: 3.14, # Output only. Longitude of the POI rounding to 6th decimal place.
+    &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the POI that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`.
+    &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Input only. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_POI`.
+  },
   &quot;proximityLocationListDetails&quot;: { # Targeting details for proximity location list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`. # Proximity location list details. This field will be populated when the targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`.
     &quot;proximityLocationListId&quot;: &quot;A String&quot;, # Required. ID of the proximity location list. Should refer to the location_list_id field of a LocationList resource whose type is `TARGETING_LOCATION_TYPE_PROXIMITY`.
     &quot;proximityRadiusRange&quot;: &quot;A String&quot;, # Required. Radius range for proximity location list. This represents the size of the area around a chosen location that will be targeted. `All` proximity location targeting under a single resource must have the same radius range value. Set this value to match any existing targeting. If updated, this field will change the radius range for all proximity targeting under the resource.
@@ -464,7 +485,10 @@
       TARGETING_TYPE_INVENTORY_SOURCE_GROUP - Purchase impressions from a group of deals and auction packages.
       TARGETING_TYPE_EXCHANGE - Purchase impressions from specific exchanges.
       TARGETING_TYPE_SUB_EXCHANGE - Purchase impressions from specific sub-exchanges.
+      TARGETING_TYPE_POI - Target ads around a specific point of interest, such as a notable building, a street address, or latitude/longitude coordinates.
+      TARGETING_TYPE_BUSINESS_CHAIN - Target ads around locations of a business chain within a specific geo region.
       TARGETING_TYPE_NATIVE_CONTENT_POSITION - Target ads to a specific native content position.
+      TARGETING_TYPE_OMID - Target ads in an Open Measurement enabled inventory.
   filter: string, Allows filtering by assigned targeting option properties. Supported syntax: * Filter expressions are made up of one or more restrictions. * Restrictions can be combined by the logical operator `OR`. * A restriction has the form of `{field} {operator} {value}`. * The operator must be `EQUALS (=)`. * Supported fields: - `assignedTargetingOptionId` - `inheritance` Examples: * AssignedTargetingOptions with ID 1 or 2 `assignedTargetingOptionId=&quot;1&quot; OR assignedTargetingOptionId=&quot;2&quot;` * AssignedTargetingOptions with inheritance status of NOT_INHERITED or INHERITED_FROM_PARTNER `inheritance=&quot;NOT_INHERITED&quot; OR inheritance=&quot;INHERITED_FROM_PARTNER&quot;` The length of this field should be no more than 500 characters.
   orderBy: string, Field by which to sort the list. Acceptable values are: * `assignedTargetingOptionId` (default) The default sorting order is ascending. To specify descending order for a field, a suffix &quot;desc&quot; should be added to the field name. Example: `assignedTargetingOptionId desc`.
   pageSize: integer, Requested page size. Must be between `1` and `5000`. If unspecified will default to `100`. Returns error code `INVALID_ARGUMENT` if an invalid value is specified.
@@ -553,6 +577,12 @@
         &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned browser targeting options on the same resource must have the same value for this field.
         &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BROWSER`.
       },
+      &quot;businessChainDetails&quot;: { # Details for assigned Business chain targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`. # Business chain details. This field will be populated when the targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`.
+        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a business chain, e.g. &quot;KFC&quot;, &quot;Chase Bank&quot;.
+        &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the business chain that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`. The minimum increment for both cases is 0.1. Inputs will be rounded to the nearest acceptable value if it is too granular, e.g. 15.57 will become 15.6.
+        &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BUSINESS_CHAIN`.
+      },
       &quot;carrierAndIspDetails&quot;: { # Details for assigned carrier and ISP targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`. # Carrier and ISP details. This field will be populated when the targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`.
         &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the carrier or ISP.
         &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned carrier and ISP targeting options on the same resource must have the same value for this field.
@@ -641,6 +671,10 @@
       &quot;negativeKeywordListDetails&quot;: { # Targeting details for negative keyword list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. # Keyword details. This field will be populated when the targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. A maximum of 4 negative keyword lists can be assigned to a resource.
         &quot;negativeKeywordListId&quot;: &quot;A String&quot;, # Required. ID of the negative keyword list. Should refer to the negative_keyword_list_id field of a NegativeKeywordList resource.
       },
+      &quot;omidDetails&quot;: { # Represents a targetable Open Measurement enabled inventory type. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_OMID`. # Open Measurement enabled inventory details. This field will be populated when the targeting_type is `TARGETING_TYPE_OMID`.
+        &quot;omid&quot;: &quot;A String&quot;, # Output only. The type of Open Measurement enabled inventory.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_OMID`.
+      },
       &quot;onScreenPositionDetails&quot;: { # On screen position targeting option details. This will be populated in the on_screen_position_details field when targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`. # On screen position details. This field will be populated when the targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`.
         &quot;adType&quot;: &quot;A String&quot;, # Output only. The ad type to target. Only applicable to insertion order targeting and new line items supporting the specified ad type will inherit this targeting option by default. Possible values are: * `AD_TYPE_DISPLAY`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_DISPLAY_DEFAULT`. * `AD_TYPE_VIDEO`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
         &quot;onScreenPosition&quot;: &quot;A String&quot;, # Output only. The on screen position.
@@ -655,6 +689,14 @@
         &quot;parentalStatus&quot;: &quot;A String&quot;, # Output only. The parental status of the audience.
         &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_PARENTAL_STATUS`.
       },
+      &quot;poiDetails&quot;: { # Details for assigned POI targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_POI`. # POI details. This field will be populated when the targeting_type is `TARGETING_TYPE_POI`.
+        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a POI, e.g. &quot;Times Square&quot;, &quot;Space Needle&quot;.
+        &quot;latitude&quot;: 3.14, # Output only. Latitude of the POI rounding to 6th decimal place.
+        &quot;longitude&quot;: 3.14, # Output only. Longitude of the POI rounding to 6th decimal place.
+        &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the POI that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`.
+        &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Input only. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_POI`.
+      },
       &quot;proximityLocationListDetails&quot;: { # Targeting details for proximity location list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`. # Proximity location list details. This field will be populated when the targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`.
         &quot;proximityLocationListId&quot;: &quot;A String&quot;, # Required. ID of the proximity location list. Should refer to the location_list_id field of a LocationList resource whose type is `TARGETING_LOCATION_TYPE_PROXIMITY`.
         &quot;proximityRadiusRange&quot;: &quot;A String&quot;, # Required. Radius range for proximity location list. This represents the size of the area around a chosen location that will be targeted. `All` proximity location targeting under a single resource must have the same radius range value. Set this value to match any existing targeting. If updated, this field will change the radius range for all proximity targeting under the resource.
diff --git a/docs/dyn/displayvideo_v1.advertisers.html b/docs/dyn/displayvideo_v1.advertisers.html
index f1a6847..7008b73 100644
--- a/docs/dyn/displayvideo_v1.advertisers.html
+++ b/docs/dyn/displayvideo_v1.advertisers.html
@@ -200,7 +200,7 @@
     The object takes the form of:
 
 { # Request message for BulkEditAdvertiserAssignedTargetingOptions.
-  &quot;createRequests&quot;: [ # The assigned targeting options to create in batch, specified as a list of `CreateAssignedTargetingOptionsRequest`. Supported targeting types: * `TARGETING_TYPE_CHANNEL` * `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION` * `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION`
+  &quot;createRequests&quot;: [ # The assigned targeting options to create in batch, specified as a list of `CreateAssignedTargetingOptionsRequest`. Supported targeting types: * `TARGETING_TYPE_CHANNEL` * `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION` * `TARGETING_TYPE_OMID` * `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION`
     { # A request listing which assigned targeting options of a given targeting type should be created and added.
       &quot;assignedTargetingOptions&quot;: [ # Required. The assigned targeting options to create and add.
         { # A single assigned targeting option, which defines the state of a targeting option for an entity with targeting settings.
@@ -277,6 +277,12 @@
             &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned browser targeting options on the same resource must have the same value for this field.
             &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BROWSER`.
           },
+          &quot;businessChainDetails&quot;: { # Details for assigned Business chain targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`. # Business chain details. This field will be populated when the targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`.
+            &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a business chain, e.g. &quot;KFC&quot;, &quot;Chase Bank&quot;.
+            &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the business chain that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`. The minimum increment for both cases is 0.1. Inputs will be rounded to the nearest acceptable value if it is too granular, e.g. 15.57 will become 15.6.
+            &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+            &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BUSINESS_CHAIN`.
+          },
           &quot;carrierAndIspDetails&quot;: { # Details for assigned carrier and ISP targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`. # Carrier and ISP details. This field will be populated when the targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`.
             &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the carrier or ISP.
             &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned carrier and ISP targeting options on the same resource must have the same value for this field.
@@ -365,6 +371,10 @@
           &quot;negativeKeywordListDetails&quot;: { # Targeting details for negative keyword list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. # Keyword details. This field will be populated when the targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. A maximum of 4 negative keyword lists can be assigned to a resource.
             &quot;negativeKeywordListId&quot;: &quot;A String&quot;, # Required. ID of the negative keyword list. Should refer to the negative_keyword_list_id field of a NegativeKeywordList resource.
           },
+          &quot;omidDetails&quot;: { # Represents a targetable Open Measurement enabled inventory type. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_OMID`. # Open Measurement enabled inventory details. This field will be populated when the targeting_type is `TARGETING_TYPE_OMID`.
+            &quot;omid&quot;: &quot;A String&quot;, # Output only. The type of Open Measurement enabled inventory.
+            &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_OMID`.
+          },
           &quot;onScreenPositionDetails&quot;: { # On screen position targeting option details. This will be populated in the on_screen_position_details field when targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`. # On screen position details. This field will be populated when the targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`.
             &quot;adType&quot;: &quot;A String&quot;, # Output only. The ad type to target. Only applicable to insertion order targeting and new line items supporting the specified ad type will inherit this targeting option by default. Possible values are: * `AD_TYPE_DISPLAY`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_DISPLAY_DEFAULT`. * `AD_TYPE_VIDEO`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
             &quot;onScreenPosition&quot;: &quot;A String&quot;, # Output only. The on screen position.
@@ -379,6 +389,14 @@
             &quot;parentalStatus&quot;: &quot;A String&quot;, # Output only. The parental status of the audience.
             &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_PARENTAL_STATUS`.
           },
+          &quot;poiDetails&quot;: { # Details for assigned POI targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_POI`. # POI details. This field will be populated when the targeting_type is `TARGETING_TYPE_POI`.
+            &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a POI, e.g. &quot;Times Square&quot;, &quot;Space Needle&quot;.
+            &quot;latitude&quot;: 3.14, # Output only. Latitude of the POI rounding to 6th decimal place.
+            &quot;longitude&quot;: 3.14, # Output only. Longitude of the POI rounding to 6th decimal place.
+            &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the POI that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`.
+            &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+            &quot;targetingOptionId&quot;: &quot;A String&quot;, # Input only. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_POI`.
+          },
           &quot;proximityLocationListDetails&quot;: { # Targeting details for proximity location list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`. # Proximity location list details. This field will be populated when the targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`.
             &quot;proximityLocationListId&quot;: &quot;A String&quot;, # Required. ID of the proximity location list. Should refer to the location_list_id field of a LocationList resource whose type is `TARGETING_LOCATION_TYPE_PROXIMITY`.
             &quot;proximityRadiusRange&quot;: &quot;A String&quot;, # Required. Radius range for proximity location list. This represents the size of the area around a chosen location that will be targeted. `All` proximity location targeting under a single resource must have the same radius range value. Set this value to match any existing targeting. If updated, this field will change the radius range for all proximity targeting under the resource.
@@ -473,7 +491,7 @@
       &quot;targetingType&quot;: &quot;A String&quot;, # Required. Identifies the type of this assigned targeting option.
     },
   ],
-  &quot;deleteRequests&quot;: [ # The assigned targeting options to delete in batch, specified as a list of `DeleteAssignedTargetingOptionsRequest`. Supported targeting types: * `TARGETING_TYPE_CHANNEL` * `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION` * `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION`
+  &quot;deleteRequests&quot;: [ # The assigned targeting options to delete in batch, specified as a list of `DeleteAssignedTargetingOptionsRequest`. Supported targeting types: * `TARGETING_TYPE_CHANNEL` * `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION` * `TARGETING_TYPE_OMID` * `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION`
     { # A request listing which assigned targeting options of a given targeting type should be deleted.
       &quot;assignedTargetingOptionIds&quot;: [ # Required. The assigned targeting option IDs to delete.
         &quot;A String&quot;,
@@ -567,6 +585,12 @@
         &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned browser targeting options on the same resource must have the same value for this field.
         &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BROWSER`.
       },
+      &quot;businessChainDetails&quot;: { # Details for assigned Business chain targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`. # Business chain details. This field will be populated when the targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`.
+        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a business chain, e.g. &quot;KFC&quot;, &quot;Chase Bank&quot;.
+        &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the business chain that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`. The minimum increment for both cases is 0.1. Inputs will be rounded to the nearest acceptable value if it is too granular, e.g. 15.57 will become 15.6.
+        &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BUSINESS_CHAIN`.
+      },
       &quot;carrierAndIspDetails&quot;: { # Details for assigned carrier and ISP targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`. # Carrier and ISP details. This field will be populated when the targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`.
         &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the carrier or ISP.
         &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned carrier and ISP targeting options on the same resource must have the same value for this field.
@@ -655,6 +679,10 @@
       &quot;negativeKeywordListDetails&quot;: { # Targeting details for negative keyword list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. # Keyword details. This field will be populated when the targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. A maximum of 4 negative keyword lists can be assigned to a resource.
         &quot;negativeKeywordListId&quot;: &quot;A String&quot;, # Required. ID of the negative keyword list. Should refer to the negative_keyword_list_id field of a NegativeKeywordList resource.
       },
+      &quot;omidDetails&quot;: { # Represents a targetable Open Measurement enabled inventory type. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_OMID`. # Open Measurement enabled inventory details. This field will be populated when the targeting_type is `TARGETING_TYPE_OMID`.
+        &quot;omid&quot;: &quot;A String&quot;, # Output only. The type of Open Measurement enabled inventory.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_OMID`.
+      },
       &quot;onScreenPositionDetails&quot;: { # On screen position targeting option details. This will be populated in the on_screen_position_details field when targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`. # On screen position details. This field will be populated when the targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`.
         &quot;adType&quot;: &quot;A String&quot;, # Output only. The ad type to target. Only applicable to insertion order targeting and new line items supporting the specified ad type will inherit this targeting option by default. Possible values are: * `AD_TYPE_DISPLAY`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_DISPLAY_DEFAULT`. * `AD_TYPE_VIDEO`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
         &quot;onScreenPosition&quot;: &quot;A String&quot;, # Output only. The on screen position.
@@ -669,6 +697,14 @@
         &quot;parentalStatus&quot;: &quot;A String&quot;, # Output only. The parental status of the audience.
         &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_PARENTAL_STATUS`.
       },
+      &quot;poiDetails&quot;: { # Details for assigned POI targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_POI`. # POI details. This field will be populated when the targeting_type is `TARGETING_TYPE_POI`.
+        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a POI, e.g. &quot;Times Square&quot;, &quot;Space Needle&quot;.
+        &quot;latitude&quot;: 3.14, # Output only. Latitude of the POI rounding to 6th decimal place.
+        &quot;longitude&quot;: 3.14, # Output only. Longitude of the POI rounding to 6th decimal place.
+        &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the POI that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`.
+        &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Input only. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_POI`.
+      },
       &quot;proximityLocationListDetails&quot;: { # Targeting details for proximity location list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`. # Proximity location list details. This field will be populated when the targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`.
         &quot;proximityLocationListId&quot;: &quot;A String&quot;, # Required. ID of the proximity location list. Should refer to the location_list_id field of a LocationList resource whose type is `TARGETING_LOCATION_TYPE_PROXIMITY`.
         &quot;proximityRadiusRange&quot;: &quot;A String&quot;, # Required. Radius range for proximity location list. This represents the size of the area around a chosen location that will be targeted. `All` proximity location targeting under a single resource must have the same radius range value. Set this value to match any existing targeting. If updated, this field will change the radius range for all proximity targeting under the resource.
@@ -857,6 +893,12 @@
         &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned browser targeting options on the same resource must have the same value for this field.
         &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BROWSER`.
       },
+      &quot;businessChainDetails&quot;: { # Details for assigned Business chain targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`. # Business chain details. This field will be populated when the targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`.
+        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a business chain, e.g. &quot;KFC&quot;, &quot;Chase Bank&quot;.
+        &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the business chain that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`. The minimum increment for both cases is 0.1. Inputs will be rounded to the nearest acceptable value if it is too granular, e.g. 15.57 will become 15.6.
+        &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BUSINESS_CHAIN`.
+      },
       &quot;carrierAndIspDetails&quot;: { # Details for assigned carrier and ISP targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`. # Carrier and ISP details. This field will be populated when the targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`.
         &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the carrier or ISP.
         &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned carrier and ISP targeting options on the same resource must have the same value for this field.
@@ -945,6 +987,10 @@
       &quot;negativeKeywordListDetails&quot;: { # Targeting details for negative keyword list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. # Keyword details. This field will be populated when the targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. A maximum of 4 negative keyword lists can be assigned to a resource.
         &quot;negativeKeywordListId&quot;: &quot;A String&quot;, # Required. ID of the negative keyword list. Should refer to the negative_keyword_list_id field of a NegativeKeywordList resource.
       },
+      &quot;omidDetails&quot;: { # Represents a targetable Open Measurement enabled inventory type. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_OMID`. # Open Measurement enabled inventory details. This field will be populated when the targeting_type is `TARGETING_TYPE_OMID`.
+        &quot;omid&quot;: &quot;A String&quot;, # Output only. The type of Open Measurement enabled inventory.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_OMID`.
+      },
       &quot;onScreenPositionDetails&quot;: { # On screen position targeting option details. This will be populated in the on_screen_position_details field when targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`. # On screen position details. This field will be populated when the targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`.
         &quot;adType&quot;: &quot;A String&quot;, # Output only. The ad type to target. Only applicable to insertion order targeting and new line items supporting the specified ad type will inherit this targeting option by default. Possible values are: * `AD_TYPE_DISPLAY`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_DISPLAY_DEFAULT`. * `AD_TYPE_VIDEO`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
         &quot;onScreenPosition&quot;: &quot;A String&quot;, # Output only. The on screen position.
@@ -959,6 +1005,14 @@
         &quot;parentalStatus&quot;: &quot;A String&quot;, # Output only. The parental status of the audience.
         &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_PARENTAL_STATUS`.
       },
+      &quot;poiDetails&quot;: { # Details for assigned POI targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_POI`. # POI details. This field will be populated when the targeting_type is `TARGETING_TYPE_POI`.
+        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a POI, e.g. &quot;Times Square&quot;, &quot;Space Needle&quot;.
+        &quot;latitude&quot;: 3.14, # Output only. Latitude of the POI rounding to 6th decimal place.
+        &quot;longitude&quot;: 3.14, # Output only. Longitude of the POI rounding to 6th decimal place.
+        &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the POI that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`.
+        &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Input only. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_POI`.
+      },
       &quot;proximityLocationListDetails&quot;: { # Targeting details for proximity location list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`. # Proximity location list details. This field will be populated when the targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`.
         &quot;proximityLocationListId&quot;: &quot;A String&quot;, # Required. ID of the proximity location list. Should refer to the location_list_id field of a LocationList resource whose type is `TARGETING_LOCATION_TYPE_PROXIMITY`.
         &quot;proximityRadiusRange&quot;: &quot;A String&quot;, # Required. Radius range for proximity location list. This represents the size of the area around a chosen location that will be targeted. `All` proximity location targeting under a single resource must have the same radius range value. Set this value to match any existing targeting. If updated, this field will change the radius range for all proximity targeting under the resource.
diff --git a/docs/dyn/displayvideo_v1.advertisers.insertionOrders.html b/docs/dyn/displayvideo_v1.advertisers.insertionOrders.html
index eff5006..ffdefa5 100644
--- a/docs/dyn/displayvideo_v1.advertisers.insertionOrders.html
+++ b/docs/dyn/displayvideo_v1.advertisers.insertionOrders.html
@@ -202,6 +202,12 @@
         &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned browser targeting options on the same resource must have the same value for this field.
         &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BROWSER`.
       },
+      &quot;businessChainDetails&quot;: { # Details for assigned Business chain targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`. # Business chain details. This field will be populated when the targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`.
+        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a business chain, e.g. &quot;KFC&quot;, &quot;Chase Bank&quot;.
+        &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the business chain that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`. The minimum increment for both cases is 0.1. Inputs will be rounded to the nearest acceptable value if it is too granular, e.g. 15.57 will become 15.6.
+        &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BUSINESS_CHAIN`.
+      },
       &quot;carrierAndIspDetails&quot;: { # Details for assigned carrier and ISP targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`. # Carrier and ISP details. This field will be populated when the targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`.
         &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the carrier or ISP.
         &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned carrier and ISP targeting options on the same resource must have the same value for this field.
@@ -290,6 +296,10 @@
       &quot;negativeKeywordListDetails&quot;: { # Targeting details for negative keyword list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. # Keyword details. This field will be populated when the targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. A maximum of 4 negative keyword lists can be assigned to a resource.
         &quot;negativeKeywordListId&quot;: &quot;A String&quot;, # Required. ID of the negative keyword list. Should refer to the negative_keyword_list_id field of a NegativeKeywordList resource.
       },
+      &quot;omidDetails&quot;: { # Represents a targetable Open Measurement enabled inventory type. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_OMID`. # Open Measurement enabled inventory details. This field will be populated when the targeting_type is `TARGETING_TYPE_OMID`.
+        &quot;omid&quot;: &quot;A String&quot;, # Output only. The type of Open Measurement enabled inventory.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_OMID`.
+      },
       &quot;onScreenPositionDetails&quot;: { # On screen position targeting option details. This will be populated in the on_screen_position_details field when targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`. # On screen position details. This field will be populated when the targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`.
         &quot;adType&quot;: &quot;A String&quot;, # Output only. The ad type to target. Only applicable to insertion order targeting and new line items supporting the specified ad type will inherit this targeting option by default. Possible values are: * `AD_TYPE_DISPLAY`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_DISPLAY_DEFAULT`. * `AD_TYPE_VIDEO`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
         &quot;onScreenPosition&quot;: &quot;A String&quot;, # Output only. The on screen position.
@@ -304,6 +314,14 @@
         &quot;parentalStatus&quot;: &quot;A String&quot;, # Output only. The parental status of the audience.
         &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_PARENTAL_STATUS`.
       },
+      &quot;poiDetails&quot;: { # Details for assigned POI targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_POI`. # POI details. This field will be populated when the targeting_type is `TARGETING_TYPE_POI`.
+        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a POI, e.g. &quot;Times Square&quot;, &quot;Space Needle&quot;.
+        &quot;latitude&quot;: 3.14, # Output only. Latitude of the POI rounding to 6th decimal place.
+        &quot;longitude&quot;: 3.14, # Output only. Longitude of the POI rounding to 6th decimal place.
+        &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the POI that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`.
+        &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Input only. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_POI`.
+      },
       &quot;proximityLocationListDetails&quot;: { # Targeting details for proximity location list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`. # Proximity location list details. This field will be populated when the targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`.
         &quot;proximityLocationListId&quot;: &quot;A String&quot;, # Required. ID of the proximity location list. Should refer to the location_list_id field of a LocationList resource whose type is `TARGETING_LOCATION_TYPE_PROXIMITY`.
         &quot;proximityRadiusRange&quot;: &quot;A String&quot;, # Required. Radius range for proximity location list. This represents the size of the area around a chosen location that will be targeted. `All` proximity location targeting under a single resource must have the same radius range value. Set this value to match any existing targeting. If updated, this field will change the radius range for all proximity targeting under the resource.
diff --git a/docs/dyn/displayvideo_v1.advertisers.insertionOrders.targetingTypes.assignedTargetingOptions.html b/docs/dyn/displayvideo_v1.advertisers.insertionOrders.targetingTypes.assignedTargetingOptions.html
index 5b1ce80..36cd591 100644
--- a/docs/dyn/displayvideo_v1.advertisers.insertionOrders.targetingTypes.assignedTargetingOptions.html
+++ b/docs/dyn/displayvideo_v1.advertisers.insertionOrders.targetingTypes.assignedTargetingOptions.html
@@ -139,7 +139,10 @@
       TARGETING_TYPE_INVENTORY_SOURCE_GROUP - Purchase impressions from a group of deals and auction packages.
       TARGETING_TYPE_EXCHANGE - Purchase impressions from specific exchanges.
       TARGETING_TYPE_SUB_EXCHANGE - Purchase impressions from specific sub-exchanges.
+      TARGETING_TYPE_POI - Target ads around a specific point of interest, such as a notable building, a street address, or latitude/longitude coordinates.
+      TARGETING_TYPE_BUSINESS_CHAIN - Target ads around locations of a business chain within a specific geo region.
       TARGETING_TYPE_NATIVE_CONTENT_POSITION - Target ads to a specific native content position.
+      TARGETING_TYPE_OMID - Target ads in an Open Measurement enabled inventory.
   assignedTargetingOptionId: string, Required. An identifier unique to the targeting type in this insertion order that identifies the assigned targeting option being requested. (required)
   x__xgafv: string, V1 error format.
     Allowed values
@@ -223,6 +226,12 @@
     &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned browser targeting options on the same resource must have the same value for this field.
     &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BROWSER`.
   },
+  &quot;businessChainDetails&quot;: { # Details for assigned Business chain targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`. # Business chain details. This field will be populated when the targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`.
+    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a business chain, e.g. &quot;KFC&quot;, &quot;Chase Bank&quot;.
+    &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the business chain that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`. The minimum increment for both cases is 0.1. Inputs will be rounded to the nearest acceptable value if it is too granular, e.g. 15.57 will become 15.6.
+    &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BUSINESS_CHAIN`.
+  },
   &quot;carrierAndIspDetails&quot;: { # Details for assigned carrier and ISP targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`. # Carrier and ISP details. This field will be populated when the targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`.
     &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the carrier or ISP.
     &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned carrier and ISP targeting options on the same resource must have the same value for this field.
@@ -311,6 +320,10 @@
   &quot;negativeKeywordListDetails&quot;: { # Targeting details for negative keyword list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. # Keyword details. This field will be populated when the targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. A maximum of 4 negative keyword lists can be assigned to a resource.
     &quot;negativeKeywordListId&quot;: &quot;A String&quot;, # Required. ID of the negative keyword list. Should refer to the negative_keyword_list_id field of a NegativeKeywordList resource.
   },
+  &quot;omidDetails&quot;: { # Represents a targetable Open Measurement enabled inventory type. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_OMID`. # Open Measurement enabled inventory details. This field will be populated when the targeting_type is `TARGETING_TYPE_OMID`.
+    &quot;omid&quot;: &quot;A String&quot;, # Output only. The type of Open Measurement enabled inventory.
+    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_OMID`.
+  },
   &quot;onScreenPositionDetails&quot;: { # On screen position targeting option details. This will be populated in the on_screen_position_details field when targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`. # On screen position details. This field will be populated when the targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`.
     &quot;adType&quot;: &quot;A String&quot;, # Output only. The ad type to target. Only applicable to insertion order targeting and new line items supporting the specified ad type will inherit this targeting option by default. Possible values are: * `AD_TYPE_DISPLAY`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_DISPLAY_DEFAULT`. * `AD_TYPE_VIDEO`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
     &quot;onScreenPosition&quot;: &quot;A String&quot;, # Output only. The on screen position.
@@ -325,6 +338,14 @@
     &quot;parentalStatus&quot;: &quot;A String&quot;, # Output only. The parental status of the audience.
     &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_PARENTAL_STATUS`.
   },
+  &quot;poiDetails&quot;: { # Details for assigned POI targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_POI`. # POI details. This field will be populated when the targeting_type is `TARGETING_TYPE_POI`.
+    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a POI, e.g. &quot;Times Square&quot;, &quot;Space Needle&quot;.
+    &quot;latitude&quot;: 3.14, # Output only. Latitude of the POI rounding to 6th decimal place.
+    &quot;longitude&quot;: 3.14, # Output only. Longitude of the POI rounding to 6th decimal place.
+    &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the POI that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`.
+    &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Input only. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_POI`.
+  },
   &quot;proximityLocationListDetails&quot;: { # Targeting details for proximity location list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`. # Proximity location list details. This field will be populated when the targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`.
     &quot;proximityLocationListId&quot;: &quot;A String&quot;, # Required. ID of the proximity location list. Should refer to the location_list_id field of a LocationList resource whose type is `TARGETING_LOCATION_TYPE_PROXIMITY`.
     &quot;proximityRadiusRange&quot;: &quot;A String&quot;, # Required. Radius range for proximity location list. This represents the size of the area around a chosen location that will be targeted. `All` proximity location targeting under a single resource must have the same radius range value. Set this value to match any existing targeting. If updated, this field will change the radius range for all proximity targeting under the resource.
@@ -464,7 +485,10 @@
       TARGETING_TYPE_INVENTORY_SOURCE_GROUP - Purchase impressions from a group of deals and auction packages.
       TARGETING_TYPE_EXCHANGE - Purchase impressions from specific exchanges.
       TARGETING_TYPE_SUB_EXCHANGE - Purchase impressions from specific sub-exchanges.
+      TARGETING_TYPE_POI - Target ads around a specific point of interest, such as a notable building, a street address, or latitude/longitude coordinates.
+      TARGETING_TYPE_BUSINESS_CHAIN - Target ads around locations of a business chain within a specific geo region.
       TARGETING_TYPE_NATIVE_CONTENT_POSITION - Target ads to a specific native content position.
+      TARGETING_TYPE_OMID - Target ads in an Open Measurement enabled inventory.
   filter: string, Allows filtering by assigned targeting option properties. Supported syntax: * Filter expressions are made up of one or more restrictions. * Restrictions can be combined by the logical operator `OR`. * A restriction has the form of `{field} {operator} {value}`. * The operator must be `EQUALS (=)`. * Supported fields: - `assignedTargetingOptionId` - `inheritance` Examples: * AssignedTargetingOptions with ID 1 or 2 `assignedTargetingOptionId=&quot;1&quot; OR assignedTargetingOptionId=&quot;2&quot;` * AssignedTargetingOptions with inheritance status of NOT_INHERITED or INHERITED_FROM_PARTNER `inheritance=&quot;NOT_INHERITED&quot; OR inheritance=&quot;INHERITED_FROM_PARTNER&quot;` The length of this field should be no more than 500 characters.
   orderBy: string, Field by which to sort the list. Acceptable values are: * `assignedTargetingOptionId` (default) The default sorting order is ascending. To specify descending order for a field, a suffix &quot;desc&quot; should be added to the field name. Example: `assignedTargetingOptionId desc`.
   pageSize: integer, Requested page size. Must be between `1` and `5000`. If unspecified will default to `100`. Returns error code `INVALID_ARGUMENT` if an invalid value is specified.
@@ -553,6 +577,12 @@
         &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned browser targeting options on the same resource must have the same value for this field.
         &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BROWSER`.
       },
+      &quot;businessChainDetails&quot;: { # Details for assigned Business chain targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`. # Business chain details. This field will be populated when the targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`.
+        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a business chain, e.g. &quot;KFC&quot;, &quot;Chase Bank&quot;.
+        &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the business chain that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`. The minimum increment for both cases is 0.1. Inputs will be rounded to the nearest acceptable value if it is too granular, e.g. 15.57 will become 15.6.
+        &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BUSINESS_CHAIN`.
+      },
       &quot;carrierAndIspDetails&quot;: { # Details for assigned carrier and ISP targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`. # Carrier and ISP details. This field will be populated when the targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`.
         &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the carrier or ISP.
         &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned carrier and ISP targeting options on the same resource must have the same value for this field.
@@ -641,6 +671,10 @@
       &quot;negativeKeywordListDetails&quot;: { # Targeting details for negative keyword list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. # Keyword details. This field will be populated when the targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. A maximum of 4 negative keyword lists can be assigned to a resource.
         &quot;negativeKeywordListId&quot;: &quot;A String&quot;, # Required. ID of the negative keyword list. Should refer to the negative_keyword_list_id field of a NegativeKeywordList resource.
       },
+      &quot;omidDetails&quot;: { # Represents a targetable Open Measurement enabled inventory type. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_OMID`. # Open Measurement enabled inventory details. This field will be populated when the targeting_type is `TARGETING_TYPE_OMID`.
+        &quot;omid&quot;: &quot;A String&quot;, # Output only. The type of Open Measurement enabled inventory.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_OMID`.
+      },
       &quot;onScreenPositionDetails&quot;: { # On screen position targeting option details. This will be populated in the on_screen_position_details field when targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`. # On screen position details. This field will be populated when the targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`.
         &quot;adType&quot;: &quot;A String&quot;, # Output only. The ad type to target. Only applicable to insertion order targeting and new line items supporting the specified ad type will inherit this targeting option by default. Possible values are: * `AD_TYPE_DISPLAY`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_DISPLAY_DEFAULT`. * `AD_TYPE_VIDEO`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
         &quot;onScreenPosition&quot;: &quot;A String&quot;, # Output only. The on screen position.
@@ -655,6 +689,14 @@
         &quot;parentalStatus&quot;: &quot;A String&quot;, # Output only. The parental status of the audience.
         &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_PARENTAL_STATUS`.
       },
+      &quot;poiDetails&quot;: { # Details for assigned POI targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_POI`. # POI details. This field will be populated when the targeting_type is `TARGETING_TYPE_POI`.
+        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a POI, e.g. &quot;Times Square&quot;, &quot;Space Needle&quot;.
+        &quot;latitude&quot;: 3.14, # Output only. Latitude of the POI rounding to 6th decimal place.
+        &quot;longitude&quot;: 3.14, # Output only. Longitude of the POI rounding to 6th decimal place.
+        &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the POI that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`.
+        &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Input only. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_POI`.
+      },
       &quot;proximityLocationListDetails&quot;: { # Targeting details for proximity location list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`. # Proximity location list details. This field will be populated when the targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`.
         &quot;proximityLocationListId&quot;: &quot;A String&quot;, # Required. ID of the proximity location list. Should refer to the location_list_id field of a LocationList resource whose type is `TARGETING_LOCATION_TYPE_PROXIMITY`.
         &quot;proximityRadiusRange&quot;: &quot;A String&quot;, # Required. Radius range for proximity location list. This represents the size of the area around a chosen location that will be targeted. `All` proximity location targeting under a single resource must have the same radius range value. Set this value to match any existing targeting. If updated, this field will change the radius range for all proximity targeting under the resource.
diff --git a/docs/dyn/displayvideo_v1.advertisers.lineItems.html b/docs/dyn/displayvideo_v1.advertisers.lineItems.html
index 6ffb254..06b3e04 100644
--- a/docs/dyn/displayvideo_v1.advertisers.lineItems.html
+++ b/docs/dyn/displayvideo_v1.advertisers.lineItems.html
@@ -201,6 +201,12 @@
             &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned browser targeting options on the same resource must have the same value for this field.
             &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BROWSER`.
           },
+          &quot;businessChainDetails&quot;: { # Details for assigned Business chain targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`. # Business chain details. This field will be populated when the targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`.
+            &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a business chain, e.g. &quot;KFC&quot;, &quot;Chase Bank&quot;.
+            &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the business chain that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`. The minimum increment for both cases is 0.1. Inputs will be rounded to the nearest acceptable value if it is too granular, e.g. 15.57 will become 15.6.
+            &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+            &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BUSINESS_CHAIN`.
+          },
           &quot;carrierAndIspDetails&quot;: { # Details for assigned carrier and ISP targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`. # Carrier and ISP details. This field will be populated when the targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`.
             &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the carrier or ISP.
             &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned carrier and ISP targeting options on the same resource must have the same value for this field.
@@ -289,6 +295,10 @@
           &quot;negativeKeywordListDetails&quot;: { # Targeting details for negative keyword list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. # Keyword details. This field will be populated when the targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. A maximum of 4 negative keyword lists can be assigned to a resource.
             &quot;negativeKeywordListId&quot;: &quot;A String&quot;, # Required. ID of the negative keyword list. Should refer to the negative_keyword_list_id field of a NegativeKeywordList resource.
           },
+          &quot;omidDetails&quot;: { # Represents a targetable Open Measurement enabled inventory type. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_OMID`. # Open Measurement enabled inventory details. This field will be populated when the targeting_type is `TARGETING_TYPE_OMID`.
+            &quot;omid&quot;: &quot;A String&quot;, # Output only. The type of Open Measurement enabled inventory.
+            &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_OMID`.
+          },
           &quot;onScreenPositionDetails&quot;: { # On screen position targeting option details. This will be populated in the on_screen_position_details field when targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`. # On screen position details. This field will be populated when the targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`.
             &quot;adType&quot;: &quot;A String&quot;, # Output only. The ad type to target. Only applicable to insertion order targeting and new line items supporting the specified ad type will inherit this targeting option by default. Possible values are: * `AD_TYPE_DISPLAY`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_DISPLAY_DEFAULT`. * `AD_TYPE_VIDEO`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
             &quot;onScreenPosition&quot;: &quot;A String&quot;, # Output only. The on screen position.
@@ -303,6 +313,14 @@
             &quot;parentalStatus&quot;: &quot;A String&quot;, # Output only. The parental status of the audience.
             &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_PARENTAL_STATUS`.
           },
+          &quot;poiDetails&quot;: { # Details for assigned POI targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_POI`. # POI details. This field will be populated when the targeting_type is `TARGETING_TYPE_POI`.
+            &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a POI, e.g. &quot;Times Square&quot;, &quot;Space Needle&quot;.
+            &quot;latitude&quot;: 3.14, # Output only. Latitude of the POI rounding to 6th decimal place.
+            &quot;longitude&quot;: 3.14, # Output only. Longitude of the POI rounding to 6th decimal place.
+            &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the POI that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`.
+            &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+            &quot;targetingOptionId&quot;: &quot;A String&quot;, # Input only. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_POI`.
+          },
           &quot;proximityLocationListDetails&quot;: { # Targeting details for proximity location list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`. # Proximity location list details. This field will be populated when the targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`.
             &quot;proximityLocationListId&quot;: &quot;A String&quot;, # Required. ID of the proximity location list. Should refer to the location_list_id field of a LocationList resource whose type is `TARGETING_LOCATION_TYPE_PROXIMITY`.
             &quot;proximityRadiusRange&quot;: &quot;A String&quot;, # Required. Radius range for proximity location list. This represents the size of the area around a chosen location that will be targeted. `All` proximity location targeting under a single resource must have the same radius range value. Set this value to match any existing targeting. If updated, this field will change the radius range for all proximity targeting under the resource.
@@ -491,6 +509,12 @@
         &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned browser targeting options on the same resource must have the same value for this field.
         &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BROWSER`.
       },
+      &quot;businessChainDetails&quot;: { # Details for assigned Business chain targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`. # Business chain details. This field will be populated when the targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`.
+        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a business chain, e.g. &quot;KFC&quot;, &quot;Chase Bank&quot;.
+        &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the business chain that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`. The minimum increment for both cases is 0.1. Inputs will be rounded to the nearest acceptable value if it is too granular, e.g. 15.57 will become 15.6.
+        &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BUSINESS_CHAIN`.
+      },
       &quot;carrierAndIspDetails&quot;: { # Details for assigned carrier and ISP targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`. # Carrier and ISP details. This field will be populated when the targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`.
         &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the carrier or ISP.
         &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned carrier and ISP targeting options on the same resource must have the same value for this field.
@@ -579,6 +603,10 @@
       &quot;negativeKeywordListDetails&quot;: { # Targeting details for negative keyword list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. # Keyword details. This field will be populated when the targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. A maximum of 4 negative keyword lists can be assigned to a resource.
         &quot;negativeKeywordListId&quot;: &quot;A String&quot;, # Required. ID of the negative keyword list. Should refer to the negative_keyword_list_id field of a NegativeKeywordList resource.
       },
+      &quot;omidDetails&quot;: { # Represents a targetable Open Measurement enabled inventory type. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_OMID`. # Open Measurement enabled inventory details. This field will be populated when the targeting_type is `TARGETING_TYPE_OMID`.
+        &quot;omid&quot;: &quot;A String&quot;, # Output only. The type of Open Measurement enabled inventory.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_OMID`.
+      },
       &quot;onScreenPositionDetails&quot;: { # On screen position targeting option details. This will be populated in the on_screen_position_details field when targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`. # On screen position details. This field will be populated when the targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`.
         &quot;adType&quot;: &quot;A String&quot;, # Output only. The ad type to target. Only applicable to insertion order targeting and new line items supporting the specified ad type will inherit this targeting option by default. Possible values are: * `AD_TYPE_DISPLAY`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_DISPLAY_DEFAULT`. * `AD_TYPE_VIDEO`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
         &quot;onScreenPosition&quot;: &quot;A String&quot;, # Output only. The on screen position.
@@ -593,6 +621,14 @@
         &quot;parentalStatus&quot;: &quot;A String&quot;, # Output only. The parental status of the audience.
         &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_PARENTAL_STATUS`.
       },
+      &quot;poiDetails&quot;: { # Details for assigned POI targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_POI`. # POI details. This field will be populated when the targeting_type is `TARGETING_TYPE_POI`.
+        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a POI, e.g. &quot;Times Square&quot;, &quot;Space Needle&quot;.
+        &quot;latitude&quot;: 3.14, # Output only. Latitude of the POI rounding to 6th decimal place.
+        &quot;longitude&quot;: 3.14, # Output only. Longitude of the POI rounding to 6th decimal place.
+        &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the POI that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`.
+        &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Input only. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_POI`.
+      },
       &quot;proximityLocationListDetails&quot;: { # Targeting details for proximity location list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`. # Proximity location list details. This field will be populated when the targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`.
         &quot;proximityLocationListId&quot;: &quot;A String&quot;, # Required. ID of the proximity location list. Should refer to the location_list_id field of a LocationList resource whose type is `TARGETING_LOCATION_TYPE_PROXIMITY`.
         &quot;proximityRadiusRange&quot;: &quot;A String&quot;, # Required. Radius range for proximity location list. This represents the size of the area around a chosen location that will be targeted. `All` proximity location targeting under a single resource must have the same radius range value. Set this value to match any existing targeting. If updated, this field will change the radius range for all proximity targeting under the resource.
@@ -782,6 +818,12 @@
         &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned browser targeting options on the same resource must have the same value for this field.
         &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BROWSER`.
       },
+      &quot;businessChainDetails&quot;: { # Details for assigned Business chain targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`. # Business chain details. This field will be populated when the targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`.
+        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a business chain, e.g. &quot;KFC&quot;, &quot;Chase Bank&quot;.
+        &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the business chain that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`. The minimum increment for both cases is 0.1. Inputs will be rounded to the nearest acceptable value if it is too granular, e.g. 15.57 will become 15.6.
+        &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BUSINESS_CHAIN`.
+      },
       &quot;carrierAndIspDetails&quot;: { # Details for assigned carrier and ISP targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`. # Carrier and ISP details. This field will be populated when the targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`.
         &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the carrier or ISP.
         &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned carrier and ISP targeting options on the same resource must have the same value for this field.
@@ -870,6 +912,10 @@
       &quot;negativeKeywordListDetails&quot;: { # Targeting details for negative keyword list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. # Keyword details. This field will be populated when the targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. A maximum of 4 negative keyword lists can be assigned to a resource.
         &quot;negativeKeywordListId&quot;: &quot;A String&quot;, # Required. ID of the negative keyword list. Should refer to the negative_keyword_list_id field of a NegativeKeywordList resource.
       },
+      &quot;omidDetails&quot;: { # Represents a targetable Open Measurement enabled inventory type. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_OMID`. # Open Measurement enabled inventory details. This field will be populated when the targeting_type is `TARGETING_TYPE_OMID`.
+        &quot;omid&quot;: &quot;A String&quot;, # Output only. The type of Open Measurement enabled inventory.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_OMID`.
+      },
       &quot;onScreenPositionDetails&quot;: { # On screen position targeting option details. This will be populated in the on_screen_position_details field when targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`. # On screen position details. This field will be populated when the targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`.
         &quot;adType&quot;: &quot;A String&quot;, # Output only. The ad type to target. Only applicable to insertion order targeting and new line items supporting the specified ad type will inherit this targeting option by default. Possible values are: * `AD_TYPE_DISPLAY`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_DISPLAY_DEFAULT`. * `AD_TYPE_VIDEO`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
         &quot;onScreenPosition&quot;: &quot;A String&quot;, # Output only. The on screen position.
@@ -884,6 +930,14 @@
         &quot;parentalStatus&quot;: &quot;A String&quot;, # Output only. The parental status of the audience.
         &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_PARENTAL_STATUS`.
       },
+      &quot;poiDetails&quot;: { # Details for assigned POI targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_POI`. # POI details. This field will be populated when the targeting_type is `TARGETING_TYPE_POI`.
+        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a POI, e.g. &quot;Times Square&quot;, &quot;Space Needle&quot;.
+        &quot;latitude&quot;: 3.14, # Output only. Latitude of the POI rounding to 6th decimal place.
+        &quot;longitude&quot;: 3.14, # Output only. Longitude of the POI rounding to 6th decimal place.
+        &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the POI that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`.
+        &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Input only. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_POI`.
+      },
       &quot;proximityLocationListDetails&quot;: { # Targeting details for proximity location list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`. # Proximity location list details. This field will be populated when the targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`.
         &quot;proximityLocationListId&quot;: &quot;A String&quot;, # Required. ID of the proximity location list. Should refer to the location_list_id field of a LocationList resource whose type is `TARGETING_LOCATION_TYPE_PROXIMITY`.
         &quot;proximityRadiusRange&quot;: &quot;A String&quot;, # Required. Radius range for proximity location list. This represents the size of the area around a chosen location that will be targeted. `All` proximity location targeting under a single resource must have the same radius range value. Set this value to match any existing targeting. If updated, this field will change the radius range for all proximity targeting under the resource.
diff --git a/docs/dyn/displayvideo_v1.advertisers.lineItems.targetingTypes.assignedTargetingOptions.html b/docs/dyn/displayvideo_v1.advertisers.lineItems.targetingTypes.assignedTargetingOptions.html
index 0b5365d..4ca9a6a 100644
--- a/docs/dyn/displayvideo_v1.advertisers.lineItems.targetingTypes.assignedTargetingOptions.html
+++ b/docs/dyn/displayvideo_v1.advertisers.lineItems.targetingTypes.assignedTargetingOptions.html
@@ -145,7 +145,10 @@
       TARGETING_TYPE_INVENTORY_SOURCE_GROUP - Purchase impressions from a group of deals and auction packages.
       TARGETING_TYPE_EXCHANGE - Purchase impressions from specific exchanges.
       TARGETING_TYPE_SUB_EXCHANGE - Purchase impressions from specific sub-exchanges.
+      TARGETING_TYPE_POI - Target ads around a specific point of interest, such as a notable building, a street address, or latitude/longitude coordinates.
+      TARGETING_TYPE_BUSINESS_CHAIN - Target ads around locations of a business chain within a specific geo region.
       TARGETING_TYPE_NATIVE_CONTENT_POSITION - Target ads to a specific native content position.
+      TARGETING_TYPE_OMID - Target ads in an Open Measurement enabled inventory.
   body: object, The request body.
     The object takes the form of:
 
@@ -223,6 +226,12 @@
     &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned browser targeting options on the same resource must have the same value for this field.
     &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BROWSER`.
   },
+  &quot;businessChainDetails&quot;: { # Details for assigned Business chain targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`. # Business chain details. This field will be populated when the targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`.
+    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a business chain, e.g. &quot;KFC&quot;, &quot;Chase Bank&quot;.
+    &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the business chain that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`. The minimum increment for both cases is 0.1. Inputs will be rounded to the nearest acceptable value if it is too granular, e.g. 15.57 will become 15.6.
+    &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BUSINESS_CHAIN`.
+  },
   &quot;carrierAndIspDetails&quot;: { # Details for assigned carrier and ISP targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`. # Carrier and ISP details. This field will be populated when the targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`.
     &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the carrier or ISP.
     &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned carrier and ISP targeting options on the same resource must have the same value for this field.
@@ -311,6 +320,10 @@
   &quot;negativeKeywordListDetails&quot;: { # Targeting details for negative keyword list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. # Keyword details. This field will be populated when the targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. A maximum of 4 negative keyword lists can be assigned to a resource.
     &quot;negativeKeywordListId&quot;: &quot;A String&quot;, # Required. ID of the negative keyword list. Should refer to the negative_keyword_list_id field of a NegativeKeywordList resource.
   },
+  &quot;omidDetails&quot;: { # Represents a targetable Open Measurement enabled inventory type. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_OMID`. # Open Measurement enabled inventory details. This field will be populated when the targeting_type is `TARGETING_TYPE_OMID`.
+    &quot;omid&quot;: &quot;A String&quot;, # Output only. The type of Open Measurement enabled inventory.
+    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_OMID`.
+  },
   &quot;onScreenPositionDetails&quot;: { # On screen position targeting option details. This will be populated in the on_screen_position_details field when targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`. # On screen position details. This field will be populated when the targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`.
     &quot;adType&quot;: &quot;A String&quot;, # Output only. The ad type to target. Only applicable to insertion order targeting and new line items supporting the specified ad type will inherit this targeting option by default. Possible values are: * `AD_TYPE_DISPLAY`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_DISPLAY_DEFAULT`. * `AD_TYPE_VIDEO`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
     &quot;onScreenPosition&quot;: &quot;A String&quot;, # Output only. The on screen position.
@@ -325,6 +338,14 @@
     &quot;parentalStatus&quot;: &quot;A String&quot;, # Output only. The parental status of the audience.
     &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_PARENTAL_STATUS`.
   },
+  &quot;poiDetails&quot;: { # Details for assigned POI targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_POI`. # POI details. This field will be populated when the targeting_type is `TARGETING_TYPE_POI`.
+    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a POI, e.g. &quot;Times Square&quot;, &quot;Space Needle&quot;.
+    &quot;latitude&quot;: 3.14, # Output only. Latitude of the POI rounding to 6th decimal place.
+    &quot;longitude&quot;: 3.14, # Output only. Longitude of the POI rounding to 6th decimal place.
+    &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the POI that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`.
+    &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Input only. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_POI`.
+  },
   &quot;proximityLocationListDetails&quot;: { # Targeting details for proximity location list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`. # Proximity location list details. This field will be populated when the targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`.
     &quot;proximityLocationListId&quot;: &quot;A String&quot;, # Required. ID of the proximity location list. Should refer to the location_list_id field of a LocationList resource whose type is `TARGETING_LOCATION_TYPE_PROXIMITY`.
     &quot;proximityRadiusRange&quot;: &quot;A String&quot;, # Required. Radius range for proximity location list. This represents the size of the area around a chosen location that will be targeted. `All` proximity location targeting under a single resource must have the same radius range value. Set this value to match any existing targeting. If updated, this field will change the radius range for all proximity targeting under the resource.
@@ -498,6 +519,12 @@
     &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned browser targeting options on the same resource must have the same value for this field.
     &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BROWSER`.
   },
+  &quot;businessChainDetails&quot;: { # Details for assigned Business chain targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`. # Business chain details. This field will be populated when the targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`.
+    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a business chain, e.g. &quot;KFC&quot;, &quot;Chase Bank&quot;.
+    &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the business chain that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`. The minimum increment for both cases is 0.1. Inputs will be rounded to the nearest acceptable value if it is too granular, e.g. 15.57 will become 15.6.
+    &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BUSINESS_CHAIN`.
+  },
   &quot;carrierAndIspDetails&quot;: { # Details for assigned carrier and ISP targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`. # Carrier and ISP details. This field will be populated when the targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`.
     &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the carrier or ISP.
     &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned carrier and ISP targeting options on the same resource must have the same value for this field.
@@ -586,6 +613,10 @@
   &quot;negativeKeywordListDetails&quot;: { # Targeting details for negative keyword list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. # Keyword details. This field will be populated when the targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. A maximum of 4 negative keyword lists can be assigned to a resource.
     &quot;negativeKeywordListId&quot;: &quot;A String&quot;, # Required. ID of the negative keyword list. Should refer to the negative_keyword_list_id field of a NegativeKeywordList resource.
   },
+  &quot;omidDetails&quot;: { # Represents a targetable Open Measurement enabled inventory type. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_OMID`. # Open Measurement enabled inventory details. This field will be populated when the targeting_type is `TARGETING_TYPE_OMID`.
+    &quot;omid&quot;: &quot;A String&quot;, # Output only. The type of Open Measurement enabled inventory.
+    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_OMID`.
+  },
   &quot;onScreenPositionDetails&quot;: { # On screen position targeting option details. This will be populated in the on_screen_position_details field when targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`. # On screen position details. This field will be populated when the targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`.
     &quot;adType&quot;: &quot;A String&quot;, # Output only. The ad type to target. Only applicable to insertion order targeting and new line items supporting the specified ad type will inherit this targeting option by default. Possible values are: * `AD_TYPE_DISPLAY`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_DISPLAY_DEFAULT`. * `AD_TYPE_VIDEO`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
     &quot;onScreenPosition&quot;: &quot;A String&quot;, # Output only. The on screen position.
@@ -600,6 +631,14 @@
     &quot;parentalStatus&quot;: &quot;A String&quot;, # Output only. The parental status of the audience.
     &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_PARENTAL_STATUS`.
   },
+  &quot;poiDetails&quot;: { # Details for assigned POI targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_POI`. # POI details. This field will be populated when the targeting_type is `TARGETING_TYPE_POI`.
+    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a POI, e.g. &quot;Times Square&quot;, &quot;Space Needle&quot;.
+    &quot;latitude&quot;: 3.14, # Output only. Latitude of the POI rounding to 6th decimal place.
+    &quot;longitude&quot;: 3.14, # Output only. Longitude of the POI rounding to 6th decimal place.
+    &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the POI that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`.
+    &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Input only. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_POI`.
+  },
   &quot;proximityLocationListDetails&quot;: { # Targeting details for proximity location list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`. # Proximity location list details. This field will be populated when the targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`.
     &quot;proximityLocationListId&quot;: &quot;A String&quot;, # Required. ID of the proximity location list. Should refer to the location_list_id field of a LocationList resource whose type is `TARGETING_LOCATION_TYPE_PROXIMITY`.
     &quot;proximityRadiusRange&quot;: &quot;A String&quot;, # Required. Radius range for proximity location list. This represents the size of the area around a chosen location that will be targeted. `All` proximity location targeting under a single resource must have the same radius range value. Set this value to match any existing targeting. If updated, this field will change the radius range for all proximity targeting under the resource.
@@ -739,7 +778,10 @@
       TARGETING_TYPE_INVENTORY_SOURCE_GROUP - Purchase impressions from a group of deals and auction packages.
       TARGETING_TYPE_EXCHANGE - Purchase impressions from specific exchanges.
       TARGETING_TYPE_SUB_EXCHANGE - Purchase impressions from specific sub-exchanges.
+      TARGETING_TYPE_POI - Target ads around a specific point of interest, such as a notable building, a street address, or latitude/longitude coordinates.
+      TARGETING_TYPE_BUSINESS_CHAIN - Target ads around locations of a business chain within a specific geo region.
       TARGETING_TYPE_NATIVE_CONTENT_POSITION - Target ads to a specific native content position.
+      TARGETING_TYPE_OMID - Target ads in an Open Measurement enabled inventory.
   assignedTargetingOptionId: string, Required. The ID of the assigned targeting option to delete. (required)
   x__xgafv: string, V1 error format.
     Allowed values
@@ -800,7 +842,10 @@
       TARGETING_TYPE_INVENTORY_SOURCE_GROUP - Purchase impressions from a group of deals and auction packages.
       TARGETING_TYPE_EXCHANGE - Purchase impressions from specific exchanges.
       TARGETING_TYPE_SUB_EXCHANGE - Purchase impressions from specific sub-exchanges.
+      TARGETING_TYPE_POI - Target ads around a specific point of interest, such as a notable building, a street address, or latitude/longitude coordinates.
+      TARGETING_TYPE_BUSINESS_CHAIN - Target ads around locations of a business chain within a specific geo region.
       TARGETING_TYPE_NATIVE_CONTENT_POSITION - Target ads to a specific native content position.
+      TARGETING_TYPE_OMID - Target ads in an Open Measurement enabled inventory.
   assignedTargetingOptionId: string, Required. An identifier unique to the targeting type in this line item that identifies the assigned targeting option being requested. (required)
   x__xgafv: string, V1 error format.
     Allowed values
@@ -884,6 +929,12 @@
     &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned browser targeting options on the same resource must have the same value for this field.
     &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BROWSER`.
   },
+  &quot;businessChainDetails&quot;: { # Details for assigned Business chain targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`. # Business chain details. This field will be populated when the targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`.
+    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a business chain, e.g. &quot;KFC&quot;, &quot;Chase Bank&quot;.
+    &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the business chain that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`. The minimum increment for both cases is 0.1. Inputs will be rounded to the nearest acceptable value if it is too granular, e.g. 15.57 will become 15.6.
+    &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BUSINESS_CHAIN`.
+  },
   &quot;carrierAndIspDetails&quot;: { # Details for assigned carrier and ISP targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`. # Carrier and ISP details. This field will be populated when the targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`.
     &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the carrier or ISP.
     &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned carrier and ISP targeting options on the same resource must have the same value for this field.
@@ -972,6 +1023,10 @@
   &quot;negativeKeywordListDetails&quot;: { # Targeting details for negative keyword list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. # Keyword details. This field will be populated when the targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. A maximum of 4 negative keyword lists can be assigned to a resource.
     &quot;negativeKeywordListId&quot;: &quot;A String&quot;, # Required. ID of the negative keyword list. Should refer to the negative_keyword_list_id field of a NegativeKeywordList resource.
   },
+  &quot;omidDetails&quot;: { # Represents a targetable Open Measurement enabled inventory type. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_OMID`. # Open Measurement enabled inventory details. This field will be populated when the targeting_type is `TARGETING_TYPE_OMID`.
+    &quot;omid&quot;: &quot;A String&quot;, # Output only. The type of Open Measurement enabled inventory.
+    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_OMID`.
+  },
   &quot;onScreenPositionDetails&quot;: { # On screen position targeting option details. This will be populated in the on_screen_position_details field when targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`. # On screen position details. This field will be populated when the targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`.
     &quot;adType&quot;: &quot;A String&quot;, # Output only. The ad type to target. Only applicable to insertion order targeting and new line items supporting the specified ad type will inherit this targeting option by default. Possible values are: * `AD_TYPE_DISPLAY`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_DISPLAY_DEFAULT`. * `AD_TYPE_VIDEO`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
     &quot;onScreenPosition&quot;: &quot;A String&quot;, # Output only. The on screen position.
@@ -986,6 +1041,14 @@
     &quot;parentalStatus&quot;: &quot;A String&quot;, # Output only. The parental status of the audience.
     &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_PARENTAL_STATUS`.
   },
+  &quot;poiDetails&quot;: { # Details for assigned POI targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_POI`. # POI details. This field will be populated when the targeting_type is `TARGETING_TYPE_POI`.
+    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a POI, e.g. &quot;Times Square&quot;, &quot;Space Needle&quot;.
+    &quot;latitude&quot;: 3.14, # Output only. Latitude of the POI rounding to 6th decimal place.
+    &quot;longitude&quot;: 3.14, # Output only. Longitude of the POI rounding to 6th decimal place.
+    &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the POI that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`.
+    &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Input only. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_POI`.
+  },
   &quot;proximityLocationListDetails&quot;: { # Targeting details for proximity location list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`. # Proximity location list details. This field will be populated when the targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`.
     &quot;proximityLocationListId&quot;: &quot;A String&quot;, # Required. ID of the proximity location list. Should refer to the location_list_id field of a LocationList resource whose type is `TARGETING_LOCATION_TYPE_PROXIMITY`.
     &quot;proximityRadiusRange&quot;: &quot;A String&quot;, # Required. Radius range for proximity location list. This represents the size of the area around a chosen location that will be targeted. `All` proximity location targeting under a single resource must have the same radius range value. Set this value to match any existing targeting. If updated, this field will change the radius range for all proximity targeting under the resource.
@@ -1125,7 +1188,10 @@
       TARGETING_TYPE_INVENTORY_SOURCE_GROUP - Purchase impressions from a group of deals and auction packages.
       TARGETING_TYPE_EXCHANGE - Purchase impressions from specific exchanges.
       TARGETING_TYPE_SUB_EXCHANGE - Purchase impressions from specific sub-exchanges.
+      TARGETING_TYPE_POI - Target ads around a specific point of interest, such as a notable building, a street address, or latitude/longitude coordinates.
+      TARGETING_TYPE_BUSINESS_CHAIN - Target ads around locations of a business chain within a specific geo region.
       TARGETING_TYPE_NATIVE_CONTENT_POSITION - Target ads to a specific native content position.
+      TARGETING_TYPE_OMID - Target ads in an Open Measurement enabled inventory.
   filter: string, Allows filtering by assigned targeting option properties. Supported syntax: * Filter expressions are made up of one or more restrictions. * Restrictions can be combined by the logical operator `OR`. * A restriction has the form of `{field} {operator} {value}`. * The operator must be `EQUALS (=)`. * Supported fields: - `assignedTargetingOptionId` - `inheritance` Examples: * AssignedTargetingOptions with ID 1 or 2 `assignedTargetingOptionId=&quot;1&quot; OR assignedTargetingOptionId=&quot;2&quot;` * AssignedTargetingOptions with inheritance status of NOT_INHERITED or INHERITED_FROM_PARTNER `inheritance=&quot;NOT_INHERITED&quot; OR inheritance=&quot;INHERITED_FROM_PARTNER&quot;` The length of this field should be no more than 500 characters.
   orderBy: string, Field by which to sort the list. Acceptable values are: * `assignedTargetingOptionId` (default) The default sorting order is ascending. To specify descending order for a field, a suffix &quot;desc&quot; should be added to the field name. Example: `assignedTargetingOptionId desc`.
   pageSize: integer, Requested page size. Must be between `1` and `5000`. If unspecified will default to `100`. Returns error code `INVALID_ARGUMENT` if an invalid value is specified.
@@ -1214,6 +1280,12 @@
         &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned browser targeting options on the same resource must have the same value for this field.
         &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BROWSER`.
       },
+      &quot;businessChainDetails&quot;: { # Details for assigned Business chain targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`. # Business chain details. This field will be populated when the targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`.
+        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a business chain, e.g. &quot;KFC&quot;, &quot;Chase Bank&quot;.
+        &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the business chain that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`. The minimum increment for both cases is 0.1. Inputs will be rounded to the nearest acceptable value if it is too granular, e.g. 15.57 will become 15.6.
+        &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BUSINESS_CHAIN`.
+      },
       &quot;carrierAndIspDetails&quot;: { # Details for assigned carrier and ISP targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`. # Carrier and ISP details. This field will be populated when the targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`.
         &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the carrier or ISP.
         &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned carrier and ISP targeting options on the same resource must have the same value for this field.
@@ -1302,6 +1374,10 @@
       &quot;negativeKeywordListDetails&quot;: { # Targeting details for negative keyword list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. # Keyword details. This field will be populated when the targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. A maximum of 4 negative keyword lists can be assigned to a resource.
         &quot;negativeKeywordListId&quot;: &quot;A String&quot;, # Required. ID of the negative keyword list. Should refer to the negative_keyword_list_id field of a NegativeKeywordList resource.
       },
+      &quot;omidDetails&quot;: { # Represents a targetable Open Measurement enabled inventory type. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_OMID`. # Open Measurement enabled inventory details. This field will be populated when the targeting_type is `TARGETING_TYPE_OMID`.
+        &quot;omid&quot;: &quot;A String&quot;, # Output only. The type of Open Measurement enabled inventory.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_OMID`.
+      },
       &quot;onScreenPositionDetails&quot;: { # On screen position targeting option details. This will be populated in the on_screen_position_details field when targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`. # On screen position details. This field will be populated when the targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`.
         &quot;adType&quot;: &quot;A String&quot;, # Output only. The ad type to target. Only applicable to insertion order targeting and new line items supporting the specified ad type will inherit this targeting option by default. Possible values are: * `AD_TYPE_DISPLAY`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_DISPLAY_DEFAULT`. * `AD_TYPE_VIDEO`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
         &quot;onScreenPosition&quot;: &quot;A String&quot;, # Output only. The on screen position.
@@ -1316,6 +1392,14 @@
         &quot;parentalStatus&quot;: &quot;A String&quot;, # Output only. The parental status of the audience.
         &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_PARENTAL_STATUS`.
       },
+      &quot;poiDetails&quot;: { # Details for assigned POI targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_POI`. # POI details. This field will be populated when the targeting_type is `TARGETING_TYPE_POI`.
+        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a POI, e.g. &quot;Times Square&quot;, &quot;Space Needle&quot;.
+        &quot;latitude&quot;: 3.14, # Output only. Latitude of the POI rounding to 6th decimal place.
+        &quot;longitude&quot;: 3.14, # Output only. Longitude of the POI rounding to 6th decimal place.
+        &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the POI that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`.
+        &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Input only. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_POI`.
+      },
       &quot;proximityLocationListDetails&quot;: { # Targeting details for proximity location list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`. # Proximity location list details. This field will be populated when the targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`.
         &quot;proximityLocationListId&quot;: &quot;A String&quot;, # Required. ID of the proximity location list. Should refer to the location_list_id field of a LocationList resource whose type is `TARGETING_LOCATION_TYPE_PROXIMITY`.
         &quot;proximityRadiusRange&quot;: &quot;A String&quot;, # Required. Radius range for proximity location list. This represents the size of the area around a chosen location that will be targeted. `All` proximity location targeting under a single resource must have the same radius range value. Set this value to match any existing targeting. If updated, this field will change the radius range for all proximity targeting under the resource.
diff --git a/docs/dyn/displayvideo_v1.advertisers.targetingTypes.assignedTargetingOptions.html b/docs/dyn/displayvideo_v1.advertisers.targetingTypes.assignedTargetingOptions.html
index 2815d6f..dfdc90c 100644
--- a/docs/dyn/displayvideo_v1.advertisers.targetingTypes.assignedTargetingOptions.html
+++ b/docs/dyn/displayvideo_v1.advertisers.targetingTypes.assignedTargetingOptions.html
@@ -104,7 +104,7 @@
 
 Args:
   advertiserId: string, Required. The ID of the advertiser. (required)
-  targetingType: string, Required. Identifies the type of this assigned targeting option. Supported targeting types: * `TARGETING_TYPE_CHANNEL` * `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION` * `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION` (required)
+  targetingType: string, Required. Identifies the type of this assigned targeting option. Supported targeting types: * `TARGETING_TYPE_CHANNEL` * `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION` * `TARGETING_TYPE_OMID` * `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION` (required)
     Allowed values
       TARGETING_TYPE_UNSPECIFIED - Default value when type is not specified or is unknown in this version.
       TARGETING_TYPE_CHANNEL - Target a channel (a custom group of related websites or apps).
@@ -144,7 +144,10 @@
       TARGETING_TYPE_INVENTORY_SOURCE_GROUP - Purchase impressions from a group of deals and auction packages.
       TARGETING_TYPE_EXCHANGE - Purchase impressions from specific exchanges.
       TARGETING_TYPE_SUB_EXCHANGE - Purchase impressions from specific sub-exchanges.
+      TARGETING_TYPE_POI - Target ads around a specific point of interest, such as a notable building, a street address, or latitude/longitude coordinates.
+      TARGETING_TYPE_BUSINESS_CHAIN - Target ads around locations of a business chain within a specific geo region.
       TARGETING_TYPE_NATIVE_CONTENT_POSITION - Target ads to a specific native content position.
+      TARGETING_TYPE_OMID - Target ads in an Open Measurement enabled inventory.
   body: object, The request body.
     The object takes the form of:
 
@@ -222,6 +225,12 @@
     &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned browser targeting options on the same resource must have the same value for this field.
     &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BROWSER`.
   },
+  &quot;businessChainDetails&quot;: { # Details for assigned Business chain targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`. # Business chain details. This field will be populated when the targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`.
+    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a business chain, e.g. &quot;KFC&quot;, &quot;Chase Bank&quot;.
+    &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the business chain that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`. The minimum increment for both cases is 0.1. Inputs will be rounded to the nearest acceptable value if it is too granular, e.g. 15.57 will become 15.6.
+    &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BUSINESS_CHAIN`.
+  },
   &quot;carrierAndIspDetails&quot;: { # Details for assigned carrier and ISP targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`. # Carrier and ISP details. This field will be populated when the targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`.
     &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the carrier or ISP.
     &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned carrier and ISP targeting options on the same resource must have the same value for this field.
@@ -310,6 +319,10 @@
   &quot;negativeKeywordListDetails&quot;: { # Targeting details for negative keyword list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. # Keyword details. This field will be populated when the targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. A maximum of 4 negative keyword lists can be assigned to a resource.
     &quot;negativeKeywordListId&quot;: &quot;A String&quot;, # Required. ID of the negative keyword list. Should refer to the negative_keyword_list_id field of a NegativeKeywordList resource.
   },
+  &quot;omidDetails&quot;: { # Represents a targetable Open Measurement enabled inventory type. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_OMID`. # Open Measurement enabled inventory details. This field will be populated when the targeting_type is `TARGETING_TYPE_OMID`.
+    &quot;omid&quot;: &quot;A String&quot;, # Output only. The type of Open Measurement enabled inventory.
+    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_OMID`.
+  },
   &quot;onScreenPositionDetails&quot;: { # On screen position targeting option details. This will be populated in the on_screen_position_details field when targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`. # On screen position details. This field will be populated when the targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`.
     &quot;adType&quot;: &quot;A String&quot;, # Output only. The ad type to target. Only applicable to insertion order targeting and new line items supporting the specified ad type will inherit this targeting option by default. Possible values are: * `AD_TYPE_DISPLAY`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_DISPLAY_DEFAULT`. * `AD_TYPE_VIDEO`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
     &quot;onScreenPosition&quot;: &quot;A String&quot;, # Output only. The on screen position.
@@ -324,6 +337,14 @@
     &quot;parentalStatus&quot;: &quot;A String&quot;, # Output only. The parental status of the audience.
     &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_PARENTAL_STATUS`.
   },
+  &quot;poiDetails&quot;: { # Details for assigned POI targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_POI`. # POI details. This field will be populated when the targeting_type is `TARGETING_TYPE_POI`.
+    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a POI, e.g. &quot;Times Square&quot;, &quot;Space Needle&quot;.
+    &quot;latitude&quot;: 3.14, # Output only. Latitude of the POI rounding to 6th decimal place.
+    &quot;longitude&quot;: 3.14, # Output only. Longitude of the POI rounding to 6th decimal place.
+    &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the POI that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`.
+    &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Input only. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_POI`.
+  },
   &quot;proximityLocationListDetails&quot;: { # Targeting details for proximity location list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`. # Proximity location list details. This field will be populated when the targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`.
     &quot;proximityLocationListId&quot;: &quot;A String&quot;, # Required. ID of the proximity location list. Should refer to the location_list_id field of a LocationList resource whose type is `TARGETING_LOCATION_TYPE_PROXIMITY`.
     &quot;proximityRadiusRange&quot;: &quot;A String&quot;, # Required. Radius range for proximity location list. This represents the size of the area around a chosen location that will be targeted. `All` proximity location targeting under a single resource must have the same radius range value. Set this value to match any existing targeting. If updated, this field will change the radius range for all proximity targeting under the resource.
@@ -497,6 +518,12 @@
     &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned browser targeting options on the same resource must have the same value for this field.
     &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BROWSER`.
   },
+  &quot;businessChainDetails&quot;: { # Details for assigned Business chain targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`. # Business chain details. This field will be populated when the targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`.
+    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a business chain, e.g. &quot;KFC&quot;, &quot;Chase Bank&quot;.
+    &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the business chain that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`. The minimum increment for both cases is 0.1. Inputs will be rounded to the nearest acceptable value if it is too granular, e.g. 15.57 will become 15.6.
+    &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BUSINESS_CHAIN`.
+  },
   &quot;carrierAndIspDetails&quot;: { # Details for assigned carrier and ISP targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`. # Carrier and ISP details. This field will be populated when the targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`.
     &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the carrier or ISP.
     &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned carrier and ISP targeting options on the same resource must have the same value for this field.
@@ -585,6 +612,10 @@
   &quot;negativeKeywordListDetails&quot;: { # Targeting details for negative keyword list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. # Keyword details. This field will be populated when the targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. A maximum of 4 negative keyword lists can be assigned to a resource.
     &quot;negativeKeywordListId&quot;: &quot;A String&quot;, # Required. ID of the negative keyword list. Should refer to the negative_keyword_list_id field of a NegativeKeywordList resource.
   },
+  &quot;omidDetails&quot;: { # Represents a targetable Open Measurement enabled inventory type. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_OMID`. # Open Measurement enabled inventory details. This field will be populated when the targeting_type is `TARGETING_TYPE_OMID`.
+    &quot;omid&quot;: &quot;A String&quot;, # Output only. The type of Open Measurement enabled inventory.
+    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_OMID`.
+  },
   &quot;onScreenPositionDetails&quot;: { # On screen position targeting option details. This will be populated in the on_screen_position_details field when targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`. # On screen position details. This field will be populated when the targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`.
     &quot;adType&quot;: &quot;A String&quot;, # Output only. The ad type to target. Only applicable to insertion order targeting and new line items supporting the specified ad type will inherit this targeting option by default. Possible values are: * `AD_TYPE_DISPLAY`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_DISPLAY_DEFAULT`. * `AD_TYPE_VIDEO`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
     &quot;onScreenPosition&quot;: &quot;A String&quot;, # Output only. The on screen position.
@@ -599,6 +630,14 @@
     &quot;parentalStatus&quot;: &quot;A String&quot;, # Output only. The parental status of the audience.
     &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_PARENTAL_STATUS`.
   },
+  &quot;poiDetails&quot;: { # Details for assigned POI targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_POI`. # POI details. This field will be populated when the targeting_type is `TARGETING_TYPE_POI`.
+    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a POI, e.g. &quot;Times Square&quot;, &quot;Space Needle&quot;.
+    &quot;latitude&quot;: 3.14, # Output only. Latitude of the POI rounding to 6th decimal place.
+    &quot;longitude&quot;: 3.14, # Output only. Longitude of the POI rounding to 6th decimal place.
+    &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the POI that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`.
+    &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Input only. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_POI`.
+  },
   &quot;proximityLocationListDetails&quot;: { # Targeting details for proximity location list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`. # Proximity location list details. This field will be populated when the targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`.
     &quot;proximityLocationListId&quot;: &quot;A String&quot;, # Required. ID of the proximity location list. Should refer to the location_list_id field of a LocationList resource whose type is `TARGETING_LOCATION_TYPE_PROXIMITY`.
     &quot;proximityRadiusRange&quot;: &quot;A String&quot;, # Required. Radius range for proximity location list. This represents the size of the area around a chosen location that will be targeted. `All` proximity location targeting under a single resource must have the same radius range value. Set this value to match any existing targeting. If updated, this field will change the radius range for all proximity targeting under the resource.
@@ -697,7 +736,7 @@
 
 Args:
   advertiserId: string, Required. The ID of the advertiser. (required)
-  targetingType: string, Required. Identifies the type of this assigned targeting option. Supported targeting types: * `TARGETING_TYPE_CHANNEL` * `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION` * `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION` (required)
+  targetingType: string, Required. Identifies the type of this assigned targeting option. Supported targeting types: * `TARGETING_TYPE_CHANNEL` * `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION` * `TARGETING_TYPE_OMID` * `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION` (required)
     Allowed values
       TARGETING_TYPE_UNSPECIFIED - Default value when type is not specified or is unknown in this version.
       TARGETING_TYPE_CHANNEL - Target a channel (a custom group of related websites or apps).
@@ -737,7 +776,10 @@
       TARGETING_TYPE_INVENTORY_SOURCE_GROUP - Purchase impressions from a group of deals and auction packages.
       TARGETING_TYPE_EXCHANGE - Purchase impressions from specific exchanges.
       TARGETING_TYPE_SUB_EXCHANGE - Purchase impressions from specific sub-exchanges.
+      TARGETING_TYPE_POI - Target ads around a specific point of interest, such as a notable building, a street address, or latitude/longitude coordinates.
+      TARGETING_TYPE_BUSINESS_CHAIN - Target ads around locations of a business chain within a specific geo region.
       TARGETING_TYPE_NATIVE_CONTENT_POSITION - Target ads to a specific native content position.
+      TARGETING_TYPE_OMID - Target ads in an Open Measurement enabled inventory.
   assignedTargetingOptionId: string, Required. The ID of the assigned targeting option to delete. (required)
   x__xgafv: string, V1 error format.
     Allowed values
@@ -757,7 +799,7 @@
 
 Args:
   advertiserId: string, Required. The ID of the advertiser. (required)
-  targetingType: string, Required. Identifies the type of this assigned targeting option. Supported targeting types: * `TARGETING_TYPE_CHANNEL` * `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION` * `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION` (required)
+  targetingType: string, Required. Identifies the type of this assigned targeting option. Supported targeting types: * `TARGETING_TYPE_CHANNEL` * `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION` * `TARGETING_TYPE_OMID` * `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION` (required)
     Allowed values
       TARGETING_TYPE_UNSPECIFIED - Default value when type is not specified or is unknown in this version.
       TARGETING_TYPE_CHANNEL - Target a channel (a custom group of related websites or apps).
@@ -797,7 +839,10 @@
       TARGETING_TYPE_INVENTORY_SOURCE_GROUP - Purchase impressions from a group of deals and auction packages.
       TARGETING_TYPE_EXCHANGE - Purchase impressions from specific exchanges.
       TARGETING_TYPE_SUB_EXCHANGE - Purchase impressions from specific sub-exchanges.
+      TARGETING_TYPE_POI - Target ads around a specific point of interest, such as a notable building, a street address, or latitude/longitude coordinates.
+      TARGETING_TYPE_BUSINESS_CHAIN - Target ads around locations of a business chain within a specific geo region.
       TARGETING_TYPE_NATIVE_CONTENT_POSITION - Target ads to a specific native content position.
+      TARGETING_TYPE_OMID - Target ads in an Open Measurement enabled inventory.
   assignedTargetingOptionId: string, Required. An identifier unique to the targeting type in this advertiser that identifies the assigned targeting option being requested. (required)
   x__xgafv: string, V1 error format.
     Allowed values
@@ -881,6 +926,12 @@
     &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned browser targeting options on the same resource must have the same value for this field.
     &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BROWSER`.
   },
+  &quot;businessChainDetails&quot;: { # Details for assigned Business chain targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`. # Business chain details. This field will be populated when the targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`.
+    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a business chain, e.g. &quot;KFC&quot;, &quot;Chase Bank&quot;.
+    &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the business chain that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`. The minimum increment for both cases is 0.1. Inputs will be rounded to the nearest acceptable value if it is too granular, e.g. 15.57 will become 15.6.
+    &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BUSINESS_CHAIN`.
+  },
   &quot;carrierAndIspDetails&quot;: { # Details for assigned carrier and ISP targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`. # Carrier and ISP details. This field will be populated when the targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`.
     &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the carrier or ISP.
     &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned carrier and ISP targeting options on the same resource must have the same value for this field.
@@ -969,6 +1020,10 @@
   &quot;negativeKeywordListDetails&quot;: { # Targeting details for negative keyword list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. # Keyword details. This field will be populated when the targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. A maximum of 4 negative keyword lists can be assigned to a resource.
     &quot;negativeKeywordListId&quot;: &quot;A String&quot;, # Required. ID of the negative keyword list. Should refer to the negative_keyword_list_id field of a NegativeKeywordList resource.
   },
+  &quot;omidDetails&quot;: { # Represents a targetable Open Measurement enabled inventory type. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_OMID`. # Open Measurement enabled inventory details. This field will be populated when the targeting_type is `TARGETING_TYPE_OMID`.
+    &quot;omid&quot;: &quot;A String&quot;, # Output only. The type of Open Measurement enabled inventory.
+    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_OMID`.
+  },
   &quot;onScreenPositionDetails&quot;: { # On screen position targeting option details. This will be populated in the on_screen_position_details field when targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`. # On screen position details. This field will be populated when the targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`.
     &quot;adType&quot;: &quot;A String&quot;, # Output only. The ad type to target. Only applicable to insertion order targeting and new line items supporting the specified ad type will inherit this targeting option by default. Possible values are: * `AD_TYPE_DISPLAY`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_DISPLAY_DEFAULT`. * `AD_TYPE_VIDEO`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
     &quot;onScreenPosition&quot;: &quot;A String&quot;, # Output only. The on screen position.
@@ -983,6 +1038,14 @@
     &quot;parentalStatus&quot;: &quot;A String&quot;, # Output only. The parental status of the audience.
     &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_PARENTAL_STATUS`.
   },
+  &quot;poiDetails&quot;: { # Details for assigned POI targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_POI`. # POI details. This field will be populated when the targeting_type is `TARGETING_TYPE_POI`.
+    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a POI, e.g. &quot;Times Square&quot;, &quot;Space Needle&quot;.
+    &quot;latitude&quot;: 3.14, # Output only. Latitude of the POI rounding to 6th decimal place.
+    &quot;longitude&quot;: 3.14, # Output only. Longitude of the POI rounding to 6th decimal place.
+    &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the POI that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`.
+    &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Input only. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_POI`.
+  },
   &quot;proximityLocationListDetails&quot;: { # Targeting details for proximity location list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`. # Proximity location list details. This field will be populated when the targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`.
     &quot;proximityLocationListId&quot;: &quot;A String&quot;, # Required. ID of the proximity location list. Should refer to the location_list_id field of a LocationList resource whose type is `TARGETING_LOCATION_TYPE_PROXIMITY`.
     &quot;proximityRadiusRange&quot;: &quot;A String&quot;, # Required. Radius range for proximity location list. This represents the size of the area around a chosen location that will be targeted. `All` proximity location targeting under a single resource must have the same radius range value. Set this value to match any existing targeting. If updated, this field will change the radius range for all proximity targeting under the resource.
@@ -1081,7 +1144,7 @@
 
 Args:
   advertiserId: string, Required. The ID of the advertiser. (required)
-  targetingType: string, Required. Identifies the type of assigned targeting options to list. Supported targeting types: * `TARGETING_TYPE_CHANNEL` * `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION` * `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION` (required)
+  targetingType: string, Required. Identifies the type of assigned targeting options to list. Supported targeting types: * `TARGETING_TYPE_CHANNEL` * `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION` * `TARGETING_TYPE_OMID` * `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION` (required)
     Allowed values
       TARGETING_TYPE_UNSPECIFIED - Default value when type is not specified or is unknown in this version.
       TARGETING_TYPE_CHANNEL - Target a channel (a custom group of related websites or apps).
@@ -1121,7 +1184,10 @@
       TARGETING_TYPE_INVENTORY_SOURCE_GROUP - Purchase impressions from a group of deals and auction packages.
       TARGETING_TYPE_EXCHANGE - Purchase impressions from specific exchanges.
       TARGETING_TYPE_SUB_EXCHANGE - Purchase impressions from specific sub-exchanges.
+      TARGETING_TYPE_POI - Target ads around a specific point of interest, such as a notable building, a street address, or latitude/longitude coordinates.
+      TARGETING_TYPE_BUSINESS_CHAIN - Target ads around locations of a business chain within a specific geo region.
       TARGETING_TYPE_NATIVE_CONTENT_POSITION - Target ads to a specific native content position.
+      TARGETING_TYPE_OMID - Target ads in an Open Measurement enabled inventory.
   filter: string, Allows filtering by assigned targeting option properties. Supported syntax: * Filter expressions are made up of one or more restrictions. * Restrictions can be combined by the logical operator `OR`. * A restriction has the form of `{field} {operator} {value}`. * The operator must be `EQUALS (=)`. * Supported fields: - `assignedTargetingOptionId` Examples: * AssignedTargetingOption with ID 123456 `assignedTargetingOptionId=&quot;123456&quot;` The length of this field should be no more than 500 characters.
   orderBy: string, Field by which to sort the list. Acceptable values are: * `assignedTargetingOptionId` (default) The default sorting order is ascending. To specify descending order for a field, a suffix &quot;desc&quot; should be added to the field name. Example: `assignedTargetingOptionId desc`.
   pageSize: integer, Requested page size. Must be between `1` and `5000`. If unspecified will default to `100`. Returns error code `INVALID_ARGUMENT` if an invalid value is specified.
@@ -1210,6 +1276,12 @@
         &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned browser targeting options on the same resource must have the same value for this field.
         &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BROWSER`.
       },
+      &quot;businessChainDetails&quot;: { # Details for assigned Business chain targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`. # Business chain details. This field will be populated when the targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`.
+        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a business chain, e.g. &quot;KFC&quot;, &quot;Chase Bank&quot;.
+        &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the business chain that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`. The minimum increment for both cases is 0.1. Inputs will be rounded to the nearest acceptable value if it is too granular, e.g. 15.57 will become 15.6.
+        &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BUSINESS_CHAIN`.
+      },
       &quot;carrierAndIspDetails&quot;: { # Details for assigned carrier and ISP targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`. # Carrier and ISP details. This field will be populated when the targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`.
         &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the carrier or ISP.
         &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned carrier and ISP targeting options on the same resource must have the same value for this field.
@@ -1298,6 +1370,10 @@
       &quot;negativeKeywordListDetails&quot;: { # Targeting details for negative keyword list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. # Keyword details. This field will be populated when the targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. A maximum of 4 negative keyword lists can be assigned to a resource.
         &quot;negativeKeywordListId&quot;: &quot;A String&quot;, # Required. ID of the negative keyword list. Should refer to the negative_keyword_list_id field of a NegativeKeywordList resource.
       },
+      &quot;omidDetails&quot;: { # Represents a targetable Open Measurement enabled inventory type. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_OMID`. # Open Measurement enabled inventory details. This field will be populated when the targeting_type is `TARGETING_TYPE_OMID`.
+        &quot;omid&quot;: &quot;A String&quot;, # Output only. The type of Open Measurement enabled inventory.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_OMID`.
+      },
       &quot;onScreenPositionDetails&quot;: { # On screen position targeting option details. This will be populated in the on_screen_position_details field when targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`. # On screen position details. This field will be populated when the targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`.
         &quot;adType&quot;: &quot;A String&quot;, # Output only. The ad type to target. Only applicable to insertion order targeting and new line items supporting the specified ad type will inherit this targeting option by default. Possible values are: * `AD_TYPE_DISPLAY`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_DISPLAY_DEFAULT`. * `AD_TYPE_VIDEO`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
         &quot;onScreenPosition&quot;: &quot;A String&quot;, # Output only. The on screen position.
@@ -1312,6 +1388,14 @@
         &quot;parentalStatus&quot;: &quot;A String&quot;, # Output only. The parental status of the audience.
         &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_PARENTAL_STATUS`.
       },
+      &quot;poiDetails&quot;: { # Details for assigned POI targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_POI`. # POI details. This field will be populated when the targeting_type is `TARGETING_TYPE_POI`.
+        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a POI, e.g. &quot;Times Square&quot;, &quot;Space Needle&quot;.
+        &quot;latitude&quot;: 3.14, # Output only. Latitude of the POI rounding to 6th decimal place.
+        &quot;longitude&quot;: 3.14, # Output only. Longitude of the POI rounding to 6th decimal place.
+        &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the POI that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`.
+        &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Input only. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_POI`.
+      },
       &quot;proximityLocationListDetails&quot;: { # Targeting details for proximity location list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`. # Proximity location list details. This field will be populated when the targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`.
         &quot;proximityLocationListId&quot;: &quot;A String&quot;, # Required. ID of the proximity location list. Should refer to the location_list_id field of a LocationList resource whose type is `TARGETING_LOCATION_TYPE_PROXIMITY`.
         &quot;proximityRadiusRange&quot;: &quot;A String&quot;, # Required. Radius range for proximity location list. This represents the size of the area around a chosen location that will be targeted. `All` proximity location targeting under a single resource must have the same radius range value. Set this value to match any existing targeting. If updated, this field will change the radius range for all proximity targeting under the resource.
diff --git a/docs/dyn/displayvideo_v1.partners.html b/docs/dyn/displayvideo_v1.partners.html
index 2d5a65f..ef31037 100644
--- a/docs/dyn/displayvideo_v1.partners.html
+++ b/docs/dyn/displayvideo_v1.partners.html
@@ -187,6 +187,12 @@
             &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned browser targeting options on the same resource must have the same value for this field.
             &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BROWSER`.
           },
+          &quot;businessChainDetails&quot;: { # Details for assigned Business chain targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`. # Business chain details. This field will be populated when the targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`.
+            &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a business chain, e.g. &quot;KFC&quot;, &quot;Chase Bank&quot;.
+            &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the business chain that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`. The minimum increment for both cases is 0.1. Inputs will be rounded to the nearest acceptable value if it is too granular, e.g. 15.57 will become 15.6.
+            &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+            &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BUSINESS_CHAIN`.
+          },
           &quot;carrierAndIspDetails&quot;: { # Details for assigned carrier and ISP targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`. # Carrier and ISP details. This field will be populated when the targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`.
             &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the carrier or ISP.
             &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned carrier and ISP targeting options on the same resource must have the same value for this field.
@@ -275,6 +281,10 @@
           &quot;negativeKeywordListDetails&quot;: { # Targeting details for negative keyword list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. # Keyword details. This field will be populated when the targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. A maximum of 4 negative keyword lists can be assigned to a resource.
             &quot;negativeKeywordListId&quot;: &quot;A String&quot;, # Required. ID of the negative keyword list. Should refer to the negative_keyword_list_id field of a NegativeKeywordList resource.
           },
+          &quot;omidDetails&quot;: { # Represents a targetable Open Measurement enabled inventory type. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_OMID`. # Open Measurement enabled inventory details. This field will be populated when the targeting_type is `TARGETING_TYPE_OMID`.
+            &quot;omid&quot;: &quot;A String&quot;, # Output only. The type of Open Measurement enabled inventory.
+            &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_OMID`.
+          },
           &quot;onScreenPositionDetails&quot;: { # On screen position targeting option details. This will be populated in the on_screen_position_details field when targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`. # On screen position details. This field will be populated when the targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`.
             &quot;adType&quot;: &quot;A String&quot;, # Output only. The ad type to target. Only applicable to insertion order targeting and new line items supporting the specified ad type will inherit this targeting option by default. Possible values are: * `AD_TYPE_DISPLAY`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_DISPLAY_DEFAULT`. * `AD_TYPE_VIDEO`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
             &quot;onScreenPosition&quot;: &quot;A String&quot;, # Output only. The on screen position.
@@ -289,6 +299,14 @@
             &quot;parentalStatus&quot;: &quot;A String&quot;, # Output only. The parental status of the audience.
             &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_PARENTAL_STATUS`.
           },
+          &quot;poiDetails&quot;: { # Details for assigned POI targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_POI`. # POI details. This field will be populated when the targeting_type is `TARGETING_TYPE_POI`.
+            &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a POI, e.g. &quot;Times Square&quot;, &quot;Space Needle&quot;.
+            &quot;latitude&quot;: 3.14, # Output only. Latitude of the POI rounding to 6th decimal place.
+            &quot;longitude&quot;: 3.14, # Output only. Longitude of the POI rounding to 6th decimal place.
+            &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the POI that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`.
+            &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+            &quot;targetingOptionId&quot;: &quot;A String&quot;, # Input only. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_POI`.
+          },
           &quot;proximityLocationListDetails&quot;: { # Targeting details for proximity location list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`. # Proximity location list details. This field will be populated when the targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`.
             &quot;proximityLocationListId&quot;: &quot;A String&quot;, # Required. ID of the proximity location list. Should refer to the location_list_id field of a LocationList resource whose type is `TARGETING_LOCATION_TYPE_PROXIMITY`.
             &quot;proximityRadiusRange&quot;: &quot;A String&quot;, # Required. Radius range for proximity location list. This represents the size of the area around a chosen location that will be targeted. `All` proximity location targeting under a single resource must have the same radius range value. Set this value to match any existing targeting. If updated, this field will change the radius range for all proximity targeting under the resource.
@@ -477,6 +495,12 @@
         &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned browser targeting options on the same resource must have the same value for this field.
         &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BROWSER`.
       },
+      &quot;businessChainDetails&quot;: { # Details for assigned Business chain targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`. # Business chain details. This field will be populated when the targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`.
+        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a business chain, e.g. &quot;KFC&quot;, &quot;Chase Bank&quot;.
+        &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the business chain that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`. The minimum increment for both cases is 0.1. Inputs will be rounded to the nearest acceptable value if it is too granular, e.g. 15.57 will become 15.6.
+        &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BUSINESS_CHAIN`.
+      },
       &quot;carrierAndIspDetails&quot;: { # Details for assigned carrier and ISP targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`. # Carrier and ISP details. This field will be populated when the targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`.
         &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the carrier or ISP.
         &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned carrier and ISP targeting options on the same resource must have the same value for this field.
@@ -565,6 +589,10 @@
       &quot;negativeKeywordListDetails&quot;: { # Targeting details for negative keyword list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. # Keyword details. This field will be populated when the targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. A maximum of 4 negative keyword lists can be assigned to a resource.
         &quot;negativeKeywordListId&quot;: &quot;A String&quot;, # Required. ID of the negative keyword list. Should refer to the negative_keyword_list_id field of a NegativeKeywordList resource.
       },
+      &quot;omidDetails&quot;: { # Represents a targetable Open Measurement enabled inventory type. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_OMID`. # Open Measurement enabled inventory details. This field will be populated when the targeting_type is `TARGETING_TYPE_OMID`.
+        &quot;omid&quot;: &quot;A String&quot;, # Output only. The type of Open Measurement enabled inventory.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_OMID`.
+      },
       &quot;onScreenPositionDetails&quot;: { # On screen position targeting option details. This will be populated in the on_screen_position_details field when targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`. # On screen position details. This field will be populated when the targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`.
         &quot;adType&quot;: &quot;A String&quot;, # Output only. The ad type to target. Only applicable to insertion order targeting and new line items supporting the specified ad type will inherit this targeting option by default. Possible values are: * `AD_TYPE_DISPLAY`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_DISPLAY_DEFAULT`. * `AD_TYPE_VIDEO`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
         &quot;onScreenPosition&quot;: &quot;A String&quot;, # Output only. The on screen position.
@@ -579,6 +607,14 @@
         &quot;parentalStatus&quot;: &quot;A String&quot;, # Output only. The parental status of the audience.
         &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_PARENTAL_STATUS`.
       },
+      &quot;poiDetails&quot;: { # Details for assigned POI targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_POI`. # POI details. This field will be populated when the targeting_type is `TARGETING_TYPE_POI`.
+        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a POI, e.g. &quot;Times Square&quot;, &quot;Space Needle&quot;.
+        &quot;latitude&quot;: 3.14, # Output only. Latitude of the POI rounding to 6th decimal place.
+        &quot;longitude&quot;: 3.14, # Output only. Longitude of the POI rounding to 6th decimal place.
+        &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the POI that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`.
+        &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Input only. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_POI`.
+      },
       &quot;proximityLocationListDetails&quot;: { # Targeting details for proximity location list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`. # Proximity location list details. This field will be populated when the targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`.
         &quot;proximityLocationListId&quot;: &quot;A String&quot;, # Required. ID of the proximity location list. Should refer to the location_list_id field of a LocationList resource whose type is `TARGETING_LOCATION_TYPE_PROXIMITY`.
         &quot;proximityRadiusRange&quot;: &quot;A String&quot;, # Required. Radius range for proximity location list. This represents the size of the area around a chosen location that will be targeted. `All` proximity location targeting under a single resource must have the same radius range value. Set this value to match any existing targeting. If updated, this field will change the radius range for all proximity targeting under the resource.
diff --git a/docs/dyn/displayvideo_v1.partners.targetingTypes.assignedTargetingOptions.html b/docs/dyn/displayvideo_v1.partners.targetingTypes.assignedTargetingOptions.html
index 611251f..3bf9819 100644
--- a/docs/dyn/displayvideo_v1.partners.targetingTypes.assignedTargetingOptions.html
+++ b/docs/dyn/displayvideo_v1.partners.targetingTypes.assignedTargetingOptions.html
@@ -144,7 +144,10 @@
       TARGETING_TYPE_INVENTORY_SOURCE_GROUP - Purchase impressions from a group of deals and auction packages.
       TARGETING_TYPE_EXCHANGE - Purchase impressions from specific exchanges.
       TARGETING_TYPE_SUB_EXCHANGE - Purchase impressions from specific sub-exchanges.
+      TARGETING_TYPE_POI - Target ads around a specific point of interest, such as a notable building, a street address, or latitude/longitude coordinates.
+      TARGETING_TYPE_BUSINESS_CHAIN - Target ads around locations of a business chain within a specific geo region.
       TARGETING_TYPE_NATIVE_CONTENT_POSITION - Target ads to a specific native content position.
+      TARGETING_TYPE_OMID - Target ads in an Open Measurement enabled inventory.
   body: object, The request body.
     The object takes the form of:
 
@@ -222,6 +225,12 @@
     &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned browser targeting options on the same resource must have the same value for this field.
     &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BROWSER`.
   },
+  &quot;businessChainDetails&quot;: { # Details for assigned Business chain targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`. # Business chain details. This field will be populated when the targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`.
+    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a business chain, e.g. &quot;KFC&quot;, &quot;Chase Bank&quot;.
+    &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the business chain that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`. The minimum increment for both cases is 0.1. Inputs will be rounded to the nearest acceptable value if it is too granular, e.g. 15.57 will become 15.6.
+    &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BUSINESS_CHAIN`.
+  },
   &quot;carrierAndIspDetails&quot;: { # Details for assigned carrier and ISP targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`. # Carrier and ISP details. This field will be populated when the targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`.
     &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the carrier or ISP.
     &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned carrier and ISP targeting options on the same resource must have the same value for this field.
@@ -310,6 +319,10 @@
   &quot;negativeKeywordListDetails&quot;: { # Targeting details for negative keyword list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. # Keyword details. This field will be populated when the targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. A maximum of 4 negative keyword lists can be assigned to a resource.
     &quot;negativeKeywordListId&quot;: &quot;A String&quot;, # Required. ID of the negative keyword list. Should refer to the negative_keyword_list_id field of a NegativeKeywordList resource.
   },
+  &quot;omidDetails&quot;: { # Represents a targetable Open Measurement enabled inventory type. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_OMID`. # Open Measurement enabled inventory details. This field will be populated when the targeting_type is `TARGETING_TYPE_OMID`.
+    &quot;omid&quot;: &quot;A String&quot;, # Output only. The type of Open Measurement enabled inventory.
+    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_OMID`.
+  },
   &quot;onScreenPositionDetails&quot;: { # On screen position targeting option details. This will be populated in the on_screen_position_details field when targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`. # On screen position details. This field will be populated when the targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`.
     &quot;adType&quot;: &quot;A String&quot;, # Output only. The ad type to target. Only applicable to insertion order targeting and new line items supporting the specified ad type will inherit this targeting option by default. Possible values are: * `AD_TYPE_DISPLAY`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_DISPLAY_DEFAULT`. * `AD_TYPE_VIDEO`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
     &quot;onScreenPosition&quot;: &quot;A String&quot;, # Output only. The on screen position.
@@ -324,6 +337,14 @@
     &quot;parentalStatus&quot;: &quot;A String&quot;, # Output only. The parental status of the audience.
     &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_PARENTAL_STATUS`.
   },
+  &quot;poiDetails&quot;: { # Details for assigned POI targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_POI`. # POI details. This field will be populated when the targeting_type is `TARGETING_TYPE_POI`.
+    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a POI, e.g. &quot;Times Square&quot;, &quot;Space Needle&quot;.
+    &quot;latitude&quot;: 3.14, # Output only. Latitude of the POI rounding to 6th decimal place.
+    &quot;longitude&quot;: 3.14, # Output only. Longitude of the POI rounding to 6th decimal place.
+    &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the POI that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`.
+    &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Input only. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_POI`.
+  },
   &quot;proximityLocationListDetails&quot;: { # Targeting details for proximity location list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`. # Proximity location list details. This field will be populated when the targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`.
     &quot;proximityLocationListId&quot;: &quot;A String&quot;, # Required. ID of the proximity location list. Should refer to the location_list_id field of a LocationList resource whose type is `TARGETING_LOCATION_TYPE_PROXIMITY`.
     &quot;proximityRadiusRange&quot;: &quot;A String&quot;, # Required. Radius range for proximity location list. This represents the size of the area around a chosen location that will be targeted. `All` proximity location targeting under a single resource must have the same radius range value. Set this value to match any existing targeting. If updated, this field will change the radius range for all proximity targeting under the resource.
@@ -497,6 +518,12 @@
     &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned browser targeting options on the same resource must have the same value for this field.
     &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BROWSER`.
   },
+  &quot;businessChainDetails&quot;: { # Details for assigned Business chain targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`. # Business chain details. This field will be populated when the targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`.
+    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a business chain, e.g. &quot;KFC&quot;, &quot;Chase Bank&quot;.
+    &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the business chain that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`. The minimum increment for both cases is 0.1. Inputs will be rounded to the nearest acceptable value if it is too granular, e.g. 15.57 will become 15.6.
+    &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BUSINESS_CHAIN`.
+  },
   &quot;carrierAndIspDetails&quot;: { # Details for assigned carrier and ISP targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`. # Carrier and ISP details. This field will be populated when the targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`.
     &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the carrier or ISP.
     &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned carrier and ISP targeting options on the same resource must have the same value for this field.
@@ -585,6 +612,10 @@
   &quot;negativeKeywordListDetails&quot;: { # Targeting details for negative keyword list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. # Keyword details. This field will be populated when the targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. A maximum of 4 negative keyword lists can be assigned to a resource.
     &quot;negativeKeywordListId&quot;: &quot;A String&quot;, # Required. ID of the negative keyword list. Should refer to the negative_keyword_list_id field of a NegativeKeywordList resource.
   },
+  &quot;omidDetails&quot;: { # Represents a targetable Open Measurement enabled inventory type. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_OMID`. # Open Measurement enabled inventory details. This field will be populated when the targeting_type is `TARGETING_TYPE_OMID`.
+    &quot;omid&quot;: &quot;A String&quot;, # Output only. The type of Open Measurement enabled inventory.
+    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_OMID`.
+  },
   &quot;onScreenPositionDetails&quot;: { # On screen position targeting option details. This will be populated in the on_screen_position_details field when targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`. # On screen position details. This field will be populated when the targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`.
     &quot;adType&quot;: &quot;A String&quot;, # Output only. The ad type to target. Only applicable to insertion order targeting and new line items supporting the specified ad type will inherit this targeting option by default. Possible values are: * `AD_TYPE_DISPLAY`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_DISPLAY_DEFAULT`. * `AD_TYPE_VIDEO`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
     &quot;onScreenPosition&quot;: &quot;A String&quot;, # Output only. The on screen position.
@@ -599,6 +630,14 @@
     &quot;parentalStatus&quot;: &quot;A String&quot;, # Output only. The parental status of the audience.
     &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_PARENTAL_STATUS`.
   },
+  &quot;poiDetails&quot;: { # Details for assigned POI targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_POI`. # POI details. This field will be populated when the targeting_type is `TARGETING_TYPE_POI`.
+    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a POI, e.g. &quot;Times Square&quot;, &quot;Space Needle&quot;.
+    &quot;latitude&quot;: 3.14, # Output only. Latitude of the POI rounding to 6th decimal place.
+    &quot;longitude&quot;: 3.14, # Output only. Longitude of the POI rounding to 6th decimal place.
+    &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the POI that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`.
+    &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Input only. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_POI`.
+  },
   &quot;proximityLocationListDetails&quot;: { # Targeting details for proximity location list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`. # Proximity location list details. This field will be populated when the targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`.
     &quot;proximityLocationListId&quot;: &quot;A String&quot;, # Required. ID of the proximity location list. Should refer to the location_list_id field of a LocationList resource whose type is `TARGETING_LOCATION_TYPE_PROXIMITY`.
     &quot;proximityRadiusRange&quot;: &quot;A String&quot;, # Required. Radius range for proximity location list. This represents the size of the area around a chosen location that will be targeted. `All` proximity location targeting under a single resource must have the same radius range value. Set this value to match any existing targeting. If updated, this field will change the radius range for all proximity targeting under the resource.
@@ -737,7 +776,10 @@
       TARGETING_TYPE_INVENTORY_SOURCE_GROUP - Purchase impressions from a group of deals and auction packages.
       TARGETING_TYPE_EXCHANGE - Purchase impressions from specific exchanges.
       TARGETING_TYPE_SUB_EXCHANGE - Purchase impressions from specific sub-exchanges.
+      TARGETING_TYPE_POI - Target ads around a specific point of interest, such as a notable building, a street address, or latitude/longitude coordinates.
+      TARGETING_TYPE_BUSINESS_CHAIN - Target ads around locations of a business chain within a specific geo region.
       TARGETING_TYPE_NATIVE_CONTENT_POSITION - Target ads to a specific native content position.
+      TARGETING_TYPE_OMID - Target ads in an Open Measurement enabled inventory.
   assignedTargetingOptionId: string, Required. The ID of the assigned targeting option to delete. (required)
   x__xgafv: string, V1 error format.
     Allowed values
@@ -797,7 +839,10 @@
       TARGETING_TYPE_INVENTORY_SOURCE_GROUP - Purchase impressions from a group of deals and auction packages.
       TARGETING_TYPE_EXCHANGE - Purchase impressions from specific exchanges.
       TARGETING_TYPE_SUB_EXCHANGE - Purchase impressions from specific sub-exchanges.
+      TARGETING_TYPE_POI - Target ads around a specific point of interest, such as a notable building, a street address, or latitude/longitude coordinates.
+      TARGETING_TYPE_BUSINESS_CHAIN - Target ads around locations of a business chain within a specific geo region.
       TARGETING_TYPE_NATIVE_CONTENT_POSITION - Target ads to a specific native content position.
+      TARGETING_TYPE_OMID - Target ads in an Open Measurement enabled inventory.
   assignedTargetingOptionId: string, Required. An identifier unique to the targeting type in this partner that identifies the assigned targeting option being requested. (required)
   x__xgafv: string, V1 error format.
     Allowed values
@@ -881,6 +926,12 @@
     &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned browser targeting options on the same resource must have the same value for this field.
     &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BROWSER`.
   },
+  &quot;businessChainDetails&quot;: { # Details for assigned Business chain targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`. # Business chain details. This field will be populated when the targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`.
+    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a business chain, e.g. &quot;KFC&quot;, &quot;Chase Bank&quot;.
+    &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the business chain that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`. The minimum increment for both cases is 0.1. Inputs will be rounded to the nearest acceptable value if it is too granular, e.g. 15.57 will become 15.6.
+    &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BUSINESS_CHAIN`.
+  },
   &quot;carrierAndIspDetails&quot;: { # Details for assigned carrier and ISP targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`. # Carrier and ISP details. This field will be populated when the targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`.
     &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the carrier or ISP.
     &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned carrier and ISP targeting options on the same resource must have the same value for this field.
@@ -969,6 +1020,10 @@
   &quot;negativeKeywordListDetails&quot;: { # Targeting details for negative keyword list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. # Keyword details. This field will be populated when the targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. A maximum of 4 negative keyword lists can be assigned to a resource.
     &quot;negativeKeywordListId&quot;: &quot;A String&quot;, # Required. ID of the negative keyword list. Should refer to the negative_keyword_list_id field of a NegativeKeywordList resource.
   },
+  &quot;omidDetails&quot;: { # Represents a targetable Open Measurement enabled inventory type. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_OMID`. # Open Measurement enabled inventory details. This field will be populated when the targeting_type is `TARGETING_TYPE_OMID`.
+    &quot;omid&quot;: &quot;A String&quot;, # Output only. The type of Open Measurement enabled inventory.
+    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_OMID`.
+  },
   &quot;onScreenPositionDetails&quot;: { # On screen position targeting option details. This will be populated in the on_screen_position_details field when targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`. # On screen position details. This field will be populated when the targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`.
     &quot;adType&quot;: &quot;A String&quot;, # Output only. The ad type to target. Only applicable to insertion order targeting and new line items supporting the specified ad type will inherit this targeting option by default. Possible values are: * `AD_TYPE_DISPLAY`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_DISPLAY_DEFAULT`. * `AD_TYPE_VIDEO`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
     &quot;onScreenPosition&quot;: &quot;A String&quot;, # Output only. The on screen position.
@@ -983,6 +1038,14 @@
     &quot;parentalStatus&quot;: &quot;A String&quot;, # Output only. The parental status of the audience.
     &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_PARENTAL_STATUS`.
   },
+  &quot;poiDetails&quot;: { # Details for assigned POI targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_POI`. # POI details. This field will be populated when the targeting_type is `TARGETING_TYPE_POI`.
+    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a POI, e.g. &quot;Times Square&quot;, &quot;Space Needle&quot;.
+    &quot;latitude&quot;: 3.14, # Output only. Latitude of the POI rounding to 6th decimal place.
+    &quot;longitude&quot;: 3.14, # Output only. Longitude of the POI rounding to 6th decimal place.
+    &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the POI that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`.
+    &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Input only. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_POI`.
+  },
   &quot;proximityLocationListDetails&quot;: { # Targeting details for proximity location list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`. # Proximity location list details. This field will be populated when the targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`.
     &quot;proximityLocationListId&quot;: &quot;A String&quot;, # Required. ID of the proximity location list. Should refer to the location_list_id field of a LocationList resource whose type is `TARGETING_LOCATION_TYPE_PROXIMITY`.
     &quot;proximityRadiusRange&quot;: &quot;A String&quot;, # Required. Radius range for proximity location list. This represents the size of the area around a chosen location that will be targeted. `All` proximity location targeting under a single resource must have the same radius range value. Set this value to match any existing targeting. If updated, this field will change the radius range for all proximity targeting under the resource.
@@ -1121,7 +1184,10 @@
       TARGETING_TYPE_INVENTORY_SOURCE_GROUP - Purchase impressions from a group of deals and auction packages.
       TARGETING_TYPE_EXCHANGE - Purchase impressions from specific exchanges.
       TARGETING_TYPE_SUB_EXCHANGE - Purchase impressions from specific sub-exchanges.
+      TARGETING_TYPE_POI - Target ads around a specific point of interest, such as a notable building, a street address, or latitude/longitude coordinates.
+      TARGETING_TYPE_BUSINESS_CHAIN - Target ads around locations of a business chain within a specific geo region.
       TARGETING_TYPE_NATIVE_CONTENT_POSITION - Target ads to a specific native content position.
+      TARGETING_TYPE_OMID - Target ads in an Open Measurement enabled inventory.
   filter: string, Allows filtering by assigned targeting option properties. Supported syntax: * Filter expressions are made up of one or more restrictions. * Restrictions can be combined by the logical operator `OR`. * A restriction has the form of `{field} {operator} {value}`. * The operator must be `EQUALS (=)`. * Supported fields: - `assignedTargetingOptionId` Examples: * AssignedTargetingOption with ID 123456 `assignedTargetingOptionId=&quot;123456&quot;` The length of this field should be no more than 500 characters.
   orderBy: string, Field by which to sort the list. Acceptable values are: * `assignedTargetingOptionId` (default) The default sorting order is ascending. To specify descending order for a field, a suffix &quot;desc&quot; should be added to the field name. Example: `assignedTargetingOptionId desc`.
   pageSize: integer, Requested page size. Must be between `1` and `100`. If unspecified will default to `100`. Returns error code `INVALID_ARGUMENT` if an invalid value is specified.
@@ -1210,6 +1276,12 @@
         &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned browser targeting options on the same resource must have the same value for this field.
         &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BROWSER`.
       },
+      &quot;businessChainDetails&quot;: { # Details for assigned Business chain targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`. # Business chain details. This field will be populated when the targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`.
+        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a business chain, e.g. &quot;KFC&quot;, &quot;Chase Bank&quot;.
+        &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the business chain that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`. The minimum increment for both cases is 0.1. Inputs will be rounded to the nearest acceptable value if it is too granular, e.g. 15.57 will become 15.6.
+        &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BUSINESS_CHAIN`.
+      },
       &quot;carrierAndIspDetails&quot;: { # Details for assigned carrier and ISP targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`. # Carrier and ISP details. This field will be populated when the targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`.
         &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the carrier or ISP.
         &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned carrier and ISP targeting options on the same resource must have the same value for this field.
@@ -1298,6 +1370,10 @@
       &quot;negativeKeywordListDetails&quot;: { # Targeting details for negative keyword list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. # Keyword details. This field will be populated when the targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. A maximum of 4 negative keyword lists can be assigned to a resource.
         &quot;negativeKeywordListId&quot;: &quot;A String&quot;, # Required. ID of the negative keyword list. Should refer to the negative_keyword_list_id field of a NegativeKeywordList resource.
       },
+      &quot;omidDetails&quot;: { # Represents a targetable Open Measurement enabled inventory type. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_OMID`. # Open Measurement enabled inventory details. This field will be populated when the targeting_type is `TARGETING_TYPE_OMID`.
+        &quot;omid&quot;: &quot;A String&quot;, # Output only. The type of Open Measurement enabled inventory.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_OMID`.
+      },
       &quot;onScreenPositionDetails&quot;: { # On screen position targeting option details. This will be populated in the on_screen_position_details field when targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`. # On screen position details. This field will be populated when the targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`.
         &quot;adType&quot;: &quot;A String&quot;, # Output only. The ad type to target. Only applicable to insertion order targeting and new line items supporting the specified ad type will inherit this targeting option by default. Possible values are: * `AD_TYPE_DISPLAY`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_DISPLAY_DEFAULT`. * `AD_TYPE_VIDEO`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
         &quot;onScreenPosition&quot;: &quot;A String&quot;, # Output only. The on screen position.
@@ -1312,6 +1388,14 @@
         &quot;parentalStatus&quot;: &quot;A String&quot;, # Output only. The parental status of the audience.
         &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_PARENTAL_STATUS`.
       },
+      &quot;poiDetails&quot;: { # Details for assigned POI targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_POI`. # POI details. This field will be populated when the targeting_type is `TARGETING_TYPE_POI`.
+        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a POI, e.g. &quot;Times Square&quot;, &quot;Space Needle&quot;.
+        &quot;latitude&quot;: 3.14, # Output only. Latitude of the POI rounding to 6th decimal place.
+        &quot;longitude&quot;: 3.14, # Output only. Longitude of the POI rounding to 6th decimal place.
+        &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the POI that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`.
+        &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
+        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Input only. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_POI`.
+      },
       &quot;proximityLocationListDetails&quot;: { # Targeting details for proximity location list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`. # Proximity location list details. This field will be populated when the targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`.
         &quot;proximityLocationListId&quot;: &quot;A String&quot;, # Required. ID of the proximity location list. Should refer to the location_list_id field of a LocationList resource whose type is `TARGETING_LOCATION_TYPE_PROXIMITY`.
         &quot;proximityRadiusRange&quot;: &quot;A String&quot;, # Required. Radius range for proximity location list. This represents the size of the area around a chosen location that will be targeted. `All` proximity location targeting under a single resource must have the same radius range value. Set this value to match any existing targeting. If updated, this field will change the radius range for all proximity targeting under the resource.
diff --git a/docs/dyn/displayvideo_v1.targetingTypes.targetingOptions.html b/docs/dyn/displayvideo_v1.targetingTypes.targetingOptions.html
index 43b690b..b56241b 100644
--- a/docs/dyn/displayvideo_v1.targetingTypes.targetingOptions.html
+++ b/docs/dyn/displayvideo_v1.targetingTypes.targetingOptions.html
@@ -143,7 +143,10 @@
       TARGETING_TYPE_INVENTORY_SOURCE_GROUP - Purchase impressions from a group of deals and auction packages.
       TARGETING_TYPE_EXCHANGE - Purchase impressions from specific exchanges.
       TARGETING_TYPE_SUB_EXCHANGE - Purchase impressions from specific sub-exchanges.
+      TARGETING_TYPE_POI - Target ads around a specific point of interest, such as a notable building, a street address, or latitude/longitude coordinates.
+      TARGETING_TYPE_BUSINESS_CHAIN - Target ads around locations of a business chain within a specific geo region.
       TARGETING_TYPE_NATIVE_CONTENT_POSITION - Target ads to a specific native content position.
+      TARGETING_TYPE_OMID - Target ads in an Open Measurement enabled inventory.
   targetingOptionId: string, Required. The ID of the of targeting option to retrieve. (required)
   advertiserId: string, Required. The Advertiser this request is being made in the context of.
   x__xgafv: string, V1 error format.
@@ -167,6 +170,11 @@
   &quot;browserDetails&quot;: { # Represents a targetable browser. This will be populated in the browser_details field when targeting_type is `TARGETING_TYPE_BROWSER`. # Browser details.
     &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the browser.
   },
+  &quot;businessChainDetails&quot;: { # Represents a targetable business chain within a geo region. This will be populated in the business_chain_details field when targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`. # Business chain resource details.
+    &quot;businessChain&quot;: &quot;A String&quot;, # Output only. The display name of the business chain, e.g. &quot;KFC&quot;, &quot;Chase Bank&quot;.
+    &quot;geoRegion&quot;: &quot;A String&quot;, # Output only. The display name of the geographic region, e.g. &quot;Ontario, Canada&quot;.
+    &quot;geoRegionType&quot;: &quot;A String&quot;, # Output only. The type of the geographic region.
+  },
   &quot;carrierAndIspDetails&quot;: { # Represents a targetable carrier or ISP. This will be populated in the carrier_and_isp_details field of a TargetingOption when targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`. # Carrier and ISP details.
     &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the carrier or ISP.
     &quot;type&quot;: &quot;A String&quot;, # Output only. The type indicating if it&#x27;s carrier or ISP.
@@ -212,6 +220,9 @@
   &quot;nativeContentPositionDetails&quot;: { # Represents a targetable native content position. This will be populated in the native_content_position_details field when targeting_type is `TARGETING_TYPE_NATIVE_CONTENT_POSITION`. # Native content position details.
     &quot;contentPosition&quot;: &quot;A String&quot;, # Output only. The content position.
   },
+  &quot;omidDetails&quot;: { # Represents a targetable Open Measurement enabled inventory type. This will be populated in the omid_details field when targeting_type is `TARGETING_TYPE_OMID`. # Open Measurement enabled inventory details.
+    &quot;omid&quot;: &quot;A String&quot;, # Output only. The type of Open Measurement enabled inventory.
+  },
   &quot;onScreenPositionDetails&quot;: { # Represents a targetable on screen position, which could be used by display and video ads. This will be populated in the on_screen_position_details field when targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`. # On screen position details.
     &quot;onScreenPosition&quot;: &quot;A String&quot;, # Output only. The on screen position.
   },
@@ -221,6 +232,11 @@
   &quot;parentalStatusDetails&quot;: { # Represents a targetable parental status. This will be populated in the parental_status_details field of a TargetingOption when targeting_type is `TARGETING_TYPE_PARENTAL_STATUS`. # Parental status details.
     &quot;parentalStatus&quot;: &quot;A String&quot;, # Output only. The parental status of an audience.
   },
+  &quot;poiDetails&quot;: { # Represents a targetable point of interest(POI). This will be populated in the poi_details field when targeting_type is `TARGETING_TYPE_POI`. # POI resource details.
+    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a POI, e.g. &quot;Times Square&quot;, &quot;Space Needle&quot;.
+    &quot;latitude&quot;: 3.14, # Output only. Latitude of the POI rounding to 6th decimal place.
+    &quot;longitude&quot;: 3.14, # Output only. Longitude of the POI rounding to 6th decimal place.
+  },
   &quot;sensitiveCategoryDetails&quot;: { # Represents a targetable sensitive category. This will be populated in the sensitive_category_details field of the TargetingOption when targeting_type is `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION`. # Sensitive Category details.
     &quot;sensitiveCategory&quot;: &quot;A String&quot;, # Output only. An enum for the DV360 Sensitive category content classifier.
   },
@@ -286,7 +302,10 @@
       TARGETING_TYPE_INVENTORY_SOURCE_GROUP - Purchase impressions from a group of deals and auction packages.
       TARGETING_TYPE_EXCHANGE - Purchase impressions from specific exchanges.
       TARGETING_TYPE_SUB_EXCHANGE - Purchase impressions from specific sub-exchanges.
+      TARGETING_TYPE_POI - Target ads around a specific point of interest, such as a notable building, a street address, or latitude/longitude coordinates.
+      TARGETING_TYPE_BUSINESS_CHAIN - Target ads around locations of a business chain within a specific geo region.
       TARGETING_TYPE_NATIVE_CONTENT_POSITION - Target ads to a specific native content position.
+      TARGETING_TYPE_OMID - Target ads in an Open Measurement enabled inventory.
   advertiserId: string, Required. The Advertiser this request is being made in the context of.
   filter: string, Allows filtering by targeting option properties. Supported syntax: * Filter expressions are made up of one or more restrictions. * Restrictions can be combined by `OR` logical operators. * A restriction has the form of `{field} {operator} {value}`. * The operator must be &quot;=&quot; (equal sign). * Supported fields: - `carrierAndIspDetails.type` - `geoRegionDetails.geoRegionType` - `targetingOptionId` Examples: * All `GEO REGION` targeting options that belong to sub type `GEO_REGION_TYPE_COUNTRY` or `GEO_REGION_TYPE_STATE`: `geoRegionDetails.geoRegionType=&quot;GEO_REGION_TYPE_COUNTRY&quot; OR geoRegionDetails.geoRegionType=&quot;GEO_REGION_TYPE_STATE&quot;` * All `CARRIER AND ISP` targeting options that belong to sub type `CARRIER_AND_ISP_TYPE_CARRIER`: `carrierAndIspDetails.type=&quot;CARRIER_AND_ISP_TYPE_CARRIER&quot;`. The length of this field should be no more than 500 characters.
   orderBy: string, Field by which to sort the list. Acceptable values are: * `targetingOptionId` (default) The default sorting order is ascending. To specify descending order for a field, a suffix &quot;desc&quot; should be added to the field name. Example: `targetingOptionId desc`.
@@ -316,6 +335,11 @@
       &quot;browserDetails&quot;: { # Represents a targetable browser. This will be populated in the browser_details field when targeting_type is `TARGETING_TYPE_BROWSER`. # Browser details.
         &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the browser.
       },
+      &quot;businessChainDetails&quot;: { # Represents a targetable business chain within a geo region. This will be populated in the business_chain_details field when targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`. # Business chain resource details.
+        &quot;businessChain&quot;: &quot;A String&quot;, # Output only. The display name of the business chain, e.g. &quot;KFC&quot;, &quot;Chase Bank&quot;.
+        &quot;geoRegion&quot;: &quot;A String&quot;, # Output only. The display name of the geographic region, e.g. &quot;Ontario, Canada&quot;.
+        &quot;geoRegionType&quot;: &quot;A String&quot;, # Output only. The type of the geographic region.
+      },
       &quot;carrierAndIspDetails&quot;: { # Represents a targetable carrier or ISP. This will be populated in the carrier_and_isp_details field of a TargetingOption when targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`. # Carrier and ISP details.
         &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the carrier or ISP.
         &quot;type&quot;: &quot;A String&quot;, # Output only. The type indicating if it&#x27;s carrier or ISP.
@@ -361,6 +385,9 @@
       &quot;nativeContentPositionDetails&quot;: { # Represents a targetable native content position. This will be populated in the native_content_position_details field when targeting_type is `TARGETING_TYPE_NATIVE_CONTENT_POSITION`. # Native content position details.
         &quot;contentPosition&quot;: &quot;A String&quot;, # Output only. The content position.
       },
+      &quot;omidDetails&quot;: { # Represents a targetable Open Measurement enabled inventory type. This will be populated in the omid_details field when targeting_type is `TARGETING_TYPE_OMID`. # Open Measurement enabled inventory details.
+        &quot;omid&quot;: &quot;A String&quot;, # Output only. The type of Open Measurement enabled inventory.
+      },
       &quot;onScreenPositionDetails&quot;: { # Represents a targetable on screen position, which could be used by display and video ads. This will be populated in the on_screen_position_details field when targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`. # On screen position details.
         &quot;onScreenPosition&quot;: &quot;A String&quot;, # Output only. The on screen position.
       },
@@ -370,6 +397,11 @@
       &quot;parentalStatusDetails&quot;: { # Represents a targetable parental status. This will be populated in the parental_status_details field of a TargetingOption when targeting_type is `TARGETING_TYPE_PARENTAL_STATUS`. # Parental status details.
         &quot;parentalStatus&quot;: &quot;A String&quot;, # Output only. The parental status of an audience.
       },
+      &quot;poiDetails&quot;: { # Represents a targetable point of interest(POI). This will be populated in the poi_details field when targeting_type is `TARGETING_TYPE_POI`. # POI resource details.
+        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a POI, e.g. &quot;Times Square&quot;, &quot;Space Needle&quot;.
+        &quot;latitude&quot;: 3.14, # Output only. Latitude of the POI rounding to 6th decimal place.
+        &quot;longitude&quot;: 3.14, # Output only. Longitude of the POI rounding to 6th decimal place.
+      },
       &quot;sensitiveCategoryDetails&quot;: { # Represents a targetable sensitive category. This will be populated in the sensitive_category_details field of the TargetingOption when targeting_type is `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION`. # Sensitive Category details.
         &quot;sensitiveCategory&quot;: &quot;A String&quot;, # Output only. An enum for the DV360 Sensitive category content classifier.
       },
@@ -411,7 +443,7 @@
   <pre>Searches for targeting options of a given type based on the given search terms.
 
 Args:
-  targetingType: string, Required. The type of targeting options to retrieve. Accepted values are: * `TARGETING_TYPE_GEO_REGION` (required)
+  targetingType: string, Required. The type of targeting options to retrieve. Accepted values are: * `TARGETING_TYPE_GEO_REGION` * `TARGETING_TYPE_POI` * `TARGETING_TYPE_BUSINESS_CHAIN` (required)
     Allowed values
       TARGETING_TYPE_UNSPECIFIED - Default value when type is not specified or is unknown in this version.
       TARGETING_TYPE_CHANNEL - Target a channel (a custom group of related websites or apps).
@@ -451,17 +483,27 @@
       TARGETING_TYPE_INVENTORY_SOURCE_GROUP - Purchase impressions from a group of deals and auction packages.
       TARGETING_TYPE_EXCHANGE - Purchase impressions from specific exchanges.
       TARGETING_TYPE_SUB_EXCHANGE - Purchase impressions from specific sub-exchanges.
+      TARGETING_TYPE_POI - Target ads around a specific point of interest, such as a notable building, a street address, or latitude/longitude coordinates.
+      TARGETING_TYPE_BUSINESS_CHAIN - Target ads around locations of a business chain within a specific geo region.
       TARGETING_TYPE_NATIVE_CONTENT_POSITION - Target ads to a specific native content position.
+      TARGETING_TYPE_OMID - Target ads in an Open Measurement enabled inventory.
   body: object, The request body.
     The object takes the form of:
 
 { # Request message for SearchTargetingOptions.
   &quot;advertiserId&quot;: &quot;A String&quot;, # Required. The Advertiser this request is being made in the context of.
+  &quot;businessChainSearchTerms&quot;: { # Search terms for Business Chain targeting options. At least one of the field should be populated. # Search terms for Business Chain targeting options. Can only be used when targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`.
+    &quot;businessChain&quot;: &quot;A String&quot;, # The search query for the desired business chain. The query can be a prefix, e.g. &quot;KFC&quot;, &quot;mercede&quot;.
+    &quot;region&quot;: &quot;A String&quot;, # The search query for the desired geo region, e.g. &quot;Seattle&quot;, &quot;United State&quot;.
+  },
   &quot;geoRegionSearchTerms&quot;: { # Search terms for geo region targeting options. # Search terms for geo region targeting options. Can only be used when targeting_type is `TARGETING_TYPE_GEO_REGION`.
     &quot;geoRegionQuery&quot;: &quot;A String&quot;, # The search query for the desired geo region. The query can be a prefix, e.g. &quot;New Yor&quot;, &quot;Seattle&quot;, &quot;USA&quot;, etc.
   },
   &quot;pageSize&quot;: 42, # Requested page size. Must be between `1` and `100`. If unspecified will default to `100`. Returns error code `INVALID_ARGUMENT` if an invalid value is specified.
   &quot;pageToken&quot;: &quot;A String&quot;, # A token identifying a page of results the server should return. Typically, this is the value of next_page_token returned from the previous call to `SearchTargetingOptions` method. If not specified, the first page of results will be returned.
+  &quot;poiSearchTerms&quot;: { # Search terms for POI targeting options. # Search terms for POI targeting options. Can only be used when targeting_type is `TARGETING_TYPE_POI`.
+    &quot;poiQuery&quot;: &quot;A String&quot;, # The search query for the desired POI name, street address, or coordinate of the desired POI. The query can be a prefix, e.g. &quot;Times squar&quot;, &quot;40.7505045,-73.99562&quot;, &quot;315 W 44th St&quot;, etc.
+  },
 }
 
   x__xgafv: string, V1 error format.
@@ -488,6 +530,11 @@
       &quot;browserDetails&quot;: { # Represents a targetable browser. This will be populated in the browser_details field when targeting_type is `TARGETING_TYPE_BROWSER`. # Browser details.
         &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the browser.
       },
+      &quot;businessChainDetails&quot;: { # Represents a targetable business chain within a geo region. This will be populated in the business_chain_details field when targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`. # Business chain resource details.
+        &quot;businessChain&quot;: &quot;A String&quot;, # Output only. The display name of the business chain, e.g. &quot;KFC&quot;, &quot;Chase Bank&quot;.
+        &quot;geoRegion&quot;: &quot;A String&quot;, # Output only. The display name of the geographic region, e.g. &quot;Ontario, Canada&quot;.
+        &quot;geoRegionType&quot;: &quot;A String&quot;, # Output only. The type of the geographic region.
+      },
       &quot;carrierAndIspDetails&quot;: { # Represents a targetable carrier or ISP. This will be populated in the carrier_and_isp_details field of a TargetingOption when targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`. # Carrier and ISP details.
         &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the carrier or ISP.
         &quot;type&quot;: &quot;A String&quot;, # Output only. The type indicating if it&#x27;s carrier or ISP.
@@ -533,6 +580,9 @@
       &quot;nativeContentPositionDetails&quot;: { # Represents a targetable native content position. This will be populated in the native_content_position_details field when targeting_type is `TARGETING_TYPE_NATIVE_CONTENT_POSITION`. # Native content position details.
         &quot;contentPosition&quot;: &quot;A String&quot;, # Output only. The content position.
       },
+      &quot;omidDetails&quot;: { # Represents a targetable Open Measurement enabled inventory type. This will be populated in the omid_details field when targeting_type is `TARGETING_TYPE_OMID`. # Open Measurement enabled inventory details.
+        &quot;omid&quot;: &quot;A String&quot;, # Output only. The type of Open Measurement enabled inventory.
+      },
       &quot;onScreenPositionDetails&quot;: { # Represents a targetable on screen position, which could be used by display and video ads. This will be populated in the on_screen_position_details field when targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`. # On screen position details.
         &quot;onScreenPosition&quot;: &quot;A String&quot;, # Output only. The on screen position.
       },
@@ -542,6 +592,11 @@
       &quot;parentalStatusDetails&quot;: { # Represents a targetable parental status. This will be populated in the parental_status_details field of a TargetingOption when targeting_type is `TARGETING_TYPE_PARENTAL_STATUS`. # Parental status details.
         &quot;parentalStatus&quot;: &quot;A String&quot;, # Output only. The parental status of an audience.
       },
+      &quot;poiDetails&quot;: { # Represents a targetable point of interest(POI). This will be populated in the poi_details field when targeting_type is `TARGETING_TYPE_POI`. # POI resource details.
+        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a POI, e.g. &quot;Times Square&quot;, &quot;Space Needle&quot;.
+        &quot;latitude&quot;: 3.14, # Output only. Latitude of the POI rounding to 6th decimal place.
+        &quot;longitude&quot;: 3.14, # Output only. Longitude of the POI rounding to 6th decimal place.
+      },
       &quot;sensitiveCategoryDetails&quot;: { # Represents a targetable sensitive category. This will be populated in the sensitive_category_details field of the TargetingOption when targeting_type is `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION`. # Sensitive Category details.
         &quot;sensitiveCategory&quot;: &quot;A String&quot;, # Output only. An enum for the DV360 Sensitive category content classifier.
       },
diff --git a/docs/dyn/dns_v1beta2.changes.html b/docs/dyn/dns_v1beta2.changes.html
index b64cfd1..088925e 100644
--- a/docs/dyn/dns_v1beta2.changes.html
+++ b/docs/dyn/dns_v1beta2.changes.html
@@ -110,6 +110,93 @@
     { # A unit of data that is returned by the DNS servers.
       &quot;kind&quot;: &quot;dns#resourceRecordSet&quot;,
       &quot;name&quot;: &quot;A String&quot;, # For example, www.example.com.
+      &quot;routingPolicy&quot;: { # A RRSetRoutingPolicy represents ResourceRecordSet data that is returned dynamically with the response varying based on configured properties such as geolocation or by weighted random selection. # Configures dynamic query responses based on geo location of querying user or a weighted round robin based routing policy. A ResourceRecordSet should only have either rrdata (static) or routing_policy (dynamic). An error is returned otherwise.
+        &quot;geo&quot;: {
+          &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+              &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                &quot;A String&quot;,
+              ],
+            },
+          ],
+          &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+              &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                &quot;A String&quot;,
+              ],
+            },
+          ],
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+        },
+        &quot;geoPolicy&quot;: {
+          &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+              &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                &quot;A String&quot;,
+              ],
+            },
+          ],
+          &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+              &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                &quot;A String&quot;,
+              ],
+            },
+          ],
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+        },
+        &quot;kind&quot;: &quot;dns#rRSetRoutingPolicy&quot;,
+        &quot;wrr&quot;: {
+          &quot;items&quot;: [
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+                &quot;A String&quot;,
+              ],
+              &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+            },
+          ],
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+        },
+        &quot;wrrPolicy&quot;: {
+          &quot;items&quot;: [
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+                &quot;A String&quot;,
+              ],
+              &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+            },
+          ],
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+        },
+      },
       &quot;rrdatas&quot;: [ # As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) -- see examples.
         &quot;A String&quot;,
       ],
@@ -124,6 +211,93 @@
     { # A unit of data that is returned by the DNS servers.
       &quot;kind&quot;: &quot;dns#resourceRecordSet&quot;,
       &quot;name&quot;: &quot;A String&quot;, # For example, www.example.com.
+      &quot;routingPolicy&quot;: { # A RRSetRoutingPolicy represents ResourceRecordSet data that is returned dynamically with the response varying based on configured properties such as geolocation or by weighted random selection. # Configures dynamic query responses based on geo location of querying user or a weighted round robin based routing policy. A ResourceRecordSet should only have either rrdata (static) or routing_policy (dynamic). An error is returned otherwise.
+        &quot;geo&quot;: {
+          &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+              &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                &quot;A String&quot;,
+              ],
+            },
+          ],
+          &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+              &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                &quot;A String&quot;,
+              ],
+            },
+          ],
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+        },
+        &quot;geoPolicy&quot;: {
+          &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+              &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                &quot;A String&quot;,
+              ],
+            },
+          ],
+          &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+              &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                &quot;A String&quot;,
+              ],
+            },
+          ],
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+        },
+        &quot;kind&quot;: &quot;dns#rRSetRoutingPolicy&quot;,
+        &quot;wrr&quot;: {
+          &quot;items&quot;: [
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+                &quot;A String&quot;,
+              ],
+              &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+            },
+          ],
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+        },
+        &quot;wrrPolicy&quot;: {
+          &quot;items&quot;: [
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+                &quot;A String&quot;,
+              ],
+              &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+            },
+          ],
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+        },
+      },
       &quot;rrdatas&quot;: [ # As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) -- see examples.
         &quot;A String&quot;,
       ],
@@ -155,6 +329,93 @@
     { # A unit of data that is returned by the DNS servers.
       &quot;kind&quot;: &quot;dns#resourceRecordSet&quot;,
       &quot;name&quot;: &quot;A String&quot;, # For example, www.example.com.
+      &quot;routingPolicy&quot;: { # A RRSetRoutingPolicy represents ResourceRecordSet data that is returned dynamically with the response varying based on configured properties such as geolocation or by weighted random selection. # Configures dynamic query responses based on geo location of querying user or a weighted round robin based routing policy. A ResourceRecordSet should only have either rrdata (static) or routing_policy (dynamic). An error is returned otherwise.
+        &quot;geo&quot;: {
+          &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+              &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                &quot;A String&quot;,
+              ],
+            },
+          ],
+          &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+              &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                &quot;A String&quot;,
+              ],
+            },
+          ],
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+        },
+        &quot;geoPolicy&quot;: {
+          &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+              &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                &quot;A String&quot;,
+              ],
+            },
+          ],
+          &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+              &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                &quot;A String&quot;,
+              ],
+            },
+          ],
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+        },
+        &quot;kind&quot;: &quot;dns#rRSetRoutingPolicy&quot;,
+        &quot;wrr&quot;: {
+          &quot;items&quot;: [
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+                &quot;A String&quot;,
+              ],
+              &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+            },
+          ],
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+        },
+        &quot;wrrPolicy&quot;: {
+          &quot;items&quot;: [
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+                &quot;A String&quot;,
+              ],
+              &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+            },
+          ],
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+        },
+      },
       &quot;rrdatas&quot;: [ # As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) -- see examples.
         &quot;A String&quot;,
       ],
@@ -169,6 +430,93 @@
     { # A unit of data that is returned by the DNS servers.
       &quot;kind&quot;: &quot;dns#resourceRecordSet&quot;,
       &quot;name&quot;: &quot;A String&quot;, # For example, www.example.com.
+      &quot;routingPolicy&quot;: { # A RRSetRoutingPolicy represents ResourceRecordSet data that is returned dynamically with the response varying based on configured properties such as geolocation or by weighted random selection. # Configures dynamic query responses based on geo location of querying user or a weighted round robin based routing policy. A ResourceRecordSet should only have either rrdata (static) or routing_policy (dynamic). An error is returned otherwise.
+        &quot;geo&quot;: {
+          &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+              &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                &quot;A String&quot;,
+              ],
+            },
+          ],
+          &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+              &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                &quot;A String&quot;,
+              ],
+            },
+          ],
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+        },
+        &quot;geoPolicy&quot;: {
+          &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+              &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                &quot;A String&quot;,
+              ],
+            },
+          ],
+          &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+              &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                &quot;A String&quot;,
+              ],
+            },
+          ],
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+        },
+        &quot;kind&quot;: &quot;dns#rRSetRoutingPolicy&quot;,
+        &quot;wrr&quot;: {
+          &quot;items&quot;: [
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+                &quot;A String&quot;,
+              ],
+              &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+            },
+          ],
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+        },
+        &quot;wrrPolicy&quot;: {
+          &quot;items&quot;: [
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+                &quot;A String&quot;,
+              ],
+              &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+            },
+          ],
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+        },
+      },
       &quot;rrdatas&quot;: [ # As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) -- see examples.
         &quot;A String&quot;,
       ],
@@ -209,6 +557,93 @@
     { # A unit of data that is returned by the DNS servers.
       &quot;kind&quot;: &quot;dns#resourceRecordSet&quot;,
       &quot;name&quot;: &quot;A String&quot;, # For example, www.example.com.
+      &quot;routingPolicy&quot;: { # A RRSetRoutingPolicy represents ResourceRecordSet data that is returned dynamically with the response varying based on configured properties such as geolocation or by weighted random selection. # Configures dynamic query responses based on geo location of querying user or a weighted round robin based routing policy. A ResourceRecordSet should only have either rrdata (static) or routing_policy (dynamic). An error is returned otherwise.
+        &quot;geo&quot;: {
+          &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+              &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                &quot;A String&quot;,
+              ],
+            },
+          ],
+          &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+              &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                &quot;A String&quot;,
+              ],
+            },
+          ],
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+        },
+        &quot;geoPolicy&quot;: {
+          &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+              &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                &quot;A String&quot;,
+              ],
+            },
+          ],
+          &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+              &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                &quot;A String&quot;,
+              ],
+            },
+          ],
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+        },
+        &quot;kind&quot;: &quot;dns#rRSetRoutingPolicy&quot;,
+        &quot;wrr&quot;: {
+          &quot;items&quot;: [
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+                &quot;A String&quot;,
+              ],
+              &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+            },
+          ],
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+        },
+        &quot;wrrPolicy&quot;: {
+          &quot;items&quot;: [
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+                &quot;A String&quot;,
+              ],
+              &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+            },
+          ],
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+        },
+      },
       &quot;rrdatas&quot;: [ # As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) -- see examples.
         &quot;A String&quot;,
       ],
@@ -223,6 +658,93 @@
     { # A unit of data that is returned by the DNS servers.
       &quot;kind&quot;: &quot;dns#resourceRecordSet&quot;,
       &quot;name&quot;: &quot;A String&quot;, # For example, www.example.com.
+      &quot;routingPolicy&quot;: { # A RRSetRoutingPolicy represents ResourceRecordSet data that is returned dynamically with the response varying based on configured properties such as geolocation or by weighted random selection. # Configures dynamic query responses based on geo location of querying user or a weighted round robin based routing policy. A ResourceRecordSet should only have either rrdata (static) or routing_policy (dynamic). An error is returned otherwise.
+        &quot;geo&quot;: {
+          &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+              &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                &quot;A String&quot;,
+              ],
+            },
+          ],
+          &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+              &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                &quot;A String&quot;,
+              ],
+            },
+          ],
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+        },
+        &quot;geoPolicy&quot;: {
+          &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+              &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                &quot;A String&quot;,
+              ],
+            },
+          ],
+          &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+              &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                &quot;A String&quot;,
+              ],
+            },
+          ],
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+        },
+        &quot;kind&quot;: &quot;dns#rRSetRoutingPolicy&quot;,
+        &quot;wrr&quot;: {
+          &quot;items&quot;: [
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+                &quot;A String&quot;,
+              ],
+              &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+            },
+          ],
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+        },
+        &quot;wrrPolicy&quot;: {
+          &quot;items&quot;: [
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+                &quot;A String&quot;,
+              ],
+              &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+            },
+          ],
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+        },
+      },
       &quot;rrdatas&quot;: [ # As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) -- see examples.
         &quot;A String&quot;,
       ],
@@ -269,6 +791,93 @@
         { # A unit of data that is returned by the DNS servers.
           &quot;kind&quot;: &quot;dns#resourceRecordSet&quot;,
           &quot;name&quot;: &quot;A String&quot;, # For example, www.example.com.
+          &quot;routingPolicy&quot;: { # A RRSetRoutingPolicy represents ResourceRecordSet data that is returned dynamically with the response varying based on configured properties such as geolocation or by weighted random selection. # Configures dynamic query responses based on geo location of querying user or a weighted round robin based routing policy. A ResourceRecordSet should only have either rrdata (static) or routing_policy (dynamic). An error is returned otherwise.
+            &quot;geo&quot;: {
+              &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+                {
+                  &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                  &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                  &quot;rrdatas&quot;: [
+                    &quot;A String&quot;,
+                  ],
+                  &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                    &quot;A String&quot;,
+                  ],
+                },
+              ],
+              &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+                {
+                  &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                  &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                  &quot;rrdatas&quot;: [
+                    &quot;A String&quot;,
+                  ],
+                  &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                    &quot;A String&quot;,
+                  ],
+                },
+              ],
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+            },
+            &quot;geoPolicy&quot;: {
+              &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+                {
+                  &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                  &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                  &quot;rrdatas&quot;: [
+                    &quot;A String&quot;,
+                  ],
+                  &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                    &quot;A String&quot;,
+                  ],
+                },
+              ],
+              &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+                {
+                  &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                  &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                  &quot;rrdatas&quot;: [
+                    &quot;A String&quot;,
+                  ],
+                  &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                    &quot;A String&quot;,
+                  ],
+                },
+              ],
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+            },
+            &quot;kind&quot;: &quot;dns#rRSetRoutingPolicy&quot;,
+            &quot;wrr&quot;: {
+              &quot;items&quot;: [
+                {
+                  &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+                  &quot;rrdatas&quot;: [
+                    &quot;A String&quot;,
+                  ],
+                  &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+                    &quot;A String&quot;,
+                  ],
+                  &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+                },
+              ],
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+            },
+            &quot;wrrPolicy&quot;: {
+              &quot;items&quot;: [
+                {
+                  &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+                  &quot;rrdatas&quot;: [
+                    &quot;A String&quot;,
+                  ],
+                  &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+                    &quot;A String&quot;,
+                  ],
+                  &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+                },
+              ],
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+            },
+          },
           &quot;rrdatas&quot;: [ # As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) -- see examples.
             &quot;A String&quot;,
           ],
@@ -283,6 +892,93 @@
         { # A unit of data that is returned by the DNS servers.
           &quot;kind&quot;: &quot;dns#resourceRecordSet&quot;,
           &quot;name&quot;: &quot;A String&quot;, # For example, www.example.com.
+          &quot;routingPolicy&quot;: { # A RRSetRoutingPolicy represents ResourceRecordSet data that is returned dynamically with the response varying based on configured properties such as geolocation or by weighted random selection. # Configures dynamic query responses based on geo location of querying user or a weighted round robin based routing policy. A ResourceRecordSet should only have either rrdata (static) or routing_policy (dynamic). An error is returned otherwise.
+            &quot;geo&quot;: {
+              &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+                {
+                  &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                  &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                  &quot;rrdatas&quot;: [
+                    &quot;A String&quot;,
+                  ],
+                  &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                    &quot;A String&quot;,
+                  ],
+                },
+              ],
+              &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+                {
+                  &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                  &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                  &quot;rrdatas&quot;: [
+                    &quot;A String&quot;,
+                  ],
+                  &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                    &quot;A String&quot;,
+                  ],
+                },
+              ],
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+            },
+            &quot;geoPolicy&quot;: {
+              &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+                {
+                  &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                  &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                  &quot;rrdatas&quot;: [
+                    &quot;A String&quot;,
+                  ],
+                  &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                    &quot;A String&quot;,
+                  ],
+                },
+              ],
+              &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+                {
+                  &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                  &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                  &quot;rrdatas&quot;: [
+                    &quot;A String&quot;,
+                  ],
+                  &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                    &quot;A String&quot;,
+                  ],
+                },
+              ],
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+            },
+            &quot;kind&quot;: &quot;dns#rRSetRoutingPolicy&quot;,
+            &quot;wrr&quot;: {
+              &quot;items&quot;: [
+                {
+                  &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+                  &quot;rrdatas&quot;: [
+                    &quot;A String&quot;,
+                  ],
+                  &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+                    &quot;A String&quot;,
+                  ],
+                  &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+                },
+              ],
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+            },
+            &quot;wrrPolicy&quot;: {
+              &quot;items&quot;: [
+                {
+                  &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+                  &quot;rrdatas&quot;: [
+                    &quot;A String&quot;,
+                  ],
+                  &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+                    &quot;A String&quot;,
+                  ],
+                  &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+                },
+              ],
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+            },
+          },
           &quot;rrdatas&quot;: [ # As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) -- see examples.
             &quot;A String&quot;,
           ],
diff --git a/docs/dyn/dns_v1beta2.projects.html b/docs/dyn/dns_v1beta2.projects.html
index 3e5ff10..bde90ca 100644
--- a/docs/dyn/dns_v1beta2.projects.html
+++ b/docs/dyn/dns_v1beta2.projects.html
@@ -109,6 +109,7 @@
     &quot;dnsKeysPerManagedZone&quot;: 42, # Maximum allowed number of DnsKeys per ManagedZone.
     &quot;gkeClustersPerManagedZone&quot;: 42, # Maximum allowed number of GKE clusters to which a privately scoped zone can be attached.
     &quot;gkeClustersPerResponsePolicy&quot;: 42, # Maximum allowed number of GKE clusters per response policy.
+    &quot;itemsPerRoutingPolicy&quot;: 42, # Maximum allowed number of items per routing policy.
     &quot;kind&quot;: &quot;dns#quota&quot;,
     &quot;managedZones&quot;: 42, # Maximum allowed number of managed zones in the project.
     &quot;managedZonesPerGkeCluster&quot;: 42, # Maximum allowed number of managed zones which can be attached to a GKE cluster.
diff --git a/docs/dyn/dns_v1beta2.resourceRecordSets.html b/docs/dyn/dns_v1beta2.resourceRecordSets.html
index 3467c6a..c6e3d50 100644
--- a/docs/dyn/dns_v1beta2.resourceRecordSets.html
+++ b/docs/dyn/dns_v1beta2.resourceRecordSets.html
@@ -114,6 +114,93 @@
 { # A unit of data that is returned by the DNS servers.
   &quot;kind&quot;: &quot;dns#resourceRecordSet&quot;,
   &quot;name&quot;: &quot;A String&quot;, # For example, www.example.com.
+  &quot;routingPolicy&quot;: { # A RRSetRoutingPolicy represents ResourceRecordSet data that is returned dynamically with the response varying based on configured properties such as geolocation or by weighted random selection. # Configures dynamic query responses based on geo location of querying user or a weighted round robin based routing policy. A ResourceRecordSet should only have either rrdata (static) or routing_policy (dynamic). An error is returned otherwise.
+    &quot;geo&quot;: {
+      &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+        {
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+          &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+          &quot;rrdatas&quot;: [
+            &quot;A String&quot;,
+          ],
+          &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+            &quot;A String&quot;,
+          ],
+        },
+      ],
+      &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+        {
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+          &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+          &quot;rrdatas&quot;: [
+            &quot;A String&quot;,
+          ],
+          &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+            &quot;A String&quot;,
+          ],
+        },
+      ],
+      &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+    },
+    &quot;geoPolicy&quot;: {
+      &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+        {
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+          &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+          &quot;rrdatas&quot;: [
+            &quot;A String&quot;,
+          ],
+          &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+            &quot;A String&quot;,
+          ],
+        },
+      ],
+      &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+        {
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+          &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+          &quot;rrdatas&quot;: [
+            &quot;A String&quot;,
+          ],
+          &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+            &quot;A String&quot;,
+          ],
+        },
+      ],
+      &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+    },
+    &quot;kind&quot;: &quot;dns#rRSetRoutingPolicy&quot;,
+    &quot;wrr&quot;: {
+      &quot;items&quot;: [
+        {
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+          &quot;rrdatas&quot;: [
+            &quot;A String&quot;,
+          ],
+          &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+            &quot;A String&quot;,
+          ],
+          &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+        },
+      ],
+      &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+    },
+    &quot;wrrPolicy&quot;: {
+      &quot;items&quot;: [
+        {
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+          &quot;rrdatas&quot;: [
+            &quot;A String&quot;,
+          ],
+          &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+            &quot;A String&quot;,
+          ],
+          &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+        },
+      ],
+      &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+    },
+  },
   &quot;rrdatas&quot;: [ # As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) -- see examples.
     &quot;A String&quot;,
   ],
@@ -136,6 +223,93 @@
     { # A unit of data that is returned by the DNS servers.
   &quot;kind&quot;: &quot;dns#resourceRecordSet&quot;,
   &quot;name&quot;: &quot;A String&quot;, # For example, www.example.com.
+  &quot;routingPolicy&quot;: { # A RRSetRoutingPolicy represents ResourceRecordSet data that is returned dynamically with the response varying based on configured properties such as geolocation or by weighted random selection. # Configures dynamic query responses based on geo location of querying user or a weighted round robin based routing policy. A ResourceRecordSet should only have either rrdata (static) or routing_policy (dynamic). An error is returned otherwise.
+    &quot;geo&quot;: {
+      &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+        {
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+          &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+          &quot;rrdatas&quot;: [
+            &quot;A String&quot;,
+          ],
+          &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+            &quot;A String&quot;,
+          ],
+        },
+      ],
+      &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+        {
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+          &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+          &quot;rrdatas&quot;: [
+            &quot;A String&quot;,
+          ],
+          &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+            &quot;A String&quot;,
+          ],
+        },
+      ],
+      &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+    },
+    &quot;geoPolicy&quot;: {
+      &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+        {
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+          &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+          &quot;rrdatas&quot;: [
+            &quot;A String&quot;,
+          ],
+          &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+            &quot;A String&quot;,
+          ],
+        },
+      ],
+      &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+        {
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+          &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+          &quot;rrdatas&quot;: [
+            &quot;A String&quot;,
+          ],
+          &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+            &quot;A String&quot;,
+          ],
+        },
+      ],
+      &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+    },
+    &quot;kind&quot;: &quot;dns#rRSetRoutingPolicy&quot;,
+    &quot;wrr&quot;: {
+      &quot;items&quot;: [
+        {
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+          &quot;rrdatas&quot;: [
+            &quot;A String&quot;,
+          ],
+          &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+            &quot;A String&quot;,
+          ],
+          &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+        },
+      ],
+      &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+    },
+    &quot;wrrPolicy&quot;: {
+      &quot;items&quot;: [
+        {
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+          &quot;rrdatas&quot;: [
+            &quot;A String&quot;,
+          ],
+          &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+            &quot;A String&quot;,
+          ],
+          &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+        },
+      ],
+      &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+    },
+  },
   &quot;rrdatas&quot;: [ # As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) -- see examples.
     &quot;A String&quot;,
   ],
@@ -185,6 +359,93 @@
     { # A unit of data that is returned by the DNS servers.
   &quot;kind&quot;: &quot;dns#resourceRecordSet&quot;,
   &quot;name&quot;: &quot;A String&quot;, # For example, www.example.com.
+  &quot;routingPolicy&quot;: { # A RRSetRoutingPolicy represents ResourceRecordSet data that is returned dynamically with the response varying based on configured properties such as geolocation or by weighted random selection. # Configures dynamic query responses based on geo location of querying user or a weighted round robin based routing policy. A ResourceRecordSet should only have either rrdata (static) or routing_policy (dynamic). An error is returned otherwise.
+    &quot;geo&quot;: {
+      &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+        {
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+          &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+          &quot;rrdatas&quot;: [
+            &quot;A String&quot;,
+          ],
+          &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+            &quot;A String&quot;,
+          ],
+        },
+      ],
+      &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+        {
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+          &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+          &quot;rrdatas&quot;: [
+            &quot;A String&quot;,
+          ],
+          &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+            &quot;A String&quot;,
+          ],
+        },
+      ],
+      &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+    },
+    &quot;geoPolicy&quot;: {
+      &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+        {
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+          &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+          &quot;rrdatas&quot;: [
+            &quot;A String&quot;,
+          ],
+          &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+            &quot;A String&quot;,
+          ],
+        },
+      ],
+      &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+        {
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+          &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+          &quot;rrdatas&quot;: [
+            &quot;A String&quot;,
+          ],
+          &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+            &quot;A String&quot;,
+          ],
+        },
+      ],
+      &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+    },
+    &quot;kind&quot;: &quot;dns#rRSetRoutingPolicy&quot;,
+    &quot;wrr&quot;: {
+      &quot;items&quot;: [
+        {
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+          &quot;rrdatas&quot;: [
+            &quot;A String&quot;,
+          ],
+          &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+            &quot;A String&quot;,
+          ],
+          &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+        },
+      ],
+      &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+    },
+    &quot;wrrPolicy&quot;: {
+      &quot;items&quot;: [
+        {
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+          &quot;rrdatas&quot;: [
+            &quot;A String&quot;,
+          ],
+          &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+            &quot;A String&quot;,
+          ],
+          &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+        },
+      ],
+      &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+    },
+  },
   &quot;rrdatas&quot;: [ # As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) -- see examples.
     &quot;A String&quot;,
   ],
@@ -225,6 +486,93 @@
     { # A unit of data that is returned by the DNS servers.
       &quot;kind&quot;: &quot;dns#resourceRecordSet&quot;,
       &quot;name&quot;: &quot;A String&quot;, # For example, www.example.com.
+      &quot;routingPolicy&quot;: { # A RRSetRoutingPolicy represents ResourceRecordSet data that is returned dynamically with the response varying based on configured properties such as geolocation or by weighted random selection. # Configures dynamic query responses based on geo location of querying user or a weighted round robin based routing policy. A ResourceRecordSet should only have either rrdata (static) or routing_policy (dynamic). An error is returned otherwise.
+        &quot;geo&quot;: {
+          &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+              &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                &quot;A String&quot;,
+              ],
+            },
+          ],
+          &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+              &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                &quot;A String&quot;,
+              ],
+            },
+          ],
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+        },
+        &quot;geoPolicy&quot;: {
+          &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+              &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                &quot;A String&quot;,
+              ],
+            },
+          ],
+          &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+              &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                &quot;A String&quot;,
+              ],
+            },
+          ],
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+        },
+        &quot;kind&quot;: &quot;dns#rRSetRoutingPolicy&quot;,
+        &quot;wrr&quot;: {
+          &quot;items&quot;: [
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+                &quot;A String&quot;,
+              ],
+              &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+            },
+          ],
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+        },
+        &quot;wrrPolicy&quot;: {
+          &quot;items&quot;: [
+            {
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+              &quot;rrdatas&quot;: [
+                &quot;A String&quot;,
+              ],
+              &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+                &quot;A String&quot;,
+              ],
+              &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+            },
+          ],
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+        },
+      },
       &quot;rrdatas&quot;: [ # As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) -- see examples.
         &quot;A String&quot;,
       ],
@@ -267,6 +615,93 @@
 { # A unit of data that is returned by the DNS servers.
   &quot;kind&quot;: &quot;dns#resourceRecordSet&quot;,
   &quot;name&quot;: &quot;A String&quot;, # For example, www.example.com.
+  &quot;routingPolicy&quot;: { # A RRSetRoutingPolicy represents ResourceRecordSet data that is returned dynamically with the response varying based on configured properties such as geolocation or by weighted random selection. # Configures dynamic query responses based on geo location of querying user or a weighted round robin based routing policy. A ResourceRecordSet should only have either rrdata (static) or routing_policy (dynamic). An error is returned otherwise.
+    &quot;geo&quot;: {
+      &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+        {
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+          &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+          &quot;rrdatas&quot;: [
+            &quot;A String&quot;,
+          ],
+          &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+            &quot;A String&quot;,
+          ],
+        },
+      ],
+      &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+        {
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+          &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+          &quot;rrdatas&quot;: [
+            &quot;A String&quot;,
+          ],
+          &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+            &quot;A String&quot;,
+          ],
+        },
+      ],
+      &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+    },
+    &quot;geoPolicy&quot;: {
+      &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+        {
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+          &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+          &quot;rrdatas&quot;: [
+            &quot;A String&quot;,
+          ],
+          &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+            &quot;A String&quot;,
+          ],
+        },
+      ],
+      &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+        {
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+          &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+          &quot;rrdatas&quot;: [
+            &quot;A String&quot;,
+          ],
+          &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+            &quot;A String&quot;,
+          ],
+        },
+      ],
+      &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+    },
+    &quot;kind&quot;: &quot;dns#rRSetRoutingPolicy&quot;,
+    &quot;wrr&quot;: {
+      &quot;items&quot;: [
+        {
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+          &quot;rrdatas&quot;: [
+            &quot;A String&quot;,
+          ],
+          &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+            &quot;A String&quot;,
+          ],
+          &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+        },
+      ],
+      &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+    },
+    &quot;wrrPolicy&quot;: {
+      &quot;items&quot;: [
+        {
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+          &quot;rrdatas&quot;: [
+            &quot;A String&quot;,
+          ],
+          &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+            &quot;A String&quot;,
+          ],
+          &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+        },
+      ],
+      &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+    },
+  },
   &quot;rrdatas&quot;: [ # As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) -- see examples.
     &quot;A String&quot;,
   ],
@@ -289,6 +724,93 @@
     { # A unit of data that is returned by the DNS servers.
   &quot;kind&quot;: &quot;dns#resourceRecordSet&quot;,
   &quot;name&quot;: &quot;A String&quot;, # For example, www.example.com.
+  &quot;routingPolicy&quot;: { # A RRSetRoutingPolicy represents ResourceRecordSet data that is returned dynamically with the response varying based on configured properties such as geolocation or by weighted random selection. # Configures dynamic query responses based on geo location of querying user or a weighted round robin based routing policy. A ResourceRecordSet should only have either rrdata (static) or routing_policy (dynamic). An error is returned otherwise.
+    &quot;geo&quot;: {
+      &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+        {
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+          &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+          &quot;rrdatas&quot;: [
+            &quot;A String&quot;,
+          ],
+          &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+            &quot;A String&quot;,
+          ],
+        },
+      ],
+      &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+        {
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+          &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+          &quot;rrdatas&quot;: [
+            &quot;A String&quot;,
+          ],
+          &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+            &quot;A String&quot;,
+          ],
+        },
+      ],
+      &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+    },
+    &quot;geoPolicy&quot;: {
+      &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+        {
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+          &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+          &quot;rrdatas&quot;: [
+            &quot;A String&quot;,
+          ],
+          &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+            &quot;A String&quot;,
+          ],
+        },
+      ],
+      &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+        {
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+          &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+          &quot;rrdatas&quot;: [
+            &quot;A String&quot;,
+          ],
+          &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+            &quot;A String&quot;,
+          ],
+        },
+      ],
+      &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+    },
+    &quot;kind&quot;: &quot;dns#rRSetRoutingPolicy&quot;,
+    &quot;wrr&quot;: {
+      &quot;items&quot;: [
+        {
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+          &quot;rrdatas&quot;: [
+            &quot;A String&quot;,
+          ],
+          &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+            &quot;A String&quot;,
+          ],
+          &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+        },
+      ],
+      &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+    },
+    &quot;wrrPolicy&quot;: {
+      &quot;items&quot;: [
+        {
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+          &quot;rrdatas&quot;: [
+            &quot;A String&quot;,
+          ],
+          &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+            &quot;A String&quot;,
+          ],
+          &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+        },
+      ],
+      &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+    },
+  },
   &quot;rrdatas&quot;: [ # As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) -- see examples.
     &quot;A String&quot;,
   ],
diff --git a/docs/dyn/dns_v1beta2.responsePolicyRules.html b/docs/dyn/dns_v1beta2.responsePolicyRules.html
index 5b74551..2b10b9d 100644
--- a/docs/dyn/dns_v1beta2.responsePolicyRules.html
+++ b/docs/dyn/dns_v1beta2.responsePolicyRules.html
@@ -123,6 +123,93 @@
       { # A unit of data that is returned by the DNS servers.
         &quot;kind&quot;: &quot;dns#resourceRecordSet&quot;,
         &quot;name&quot;: &quot;A String&quot;, # For example, www.example.com.
+        &quot;routingPolicy&quot;: { # A RRSetRoutingPolicy represents ResourceRecordSet data that is returned dynamically with the response varying based on configured properties such as geolocation or by weighted random selection. # Configures dynamic query responses based on geo location of querying user or a weighted round robin based routing policy. A ResourceRecordSet should only have either rrdata (static) or routing_policy (dynamic). An error is returned otherwise.
+          &quot;geo&quot;: {
+            &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+              {
+                &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                &quot;rrdatas&quot;: [
+                  &quot;A String&quot;,
+                ],
+                &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                  &quot;A String&quot;,
+                ],
+              },
+            ],
+            &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+              {
+                &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                &quot;rrdatas&quot;: [
+                  &quot;A String&quot;,
+                ],
+                &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                  &quot;A String&quot;,
+                ],
+              },
+            ],
+            &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+          },
+          &quot;geoPolicy&quot;: {
+            &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+              {
+                &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                &quot;rrdatas&quot;: [
+                  &quot;A String&quot;,
+                ],
+                &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                  &quot;A String&quot;,
+                ],
+              },
+            ],
+            &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+              {
+                &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                &quot;rrdatas&quot;: [
+                  &quot;A String&quot;,
+                ],
+                &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                  &quot;A String&quot;,
+                ],
+              },
+            ],
+            &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+          },
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicy&quot;,
+          &quot;wrr&quot;: {
+            &quot;items&quot;: [
+              {
+                &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+                &quot;rrdatas&quot;: [
+                  &quot;A String&quot;,
+                ],
+                &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+                  &quot;A String&quot;,
+                ],
+                &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+              },
+            ],
+            &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+          },
+          &quot;wrrPolicy&quot;: {
+            &quot;items&quot;: [
+              {
+                &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+                &quot;rrdatas&quot;: [
+                  &quot;A String&quot;,
+                ],
+                &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+                  &quot;A String&quot;,
+                ],
+                &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+              },
+            ],
+            &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+          },
+        },
         &quot;rrdatas&quot;: [ # As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) -- see examples.
           &quot;A String&quot;,
         ],
@@ -155,6 +242,93 @@
       { # A unit of data that is returned by the DNS servers.
         &quot;kind&quot;: &quot;dns#resourceRecordSet&quot;,
         &quot;name&quot;: &quot;A String&quot;, # For example, www.example.com.
+        &quot;routingPolicy&quot;: { # A RRSetRoutingPolicy represents ResourceRecordSet data that is returned dynamically with the response varying based on configured properties such as geolocation or by weighted random selection. # Configures dynamic query responses based on geo location of querying user or a weighted round robin based routing policy. A ResourceRecordSet should only have either rrdata (static) or routing_policy (dynamic). An error is returned otherwise.
+          &quot;geo&quot;: {
+            &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+              {
+                &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                &quot;rrdatas&quot;: [
+                  &quot;A String&quot;,
+                ],
+                &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                  &quot;A String&quot;,
+                ],
+              },
+            ],
+            &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+              {
+                &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                &quot;rrdatas&quot;: [
+                  &quot;A String&quot;,
+                ],
+                &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                  &quot;A String&quot;,
+                ],
+              },
+            ],
+            &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+          },
+          &quot;geoPolicy&quot;: {
+            &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+              {
+                &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                &quot;rrdatas&quot;: [
+                  &quot;A String&quot;,
+                ],
+                &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                  &quot;A String&quot;,
+                ],
+              },
+            ],
+            &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+              {
+                &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                &quot;rrdatas&quot;: [
+                  &quot;A String&quot;,
+                ],
+                &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                  &quot;A String&quot;,
+                ],
+              },
+            ],
+            &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+          },
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicy&quot;,
+          &quot;wrr&quot;: {
+            &quot;items&quot;: [
+              {
+                &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+                &quot;rrdatas&quot;: [
+                  &quot;A String&quot;,
+                ],
+                &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+                  &quot;A String&quot;,
+                ],
+                &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+              },
+            ],
+            &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+          },
+          &quot;wrrPolicy&quot;: {
+            &quot;items&quot;: [
+              {
+                &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+                &quot;rrdatas&quot;: [
+                  &quot;A String&quot;,
+                ],
+                &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+                  &quot;A String&quot;,
+                ],
+                &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+              },
+            ],
+            &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+          },
+        },
         &quot;rrdatas&quot;: [ # As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) -- see examples.
           &quot;A String&quot;,
         ],
@@ -212,6 +386,93 @@
       { # A unit of data that is returned by the DNS servers.
         &quot;kind&quot;: &quot;dns#resourceRecordSet&quot;,
         &quot;name&quot;: &quot;A String&quot;, # For example, www.example.com.
+        &quot;routingPolicy&quot;: { # A RRSetRoutingPolicy represents ResourceRecordSet data that is returned dynamically with the response varying based on configured properties such as geolocation or by weighted random selection. # Configures dynamic query responses based on geo location of querying user or a weighted round robin based routing policy. A ResourceRecordSet should only have either rrdata (static) or routing_policy (dynamic). An error is returned otherwise.
+          &quot;geo&quot;: {
+            &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+              {
+                &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                &quot;rrdatas&quot;: [
+                  &quot;A String&quot;,
+                ],
+                &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                  &quot;A String&quot;,
+                ],
+              },
+            ],
+            &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+              {
+                &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                &quot;rrdatas&quot;: [
+                  &quot;A String&quot;,
+                ],
+                &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                  &quot;A String&quot;,
+                ],
+              },
+            ],
+            &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+          },
+          &quot;geoPolicy&quot;: {
+            &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+              {
+                &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                &quot;rrdatas&quot;: [
+                  &quot;A String&quot;,
+                ],
+                &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                  &quot;A String&quot;,
+                ],
+              },
+            ],
+            &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+              {
+                &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                &quot;rrdatas&quot;: [
+                  &quot;A String&quot;,
+                ],
+                &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                  &quot;A String&quot;,
+                ],
+              },
+            ],
+            &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+          },
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicy&quot;,
+          &quot;wrr&quot;: {
+            &quot;items&quot;: [
+              {
+                &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+                &quot;rrdatas&quot;: [
+                  &quot;A String&quot;,
+                ],
+                &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+                  &quot;A String&quot;,
+                ],
+                &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+              },
+            ],
+            &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+          },
+          &quot;wrrPolicy&quot;: {
+            &quot;items&quot;: [
+              {
+                &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+                &quot;rrdatas&quot;: [
+                  &quot;A String&quot;,
+                ],
+                &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+                  &quot;A String&quot;,
+                ],
+                &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+              },
+            ],
+            &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+          },
+        },
         &quot;rrdatas&quot;: [ # As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) -- see examples.
           &quot;A String&quot;,
         ],
@@ -259,6 +520,93 @@
           { # A unit of data that is returned by the DNS servers.
             &quot;kind&quot;: &quot;dns#resourceRecordSet&quot;,
             &quot;name&quot;: &quot;A String&quot;, # For example, www.example.com.
+            &quot;routingPolicy&quot;: { # A RRSetRoutingPolicy represents ResourceRecordSet data that is returned dynamically with the response varying based on configured properties such as geolocation or by weighted random selection. # Configures dynamic query responses based on geo location of querying user or a weighted round robin based routing policy. A ResourceRecordSet should only have either rrdata (static) or routing_policy (dynamic). An error is returned otherwise.
+              &quot;geo&quot;: {
+                &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+                  {
+                    &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                    &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                    &quot;rrdatas&quot;: [
+                      &quot;A String&quot;,
+                    ],
+                    &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                      &quot;A String&quot;,
+                    ],
+                  },
+                ],
+                &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+                  {
+                    &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                    &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                    &quot;rrdatas&quot;: [
+                      &quot;A String&quot;,
+                    ],
+                    &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                      &quot;A String&quot;,
+                    ],
+                  },
+                ],
+                &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+              },
+              &quot;geoPolicy&quot;: {
+                &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+                  {
+                    &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                    &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                    &quot;rrdatas&quot;: [
+                      &quot;A String&quot;,
+                    ],
+                    &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                      &quot;A String&quot;,
+                    ],
+                  },
+                ],
+                &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+                  {
+                    &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                    &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                    &quot;rrdatas&quot;: [
+                      &quot;A String&quot;,
+                    ],
+                    &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                      &quot;A String&quot;,
+                    ],
+                  },
+                ],
+                &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+              },
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicy&quot;,
+              &quot;wrr&quot;: {
+                &quot;items&quot;: [
+                  {
+                    &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+                    &quot;rrdatas&quot;: [
+                      &quot;A String&quot;,
+                    ],
+                    &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+                      &quot;A String&quot;,
+                    ],
+                    &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+                  },
+                ],
+                &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+              },
+              &quot;wrrPolicy&quot;: {
+                &quot;items&quot;: [
+                  {
+                    &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+                    &quot;rrdatas&quot;: [
+                      &quot;A String&quot;,
+                    ],
+                    &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+                      &quot;A String&quot;,
+                    ],
+                    &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+                  },
+                ],
+                &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+              },
+            },
             &quot;rrdatas&quot;: [ # As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) -- see examples.
               &quot;A String&quot;,
             ],
@@ -310,6 +658,93 @@
       { # A unit of data that is returned by the DNS servers.
         &quot;kind&quot;: &quot;dns#resourceRecordSet&quot;,
         &quot;name&quot;: &quot;A String&quot;, # For example, www.example.com.
+        &quot;routingPolicy&quot;: { # A RRSetRoutingPolicy represents ResourceRecordSet data that is returned dynamically with the response varying based on configured properties such as geolocation or by weighted random selection. # Configures dynamic query responses based on geo location of querying user or a weighted round robin based routing policy. A ResourceRecordSet should only have either rrdata (static) or routing_policy (dynamic). An error is returned otherwise.
+          &quot;geo&quot;: {
+            &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+              {
+                &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                &quot;rrdatas&quot;: [
+                  &quot;A String&quot;,
+                ],
+                &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                  &quot;A String&quot;,
+                ],
+              },
+            ],
+            &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+              {
+                &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                &quot;rrdatas&quot;: [
+                  &quot;A String&quot;,
+                ],
+                &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                  &quot;A String&quot;,
+                ],
+              },
+            ],
+            &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+          },
+          &quot;geoPolicy&quot;: {
+            &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+              {
+                &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                &quot;rrdatas&quot;: [
+                  &quot;A String&quot;,
+                ],
+                &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                  &quot;A String&quot;,
+                ],
+              },
+            ],
+            &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+              {
+                &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                &quot;rrdatas&quot;: [
+                  &quot;A String&quot;,
+                ],
+                &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                  &quot;A String&quot;,
+                ],
+              },
+            ],
+            &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+          },
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicy&quot;,
+          &quot;wrr&quot;: {
+            &quot;items&quot;: [
+              {
+                &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+                &quot;rrdatas&quot;: [
+                  &quot;A String&quot;,
+                ],
+                &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+                  &quot;A String&quot;,
+                ],
+                &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+              },
+            ],
+            &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+          },
+          &quot;wrrPolicy&quot;: {
+            &quot;items&quot;: [
+              {
+                &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+                &quot;rrdatas&quot;: [
+                  &quot;A String&quot;,
+                ],
+                &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+                  &quot;A String&quot;,
+                ],
+                &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+              },
+            ],
+            &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+          },
+        },
         &quot;rrdatas&quot;: [ # As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) -- see examples.
           &quot;A String&quot;,
         ],
@@ -346,6 +781,93 @@
         { # A unit of data that is returned by the DNS servers.
           &quot;kind&quot;: &quot;dns#resourceRecordSet&quot;,
           &quot;name&quot;: &quot;A String&quot;, # For example, www.example.com.
+          &quot;routingPolicy&quot;: { # A RRSetRoutingPolicy represents ResourceRecordSet data that is returned dynamically with the response varying based on configured properties such as geolocation or by weighted random selection. # Configures dynamic query responses based on geo location of querying user or a weighted round robin based routing policy. A ResourceRecordSet should only have either rrdata (static) or routing_policy (dynamic). An error is returned otherwise.
+            &quot;geo&quot;: {
+              &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+                {
+                  &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                  &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                  &quot;rrdatas&quot;: [
+                    &quot;A String&quot;,
+                  ],
+                  &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                    &quot;A String&quot;,
+                  ],
+                },
+              ],
+              &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+                {
+                  &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                  &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                  &quot;rrdatas&quot;: [
+                    &quot;A String&quot;,
+                  ],
+                  &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                    &quot;A String&quot;,
+                  ],
+                },
+              ],
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+            },
+            &quot;geoPolicy&quot;: {
+              &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+                {
+                  &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                  &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                  &quot;rrdatas&quot;: [
+                    &quot;A String&quot;,
+                  ],
+                  &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                    &quot;A String&quot;,
+                  ],
+                },
+              ],
+              &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+                {
+                  &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                  &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                  &quot;rrdatas&quot;: [
+                    &quot;A String&quot;,
+                  ],
+                  &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                    &quot;A String&quot;,
+                  ],
+                },
+              ],
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+            },
+            &quot;kind&quot;: &quot;dns#rRSetRoutingPolicy&quot;,
+            &quot;wrr&quot;: {
+              &quot;items&quot;: [
+                {
+                  &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+                  &quot;rrdatas&quot;: [
+                    &quot;A String&quot;,
+                  ],
+                  &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+                    &quot;A String&quot;,
+                  ],
+                  &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+                },
+              ],
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+            },
+            &quot;wrrPolicy&quot;: {
+              &quot;items&quot;: [
+                {
+                  &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+                  &quot;rrdatas&quot;: [
+                    &quot;A String&quot;,
+                  ],
+                  &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+                    &quot;A String&quot;,
+                  ],
+                  &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+                },
+              ],
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+            },
+          },
           &quot;rrdatas&quot;: [ # As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) -- see examples.
             &quot;A String&quot;,
           ],
@@ -382,6 +904,93 @@
       { # A unit of data that is returned by the DNS servers.
         &quot;kind&quot;: &quot;dns#resourceRecordSet&quot;,
         &quot;name&quot;: &quot;A String&quot;, # For example, www.example.com.
+        &quot;routingPolicy&quot;: { # A RRSetRoutingPolicy represents ResourceRecordSet data that is returned dynamically with the response varying based on configured properties such as geolocation or by weighted random selection. # Configures dynamic query responses based on geo location of querying user or a weighted round robin based routing policy. A ResourceRecordSet should only have either rrdata (static) or routing_policy (dynamic). An error is returned otherwise.
+          &quot;geo&quot;: {
+            &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+              {
+                &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                &quot;rrdatas&quot;: [
+                  &quot;A String&quot;,
+                ],
+                &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                  &quot;A String&quot;,
+                ],
+              },
+            ],
+            &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+              {
+                &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                &quot;rrdatas&quot;: [
+                  &quot;A String&quot;,
+                ],
+                &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                  &quot;A String&quot;,
+                ],
+              },
+            ],
+            &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+          },
+          &quot;geoPolicy&quot;: {
+            &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+              {
+                &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                &quot;rrdatas&quot;: [
+                  &quot;A String&quot;,
+                ],
+                &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                  &quot;A String&quot;,
+                ],
+              },
+            ],
+            &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+              {
+                &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                &quot;rrdatas&quot;: [
+                  &quot;A String&quot;,
+                ],
+                &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                  &quot;A String&quot;,
+                ],
+              },
+            ],
+            &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+          },
+          &quot;kind&quot;: &quot;dns#rRSetRoutingPolicy&quot;,
+          &quot;wrr&quot;: {
+            &quot;items&quot;: [
+              {
+                &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+                &quot;rrdatas&quot;: [
+                  &quot;A String&quot;,
+                ],
+                &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+                  &quot;A String&quot;,
+                ],
+                &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+              },
+            ],
+            &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+          },
+          &quot;wrrPolicy&quot;: {
+            &quot;items&quot;: [
+              {
+                &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+                &quot;rrdatas&quot;: [
+                  &quot;A String&quot;,
+                ],
+                &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+                  &quot;A String&quot;,
+                ],
+                &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+              },
+            ],
+            &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+          },
+        },
         &quot;rrdatas&quot;: [ # As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) -- see examples.
           &quot;A String&quot;,
         ],
@@ -418,6 +1027,93 @@
         { # A unit of data that is returned by the DNS servers.
           &quot;kind&quot;: &quot;dns#resourceRecordSet&quot;,
           &quot;name&quot;: &quot;A String&quot;, # For example, www.example.com.
+          &quot;routingPolicy&quot;: { # A RRSetRoutingPolicy represents ResourceRecordSet data that is returned dynamically with the response varying based on configured properties such as geolocation or by weighted random selection. # Configures dynamic query responses based on geo location of querying user or a weighted round robin based routing policy. A ResourceRecordSet should only have either rrdata (static) or routing_policy (dynamic). An error is returned otherwise.
+            &quot;geo&quot;: {
+              &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+                {
+                  &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                  &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                  &quot;rrdatas&quot;: [
+                    &quot;A String&quot;,
+                  ],
+                  &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                    &quot;A String&quot;,
+                  ],
+                },
+              ],
+              &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+                {
+                  &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                  &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                  &quot;rrdatas&quot;: [
+                    &quot;A String&quot;,
+                  ],
+                  &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                    &quot;A String&quot;,
+                  ],
+                },
+              ],
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+            },
+            &quot;geoPolicy&quot;: {
+              &quot;failovers&quot;: [ # If the health check for the primary target for a geo location returns an unhealthy status, the failover target is returned instead. This failover configuration is not mandatory. If a failover is not provided, the primary target won&#x27;t be healthchecked, and it returns the primarily configured rrdata irrespective of whether it is healthy or not.
+                {
+                  &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                  &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                  &quot;rrdatas&quot;: [
+                    &quot;A String&quot;,
+                  ],
+                  &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                    &quot;A String&quot;,
+                  ],
+                },
+              ],
+              &quot;items&quot;: [ # The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.
+                {
+                  &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicyGeoPolicyItem&quot;,
+                  &quot;location&quot;: &quot;A String&quot;, # The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. &quot;us-east1&quot;, &quot;southamerica-east1&quot;, &quot;asia-east1&quot;, etc.
+                  &quot;rrdatas&quot;: [
+                    &quot;A String&quot;,
+                  ],
+                  &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above geo_rrdata.
+                    &quot;A String&quot;,
+                  ],
+                },
+              ],
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyGeoPolicy&quot;,
+            },
+            &quot;kind&quot;: &quot;dns#rRSetRoutingPolicy&quot;,
+            &quot;wrr&quot;: {
+              &quot;items&quot;: [
+                {
+                  &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+                  &quot;rrdatas&quot;: [
+                    &quot;A String&quot;,
+                  ],
+                  &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+                    &quot;A String&quot;,
+                  ],
+                  &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+                },
+              ],
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+            },
+            &quot;wrrPolicy&quot;: {
+              &quot;items&quot;: [
+                {
+                  &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicyWrrPolicyItem&quot;,
+                  &quot;rrdatas&quot;: [
+                    &quot;A String&quot;,
+                  ],
+                  &quot;signatureRrdatas&quot;: [ # DNSSEC generated signatures for the above wrr_rrdata.
+                    &quot;A String&quot;,
+                  ],
+                  &quot;weight&quot;: 3.14, # The weight corresponding to this subset of rrdata. When multiple WeightedRoundRobinPolicyItems are configured, the probability of returning an rrset is proportional to its weight relative to the sum of weights configured for all items. This weight should be non-negative.
+                },
+              ],
+              &quot;kind&quot;: &quot;dns#rRSetRoutingPolicyWrrPolicy&quot;,
+            },
+          },
           &quot;rrdatas&quot;: [ # As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) -- see examples.
             &quot;A String&quot;,
           ],
diff --git a/docs/dyn/eventarc_v1.projects.locations.channels.html b/docs/dyn/eventarc_v1.projects.locations.channels.html
new file mode 100644
index 0000000..5c1f77c
--- /dev/null
+++ b/docs/dyn/eventarc_v1.projects.locations.channels.html
@@ -0,0 +1,258 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="eventarc_v1.html">Eventarc API</a> . <a href="eventarc_v1.projects.html">projects</a> . <a href="eventarc_v1.projects.locations.html">locations</a> . <a href="eventarc_v1.projects.locations.channels.html">channels</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#close">close()</a></code></p>
+<p class="firstline">Close httplib2 connections.</p>
+<p class="toc_element">
+  <code><a href="#getIamPolicy">getIamPolicy(resource, options_requestedPolicyVersion=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.</p>
+<p class="toc_element">
+  <code><a href="#setIamPolicy">setIamPolicy(resource, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.</p>
+<p class="toc_element">
+  <code><a href="#testIamPermissions">testIamPermissions(resource, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">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.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="close">close()</code>
+  <pre>Close httplib2 connections.</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="getIamPolicy">getIamPolicy(resource, options_requestedPolicyVersion=None, x__xgafv=None)</code>
+  <pre>Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.
+
+Args:
+  resource: string, REQUIRED: The resource for which the policy is being requested. See the operation documentation for the appropriate value for this field. (required)
+  options_requestedPolicyVersion: integer, Optional. The policy format version to be returned. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional bindings must specify version 3. Policies without any conditional bindings may specify any valid value or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members` to a single `role`. Members can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** { &quot;bindings&quot;: [ { &quot;role&quot;: &quot;roles/resourcemanager.organizationAdmin&quot;, &quot;members&quot;: [ &quot;user:mike@example.com&quot;, &quot;group:admins@example.com&quot;, &quot;domain:google.com&quot;, &quot;serviceAccount:my-project-id@appspot.gserviceaccount.com&quot; ] }, { &quot;role&quot;: &quot;roles/resourcemanager.organizationViewer&quot;, &quot;members&quot;: [ &quot;user:eve@example.com&quot; ], &quot;condition&quot;: { &quot;title&quot;: &quot;expirable access&quot;, &quot;description&quot;: &quot;Does not grant access after Sep 2020&quot;, &quot;expression&quot;: &quot;request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;)&quot;, } } ], &quot;etag&quot;: &quot;BwWWja0YfJA=&quot;, &quot;version&quot;: 3 } **YAML example:** bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;) - etag: BwWWja0YfJA= - version: 3 For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).
+  &quot;auditConfigs&quot;: [ # Specifies cloud audit logging configuration for this policy.
+    { # 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: { &quot;audit_configs&quot;: [ { &quot;service&quot;: &quot;allServices&quot;, &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot;, &quot;exempted_members&quot;: [ &quot;user:jose@example.com&quot; ] }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot; }, { &quot;log_type&quot;: &quot;ADMIN_READ&quot; } ] }, { &quot;service&quot;: &quot;sampleservice.googleapis.com&quot;, &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot; }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot;, &quot;exempted_members&quot;: [ &quot;user:aliya@example.com&quot; ] } ] } ] } 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.
+      &quot;auditLogConfigs&quot;: [ # The configuration for logging of each type of permission.
+        { # Provides the configuration for logging a type of permissions. Example: { &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot;, &quot;exempted_members&quot;: [ &quot;user:jose@example.com&quot; ] }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot; } ] } This enables &#x27;DATA_READ&#x27; and &#x27;DATA_WRITE&#x27; logging, while exempting jose@example.com from DATA_READ logging.
+          &quot;exemptedMembers&quot;: [ # Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members.
+            &quot;A String&quot;,
+          ],
+          &quot;logType&quot;: &quot;A String&quot;, # The log type that this config enables.
+        },
+      ],
+      &quot;service&quot;: &quot;A String&quot;, # Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services.
+    },
+  ],
+  &quot;bindings&quot;: [ # Associates a list of `members` to a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one member.
+    { # Associates `members` with a `role`.
+      &quot;condition&quot;: { # 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: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; 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. # The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the members in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
+        &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
+        &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
+        &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
+        &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
+      },
+      &quot;members&quot;: [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`.
+        &quot;A String&quot;,
+      ],
+      &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+    },
+  ],
+  &quot;etag&quot;: &quot;A String&quot;, # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.
+  &quot;version&quot;: 42, # Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="setIamPolicy">setIamPolicy(resource, body=None, x__xgafv=None)</code>
+  <pre>Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.
+
+Args:
+  resource: string, REQUIRED: The resource for which the policy is being specified. See the operation documentation for the appropriate value for this field. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Request message for `SetIamPolicy` method.
+  &quot;policy&quot;: { # An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members` to a single `role`. Members can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** { &quot;bindings&quot;: [ { &quot;role&quot;: &quot;roles/resourcemanager.organizationAdmin&quot;, &quot;members&quot;: [ &quot;user:mike@example.com&quot;, &quot;group:admins@example.com&quot;, &quot;domain:google.com&quot;, &quot;serviceAccount:my-project-id@appspot.gserviceaccount.com&quot; ] }, { &quot;role&quot;: &quot;roles/resourcemanager.organizationViewer&quot;, &quot;members&quot;: [ &quot;user:eve@example.com&quot; ], &quot;condition&quot;: { &quot;title&quot;: &quot;expirable access&quot;, &quot;description&quot;: &quot;Does not grant access after Sep 2020&quot;, &quot;expression&quot;: &quot;request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;)&quot;, } } ], &quot;etag&quot;: &quot;BwWWja0YfJA=&quot;, &quot;version&quot;: 3 } **YAML example:** bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;) - etag: BwWWja0YfJA= - version: 3 For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/). # REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Cloud Platform services (such as Projects) might reject them.
+    &quot;auditConfigs&quot;: [ # Specifies cloud audit logging configuration for this policy.
+      { # 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: { &quot;audit_configs&quot;: [ { &quot;service&quot;: &quot;allServices&quot;, &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot;, &quot;exempted_members&quot;: [ &quot;user:jose@example.com&quot; ] }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot; }, { &quot;log_type&quot;: &quot;ADMIN_READ&quot; } ] }, { &quot;service&quot;: &quot;sampleservice.googleapis.com&quot;, &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot; }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot;, &quot;exempted_members&quot;: [ &quot;user:aliya@example.com&quot; ] } ] } ] } 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.
+        &quot;auditLogConfigs&quot;: [ # The configuration for logging of each type of permission.
+          { # Provides the configuration for logging a type of permissions. Example: { &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot;, &quot;exempted_members&quot;: [ &quot;user:jose@example.com&quot; ] }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot; } ] } This enables &#x27;DATA_READ&#x27; and &#x27;DATA_WRITE&#x27; logging, while exempting jose@example.com from DATA_READ logging.
+            &quot;exemptedMembers&quot;: [ # Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members.
+              &quot;A String&quot;,
+            ],
+            &quot;logType&quot;: &quot;A String&quot;, # The log type that this config enables.
+          },
+        ],
+        &quot;service&quot;: &quot;A String&quot;, # Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services.
+      },
+    ],
+    &quot;bindings&quot;: [ # Associates a list of `members` to a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one member.
+      { # Associates `members` with a `role`.
+        &quot;condition&quot;: { # 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: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; 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. # The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the members in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
+          &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
+          &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
+          &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
+          &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
+        },
+        &quot;members&quot;: [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`.
+          &quot;A String&quot;,
+        ],
+        &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+      },
+    ],
+    &quot;etag&quot;: &quot;A String&quot;, # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.
+    &quot;version&quot;: 42, # Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
+  },
+  &quot;updateMask&quot;: &quot;A String&quot;, # OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: &quot;bindings, etag&quot;`
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members` to a single `role`. Members can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** { &quot;bindings&quot;: [ { &quot;role&quot;: &quot;roles/resourcemanager.organizationAdmin&quot;, &quot;members&quot;: [ &quot;user:mike@example.com&quot;, &quot;group:admins@example.com&quot;, &quot;domain:google.com&quot;, &quot;serviceAccount:my-project-id@appspot.gserviceaccount.com&quot; ] }, { &quot;role&quot;: &quot;roles/resourcemanager.organizationViewer&quot;, &quot;members&quot;: [ &quot;user:eve@example.com&quot; ], &quot;condition&quot;: { &quot;title&quot;: &quot;expirable access&quot;, &quot;description&quot;: &quot;Does not grant access after Sep 2020&quot;, &quot;expression&quot;: &quot;request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;)&quot;, } } ], &quot;etag&quot;: &quot;BwWWja0YfJA=&quot;, &quot;version&quot;: 3 } **YAML example:** bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;) - etag: BwWWja0YfJA= - version: 3 For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).
+  &quot;auditConfigs&quot;: [ # Specifies cloud audit logging configuration for this policy.
+    { # 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: { &quot;audit_configs&quot;: [ { &quot;service&quot;: &quot;allServices&quot;, &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot;, &quot;exempted_members&quot;: [ &quot;user:jose@example.com&quot; ] }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot; }, { &quot;log_type&quot;: &quot;ADMIN_READ&quot; } ] }, { &quot;service&quot;: &quot;sampleservice.googleapis.com&quot;, &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot; }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot;, &quot;exempted_members&quot;: [ &quot;user:aliya@example.com&quot; ] } ] } ] } 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.
+      &quot;auditLogConfigs&quot;: [ # The configuration for logging of each type of permission.
+        { # Provides the configuration for logging a type of permissions. Example: { &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot;, &quot;exempted_members&quot;: [ &quot;user:jose@example.com&quot; ] }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot; } ] } This enables &#x27;DATA_READ&#x27; and &#x27;DATA_WRITE&#x27; logging, while exempting jose@example.com from DATA_READ logging.
+          &quot;exemptedMembers&quot;: [ # Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members.
+            &quot;A String&quot;,
+          ],
+          &quot;logType&quot;: &quot;A String&quot;, # The log type that this config enables.
+        },
+      ],
+      &quot;service&quot;: &quot;A String&quot;, # Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services.
+    },
+  ],
+  &quot;bindings&quot;: [ # Associates a list of `members` to a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one member.
+    { # Associates `members` with a `role`.
+      &quot;condition&quot;: { # 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: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; 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. # The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the members in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
+        &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
+        &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
+        &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
+        &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
+      },
+      &quot;members&quot;: [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`.
+        &quot;A String&quot;,
+      ],
+      &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+    },
+  ],
+  &quot;etag&quot;: &quot;A String&quot;, # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.
+  &quot;version&quot;: 42, # Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="testIamPermissions">testIamPermissions(resource, body=None, x__xgafv=None)</code>
+  <pre>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 &quot;fail open&quot; without warning.
+
+Args:
+  resource: string, REQUIRED: The resource for which the policy detail is being requested. See the operation documentation for the appropriate value for this field. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Request message for `TestIamPermissions` method.
+  &quot;permissions&quot;: [ # The set of permissions to check for the `resource`. Permissions with wildcards (such as &#x27;*&#x27; or &#x27;storage.*&#x27;) are not allowed. For more information see [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
+    &quot;A String&quot;,
+  ],
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Response message for `TestIamPermissions` method.
+  &quot;permissions&quot;: [ # A subset of `TestPermissionsRequest.permissions` that the caller is allowed.
+    &quot;A String&quot;,
+  ],
+}</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/eventarc_v1.projects.locations.html b/docs/dyn/eventarc_v1.projects.locations.html
index 2566e20..0682b9f 100644
--- a/docs/dyn/eventarc_v1.projects.locations.html
+++ b/docs/dyn/eventarc_v1.projects.locations.html
@@ -75,6 +75,11 @@
 <h1><a href="eventarc_v1.html">Eventarc API</a> . <a href="eventarc_v1.projects.html">projects</a> . <a href="eventarc_v1.projects.locations.html">locations</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
+  <code><a href="eventarc_v1.projects.locations.channels.html">channels()</a></code>
+</p>
+<p class="firstline">Returns the channels Resource.</p>
+
+<p class="toc_element">
   <code><a href="eventarc_v1.projects.locations.operations.html">operations()</a></code>
 </p>
 <p class="firstline">Returns the operations Resource.</p>
diff --git a/docs/dyn/file_v1beta1.projects.locations.instances.html b/docs/dyn/file_v1beta1.projects.locations.instances.html
index 5d40ef3..ff2a367 100644
--- a/docs/dyn/file_v1beta1.projects.locations.instances.html
+++ b/docs/dyn/file_v1beta1.projects.locations.instances.html
@@ -75,6 +75,11 @@
 <h1><a href="file_v1beta1.html">Cloud Filestore API</a> . <a href="file_v1beta1.projects.html">projects</a> . <a href="file_v1beta1.projects.locations.html">locations</a> . <a href="file_v1beta1.projects.locations.instances.html">instances</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
+  <code><a href="file_v1beta1.projects.locations.instances.snapshots.html">snapshots()</a></code>
+</p>
+<p class="firstline">Returns the snapshots Resource.</p>
+
+<p class="toc_element">
   <code><a href="#close">close()</a></code></p>
 <p class="firstline">Close httplib2 connections.</p>
 <p class="toc_element">
@@ -149,7 +154,7 @@
         &quot;A String&quot;,
       ],
       &quot;network&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [VPC network](/compute/docs/networks-and-firewalls#networks) to which the instance is connected.
-      &quot;reservedIpRange&quot;: &quot;A String&quot;, # A /29 CIDR block for Basic or a /23 CIDR block for High Scale in one of the [internal IP address ranges](https://www.arin.net/knowledge/address_filters.html) that identifies the range of IP addresses reserved for this instance. For example, 10.0.0.0/29 or 192.168.0.0/23. The range you specify can&#x27;t overlap with either existing subnets or assigned IP address ranges for other Cloud Filestore instances in the selected VPC network.
+      &quot;reservedIpRange&quot;: &quot;A String&quot;, # Optional, reserved_ip_range can have one of the following two types of values. * CIDR range value when using DIRECT_PEERING connect mode. * [Named Address Range](https://cloud.google.com/compute/docs/ip-addresses/reserve-static-internal-ip-address) when using PRIVATE_SERVICE_ACCESS connect mode. For both cases, the range value (direct CIDR value or the range value with which the named range was created) must be a /29 CIDR block for Basic tier or a /23 CIDR block for High Scale or Enterprise tier in one of the [internal IP address ranges](https://www.arin.net/knowledge/address_filters.html) that identifies the range of IP addresses reserved for this instance. For example, 10.0.0.0/29 or 192.168.0.0/23. The range you specify can&#x27;t overlap with either existing subnets or assigned IP address ranges for other Cloud Filestore instances in the selected VPC network.
     },
   ],
   &quot;satisfiesPzs&quot;: True or False, # Output only. Reserved for future use.
@@ -273,7 +278,7 @@
         &quot;A String&quot;,
       ],
       &quot;network&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [VPC network](/compute/docs/networks-and-firewalls#networks) to which the instance is connected.
-      &quot;reservedIpRange&quot;: &quot;A String&quot;, # A /29 CIDR block for Basic or a /23 CIDR block for High Scale in one of the [internal IP address ranges](https://www.arin.net/knowledge/address_filters.html) that identifies the range of IP addresses reserved for this instance. For example, 10.0.0.0/29 or 192.168.0.0/23. The range you specify can&#x27;t overlap with either existing subnets or assigned IP address ranges for other Cloud Filestore instances in the selected VPC network.
+      &quot;reservedIpRange&quot;: &quot;A String&quot;, # Optional, reserved_ip_range can have one of the following two types of values. * CIDR range value when using DIRECT_PEERING connect mode. * [Named Address Range](https://cloud.google.com/compute/docs/ip-addresses/reserve-static-internal-ip-address) when using PRIVATE_SERVICE_ACCESS connect mode. For both cases, the range value (direct CIDR value or the range value with which the named range was created) must be a /29 CIDR block for Basic tier or a /23 CIDR block for High Scale or Enterprise tier in one of the [internal IP address ranges](https://www.arin.net/knowledge/address_filters.html) that identifies the range of IP addresses reserved for this instance. For example, 10.0.0.0/29 or 192.168.0.0/23. The range you specify can&#x27;t overlap with either existing subnets or assigned IP address ranges for other Cloud Filestore instances in the selected VPC network.
     },
   ],
   &quot;satisfiesPzs&quot;: True or False, # Output only. Reserved for future use.
@@ -339,7 +344,7 @@
             &quot;A String&quot;,
           ],
           &quot;network&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [VPC network](/compute/docs/networks-and-firewalls#networks) to which the instance is connected.
-          &quot;reservedIpRange&quot;: &quot;A String&quot;, # A /29 CIDR block for Basic or a /23 CIDR block for High Scale in one of the [internal IP address ranges](https://www.arin.net/knowledge/address_filters.html) that identifies the range of IP addresses reserved for this instance. For example, 10.0.0.0/29 or 192.168.0.0/23. The range you specify can&#x27;t overlap with either existing subnets or assigned IP address ranges for other Cloud Filestore instances in the selected VPC network.
+          &quot;reservedIpRange&quot;: &quot;A String&quot;, # Optional, reserved_ip_range can have one of the following two types of values. * CIDR range value when using DIRECT_PEERING connect mode. * [Named Address Range](https://cloud.google.com/compute/docs/ip-addresses/reserve-static-internal-ip-address) when using PRIVATE_SERVICE_ACCESS connect mode. For both cases, the range value (direct CIDR value or the range value with which the named range was created) must be a /29 CIDR block for Basic tier or a /23 CIDR block for High Scale or Enterprise tier in one of the [internal IP address ranges](https://www.arin.net/knowledge/address_filters.html) that identifies the range of IP addresses reserved for this instance. For example, 10.0.0.0/29 or 192.168.0.0/23. The range you specify can&#x27;t overlap with either existing subnets or assigned IP address ranges for other Cloud Filestore instances in the selected VPC network.
         },
       ],
       &quot;satisfiesPzs&quot;: True or False, # Output only. Reserved for future use.
@@ -414,7 +419,7 @@
         &quot;A String&quot;,
       ],
       &quot;network&quot;: &quot;A String&quot;, # The name of the Google Compute Engine [VPC network](/compute/docs/networks-and-firewalls#networks) to which the instance is connected.
-      &quot;reservedIpRange&quot;: &quot;A String&quot;, # A /29 CIDR block for Basic or a /23 CIDR block for High Scale in one of the [internal IP address ranges](https://www.arin.net/knowledge/address_filters.html) that identifies the range of IP addresses reserved for this instance. For example, 10.0.0.0/29 or 192.168.0.0/23. The range you specify can&#x27;t overlap with either existing subnets or assigned IP address ranges for other Cloud Filestore instances in the selected VPC network.
+      &quot;reservedIpRange&quot;: &quot;A String&quot;, # Optional, reserved_ip_range can have one of the following two types of values. * CIDR range value when using DIRECT_PEERING connect mode. * [Named Address Range](https://cloud.google.com/compute/docs/ip-addresses/reserve-static-internal-ip-address) when using PRIVATE_SERVICE_ACCESS connect mode. For both cases, the range value (direct CIDR value or the range value with which the named range was created) must be a /29 CIDR block for Basic tier or a /23 CIDR block for High Scale or Enterprise tier in one of the [internal IP address ranges](https://www.arin.net/knowledge/address_filters.html) that identifies the range of IP addresses reserved for this instance. For example, 10.0.0.0/29 or 192.168.0.0/23. The range you specify can&#x27;t overlap with either existing subnets or assigned IP address ranges for other Cloud Filestore instances in the selected VPC network.
     },
   ],
   &quot;satisfiesPzs&quot;: True or False, # Output only. Reserved for future use.
diff --git a/docs/dyn/file_v1beta1.projects.locations.instances.snapshots.html b/docs/dyn/file_v1beta1.projects.locations.instances.snapshots.html
new file mode 100644
index 0000000..9d0459f
--- /dev/null
+++ b/docs/dyn/file_v1beta1.projects.locations.instances.snapshots.html
@@ -0,0 +1,314 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="file_v1beta1.html">Cloud Filestore API</a> . <a href="file_v1beta1.projects.html">projects</a> . <a href="file_v1beta1.projects.locations.html">locations</a> . <a href="file_v1beta1.projects.locations.instances.html">instances</a> . <a href="file_v1beta1.projects.locations.instances.snapshots.html">snapshots</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#close">close()</a></code></p>
+<p class="firstline">Close httplib2 connections.</p>
+<p class="toc_element">
+  <code><a href="#create">create(parent, body=None, snapshotId=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Creates a snapshot.</p>
+<p class="toc_element">
+  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
+<p class="firstline">Deletes a snapshot.</p>
+<p class="toc_element">
+  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
+<p class="firstline">Gets the details of a specific snapshot.</p>
+<p class="toc_element">
+  <code><a href="#list">list(parent, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Lists all snapshots in a project for either a specified location or for all locations.</p>
+<p class="toc_element">
+  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
+<p class="firstline">Retrieves the next page of results.</p>
+<p class="toc_element">
+  <code><a href="#patch">patch(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Updates the settings of a specific snapshot.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="close">close()</code>
+  <pre>Close httplib2 connections.</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="create">create(parent, body=None, snapshotId=None, x__xgafv=None)</code>
+  <pre>Creates a snapshot.
+
+Args:
+  parent: string, Required. The Filestore Instance to create the snapshots of, in the format projects/{project_id}/locations/{location}/instances/{instance_id} (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # A Cloud Filestore snapshot.
+  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time when the snapshot was created.
+  &quot;description&quot;: &quot;A String&quot;, # A description of the snapshot with 2048 characters or less. Requests with longer descriptions will be rejected.
+  &quot;filesystemUsedBytes&quot;: &quot;A String&quot;, # Output only. The amount of bytes needed to allocate a full copy of the snapshot content
+  &quot;labels&quot;: { # Resource labels to represent user provided metadata.
+    &quot;a_key&quot;: &quot;A String&quot;,
+  },
+  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the snapshot, in the format projects/{project_id}/locations/{location_id}/instances/{instance_id}/snapshots/{snapshot_id}.
+  &quot;state&quot;: &quot;A String&quot;, # Output only. The snapshot state.
+}
+
+  snapshotId: string, Required. The ID to use for the snapshot. The ID must be unique within the specified instance. This value must start with a lowercase letter followed by up to 62 lowercase letters, numbers, or hyphens, and cannot end with a hyphen.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # This resource represents a long-running operation that is the result of a network API call.
+  &quot;done&quot;: True or False, # 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.
+  &quot;error&quot;: { # 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). # The error result of the operation in case of failure or cancellation.
+    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
+    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
+      {
+        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+      },
+    ],
+    &quot;message&quot;: &quot;A String&quot;, # 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.
+  },
+  &quot;metadata&quot;: { # 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.
+    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+  },
+  &quot;name&quot;: &quot;A String&quot;, # 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}`.
+  &quot;response&quot;: { # 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`.
+    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+  },
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
+  <pre>Deletes a snapshot.
+
+Args:
+  name: string, Required. The snapshot resource name, in the format projects/{project_id}/locations/{location}/instances/{instance_id}/snapshots/{snapshot_id} (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # This resource represents a long-running operation that is the result of a network API call.
+  &quot;done&quot;: True or False, # 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.
+  &quot;error&quot;: { # 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). # The error result of the operation in case of failure or cancellation.
+    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
+    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
+      {
+        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+      },
+    ],
+    &quot;message&quot;: &quot;A String&quot;, # 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.
+  },
+  &quot;metadata&quot;: { # 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.
+    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+  },
+  &quot;name&quot;: &quot;A String&quot;, # 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}`.
+  &quot;response&quot;: { # 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`.
+    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+  },
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(name, x__xgafv=None)</code>
+  <pre>Gets the details of a specific snapshot.
+
+Args:
+  name: string, Required. The snapshot resource name, in the format projects/{project_id}/locations/{location}/instances/{instance_id}/snapshots/{snapshot_id} (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # A Cloud Filestore snapshot.
+  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time when the snapshot was created.
+  &quot;description&quot;: &quot;A String&quot;, # A description of the snapshot with 2048 characters or less. Requests with longer descriptions will be rejected.
+  &quot;filesystemUsedBytes&quot;: &quot;A String&quot;, # Output only. The amount of bytes needed to allocate a full copy of the snapshot content
+  &quot;labels&quot;: { # Resource labels to represent user provided metadata.
+    &quot;a_key&quot;: &quot;A String&quot;,
+  },
+  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the snapshot, in the format projects/{project_id}/locations/{location_id}/instances/{instance_id}/snapshots/{snapshot_id}.
+  &quot;state&quot;: &quot;A String&quot;, # Output only. The snapshot state.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(parent, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
+  <pre>Lists all snapshots in a project for either a specified location or for all locations.
+
+Args:
+  parent: string, Required. The instance for which to retrieve snapshot information, in the format projects/{project_id}/locations/{location}/instances/{instance_id}. (required)
+  filter: string, List filter.
+  orderBy: string, Sort results. Supported values are &quot;name&quot;, &quot;name desc&quot; or &quot;&quot; (unsorted).
+  pageSize: integer, The maximum number of items to return.
+  pageToken: string, The next_page_token value to use if there are additional results to retrieve for this list request.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # ListSnapshotsResponse is the result of ListSnapshotsRequest.
+  &quot;nextPageToken&quot;: &quot;A String&quot;, # The token you can use to retrieve the next page of results. Not returned if there are no more results in the list.
+  &quot;snapshots&quot;: [ # A list of snapshots in the project for the specified instance.
+    { # A Cloud Filestore snapshot.
+      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time when the snapshot was created.
+      &quot;description&quot;: &quot;A String&quot;, # A description of the snapshot with 2048 characters or less. Requests with longer descriptions will be rejected.
+      &quot;filesystemUsedBytes&quot;: &quot;A String&quot;, # Output only. The amount of bytes needed to allocate a full copy of the snapshot content
+      &quot;labels&quot;: { # Resource labels to represent user provided metadata.
+        &quot;a_key&quot;: &quot;A String&quot;,
+      },
+      &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the snapshot, in the format projects/{project_id}/locations/{location_id}/instances/{instance_id}/snapshots/{snapshot_id}.
+      &quot;state&quot;: &quot;A String&quot;, # Output only. The snapshot state.
+    },
+  ],
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
+  <pre>Retrieves the next page of results.
+
+Args:
+  previous_request: The request for the previous page. (required)
+  previous_response: The response from the request for the previous page. (required)
+
+Returns:
+  A request object that you can call &#x27;execute()&#x27; on to request the next
+  page. Returns None if there are no more items in the collection.
+    </pre>
+</div>
+
+<div class="method">
+    <code class="details" id="patch">patch(name, body=None, updateMask=None, x__xgafv=None)</code>
+  <pre>Updates the settings of a specific snapshot.
+
+Args:
+  name: string, Output only. The resource name of the snapshot, in the format projects/{project_id}/locations/{location_id}/instances/{instance_id}/snapshots/{snapshot_id}. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # A Cloud Filestore snapshot.
+  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time when the snapshot was created.
+  &quot;description&quot;: &quot;A String&quot;, # A description of the snapshot with 2048 characters or less. Requests with longer descriptions will be rejected.
+  &quot;filesystemUsedBytes&quot;: &quot;A String&quot;, # Output only. The amount of bytes needed to allocate a full copy of the snapshot content
+  &quot;labels&quot;: { # Resource labels to represent user provided metadata.
+    &quot;a_key&quot;: &quot;A String&quot;,
+  },
+  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the snapshot, in the format projects/{project_id}/locations/{location_id}/instances/{instance_id}/snapshots/{snapshot_id}.
+  &quot;state&quot;: &quot;A String&quot;, # Output only. The snapshot state.
+}
+
+  updateMask: string, Required. Mask of fields to update. At least one path must be supplied in this field.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # This resource represents a long-running operation that is the result of a network API call.
+  &quot;done&quot;: True or False, # 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.
+  &quot;error&quot;: { # 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). # The error result of the operation in case of failure or cancellation.
+    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
+    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
+      {
+        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+      },
+    ],
+    &quot;message&quot;: &quot;A String&quot;, # 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.
+  },
+  &quot;metadata&quot;: { # 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.
+    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+  },
+  &quot;name&quot;: &quot;A String&quot;, # 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}`.
+  &quot;response&quot;: { # 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`.
+    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+  },
+}</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/firestore_v1.projects.databases.documents.html b/docs/dyn/firestore_v1.projects.databases.documents.html
index 02464f5..5887319 100644
--- a/docs/dyn/firestore_v1.projects.databases.documents.html
+++ b/docs/dyn/firestore_v1.projects.databases.documents.html
@@ -175,11 +175,7 @@
     &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was created. This value increases monotonically when a document is deleted then recreated. It can also be compared to values from other documents and the `read_time` of a query.
     &quot;fields&quot;: { # The document&#x27;s fields. The map keys represent field names. A simple field name contains only characters `a` to `z`, `A` to `Z`, `0` to `9`, or `_`, and must not start with `0` to `9`. For example, `foo_bar_17`. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty. Field paths may be used in other contexts to refer to structured fields defined here. For `map_value`, the field path is represented by the simple or quoted field names of the containing fields, delimited by `.`. For example, the structured field `&quot;foo&quot; : { map_value: { &quot;x&amp;y&quot; : { string_value: &quot;hello&quot; }}}` would be represented by the field path `foo.x&amp;y`. Within a field path, a quoted field name starts and ends with `` ` `` and may contain any character. Some characters, including `` ` ``, must be escaped using a `\`. For example, `` `x&amp;y` `` represents `x&amp;y` and `` `bak\`tik` `` represents `` bak`tik ``.
       &quot;a_key&quot;: { # A message that can hold any of the supported value types.
-        &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-          &quot;values&quot;: [ # Values in the array.
-            # Object with schema name: Value
-          ],
-        },
+        &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
         &quot;booleanValue&quot;: True or False, # A boolean value.
         &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
         &quot;doubleValue&quot;: 3.14, # A double value.
@@ -234,16 +230,31 @@
           { # A transformation of a field of the document.
             &quot;appendMissingElements&quot;: { # An array value. # Append the given elements in order if they are not already present in the current field value. If the field is not an array, or if the field does not yet exist, it is first set to the empty array. Equivalent numbers of different types (e.g. 3L and 3.0) are considered equal when checking if a value is missing. NaN is equal to NaN, and Null is equal to Null. If the input contains multiple equivalent values, only the first will be considered. The corresponding transform_result will be the null value.
               &quot;values&quot;: [ # Values in the array.
-                # Object with schema name: Value
+                { # A message that can hold any of the supported value types.
+                  &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
+                  &quot;booleanValue&quot;: True or False, # A boolean value.
+                  &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
+                  &quot;doubleValue&quot;: 3.14, # A double value.
+                  &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
+                    &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
+                    &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
+                  },
+                  &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
+                  &quot;mapValue&quot;: { # A map value. # A map value.
+                    &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
+                      &quot;a_key&quot;: # Object with schema name: Value
+                    },
+                  },
+                  &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
+                  &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
+                  &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
+                  &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
+                },
               ],
             },
             &quot;fieldPath&quot;: &quot;A String&quot;, # The path of the field. See Document.fields for the field path syntax reference.
             &quot;increment&quot;: { # A message that can hold any of the supported value types. # Adds the given value to the field&#x27;s current value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the given value. If either of the given value or the current field value are doubles, both values will be interpreted as doubles. Double arithmetic and representation of double values follow IEEE 754 semantics. If there is positive/negative integer overflow, the field is resolved to the largest magnitude positive/negative integer.
-              &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-                &quot;values&quot;: [ # Values in the array.
-                  # Object with schema name: Value
-                ],
-              },
+              &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
               &quot;booleanValue&quot;: True or False, # A boolean value.
               &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
               &quot;doubleValue&quot;: 3.14, # A double value.
@@ -263,11 +274,7 @@
               &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
             },
             &quot;maximum&quot;: { # A message that can hold any of the supported value types. # Sets the field to the maximum of its current value and the given value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the given value. If a maximum operation is applied where the field and the input value are of mixed types (that is - one is an integer and one is a double) the field takes on the type of the larger operand. If the operands are equivalent (e.g. 3 and 3.0), the field does not change. 0, 0.0, and -0.0 are all zero. The maximum of a zero stored value and zero input value is always the stored value. The maximum of any numeric value x and NaN is NaN.
-              &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-                &quot;values&quot;: [ # Values in the array.
-                  # Object with schema name: Value
-                ],
-              },
+              &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
               &quot;booleanValue&quot;: True or False, # A boolean value.
               &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
               &quot;doubleValue&quot;: 3.14, # A double value.
@@ -287,11 +294,7 @@
               &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
             },
             &quot;minimum&quot;: { # A message that can hold any of the supported value types. # Sets the field to the minimum of its current value and the given value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the input value. If a minimum operation is applied where the field and the input value are of mixed types (that is - one is an integer and one is a double) the field takes on the type of the smaller operand. If the operands are equivalent (e.g. 3 and 3.0), the field does not change. 0, 0.0, and -0.0 are all zero. The minimum of a zero stored value and zero input value is always the stored value. The minimum of any numeric value x and NaN is NaN.
-              &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-                &quot;values&quot;: [ # Values in the array.
-                  # Object with schema name: Value
-                ],
-              },
+              &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
               &quot;booleanValue&quot;: True or False, # A boolean value.
               &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
               &quot;doubleValue&quot;: 3.14, # A double value.
@@ -312,7 +315,26 @@
             },
             &quot;removeAllFromArray&quot;: { # An array value. # Remove all of the given elements from the array in the field. If the field is not an array, or if the field does not yet exist, it is set to the empty array. Equivalent numbers of the different types (e.g. 3L and 3.0) are considered equal when deciding whether an element should be removed. NaN is equal to NaN, and Null is equal to Null. This will remove all equivalent values if there are duplicates. The corresponding transform_result will be the null value.
               &quot;values&quot;: [ # Values in the array.
-                # Object with schema name: Value
+                { # A message that can hold any of the supported value types.
+                  &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
+                  &quot;booleanValue&quot;: True or False, # A boolean value.
+                  &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
+                  &quot;doubleValue&quot;: 3.14, # A double value.
+                  &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
+                    &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
+                    &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
+                  },
+                  &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
+                  &quot;mapValue&quot;: { # A map value. # A map value.
+                    &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
+                      &quot;a_key&quot;: # Object with schema name: Value
+                    },
+                  },
+                  &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
+                  &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
+                  &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
+                  &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
+                },
               ],
             },
             &quot;setToServerValue&quot;: &quot;A String&quot;, # Sets the field to the given server value.
@@ -323,11 +345,7 @@
         &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was created. This value increases monotonically when a document is deleted then recreated. It can also be compared to values from other documents and the `read_time` of a query.
         &quot;fields&quot;: { # The document&#x27;s fields. The map keys represent field names. A simple field name contains only characters `a` to `z`, `A` to `Z`, `0` to `9`, or `_`, and must not start with `0` to `9`. For example, `foo_bar_17`. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty. Field paths may be used in other contexts to refer to structured fields defined here. For `map_value`, the field path is represented by the simple or quoted field names of the containing fields, delimited by `.`. For example, the structured field `&quot;foo&quot; : { map_value: { &quot;x&amp;y&quot; : { string_value: &quot;hello&quot; }}}` would be represented by the field path `foo.x&amp;y`. Within a field path, a quoted field name starts and ends with `` ` `` and may contain any character. Some characters, including `` ` ``, must be escaped using a `\`. For example, `` `x&amp;y` `` represents `x&amp;y` and `` `bak\`tik` `` represents `` bak`tik ``.
           &quot;a_key&quot;: { # A message that can hold any of the supported value types.
-            &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-              &quot;values&quot;: [ # Values in the array.
-                # Object with schema name: Value
-              ],
-            },
+            &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
             &quot;booleanValue&quot;: True or False, # A boolean value.
             &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
             &quot;doubleValue&quot;: 3.14, # A double value.
@@ -359,16 +377,31 @@
         { # A transformation of a field of the document.
           &quot;appendMissingElements&quot;: { # An array value. # Append the given elements in order if they are not already present in the current field value. If the field is not an array, or if the field does not yet exist, it is first set to the empty array. Equivalent numbers of different types (e.g. 3L and 3.0) are considered equal when checking if a value is missing. NaN is equal to NaN, and Null is equal to Null. If the input contains multiple equivalent values, only the first will be considered. The corresponding transform_result will be the null value.
             &quot;values&quot;: [ # Values in the array.
-              # Object with schema name: Value
+              { # A message that can hold any of the supported value types.
+                &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
+                &quot;booleanValue&quot;: True or False, # A boolean value.
+                &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
+                &quot;doubleValue&quot;: 3.14, # A double value.
+                &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
+                  &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
+                  &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
+                },
+                &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
+                &quot;mapValue&quot;: { # A map value. # A map value.
+                  &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
+                    &quot;a_key&quot;: # Object with schema name: Value
+                  },
+                },
+                &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
+                &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
+                &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
+                &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
+              },
             ],
           },
           &quot;fieldPath&quot;: &quot;A String&quot;, # The path of the field. See Document.fields for the field path syntax reference.
           &quot;increment&quot;: { # A message that can hold any of the supported value types. # Adds the given value to the field&#x27;s current value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the given value. If either of the given value or the current field value are doubles, both values will be interpreted as doubles. Double arithmetic and representation of double values follow IEEE 754 semantics. If there is positive/negative integer overflow, the field is resolved to the largest magnitude positive/negative integer.
-            &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-              &quot;values&quot;: [ # Values in the array.
-                # Object with schema name: Value
-              ],
-            },
+            &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
             &quot;booleanValue&quot;: True or False, # A boolean value.
             &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
             &quot;doubleValue&quot;: 3.14, # A double value.
@@ -388,11 +421,7 @@
             &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
           },
           &quot;maximum&quot;: { # A message that can hold any of the supported value types. # Sets the field to the maximum of its current value and the given value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the given value. If a maximum operation is applied where the field and the input value are of mixed types (that is - one is an integer and one is a double) the field takes on the type of the larger operand. If the operands are equivalent (e.g. 3 and 3.0), the field does not change. 0, 0.0, and -0.0 are all zero. The maximum of a zero stored value and zero input value is always the stored value. The maximum of any numeric value x and NaN is NaN.
-            &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-              &quot;values&quot;: [ # Values in the array.
-                # Object with schema name: Value
-              ],
-            },
+            &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
             &quot;booleanValue&quot;: True or False, # A boolean value.
             &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
             &quot;doubleValue&quot;: 3.14, # A double value.
@@ -412,11 +441,7 @@
             &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
           },
           &quot;minimum&quot;: { # A message that can hold any of the supported value types. # Sets the field to the minimum of its current value and the given value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the input value. If a minimum operation is applied where the field and the input value are of mixed types (that is - one is an integer and one is a double) the field takes on the type of the smaller operand. If the operands are equivalent (e.g. 3 and 3.0), the field does not change. 0, 0.0, and -0.0 are all zero. The minimum of a zero stored value and zero input value is always the stored value. The minimum of any numeric value x and NaN is NaN.
-            &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-              &quot;values&quot;: [ # Values in the array.
-                # Object with schema name: Value
-              ],
-            },
+            &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
             &quot;booleanValue&quot;: True or False, # A boolean value.
             &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
             &quot;doubleValue&quot;: 3.14, # A double value.
@@ -437,7 +462,26 @@
           },
           &quot;removeAllFromArray&quot;: { # An array value. # Remove all of the given elements from the array in the field. If the field is not an array, or if the field does not yet exist, it is set to the empty array. Equivalent numbers of the different types (e.g. 3L and 3.0) are considered equal when deciding whether an element should be removed. NaN is equal to NaN, and Null is equal to Null. This will remove all equivalent values if there are duplicates. The corresponding transform_result will be the null value.
             &quot;values&quot;: [ # Values in the array.
-              # Object with schema name: Value
+              { # A message that can hold any of the supported value types.
+                &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
+                &quot;booleanValue&quot;: True or False, # A boolean value.
+                &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
+                &quot;doubleValue&quot;: 3.14, # A double value.
+                &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
+                  &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
+                  &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
+                },
+                &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
+                &quot;mapValue&quot;: { # A map value. # A map value.
+                  &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
+                    &quot;a_key&quot;: # Object with schema name: Value
+                  },
+                },
+                &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
+                &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
+                &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
+                &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
+              },
             ],
           },
           &quot;setToServerValue&quot;: &quot;A String&quot;, # Sets the field to the given server value.
@@ -471,11 +515,7 @@
     { # The result of applying a write.
       &quot;transformResults&quot;: [ # The results of applying each DocumentTransform.FieldTransform, in the same order.
         { # A message that can hold any of the supported value types.
-          &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-            &quot;values&quot;: [ # Values in the array.
-              # Object with schema name: Value
-            ],
-          },
+          &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
           &quot;booleanValue&quot;: True or False, # A boolean value.
           &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
           &quot;doubleValue&quot;: 3.14, # A double value.
@@ -563,16 +603,31 @@
           { # A transformation of a field of the document.
             &quot;appendMissingElements&quot;: { # An array value. # Append the given elements in order if they are not already present in the current field value. If the field is not an array, or if the field does not yet exist, it is first set to the empty array. Equivalent numbers of different types (e.g. 3L and 3.0) are considered equal when checking if a value is missing. NaN is equal to NaN, and Null is equal to Null. If the input contains multiple equivalent values, only the first will be considered. The corresponding transform_result will be the null value.
               &quot;values&quot;: [ # Values in the array.
-                # Object with schema name: Value
+                { # A message that can hold any of the supported value types.
+                  &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
+                  &quot;booleanValue&quot;: True or False, # A boolean value.
+                  &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
+                  &quot;doubleValue&quot;: 3.14, # A double value.
+                  &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
+                    &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
+                    &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
+                  },
+                  &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
+                  &quot;mapValue&quot;: { # A map value. # A map value.
+                    &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
+                      &quot;a_key&quot;: # Object with schema name: Value
+                    },
+                  },
+                  &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
+                  &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
+                  &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
+                  &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
+                },
               ],
             },
             &quot;fieldPath&quot;: &quot;A String&quot;, # The path of the field. See Document.fields for the field path syntax reference.
             &quot;increment&quot;: { # A message that can hold any of the supported value types. # Adds the given value to the field&#x27;s current value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the given value. If either of the given value or the current field value are doubles, both values will be interpreted as doubles. Double arithmetic and representation of double values follow IEEE 754 semantics. If there is positive/negative integer overflow, the field is resolved to the largest magnitude positive/negative integer.
-              &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-                &quot;values&quot;: [ # Values in the array.
-                  # Object with schema name: Value
-                ],
-              },
+              &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
               &quot;booleanValue&quot;: True or False, # A boolean value.
               &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
               &quot;doubleValue&quot;: 3.14, # A double value.
@@ -592,11 +647,7 @@
               &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
             },
             &quot;maximum&quot;: { # A message that can hold any of the supported value types. # Sets the field to the maximum of its current value and the given value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the given value. If a maximum operation is applied where the field and the input value are of mixed types (that is - one is an integer and one is a double) the field takes on the type of the larger operand. If the operands are equivalent (e.g. 3 and 3.0), the field does not change. 0, 0.0, and -0.0 are all zero. The maximum of a zero stored value and zero input value is always the stored value. The maximum of any numeric value x and NaN is NaN.
-              &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-                &quot;values&quot;: [ # Values in the array.
-                  # Object with schema name: Value
-                ],
-              },
+              &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
               &quot;booleanValue&quot;: True or False, # A boolean value.
               &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
               &quot;doubleValue&quot;: 3.14, # A double value.
@@ -616,11 +667,7 @@
               &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
             },
             &quot;minimum&quot;: { # A message that can hold any of the supported value types. # Sets the field to the minimum of its current value and the given value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the input value. If a minimum operation is applied where the field and the input value are of mixed types (that is - one is an integer and one is a double) the field takes on the type of the smaller operand. If the operands are equivalent (e.g. 3 and 3.0), the field does not change. 0, 0.0, and -0.0 are all zero. The minimum of a zero stored value and zero input value is always the stored value. The minimum of any numeric value x and NaN is NaN.
-              &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-                &quot;values&quot;: [ # Values in the array.
-                  # Object with schema name: Value
-                ],
-              },
+              &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
               &quot;booleanValue&quot;: True or False, # A boolean value.
               &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
               &quot;doubleValue&quot;: 3.14, # A double value.
@@ -641,7 +688,26 @@
             },
             &quot;removeAllFromArray&quot;: { # An array value. # Remove all of the given elements from the array in the field. If the field is not an array, or if the field does not yet exist, it is set to the empty array. Equivalent numbers of the different types (e.g. 3L and 3.0) are considered equal when deciding whether an element should be removed. NaN is equal to NaN, and Null is equal to Null. This will remove all equivalent values if there are duplicates. The corresponding transform_result will be the null value.
               &quot;values&quot;: [ # Values in the array.
-                # Object with schema name: Value
+                { # A message that can hold any of the supported value types.
+                  &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
+                  &quot;booleanValue&quot;: True or False, # A boolean value.
+                  &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
+                  &quot;doubleValue&quot;: 3.14, # A double value.
+                  &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
+                    &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
+                    &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
+                  },
+                  &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
+                  &quot;mapValue&quot;: { # A map value. # A map value.
+                    &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
+                      &quot;a_key&quot;: # Object with schema name: Value
+                    },
+                  },
+                  &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
+                  &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
+                  &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
+                  &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
+                },
               ],
             },
             &quot;setToServerValue&quot;: &quot;A String&quot;, # Sets the field to the given server value.
@@ -652,11 +718,7 @@
         &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was created. This value increases monotonically when a document is deleted then recreated. It can also be compared to values from other documents and the `read_time` of a query.
         &quot;fields&quot;: { # The document&#x27;s fields. The map keys represent field names. A simple field name contains only characters `a` to `z`, `A` to `Z`, `0` to `9`, or `_`, and must not start with `0` to `9`. For example, `foo_bar_17`. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty. Field paths may be used in other contexts to refer to structured fields defined here. For `map_value`, the field path is represented by the simple or quoted field names of the containing fields, delimited by `.`. For example, the structured field `&quot;foo&quot; : { map_value: { &quot;x&amp;y&quot; : { string_value: &quot;hello&quot; }}}` would be represented by the field path `foo.x&amp;y`. Within a field path, a quoted field name starts and ends with `` ` `` and may contain any character. Some characters, including `` ` ``, must be escaped using a `\`. For example, `` `x&amp;y` `` represents `x&amp;y` and `` `bak\`tik` `` represents `` bak`tik ``.
           &quot;a_key&quot;: { # A message that can hold any of the supported value types.
-            &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-              &quot;values&quot;: [ # Values in the array.
-                # Object with schema name: Value
-              ],
-            },
+            &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
             &quot;booleanValue&quot;: True or False, # A boolean value.
             &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
             &quot;doubleValue&quot;: 3.14, # A double value.
@@ -688,16 +750,31 @@
         { # A transformation of a field of the document.
           &quot;appendMissingElements&quot;: { # An array value. # Append the given elements in order if they are not already present in the current field value. If the field is not an array, or if the field does not yet exist, it is first set to the empty array. Equivalent numbers of different types (e.g. 3L and 3.0) are considered equal when checking if a value is missing. NaN is equal to NaN, and Null is equal to Null. If the input contains multiple equivalent values, only the first will be considered. The corresponding transform_result will be the null value.
             &quot;values&quot;: [ # Values in the array.
-              # Object with schema name: Value
+              { # A message that can hold any of the supported value types.
+                &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
+                &quot;booleanValue&quot;: True or False, # A boolean value.
+                &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
+                &quot;doubleValue&quot;: 3.14, # A double value.
+                &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
+                  &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
+                  &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
+                },
+                &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
+                &quot;mapValue&quot;: { # A map value. # A map value.
+                  &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
+                    &quot;a_key&quot;: # Object with schema name: Value
+                  },
+                },
+                &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
+                &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
+                &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
+                &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
+              },
             ],
           },
           &quot;fieldPath&quot;: &quot;A String&quot;, # The path of the field. See Document.fields for the field path syntax reference.
           &quot;increment&quot;: { # A message that can hold any of the supported value types. # Adds the given value to the field&#x27;s current value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the given value. If either of the given value or the current field value are doubles, both values will be interpreted as doubles. Double arithmetic and representation of double values follow IEEE 754 semantics. If there is positive/negative integer overflow, the field is resolved to the largest magnitude positive/negative integer.
-            &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-              &quot;values&quot;: [ # Values in the array.
-                # Object with schema name: Value
-              ],
-            },
+            &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
             &quot;booleanValue&quot;: True or False, # A boolean value.
             &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
             &quot;doubleValue&quot;: 3.14, # A double value.
@@ -717,11 +794,7 @@
             &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
           },
           &quot;maximum&quot;: { # A message that can hold any of the supported value types. # Sets the field to the maximum of its current value and the given value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the given value. If a maximum operation is applied where the field and the input value are of mixed types (that is - one is an integer and one is a double) the field takes on the type of the larger operand. If the operands are equivalent (e.g. 3 and 3.0), the field does not change. 0, 0.0, and -0.0 are all zero. The maximum of a zero stored value and zero input value is always the stored value. The maximum of any numeric value x and NaN is NaN.
-            &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-              &quot;values&quot;: [ # Values in the array.
-                # Object with schema name: Value
-              ],
-            },
+            &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
             &quot;booleanValue&quot;: True or False, # A boolean value.
             &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
             &quot;doubleValue&quot;: 3.14, # A double value.
@@ -741,11 +814,7 @@
             &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
           },
           &quot;minimum&quot;: { # A message that can hold any of the supported value types. # Sets the field to the minimum of its current value and the given value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the input value. If a minimum operation is applied where the field and the input value are of mixed types (that is - one is an integer and one is a double) the field takes on the type of the smaller operand. If the operands are equivalent (e.g. 3 and 3.0), the field does not change. 0, 0.0, and -0.0 are all zero. The minimum of a zero stored value and zero input value is always the stored value. The minimum of any numeric value x and NaN is NaN.
-            &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-              &quot;values&quot;: [ # Values in the array.
-                # Object with schema name: Value
-              ],
-            },
+            &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
             &quot;booleanValue&quot;: True or False, # A boolean value.
             &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
             &quot;doubleValue&quot;: 3.14, # A double value.
@@ -766,7 +835,26 @@
           },
           &quot;removeAllFromArray&quot;: { # An array value. # Remove all of the given elements from the array in the field. If the field is not an array, or if the field does not yet exist, it is set to the empty array. Equivalent numbers of the different types (e.g. 3L and 3.0) are considered equal when deciding whether an element should be removed. NaN is equal to NaN, and Null is equal to Null. This will remove all equivalent values if there are duplicates. The corresponding transform_result will be the null value.
             &quot;values&quot;: [ # Values in the array.
-              # Object with schema name: Value
+              { # A message that can hold any of the supported value types.
+                &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
+                &quot;booleanValue&quot;: True or False, # A boolean value.
+                &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
+                &quot;doubleValue&quot;: 3.14, # A double value.
+                &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
+                  &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
+                  &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
+                },
+                &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
+                &quot;mapValue&quot;: { # A map value. # A map value.
+                  &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
+                    &quot;a_key&quot;: # Object with schema name: Value
+                  },
+                },
+                &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
+                &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
+                &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
+                &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
+              },
             ],
           },
           &quot;setToServerValue&quot;: &quot;A String&quot;, # Sets the field to the given server value.
@@ -790,11 +878,7 @@
     { # The result of applying a write.
       &quot;transformResults&quot;: [ # The results of applying each DocumentTransform.FieldTransform, in the same order.
         { # A message that can hold any of the supported value types.
-          &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-            &quot;values&quot;: [ # Values in the array.
-              # Object with schema name: Value
-            ],
-          },
+          &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
           &quot;booleanValue&quot;: True or False, # A boolean value.
           &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
           &quot;doubleValue&quot;: 3.14, # A double value.
@@ -834,11 +918,7 @@
   &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was created. This value increases monotonically when a document is deleted then recreated. It can also be compared to values from other documents and the `read_time` of a query.
   &quot;fields&quot;: { # The document&#x27;s fields. The map keys represent field names. A simple field name contains only characters `a` to `z`, `A` to `Z`, `0` to `9`, or `_`, and must not start with `0` to `9`. For example, `foo_bar_17`. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty. Field paths may be used in other contexts to refer to structured fields defined here. For `map_value`, the field path is represented by the simple or quoted field names of the containing fields, delimited by `.`. For example, the structured field `&quot;foo&quot; : { map_value: { &quot;x&amp;y&quot; : { string_value: &quot;hello&quot; }}}` would be represented by the field path `foo.x&amp;y`. Within a field path, a quoted field name starts and ends with `` ` `` and may contain any character. Some characters, including `` ` ``, must be escaped using a `\`. For example, `` `x&amp;y` `` represents `x&amp;y` and `` `bak\`tik` `` represents `` bak`tik ``.
     &quot;a_key&quot;: { # A message that can hold any of the supported value types.
-      &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-        &quot;values&quot;: [ # Values in the array.
-          # Object with schema name: Value
-        ],
-      },
+      &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
       &quot;booleanValue&quot;: True or False, # A boolean value.
       &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
       &quot;doubleValue&quot;: 3.14, # A double value.
@@ -876,11 +956,7 @@
   &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was created. This value increases monotonically when a document is deleted then recreated. It can also be compared to values from other documents and the `read_time` of a query.
   &quot;fields&quot;: { # The document&#x27;s fields. The map keys represent field names. A simple field name contains only characters `a` to `z`, `A` to `Z`, `0` to `9`, or `_`, and must not start with `0` to `9`. For example, `foo_bar_17`. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty. Field paths may be used in other contexts to refer to structured fields defined here. For `map_value`, the field path is represented by the simple or quoted field names of the containing fields, delimited by `.`. For example, the structured field `&quot;foo&quot; : { map_value: { &quot;x&amp;y&quot; : { string_value: &quot;hello&quot; }}}` would be represented by the field path `foo.x&amp;y`. Within a field path, a quoted field name starts and ends with `` ` `` and may contain any character. Some characters, including `` ` ``, must be escaped using a `\`. For example, `` `x&amp;y` `` represents `x&amp;y` and `` `bak\`tik` `` represents `` bak`tik ``.
     &quot;a_key&quot;: { # A message that can hold any of the supported value types.
-      &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-        &quot;values&quot;: [ # Values in the array.
-          # Object with schema name: Value
-        ],
-      },
+      &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
       &quot;booleanValue&quot;: True or False, # A boolean value.
       &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
       &quot;doubleValue&quot;: 3.14, # A double value.
@@ -946,11 +1022,7 @@
   &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was created. This value increases monotonically when a document is deleted then recreated. It can also be compared to values from other documents and the `read_time` of a query.
   &quot;fields&quot;: { # The document&#x27;s fields. The map keys represent field names. A simple field name contains only characters `a` to `z`, `A` to `Z`, `0` to `9`, or `_`, and must not start with `0` to `9`. For example, `foo_bar_17`. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty. Field paths may be used in other contexts to refer to structured fields defined here. For `map_value`, the field path is represented by the simple or quoted field names of the containing fields, delimited by `.`. For example, the structured field `&quot;foo&quot; : { map_value: { &quot;x&amp;y&quot; : { string_value: &quot;hello&quot; }}}` would be represented by the field path `foo.x&amp;y`. Within a field path, a quoted field name starts and ends with `` ` `` and may contain any character. Some characters, including `` ` ``, must be escaped using a `\`. For example, `` `x&amp;y` `` represents `x&amp;y` and `` `bak\`tik` `` represents `` bak`tik ``.
     &quot;a_key&quot;: { # A message that can hold any of the supported value types.
-      &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-        &quot;values&quot;: [ # Values in the array.
-          # Object with schema name: Value
-        ],
-      },
+      &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
       &quot;booleanValue&quot;: True or False, # A boolean value.
       &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
       &quot;doubleValue&quot;: 3.14, # A double value.
@@ -1003,11 +1075,7 @@
       &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was created. This value increases monotonically when a document is deleted then recreated. It can also be compared to values from other documents and the `read_time` of a query.
       &quot;fields&quot;: { # The document&#x27;s fields. The map keys represent field names. A simple field name contains only characters `a` to `z`, `A` to `Z`, `0` to `9`, or `_`, and must not start with `0` to `9`. For example, `foo_bar_17`. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty. Field paths may be used in other contexts to refer to structured fields defined here. For `map_value`, the field path is represented by the simple or quoted field names of the containing fields, delimited by `.`. For example, the structured field `&quot;foo&quot; : { map_value: { &quot;x&amp;y&quot; : { string_value: &quot;hello&quot; }}}` would be represented by the field path `foo.x&amp;y`. Within a field path, a quoted field name starts and ends with `` ` `` and may contain any character. Some characters, including `` ` ``, must be escaped using a `\`. For example, `` `x&amp;y` `` represents `x&amp;y` and `` `bak\`tik` `` represents `` bak`tik ``.
         &quot;a_key&quot;: { # A message that can hold any of the supported value types.
-          &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-            &quot;values&quot;: [ # Values in the array.
-              # Object with schema name: Value
-            ],
-          },
+          &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
           &quot;booleanValue&quot;: True or False, # A boolean value.
           &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
           &quot;doubleValue&quot;: 3.14, # A double value.
@@ -1117,11 +1185,7 @@
           &quot;before&quot;: True or False, # If the position is just before or just after the given values, relative to the sort order defined by the query.
           &quot;values&quot;: [ # The values that represent a position, in the order they appear in the order by clause of a query. Can contain fewer values than specified in the order by clause.
             { # A message that can hold any of the supported value types.
-              &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-                &quot;values&quot;: [ # Values in the array.
-                  # Object with schema name: Value
-                ],
-              },
+              &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
               &quot;booleanValue&quot;: True or False, # A boolean value.
               &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
               &quot;doubleValue&quot;: 3.14, # A double value.
@@ -1169,11 +1233,7 @@
           &quot;before&quot;: True or False, # If the position is just before or just after the given values, relative to the sort order defined by the query.
           &quot;values&quot;: [ # The values that represent a position, in the order they appear in the order by clause of a query. Can contain fewer values than specified in the order by clause.
             { # A message that can hold any of the supported value types.
-              &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-                &quot;values&quot;: [ # Values in the array.
-                  # Object with schema name: Value
-                ],
-              },
+              &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
               &quot;booleanValue&quot;: True or False, # A boolean value.
               &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
               &quot;doubleValue&quot;: 3.14, # A double value.
@@ -1207,11 +1267,7 @@
             },
             &quot;op&quot;: &quot;A String&quot;, # The operator to filter by.
             &quot;value&quot;: { # A message that can hold any of the supported value types. # The value to compare to.
-              &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-                &quot;values&quot;: [ # Values in the array.
-                  # Object with schema name: Value
-                ],
-              },
+              &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
               &quot;booleanValue&quot;: True or False, # A boolean value.
               &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
               &quot;doubleValue&quot;: 3.14, # A double value.
@@ -1264,11 +1320,7 @@
       &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was created. This value increases monotonically when a document is deleted then recreated. It can also be compared to values from other documents and the `read_time` of a query.
       &quot;fields&quot;: { # The document&#x27;s fields. The map keys represent field names. A simple field name contains only characters `a` to `z`, `A` to `Z`, `0` to `9`, or `_`, and must not start with `0` to `9`. For example, `foo_bar_17`. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty. Field paths may be used in other contexts to refer to structured fields defined here. For `map_value`, the field path is represented by the simple or quoted field names of the containing fields, delimited by `.`. For example, the structured field `&quot;foo&quot; : { map_value: { &quot;x&amp;y&quot; : { string_value: &quot;hello&quot; }}}` would be represented by the field path `foo.x&amp;y`. Within a field path, a quoted field name starts and ends with `` ` `` and may contain any character. Some characters, including `` ` ``, must be escaped using a `\`. For example, `` `x&amp;y` `` represents `x&amp;y` and `` `bak\`tik` `` represents `` bak`tik ``.
         &quot;a_key&quot;: { # A message that can hold any of the supported value types.
-          &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-            &quot;values&quot;: [ # Values in the array.
-              # Object with schema name: Value
-            ],
-          },
+          &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
           &quot;booleanValue&quot;: True or False, # A boolean value.
           &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
           &quot;doubleValue&quot;: 3.14, # A double value.
@@ -1354,11 +1406,7 @@
       &quot;before&quot;: True or False, # If the position is just before or just after the given values, relative to the sort order defined by the query.
       &quot;values&quot;: [ # The values that represent a position, in the order they appear in the order by clause of a query. Can contain fewer values than specified in the order by clause.
         { # A message that can hold any of the supported value types.
-          &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-            &quot;values&quot;: [ # Values in the array.
-              # Object with schema name: Value
-            ],
-          },
+          &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
           &quot;booleanValue&quot;: True or False, # A boolean value.
           &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
           &quot;doubleValue&quot;: 3.14, # A double value.
@@ -1406,11 +1454,7 @@
       &quot;before&quot;: True or False, # If the position is just before or just after the given values, relative to the sort order defined by the query.
       &quot;values&quot;: [ # The values that represent a position, in the order they appear in the order by clause of a query. Can contain fewer values than specified in the order by clause.
         { # A message that can hold any of the supported value types.
-          &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-            &quot;values&quot;: [ # Values in the array.
-              # Object with schema name: Value
-            ],
-          },
+          &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
           &quot;booleanValue&quot;: True or False, # A boolean value.
           &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
           &quot;doubleValue&quot;: 3.14, # A double value.
@@ -1444,11 +1488,7 @@
         },
         &quot;op&quot;: &quot;A String&quot;, # The operator to filter by.
         &quot;value&quot;: { # A message that can hold any of the supported value types. # The value to compare to.
-          &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-            &quot;values&quot;: [ # Values in the array.
-              # Object with schema name: Value
-            ],
-          },
+          &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
           &quot;booleanValue&quot;: True or False, # A boolean value.
           &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
           &quot;doubleValue&quot;: 3.14, # A double value.
@@ -1493,11 +1533,7 @@
       &quot;before&quot;: True or False, # If the position is just before or just after the given values, relative to the sort order defined by the query.
       &quot;values&quot;: [ # The values that represent a position, in the order they appear in the order by clause of a query. Can contain fewer values than specified in the order by clause.
         { # A message that can hold any of the supported value types.
-          &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-            &quot;values&quot;: [ # Values in the array.
-              # Object with schema name: Value
-            ],
-          },
+          &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
           &quot;booleanValue&quot;: True or False, # A boolean value.
           &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
           &quot;doubleValue&quot;: 3.14, # A double value.
@@ -1549,11 +1585,7 @@
   &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was created. This value increases monotonically when a document is deleted then recreated. It can also be compared to values from other documents and the `read_time` of a query.
   &quot;fields&quot;: { # The document&#x27;s fields. The map keys represent field names. A simple field name contains only characters `a` to `z`, `A` to `Z`, `0` to `9`, or `_`, and must not start with `0` to `9`. For example, `foo_bar_17`. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty. Field paths may be used in other contexts to refer to structured fields defined here. For `map_value`, the field path is represented by the simple or quoted field names of the containing fields, delimited by `.`. For example, the structured field `&quot;foo&quot; : { map_value: { &quot;x&amp;y&quot; : { string_value: &quot;hello&quot; }}}` would be represented by the field path `foo.x&amp;y`. Within a field path, a quoted field name starts and ends with `` ` `` and may contain any character. Some characters, including `` ` ``, must be escaped using a `\`. For example, `` `x&amp;y` `` represents `x&amp;y` and `` `bak\`tik` `` represents `` bak`tik ``.
     &quot;a_key&quot;: { # A message that can hold any of the supported value types.
-      &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-        &quot;values&quot;: [ # Values in the array.
-          # Object with schema name: Value
-        ],
-      },
+      &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
       &quot;booleanValue&quot;: True or False, # A boolean value.
       &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
       &quot;doubleValue&quot;: 3.14, # A double value.
@@ -1593,11 +1625,7 @@
   &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was created. This value increases monotonically when a document is deleted then recreated. It can also be compared to values from other documents and the `read_time` of a query.
   &quot;fields&quot;: { # The document&#x27;s fields. The map keys represent field names. A simple field name contains only characters `a` to `z`, `A` to `Z`, `0` to `9`, or `_`, and must not start with `0` to `9`. For example, `foo_bar_17`. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty. Field paths may be used in other contexts to refer to structured fields defined here. For `map_value`, the field path is represented by the simple or quoted field names of the containing fields, delimited by `.`. For example, the structured field `&quot;foo&quot; : { map_value: { &quot;x&amp;y&quot; : { string_value: &quot;hello&quot; }}}` would be represented by the field path `foo.x&amp;y`. Within a field path, a quoted field name starts and ends with `` ` `` and may contain any character. Some characters, including `` ` ``, must be escaped using a `\`. For example, `` `x&amp;y` `` represents `x&amp;y` and `` `bak\`tik` `` represents `` bak`tik ``.
     &quot;a_key&quot;: { # A message that can hold any of the supported value types.
-      &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-        &quot;values&quot;: [ # Values in the array.
-          # Object with schema name: Value
-        ],
-      },
+      &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
       &quot;booleanValue&quot;: True or False, # A boolean value.
       &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
       &quot;doubleValue&quot;: 3.14, # A double value.
@@ -1671,11 +1699,7 @@
       &quot;before&quot;: True or False, # If the position is just before or just after the given values, relative to the sort order defined by the query.
       &quot;values&quot;: [ # The values that represent a position, in the order they appear in the order by clause of a query. Can contain fewer values than specified in the order by clause.
         { # A message that can hold any of the supported value types.
-          &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-            &quot;values&quot;: [ # Values in the array.
-              # Object with schema name: Value
-            ],
-          },
+          &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
           &quot;booleanValue&quot;: True or False, # A boolean value.
           &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
           &quot;doubleValue&quot;: 3.14, # A double value.
@@ -1723,11 +1747,7 @@
       &quot;before&quot;: True or False, # If the position is just before or just after the given values, relative to the sort order defined by the query.
       &quot;values&quot;: [ # The values that represent a position, in the order they appear in the order by clause of a query. Can contain fewer values than specified in the order by clause.
         { # A message that can hold any of the supported value types.
-          &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-            &quot;values&quot;: [ # Values in the array.
-              # Object with schema name: Value
-            ],
-          },
+          &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
           &quot;booleanValue&quot;: True or False, # A boolean value.
           &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
           &quot;doubleValue&quot;: 3.14, # A double value.
@@ -1761,11 +1781,7 @@
         },
         &quot;op&quot;: &quot;A String&quot;, # The operator to filter by.
         &quot;value&quot;: { # A message that can hold any of the supported value types. # The value to compare to.
-          &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-            &quot;values&quot;: [ # Values in the array.
-              # Object with schema name: Value
-            ],
-          },
+          &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
           &quot;booleanValue&quot;: True or False, # A boolean value.
           &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
           &quot;doubleValue&quot;: 3.14, # A double value.
@@ -1809,11 +1825,7 @@
     &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was created. This value increases monotonically when a document is deleted then recreated. It can also be compared to values from other documents and the `read_time` of a query.
     &quot;fields&quot;: { # The document&#x27;s fields. The map keys represent field names. A simple field name contains only characters `a` to `z`, `A` to `Z`, `0` to `9`, or `_`, and must not start with `0` to `9`. For example, `foo_bar_17`. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty. Field paths may be used in other contexts to refer to structured fields defined here. For `map_value`, the field path is represented by the simple or quoted field names of the containing fields, delimited by `.`. For example, the structured field `&quot;foo&quot; : { map_value: { &quot;x&amp;y&quot; : { string_value: &quot;hello&quot; }}}` would be represented by the field path `foo.x&amp;y`. Within a field path, a quoted field name starts and ends with `` ` `` and may contain any character. Some characters, including `` ` ``, must be escaped using a `\`. For example, `` `x&amp;y` `` represents `x&amp;y` and `` `bak\`tik` `` represents `` bak`tik ``.
       &quot;a_key&quot;: { # A message that can hold any of the supported value types.
-        &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-          &quot;values&quot;: [ # Values in the array.
-            # Object with schema name: Value
-          ],
-        },
+        &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
         &quot;booleanValue&quot;: True or False, # A boolean value.
         &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
         &quot;doubleValue&quot;: 3.14, # A double value.
@@ -1870,16 +1882,31 @@
           { # A transformation of a field of the document.
             &quot;appendMissingElements&quot;: { # An array value. # Append the given elements in order if they are not already present in the current field value. If the field is not an array, or if the field does not yet exist, it is first set to the empty array. Equivalent numbers of different types (e.g. 3L and 3.0) are considered equal when checking if a value is missing. NaN is equal to NaN, and Null is equal to Null. If the input contains multiple equivalent values, only the first will be considered. The corresponding transform_result will be the null value.
               &quot;values&quot;: [ # Values in the array.
-                # Object with schema name: Value
+                { # A message that can hold any of the supported value types.
+                  &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
+                  &quot;booleanValue&quot;: True or False, # A boolean value.
+                  &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
+                  &quot;doubleValue&quot;: 3.14, # A double value.
+                  &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
+                    &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
+                    &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
+                  },
+                  &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
+                  &quot;mapValue&quot;: { # A map value. # A map value.
+                    &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
+                      &quot;a_key&quot;: # Object with schema name: Value
+                    },
+                  },
+                  &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
+                  &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
+                  &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
+                  &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
+                },
               ],
             },
             &quot;fieldPath&quot;: &quot;A String&quot;, # The path of the field. See Document.fields for the field path syntax reference.
             &quot;increment&quot;: { # A message that can hold any of the supported value types. # Adds the given value to the field&#x27;s current value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the given value. If either of the given value or the current field value are doubles, both values will be interpreted as doubles. Double arithmetic and representation of double values follow IEEE 754 semantics. If there is positive/negative integer overflow, the field is resolved to the largest magnitude positive/negative integer.
-              &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-                &quot;values&quot;: [ # Values in the array.
-                  # Object with schema name: Value
-                ],
-              },
+              &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
               &quot;booleanValue&quot;: True or False, # A boolean value.
               &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
               &quot;doubleValue&quot;: 3.14, # A double value.
@@ -1899,11 +1926,7 @@
               &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
             },
             &quot;maximum&quot;: { # A message that can hold any of the supported value types. # Sets the field to the maximum of its current value and the given value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the given value. If a maximum operation is applied where the field and the input value are of mixed types (that is - one is an integer and one is a double) the field takes on the type of the larger operand. If the operands are equivalent (e.g. 3 and 3.0), the field does not change. 0, 0.0, and -0.0 are all zero. The maximum of a zero stored value and zero input value is always the stored value. The maximum of any numeric value x and NaN is NaN.
-              &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-                &quot;values&quot;: [ # Values in the array.
-                  # Object with schema name: Value
-                ],
-              },
+              &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
               &quot;booleanValue&quot;: True or False, # A boolean value.
               &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
               &quot;doubleValue&quot;: 3.14, # A double value.
@@ -1923,11 +1946,7 @@
               &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
             },
             &quot;minimum&quot;: { # A message that can hold any of the supported value types. # Sets the field to the minimum of its current value and the given value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the input value. If a minimum operation is applied where the field and the input value are of mixed types (that is - one is an integer and one is a double) the field takes on the type of the smaller operand. If the operands are equivalent (e.g. 3 and 3.0), the field does not change. 0, 0.0, and -0.0 are all zero. The minimum of a zero stored value and zero input value is always the stored value. The minimum of any numeric value x and NaN is NaN.
-              &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-                &quot;values&quot;: [ # Values in the array.
-                  # Object with schema name: Value
-                ],
-              },
+              &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
               &quot;booleanValue&quot;: True or False, # A boolean value.
               &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
               &quot;doubleValue&quot;: 3.14, # A double value.
@@ -1948,7 +1967,26 @@
             },
             &quot;removeAllFromArray&quot;: { # An array value. # Remove all of the given elements from the array in the field. If the field is not an array, or if the field does not yet exist, it is set to the empty array. Equivalent numbers of the different types (e.g. 3L and 3.0) are considered equal when deciding whether an element should be removed. NaN is equal to NaN, and Null is equal to Null. This will remove all equivalent values if there are duplicates. The corresponding transform_result will be the null value.
               &quot;values&quot;: [ # Values in the array.
-                # Object with schema name: Value
+                { # A message that can hold any of the supported value types.
+                  &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
+                  &quot;booleanValue&quot;: True or False, # A boolean value.
+                  &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
+                  &quot;doubleValue&quot;: 3.14, # A double value.
+                  &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
+                    &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
+                    &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
+                  },
+                  &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
+                  &quot;mapValue&quot;: { # A map value. # A map value.
+                    &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
+                      &quot;a_key&quot;: # Object with schema name: Value
+                    },
+                  },
+                  &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
+                  &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
+                  &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
+                  &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
+                },
               ],
             },
             &quot;setToServerValue&quot;: &quot;A String&quot;, # Sets the field to the given server value.
@@ -1959,11 +1997,7 @@
         &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was created. This value increases monotonically when a document is deleted then recreated. It can also be compared to values from other documents and the `read_time` of a query.
         &quot;fields&quot;: { # The document&#x27;s fields. The map keys represent field names. A simple field name contains only characters `a` to `z`, `A` to `Z`, `0` to `9`, or `_`, and must not start with `0` to `9`. For example, `foo_bar_17`. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty. Field paths may be used in other contexts to refer to structured fields defined here. For `map_value`, the field path is represented by the simple or quoted field names of the containing fields, delimited by `.`. For example, the structured field `&quot;foo&quot; : { map_value: { &quot;x&amp;y&quot; : { string_value: &quot;hello&quot; }}}` would be represented by the field path `foo.x&amp;y`. Within a field path, a quoted field name starts and ends with `` ` `` and may contain any character. Some characters, including `` ` ``, must be escaped using a `\`. For example, `` `x&amp;y` `` represents `x&amp;y` and `` `bak\`tik` `` represents `` bak`tik ``.
           &quot;a_key&quot;: { # A message that can hold any of the supported value types.
-            &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-              &quot;values&quot;: [ # Values in the array.
-                # Object with schema name: Value
-              ],
-            },
+            &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
             &quot;booleanValue&quot;: True or False, # A boolean value.
             &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
             &quot;doubleValue&quot;: 3.14, # A double value.
@@ -1995,16 +2029,31 @@
         { # A transformation of a field of the document.
           &quot;appendMissingElements&quot;: { # An array value. # Append the given elements in order if they are not already present in the current field value. If the field is not an array, or if the field does not yet exist, it is first set to the empty array. Equivalent numbers of different types (e.g. 3L and 3.0) are considered equal when checking if a value is missing. NaN is equal to NaN, and Null is equal to Null. If the input contains multiple equivalent values, only the first will be considered. The corresponding transform_result will be the null value.
             &quot;values&quot;: [ # Values in the array.
-              # Object with schema name: Value
+              { # A message that can hold any of the supported value types.
+                &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
+                &quot;booleanValue&quot;: True or False, # A boolean value.
+                &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
+                &quot;doubleValue&quot;: 3.14, # A double value.
+                &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
+                  &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
+                  &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
+                },
+                &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
+                &quot;mapValue&quot;: { # A map value. # A map value.
+                  &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
+                    &quot;a_key&quot;: # Object with schema name: Value
+                  },
+                },
+                &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
+                &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
+                &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
+                &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
+              },
             ],
           },
           &quot;fieldPath&quot;: &quot;A String&quot;, # The path of the field. See Document.fields for the field path syntax reference.
           &quot;increment&quot;: { # A message that can hold any of the supported value types. # Adds the given value to the field&#x27;s current value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the given value. If either of the given value or the current field value are doubles, both values will be interpreted as doubles. Double arithmetic and representation of double values follow IEEE 754 semantics. If there is positive/negative integer overflow, the field is resolved to the largest magnitude positive/negative integer.
-            &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-              &quot;values&quot;: [ # Values in the array.
-                # Object with schema name: Value
-              ],
-            },
+            &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
             &quot;booleanValue&quot;: True or False, # A boolean value.
             &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
             &quot;doubleValue&quot;: 3.14, # A double value.
@@ -2024,11 +2073,7 @@
             &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
           },
           &quot;maximum&quot;: { # A message that can hold any of the supported value types. # Sets the field to the maximum of its current value and the given value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the given value. If a maximum operation is applied where the field and the input value are of mixed types (that is - one is an integer and one is a double) the field takes on the type of the larger operand. If the operands are equivalent (e.g. 3 and 3.0), the field does not change. 0, 0.0, and -0.0 are all zero. The maximum of a zero stored value and zero input value is always the stored value. The maximum of any numeric value x and NaN is NaN.
-            &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-              &quot;values&quot;: [ # Values in the array.
-                # Object with schema name: Value
-              ],
-            },
+            &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
             &quot;booleanValue&quot;: True or False, # A boolean value.
             &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
             &quot;doubleValue&quot;: 3.14, # A double value.
@@ -2048,11 +2093,7 @@
             &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
           },
           &quot;minimum&quot;: { # A message that can hold any of the supported value types. # Sets the field to the minimum of its current value and the given value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the input value. If a minimum operation is applied where the field and the input value are of mixed types (that is - one is an integer and one is a double) the field takes on the type of the smaller operand. If the operands are equivalent (e.g. 3 and 3.0), the field does not change. 0, 0.0, and -0.0 are all zero. The minimum of a zero stored value and zero input value is always the stored value. The minimum of any numeric value x and NaN is NaN.
-            &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-              &quot;values&quot;: [ # Values in the array.
-                # Object with schema name: Value
-              ],
-            },
+            &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
             &quot;booleanValue&quot;: True or False, # A boolean value.
             &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
             &quot;doubleValue&quot;: 3.14, # A double value.
@@ -2073,7 +2114,26 @@
           },
           &quot;removeAllFromArray&quot;: { # An array value. # Remove all of the given elements from the array in the field. If the field is not an array, or if the field does not yet exist, it is set to the empty array. Equivalent numbers of the different types (e.g. 3L and 3.0) are considered equal when deciding whether an element should be removed. NaN is equal to NaN, and Null is equal to Null. This will remove all equivalent values if there are duplicates. The corresponding transform_result will be the null value.
             &quot;values&quot;: [ # Values in the array.
-              # Object with schema name: Value
+              { # A message that can hold any of the supported value types.
+                &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
+                &quot;booleanValue&quot;: True or False, # A boolean value.
+                &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
+                &quot;doubleValue&quot;: 3.14, # A double value.
+                &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
+                  &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
+                  &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
+                },
+                &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
+                &quot;mapValue&quot;: { # A map value. # A map value.
+                  &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
+                    &quot;a_key&quot;: # Object with schema name: Value
+                  },
+                },
+                &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
+                &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
+                &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
+                &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
+              },
             ],
           },
           &quot;setToServerValue&quot;: &quot;A String&quot;, # Sets the field to the given server value.
@@ -2099,11 +2159,7 @@
     { # The result of applying a write.
       &quot;transformResults&quot;: [ # The results of applying each DocumentTransform.FieldTransform, in the same order.
         { # A message that can hold any of the supported value types.
-          &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
-            &quot;values&quot;: [ # Values in the array.
-              # Object with schema name: Value
-            ],
-          },
+          &quot;arrayValue&quot;: # Object with schema name: ArrayValue # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
           &quot;booleanValue&quot;: True or False, # A boolean value.
           &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
           &quot;doubleValue&quot;: 3.14, # A double value.
diff --git a/docs/dyn/healthcare_v1beta1.projects.locations.services.nlp.html b/docs/dyn/healthcare_v1beta1.projects.locations.services.nlp.html
index 5ec9bfc..4894920 100644
--- a/docs/dyn/healthcare_v1beta1.projects.locations.services.nlp.html
+++ b/docs/dyn/healthcare_v1beta1.projects.locations.services.nlp.html
@@ -76,14 +76,14 @@
 <h2>Instance Methods</h2>
 <p class="toc_element">
   <code><a href="#analyzeEntities">analyzeEntities(nlpService, body=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Analyze heathcare entity in a document. Its response includes the recognized entity mentions and the relationships between them. AnalyzeEntities uses context aware models to detect entities.</p>
+<p class="firstline">Analyze heathcare entity in a document. Its response includes the recognized entity mentions and the relationships between them. AnalyzeEntities uses context aware models to detect entities. This method can only analyze documents written in English.</p>
 <p class="toc_element">
   <code><a href="#close">close()</a></code></p>
 <p class="firstline">Close httplib2 connections.</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="analyzeEntities">analyzeEntities(nlpService, body=None, x__xgafv=None)</code>
-  <pre>Analyze heathcare entity in a document. Its response includes the recognized entity mentions and the relationships between them. AnalyzeEntities uses context aware models to detect entities.
+  <pre>Analyze heathcare entity in a document. Its response includes the recognized entity mentions and the relationships between them. AnalyzeEntities uses context aware models to detect entities. This method can only analyze documents written in English.
 
 Args:
   nlpService: string, The resource name of the service of the form: &quot;projects/{project_id}/locations/{location_id}/services/nlp&quot;. (required)
diff --git a/docs/dyn/index.md b/docs/dyn/index.md
index 6d9671f..f951e82 100644
--- a/docs/dyn/index.md
+++ b/docs/dyn/index.md
@@ -771,12 +771,6 @@
 * [v1beta1](http://googleapis.github.io/google-api-python-client/docs/dyn/redis_v1beta1.html)
 
 
-## remotebuildexecution
-* [v1](http://googleapis.github.io/google-api-python-client/docs/dyn/remotebuildexecution_v1.html)
-* [v1alpha](http://googleapis.github.io/google-api-python-client/docs/dyn/remotebuildexecution_v1alpha.html)
-* [v2](http://googleapis.github.io/google-api-python-client/docs/dyn/remotebuildexecution_v2.html)
-
-
 ## reseller
 * [v1](http://googleapis.github.io/google-api-python-client/docs/dyn/reseller_v1.html)
 
@@ -961,7 +955,6 @@
 
 ## verifiedaccess
 * [v1](http://googleapis.github.io/google-api-python-client/docs/dyn/verifiedaccess_v1.html)
-* [v2](http://googleapis.github.io/google-api-python-client/docs/dyn/verifiedaccess_v2.html)
 
 
 ## videointelligence
diff --git a/docs/dyn/monitoring_v1.html b/docs/dyn/monitoring_v1.html
index 7b97a7b..cd59069 100644
--- a/docs/dyn/monitoring_v1.html
+++ b/docs/dyn/monitoring_v1.html
@@ -75,6 +75,11 @@
 <h1><a href="monitoring_v1.html">Cloud Monitoring API</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
+  <code><a href="monitoring_v1.locations.html">locations()</a></code>
+</p>
+<p class="firstline">Returns the locations Resource.</p>
+
+<p class="toc_element">
   <code><a href="monitoring_v1.operations.html">operations()</a></code>
 </p>
 <p class="firstline">Returns the operations Resource.</p>
diff --git a/docs/dyn/monitoring_v1.locations.global_.html b/docs/dyn/monitoring_v1.locations.global_.html
new file mode 100644
index 0000000..b52054d
--- /dev/null
+++ b/docs/dyn/monitoring_v1.locations.global_.html
@@ -0,0 +1,91 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="monitoring_v1.html">Cloud Monitoring API</a> . <a href="monitoring_v1.locations.html">locations</a> . <a href="monitoring_v1.locations.global_.html">global_</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="monitoring_v1.locations.global_.metricsScopes.html">metricsScopes()</a></code>
+</p>
+<p class="firstline">Returns the metricsScopes Resource.</p>
+
+<p class="toc_element">
+  <code><a href="#close">close()</a></code></p>
+<p class="firstline">Close httplib2 connections.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="close">close()</code>
+  <pre>Close httplib2 connections.</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/monitoring_v1.locations.global_.metricsScopes.html b/docs/dyn/monitoring_v1.locations.global_.metricsScopes.html
new file mode 100644
index 0000000..8c35e5c
--- /dev/null
+++ b/docs/dyn/monitoring_v1.locations.global_.metricsScopes.html
@@ -0,0 +1,155 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="monitoring_v1.html">Cloud Monitoring API</a> . <a href="monitoring_v1.locations.html">locations</a> . <a href="monitoring_v1.locations.global_.html">global_</a> . <a href="monitoring_v1.locations.global_.metricsScopes.html">metricsScopes</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="monitoring_v1.locations.global_.metricsScopes.projects.html">projects()</a></code>
+</p>
+<p class="firstline">Returns the projects Resource.</p>
+
+<p class="toc_element">
+  <code><a href="#close">close()</a></code></p>
+<p class="firstline">Close httplib2 connections.</p>
+<p class="toc_element">
+  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
+<p class="firstline">Returns a specific Metrics Scope.</p>
+<p class="toc_element">
+  <code><a href="#listMetricScopesByMonitoredProject">listMetricScopesByMonitoredProject(monitoredResourceContainer=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Returns a list of every Metrics Scope that a specific MonitoredProject has been added to. The metrics scope representing the specified monitored project will always be the first entry in the response.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="close">close()</code>
+  <pre>Close httplib2 connections.</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(name, x__xgafv=None)</code>
+  <pre>Returns a specific Metrics Scope.
+
+Args:
+  name: string, Required. The resource name of the Metrics Scope. Example: locations/global/metricsScopes/{SCOPING_PROJECT_ID_OR_NUMBER} (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Represents a Metrics Scope (https://cloud.google.com/monitoring/settings#concept-scope) in Cloud Monitoring, which specifies one or more Google projects and zero or more AWS accounts to monitor together.
+  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time when this Metrics Scope was created.
+  &quot;monitoredProjects&quot;: [ # Output only. The list of projects monitored by this Metrics Scope.
+    { # A project being monitored (https://cloud.google.com/monitoring/settings/multiple-projects#create-multi) by a Metrics Scope.
+      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time when this MonitoredProject was created.
+      &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name of the MonitoredProject. On input, the resource name includes the scoping project ID and monitored project ID. On output, it contains the equivalent project numbers. Example: locations/global/metricsScopes/{SCOPING_PROJECT_ID_OR_NUMBER}/projects/{MONITORED_PROJECT_ID_OR_NUMBER}
+    },
+  ],
+  &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name of the Monitoring Metrics Scope. On input, the resource name can be specified with the scoping project ID or number. On output, the resource name is specified with the scoping project number. Example: locations/global/metricsScopes/{SCOPING_PROJECT_ID_OR_NUMBER}
+  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time when this Metrics Scope record was last updated.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="listMetricScopesByMonitoredProject">listMetricScopesByMonitoredProject(monitoredResourceContainer=None, x__xgafv=None)</code>
+  <pre>Returns a list of every Metrics Scope that a specific MonitoredProject has been added to. The metrics scope representing the specified monitored project will always be the first entry in the response.
+
+Args:
+  monitoredResourceContainer: string, Required. The resource name of the Monitored Project being requested. Example: projects/{MONITORED_PROJECT_ID_OR_NUMBER}
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Response for the ListMetricsScopesByMonitoredProject method.
+  &quot;metricsScopes&quot;: [ # A set of all metrics scopes that the specified monitored project has been added to.
+    { # Represents a Metrics Scope (https://cloud.google.com/monitoring/settings#concept-scope) in Cloud Monitoring, which specifies one or more Google projects and zero or more AWS accounts to monitor together.
+      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time when this Metrics Scope was created.
+      &quot;monitoredProjects&quot;: [ # Output only. The list of projects monitored by this Metrics Scope.
+        { # A project being monitored (https://cloud.google.com/monitoring/settings/multiple-projects#create-multi) by a Metrics Scope.
+          &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time when this MonitoredProject was created.
+          &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name of the MonitoredProject. On input, the resource name includes the scoping project ID and monitored project ID. On output, it contains the equivalent project numbers. Example: locations/global/metricsScopes/{SCOPING_PROJECT_ID_OR_NUMBER}/projects/{MONITORED_PROJECT_ID_OR_NUMBER}
+        },
+      ],
+      &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name of the Monitoring Metrics Scope. On input, the resource name can be specified with the scoping project ID or number. On output, the resource name is specified with the scoping project number. Example: locations/global/metricsScopes/{SCOPING_PROJECT_ID_OR_NUMBER}
+      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time when this Metrics Scope record was last updated.
+    },
+  ],
+}</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/monitoring_v1.locations.global_.metricsScopes.projects.html b/docs/dyn/monitoring_v1.locations.global_.metricsScopes.projects.html
new file mode 100644
index 0000000..5f27340
--- /dev/null
+++ b/docs/dyn/monitoring_v1.locations.global_.metricsScopes.projects.html
@@ -0,0 +1,170 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="monitoring_v1.html">Cloud Monitoring API</a> . <a href="monitoring_v1.locations.html">locations</a> . <a href="monitoring_v1.locations.global_.html">global_</a> . <a href="monitoring_v1.locations.global_.metricsScopes.html">metricsScopes</a> . <a href="monitoring_v1.locations.global_.metricsScopes.projects.html">projects</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#close">close()</a></code></p>
+<p class="firstline">Close httplib2 connections.</p>
+<p class="toc_element">
+  <code><a href="#create">create(parent, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Adds a MonitoredProject with the given project ID to the specified Metrics Scope.</p>
+<p class="toc_element">
+  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
+<p class="firstline">Deletes a MonitoredProject from the specified Metrics Scope.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="close">close()</code>
+  <pre>Close httplib2 connections.</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="create">create(parent, body=None, x__xgafv=None)</code>
+  <pre>Adds a MonitoredProject with the given project ID to the specified Metrics Scope.
+
+Args:
+  parent: string, Required. The resource name of the existing Metrics Scope that will monitor this project. Example: locations/global/metricsScopes/{SCOPING_PROJECT_ID_OR_NUMBER} (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # A project being monitored (https://cloud.google.com/monitoring/settings/multiple-projects#create-multi) by a Metrics Scope.
+  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time when this MonitoredProject was created.
+  &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name of the MonitoredProject. On input, the resource name includes the scoping project ID and monitored project ID. On output, it contains the equivalent project numbers. Example: locations/global/metricsScopes/{SCOPING_PROJECT_ID_OR_NUMBER}/projects/{MONITORED_PROJECT_ID_OR_NUMBER}
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # This resource represents a long-running operation that is the result of a network API call.
+  &quot;done&quot;: True or False, # 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.
+  &quot;error&quot;: { # 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). # The error result of the operation in case of failure or cancellation.
+    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
+    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
+      {
+        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+      },
+    ],
+    &quot;message&quot;: &quot;A String&quot;, # 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.
+  },
+  &quot;metadata&quot;: { # 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.
+    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+  },
+  &quot;name&quot;: &quot;A String&quot;, # 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}.
+  &quot;response&quot;: { # 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.
+    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+  },
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
+  <pre>Deletes a MonitoredProject from the specified Metrics Scope.
+
+Args:
+  name: string, Required. The resource name of the MonitoredProject. Example: locations/global/metricsScopes/{SCOPING_PROJECT_ID_OR_NUMBER}/projects/{MONITORED_PROJECT_ID_OR_NUMBER}Authorization requires the following Google IAM (https://cloud.google.com/iam) permissions on both the Metrics Scope and on the MonitoredProject: monitoring.metricsScopes.link (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # This resource represents a long-running operation that is the result of a network API call.
+  &quot;done&quot;: True or False, # 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.
+  &quot;error&quot;: { # 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). # The error result of the operation in case of failure or cancellation.
+    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
+    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
+      {
+        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+      },
+    ],
+    &quot;message&quot;: &quot;A String&quot;, # 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.
+  },
+  &quot;metadata&quot;: { # 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.
+    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+  },
+  &quot;name&quot;: &quot;A String&quot;, # 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}.
+  &quot;response&quot;: { # 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.
+    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+  },
+}</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/monitoring_v1.locations.html b/docs/dyn/monitoring_v1.locations.html
new file mode 100644
index 0000000..e808e64
--- /dev/null
+++ b/docs/dyn/monitoring_v1.locations.html
@@ -0,0 +1,91 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="monitoring_v1.html">Cloud Monitoring API</a> . <a href="monitoring_v1.locations.html">locations</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="monitoring_v1.locations.global_.html">global_()</a></code>
+</p>
+<p class="firstline">Returns the global_ Resource.</p>
+
+<p class="toc_element">
+  <code><a href="#close">close()</a></code></p>
+<p class="firstline">Close httplib2 connections.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="close">close()</code>
+  <pre>Close httplib2 connections.</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/monitoring_v3.services.serviceLevelObjectives.html b/docs/dyn/monitoring_v3.services.serviceLevelObjectives.html
index bc05437..053603f 100644
--- a/docs/dyn/monitoring_v3.services.serviceLevelObjectives.html
+++ b/docs/dyn/monitoring_v3.services.serviceLevelObjectives.html
@@ -134,9 +134,9 @@
       ],
     },
     &quot;requestBased&quot;: { # Service Level Indicators for which atomic units of service are counted directly. # Request-based SLIs
-      &quot;distributionCut&quot;: { # A DistributionCut defines a TimeSeries and thresholds used for measuring good service and total service. The TimeSeries must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE. The computed good_service will be the count of values x in the Distribution such that range.min &lt;= x &lt; range.max. # distribution_cut is used when good_service is a count of values aggregated in a Distribution that fall into a good range. The total_service is the total count of all values aggregated in the Distribution.
+      &quot;distributionCut&quot;: { # A DistributionCut defines a TimeSeries and thresholds used for measuring good service and total service. The TimeSeries must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE. The computed good_service will be the estimated count of values in the Distribution that fall within the specified min and max. # distribution_cut is used when good_service is a count of values aggregated in a Distribution that fall into a good range. The total_service is the total count of all values aggregated in the Distribution.
         &quot;distributionFilter&quot;: &quot;A String&quot;, # A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying a TimeSeries aggregating values. Must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE.
-        &quot;range&quot;: { # Range of numerical values, inclusive of min and exclusive of max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
+        &quot;range&quot;: { # Range of numerical values within min and max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
           &quot;max&quot;: 3.14, # Range maximum.
           &quot;min&quot;: 3.14, # Range minimum.
         },
@@ -167,9 +167,9 @@
           ],
         },
         &quot;performance&quot;: { # Service Level Indicators for which atomic units of service are counted directly. # RequestBasedSli to evaluate to judge window quality.
-          &quot;distributionCut&quot;: { # A DistributionCut defines a TimeSeries and thresholds used for measuring good service and total service. The TimeSeries must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE. The computed good_service will be the count of values x in the Distribution such that range.min &lt;= x &lt; range.max. # distribution_cut is used when good_service is a count of values aggregated in a Distribution that fall into a good range. The total_service is the total count of all values aggregated in the Distribution.
+          &quot;distributionCut&quot;: { # A DistributionCut defines a TimeSeries and thresholds used for measuring good service and total service. The TimeSeries must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE. The computed good_service will be the estimated count of values in the Distribution that fall within the specified min and max. # distribution_cut is used when good_service is a count of values aggregated in a Distribution that fall into a good range. The total_service is the total count of all values aggregated in the Distribution.
             &quot;distributionFilter&quot;: &quot;A String&quot;, # A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying a TimeSeries aggregating values. Must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE.
-            &quot;range&quot;: { # Range of numerical values, inclusive of min and exclusive of max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
+            &quot;range&quot;: { # Range of numerical values within min and max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
               &quot;max&quot;: 3.14, # Range maximum.
               &quot;min&quot;: 3.14, # Range minimum.
             },
@@ -182,15 +182,15 @@
         },
         &quot;threshold&quot;: 3.14, # If window performance &gt;= threshold, the window is counted as good.
       },
-      &quot;metricMeanInRange&quot;: { # A MetricRange is used when each window is good when the value x of a single TimeSeries satisfies range.min &lt;= x &lt; range.max. The provided TimeSeries must have ValueType = INT64 or ValueType = DOUBLE and MetricKind = GAUGE. # A window is good if the metric&#x27;s value is in a good range, averaged across returned streams.
-        &quot;range&quot;: { # Range of numerical values, inclusive of min and exclusive of max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
+      &quot;metricMeanInRange&quot;: { # A MetricRange is used when each window is good when the value x of a single TimeSeries satisfies range.min &lt;= x &lt;= range.max. The provided TimeSeries must have ValueType = INT64 or ValueType = DOUBLE and MetricKind = GAUGE. # A window is good if the metric&#x27;s value is in a good range, averaged across returned streams.
+        &quot;range&quot;: { # Range of numerical values within min and max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
           &quot;max&quot;: 3.14, # Range maximum.
           &quot;min&quot;: 3.14, # Range minimum.
         },
         &quot;timeSeries&quot;: &quot;A String&quot;, # A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying the TimeSeries to use for evaluating window quality.
       },
-      &quot;metricSumInRange&quot;: { # A MetricRange is used when each window is good when the value x of a single TimeSeries satisfies range.min &lt;= x &lt; range.max. The provided TimeSeries must have ValueType = INT64 or ValueType = DOUBLE and MetricKind = GAUGE. # A window is good if the metric&#x27;s value is in a good range, summed across returned streams.
-        &quot;range&quot;: { # Range of numerical values, inclusive of min and exclusive of max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
+      &quot;metricSumInRange&quot;: { # A MetricRange is used when each window is good when the value x of a single TimeSeries satisfies range.min &lt;= x &lt;= range.max. The provided TimeSeries must have ValueType = INT64 or ValueType = DOUBLE and MetricKind = GAUGE. # A window is good if the metric&#x27;s value is in a good range, summed across returned streams.
+        &quot;range&quot;: { # Range of numerical values within min and max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
           &quot;max&quot;: 3.14, # Range maximum.
           &quot;min&quot;: 3.14, # Range minimum.
         },
@@ -237,9 +237,9 @@
       ],
     },
     &quot;requestBased&quot;: { # Service Level Indicators for which atomic units of service are counted directly. # Request-based SLIs
-      &quot;distributionCut&quot;: { # A DistributionCut defines a TimeSeries and thresholds used for measuring good service and total service. The TimeSeries must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE. The computed good_service will be the count of values x in the Distribution such that range.min &lt;= x &lt; range.max. # distribution_cut is used when good_service is a count of values aggregated in a Distribution that fall into a good range. The total_service is the total count of all values aggregated in the Distribution.
+      &quot;distributionCut&quot;: { # A DistributionCut defines a TimeSeries and thresholds used for measuring good service and total service. The TimeSeries must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE. The computed good_service will be the estimated count of values in the Distribution that fall within the specified min and max. # distribution_cut is used when good_service is a count of values aggregated in a Distribution that fall into a good range. The total_service is the total count of all values aggregated in the Distribution.
         &quot;distributionFilter&quot;: &quot;A String&quot;, # A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying a TimeSeries aggregating values. Must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE.
-        &quot;range&quot;: { # Range of numerical values, inclusive of min and exclusive of max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
+        &quot;range&quot;: { # Range of numerical values within min and max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
           &quot;max&quot;: 3.14, # Range maximum.
           &quot;min&quot;: 3.14, # Range minimum.
         },
@@ -270,9 +270,9 @@
           ],
         },
         &quot;performance&quot;: { # Service Level Indicators for which atomic units of service are counted directly. # RequestBasedSli to evaluate to judge window quality.
-          &quot;distributionCut&quot;: { # A DistributionCut defines a TimeSeries and thresholds used for measuring good service and total service. The TimeSeries must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE. The computed good_service will be the count of values x in the Distribution such that range.min &lt;= x &lt; range.max. # distribution_cut is used when good_service is a count of values aggregated in a Distribution that fall into a good range. The total_service is the total count of all values aggregated in the Distribution.
+          &quot;distributionCut&quot;: { # A DistributionCut defines a TimeSeries and thresholds used for measuring good service and total service. The TimeSeries must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE. The computed good_service will be the estimated count of values in the Distribution that fall within the specified min and max. # distribution_cut is used when good_service is a count of values aggregated in a Distribution that fall into a good range. The total_service is the total count of all values aggregated in the Distribution.
             &quot;distributionFilter&quot;: &quot;A String&quot;, # A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying a TimeSeries aggregating values. Must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE.
-            &quot;range&quot;: { # Range of numerical values, inclusive of min and exclusive of max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
+            &quot;range&quot;: { # Range of numerical values within min and max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
               &quot;max&quot;: 3.14, # Range maximum.
               &quot;min&quot;: 3.14, # Range minimum.
             },
@@ -285,15 +285,15 @@
         },
         &quot;threshold&quot;: 3.14, # If window performance &gt;= threshold, the window is counted as good.
       },
-      &quot;metricMeanInRange&quot;: { # A MetricRange is used when each window is good when the value x of a single TimeSeries satisfies range.min &lt;= x &lt; range.max. The provided TimeSeries must have ValueType = INT64 or ValueType = DOUBLE and MetricKind = GAUGE. # A window is good if the metric&#x27;s value is in a good range, averaged across returned streams.
-        &quot;range&quot;: { # Range of numerical values, inclusive of min and exclusive of max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
+      &quot;metricMeanInRange&quot;: { # A MetricRange is used when each window is good when the value x of a single TimeSeries satisfies range.min &lt;= x &lt;= range.max. The provided TimeSeries must have ValueType = INT64 or ValueType = DOUBLE and MetricKind = GAUGE. # A window is good if the metric&#x27;s value is in a good range, averaged across returned streams.
+        &quot;range&quot;: { # Range of numerical values within min and max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
           &quot;max&quot;: 3.14, # Range maximum.
           &quot;min&quot;: 3.14, # Range minimum.
         },
         &quot;timeSeries&quot;: &quot;A String&quot;, # A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying the TimeSeries to use for evaluating window quality.
       },
-      &quot;metricSumInRange&quot;: { # A MetricRange is used when each window is good when the value x of a single TimeSeries satisfies range.min &lt;= x &lt; range.max. The provided TimeSeries must have ValueType = INT64 or ValueType = DOUBLE and MetricKind = GAUGE. # A window is good if the metric&#x27;s value is in a good range, summed across returned streams.
-        &quot;range&quot;: { # Range of numerical values, inclusive of min and exclusive of max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
+      &quot;metricSumInRange&quot;: { # A MetricRange is used when each window is good when the value x of a single TimeSeries satisfies range.min &lt;= x &lt;= range.max. The provided TimeSeries must have ValueType = INT64 or ValueType = DOUBLE and MetricKind = GAUGE. # A window is good if the metric&#x27;s value is in a good range, summed across returned streams.
+        &quot;range&quot;: { # Range of numerical values within min and max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
           &quot;max&quot;: 3.14, # Range maximum.
           &quot;min&quot;: 3.14, # Range minimum.
         },
@@ -369,9 +369,9 @@
       ],
     },
     &quot;requestBased&quot;: { # Service Level Indicators for which atomic units of service are counted directly. # Request-based SLIs
-      &quot;distributionCut&quot;: { # A DistributionCut defines a TimeSeries and thresholds used for measuring good service and total service. The TimeSeries must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE. The computed good_service will be the count of values x in the Distribution such that range.min &lt;= x &lt; range.max. # distribution_cut is used when good_service is a count of values aggregated in a Distribution that fall into a good range. The total_service is the total count of all values aggregated in the Distribution.
+      &quot;distributionCut&quot;: { # A DistributionCut defines a TimeSeries and thresholds used for measuring good service and total service. The TimeSeries must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE. The computed good_service will be the estimated count of values in the Distribution that fall within the specified min and max. # distribution_cut is used when good_service is a count of values aggregated in a Distribution that fall into a good range. The total_service is the total count of all values aggregated in the Distribution.
         &quot;distributionFilter&quot;: &quot;A String&quot;, # A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying a TimeSeries aggregating values. Must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE.
-        &quot;range&quot;: { # Range of numerical values, inclusive of min and exclusive of max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
+        &quot;range&quot;: { # Range of numerical values within min and max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
           &quot;max&quot;: 3.14, # Range maximum.
           &quot;min&quot;: 3.14, # Range minimum.
         },
@@ -402,9 +402,9 @@
           ],
         },
         &quot;performance&quot;: { # Service Level Indicators for which atomic units of service are counted directly. # RequestBasedSli to evaluate to judge window quality.
-          &quot;distributionCut&quot;: { # A DistributionCut defines a TimeSeries and thresholds used for measuring good service and total service. The TimeSeries must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE. The computed good_service will be the count of values x in the Distribution such that range.min &lt;= x &lt; range.max. # distribution_cut is used when good_service is a count of values aggregated in a Distribution that fall into a good range. The total_service is the total count of all values aggregated in the Distribution.
+          &quot;distributionCut&quot;: { # A DistributionCut defines a TimeSeries and thresholds used for measuring good service and total service. The TimeSeries must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE. The computed good_service will be the estimated count of values in the Distribution that fall within the specified min and max. # distribution_cut is used when good_service is a count of values aggregated in a Distribution that fall into a good range. The total_service is the total count of all values aggregated in the Distribution.
             &quot;distributionFilter&quot;: &quot;A String&quot;, # A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying a TimeSeries aggregating values. Must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE.
-            &quot;range&quot;: { # Range of numerical values, inclusive of min and exclusive of max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
+            &quot;range&quot;: { # Range of numerical values within min and max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
               &quot;max&quot;: 3.14, # Range maximum.
               &quot;min&quot;: 3.14, # Range minimum.
             },
@@ -417,15 +417,15 @@
         },
         &quot;threshold&quot;: 3.14, # If window performance &gt;= threshold, the window is counted as good.
       },
-      &quot;metricMeanInRange&quot;: { # A MetricRange is used when each window is good when the value x of a single TimeSeries satisfies range.min &lt;= x &lt; range.max. The provided TimeSeries must have ValueType = INT64 or ValueType = DOUBLE and MetricKind = GAUGE. # A window is good if the metric&#x27;s value is in a good range, averaged across returned streams.
-        &quot;range&quot;: { # Range of numerical values, inclusive of min and exclusive of max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
+      &quot;metricMeanInRange&quot;: { # A MetricRange is used when each window is good when the value x of a single TimeSeries satisfies range.min &lt;= x &lt;= range.max. The provided TimeSeries must have ValueType = INT64 or ValueType = DOUBLE and MetricKind = GAUGE. # A window is good if the metric&#x27;s value is in a good range, averaged across returned streams.
+        &quot;range&quot;: { # Range of numerical values within min and max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
           &quot;max&quot;: 3.14, # Range maximum.
           &quot;min&quot;: 3.14, # Range minimum.
         },
         &quot;timeSeries&quot;: &quot;A String&quot;, # A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying the TimeSeries to use for evaluating window quality.
       },
-      &quot;metricSumInRange&quot;: { # A MetricRange is used when each window is good when the value x of a single TimeSeries satisfies range.min &lt;= x &lt; range.max. The provided TimeSeries must have ValueType = INT64 or ValueType = DOUBLE and MetricKind = GAUGE. # A window is good if the metric&#x27;s value is in a good range, summed across returned streams.
-        &quot;range&quot;: { # Range of numerical values, inclusive of min and exclusive of max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
+      &quot;metricSumInRange&quot;: { # A MetricRange is used when each window is good when the value x of a single TimeSeries satisfies range.min &lt;= x &lt;= range.max. The provided TimeSeries must have ValueType = INT64 or ValueType = DOUBLE and MetricKind = GAUGE. # A window is good if the metric&#x27;s value is in a good range, summed across returned streams.
+        &quot;range&quot;: { # Range of numerical values within min and max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
           &quot;max&quot;: 3.14, # Range maximum.
           &quot;min&quot;: 3.14, # Range minimum.
         },
@@ -489,9 +489,9 @@
           ],
         },
         &quot;requestBased&quot;: { # Service Level Indicators for which atomic units of service are counted directly. # Request-based SLIs
-          &quot;distributionCut&quot;: { # A DistributionCut defines a TimeSeries and thresholds used for measuring good service and total service. The TimeSeries must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE. The computed good_service will be the count of values x in the Distribution such that range.min &lt;= x &lt; range.max. # distribution_cut is used when good_service is a count of values aggregated in a Distribution that fall into a good range. The total_service is the total count of all values aggregated in the Distribution.
+          &quot;distributionCut&quot;: { # A DistributionCut defines a TimeSeries and thresholds used for measuring good service and total service. The TimeSeries must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE. The computed good_service will be the estimated count of values in the Distribution that fall within the specified min and max. # distribution_cut is used when good_service is a count of values aggregated in a Distribution that fall into a good range. The total_service is the total count of all values aggregated in the Distribution.
             &quot;distributionFilter&quot;: &quot;A String&quot;, # A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying a TimeSeries aggregating values. Must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE.
-            &quot;range&quot;: { # Range of numerical values, inclusive of min and exclusive of max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
+            &quot;range&quot;: { # Range of numerical values within min and max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
               &quot;max&quot;: 3.14, # Range maximum.
               &quot;min&quot;: 3.14, # Range minimum.
             },
@@ -522,9 +522,9 @@
               ],
             },
             &quot;performance&quot;: { # Service Level Indicators for which atomic units of service are counted directly. # RequestBasedSli to evaluate to judge window quality.
-              &quot;distributionCut&quot;: { # A DistributionCut defines a TimeSeries and thresholds used for measuring good service and total service. The TimeSeries must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE. The computed good_service will be the count of values x in the Distribution such that range.min &lt;= x &lt; range.max. # distribution_cut is used when good_service is a count of values aggregated in a Distribution that fall into a good range. The total_service is the total count of all values aggregated in the Distribution.
+              &quot;distributionCut&quot;: { # A DistributionCut defines a TimeSeries and thresholds used for measuring good service and total service. The TimeSeries must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE. The computed good_service will be the estimated count of values in the Distribution that fall within the specified min and max. # distribution_cut is used when good_service is a count of values aggregated in a Distribution that fall into a good range. The total_service is the total count of all values aggregated in the Distribution.
                 &quot;distributionFilter&quot;: &quot;A String&quot;, # A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying a TimeSeries aggregating values. Must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE.
-                &quot;range&quot;: { # Range of numerical values, inclusive of min and exclusive of max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
+                &quot;range&quot;: { # Range of numerical values within min and max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
                   &quot;max&quot;: 3.14, # Range maximum.
                   &quot;min&quot;: 3.14, # Range minimum.
                 },
@@ -537,15 +537,15 @@
             },
             &quot;threshold&quot;: 3.14, # If window performance &gt;= threshold, the window is counted as good.
           },
-          &quot;metricMeanInRange&quot;: { # A MetricRange is used when each window is good when the value x of a single TimeSeries satisfies range.min &lt;= x &lt; range.max. The provided TimeSeries must have ValueType = INT64 or ValueType = DOUBLE and MetricKind = GAUGE. # A window is good if the metric&#x27;s value is in a good range, averaged across returned streams.
-            &quot;range&quot;: { # Range of numerical values, inclusive of min and exclusive of max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
+          &quot;metricMeanInRange&quot;: { # A MetricRange is used when each window is good when the value x of a single TimeSeries satisfies range.min &lt;= x &lt;= range.max. The provided TimeSeries must have ValueType = INT64 or ValueType = DOUBLE and MetricKind = GAUGE. # A window is good if the metric&#x27;s value is in a good range, averaged across returned streams.
+            &quot;range&quot;: { # Range of numerical values within min and max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
               &quot;max&quot;: 3.14, # Range maximum.
               &quot;min&quot;: 3.14, # Range minimum.
             },
             &quot;timeSeries&quot;: &quot;A String&quot;, # A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying the TimeSeries to use for evaluating window quality.
           },
-          &quot;metricSumInRange&quot;: { # A MetricRange is used when each window is good when the value x of a single TimeSeries satisfies range.min &lt;= x &lt; range.max. The provided TimeSeries must have ValueType = INT64 or ValueType = DOUBLE and MetricKind = GAUGE. # A window is good if the metric&#x27;s value is in a good range, summed across returned streams.
-            &quot;range&quot;: { # Range of numerical values, inclusive of min and exclusive of max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
+          &quot;metricSumInRange&quot;: { # A MetricRange is used when each window is good when the value x of a single TimeSeries satisfies range.min &lt;= x &lt;= range.max. The provided TimeSeries must have ValueType = INT64 or ValueType = DOUBLE and MetricKind = GAUGE. # A window is good if the metric&#x27;s value is in a good range, summed across returned streams.
+            &quot;range&quot;: { # Range of numerical values within min and max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
               &quot;max&quot;: 3.14, # Range maximum.
               &quot;min&quot;: 3.14, # Range minimum.
             },
@@ -609,9 +609,9 @@
       ],
     },
     &quot;requestBased&quot;: { # Service Level Indicators for which atomic units of service are counted directly. # Request-based SLIs
-      &quot;distributionCut&quot;: { # A DistributionCut defines a TimeSeries and thresholds used for measuring good service and total service. The TimeSeries must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE. The computed good_service will be the count of values x in the Distribution such that range.min &lt;= x &lt; range.max. # distribution_cut is used when good_service is a count of values aggregated in a Distribution that fall into a good range. The total_service is the total count of all values aggregated in the Distribution.
+      &quot;distributionCut&quot;: { # A DistributionCut defines a TimeSeries and thresholds used for measuring good service and total service. The TimeSeries must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE. The computed good_service will be the estimated count of values in the Distribution that fall within the specified min and max. # distribution_cut is used when good_service is a count of values aggregated in a Distribution that fall into a good range. The total_service is the total count of all values aggregated in the Distribution.
         &quot;distributionFilter&quot;: &quot;A String&quot;, # A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying a TimeSeries aggregating values. Must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE.
-        &quot;range&quot;: { # Range of numerical values, inclusive of min and exclusive of max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
+        &quot;range&quot;: { # Range of numerical values within min and max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
           &quot;max&quot;: 3.14, # Range maximum.
           &quot;min&quot;: 3.14, # Range minimum.
         },
@@ -642,9 +642,9 @@
           ],
         },
         &quot;performance&quot;: { # Service Level Indicators for which atomic units of service are counted directly. # RequestBasedSli to evaluate to judge window quality.
-          &quot;distributionCut&quot;: { # A DistributionCut defines a TimeSeries and thresholds used for measuring good service and total service. The TimeSeries must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE. The computed good_service will be the count of values x in the Distribution such that range.min &lt;= x &lt; range.max. # distribution_cut is used when good_service is a count of values aggregated in a Distribution that fall into a good range. The total_service is the total count of all values aggregated in the Distribution.
+          &quot;distributionCut&quot;: { # A DistributionCut defines a TimeSeries and thresholds used for measuring good service and total service. The TimeSeries must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE. The computed good_service will be the estimated count of values in the Distribution that fall within the specified min and max. # distribution_cut is used when good_service is a count of values aggregated in a Distribution that fall into a good range. The total_service is the total count of all values aggregated in the Distribution.
             &quot;distributionFilter&quot;: &quot;A String&quot;, # A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying a TimeSeries aggregating values. Must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE.
-            &quot;range&quot;: { # Range of numerical values, inclusive of min and exclusive of max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
+            &quot;range&quot;: { # Range of numerical values within min and max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
               &quot;max&quot;: 3.14, # Range maximum.
               &quot;min&quot;: 3.14, # Range minimum.
             },
@@ -657,15 +657,15 @@
         },
         &quot;threshold&quot;: 3.14, # If window performance &gt;= threshold, the window is counted as good.
       },
-      &quot;metricMeanInRange&quot;: { # A MetricRange is used when each window is good when the value x of a single TimeSeries satisfies range.min &lt;= x &lt; range.max. The provided TimeSeries must have ValueType = INT64 or ValueType = DOUBLE and MetricKind = GAUGE. # A window is good if the metric&#x27;s value is in a good range, averaged across returned streams.
-        &quot;range&quot;: { # Range of numerical values, inclusive of min and exclusive of max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
+      &quot;metricMeanInRange&quot;: { # A MetricRange is used when each window is good when the value x of a single TimeSeries satisfies range.min &lt;= x &lt;= range.max. The provided TimeSeries must have ValueType = INT64 or ValueType = DOUBLE and MetricKind = GAUGE. # A window is good if the metric&#x27;s value is in a good range, averaged across returned streams.
+        &quot;range&quot;: { # Range of numerical values within min and max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
           &quot;max&quot;: 3.14, # Range maximum.
           &quot;min&quot;: 3.14, # Range minimum.
         },
         &quot;timeSeries&quot;: &quot;A String&quot;, # A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying the TimeSeries to use for evaluating window quality.
       },
-      &quot;metricSumInRange&quot;: { # A MetricRange is used when each window is good when the value x of a single TimeSeries satisfies range.min &lt;= x &lt; range.max. The provided TimeSeries must have ValueType = INT64 or ValueType = DOUBLE and MetricKind = GAUGE. # A window is good if the metric&#x27;s value is in a good range, summed across returned streams.
-        &quot;range&quot;: { # Range of numerical values, inclusive of min and exclusive of max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
+      &quot;metricSumInRange&quot;: { # A MetricRange is used when each window is good when the value x of a single TimeSeries satisfies range.min &lt;= x &lt;= range.max. The provided TimeSeries must have ValueType = INT64 or ValueType = DOUBLE and MetricKind = GAUGE. # A window is good if the metric&#x27;s value is in a good range, summed across returned streams.
+        &quot;range&quot;: { # Range of numerical values within min and max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
           &quot;max&quot;: 3.14, # Range maximum.
           &quot;min&quot;: 3.14, # Range minimum.
         },
@@ -712,9 +712,9 @@
       ],
     },
     &quot;requestBased&quot;: { # Service Level Indicators for which atomic units of service are counted directly. # Request-based SLIs
-      &quot;distributionCut&quot;: { # A DistributionCut defines a TimeSeries and thresholds used for measuring good service and total service. The TimeSeries must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE. The computed good_service will be the count of values x in the Distribution such that range.min &lt;= x &lt; range.max. # distribution_cut is used when good_service is a count of values aggregated in a Distribution that fall into a good range. The total_service is the total count of all values aggregated in the Distribution.
+      &quot;distributionCut&quot;: { # A DistributionCut defines a TimeSeries and thresholds used for measuring good service and total service. The TimeSeries must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE. The computed good_service will be the estimated count of values in the Distribution that fall within the specified min and max. # distribution_cut is used when good_service is a count of values aggregated in a Distribution that fall into a good range. The total_service is the total count of all values aggregated in the Distribution.
         &quot;distributionFilter&quot;: &quot;A String&quot;, # A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying a TimeSeries aggregating values. Must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE.
-        &quot;range&quot;: { # Range of numerical values, inclusive of min and exclusive of max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
+        &quot;range&quot;: { # Range of numerical values within min and max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
           &quot;max&quot;: 3.14, # Range maximum.
           &quot;min&quot;: 3.14, # Range minimum.
         },
@@ -745,9 +745,9 @@
           ],
         },
         &quot;performance&quot;: { # Service Level Indicators for which atomic units of service are counted directly. # RequestBasedSli to evaluate to judge window quality.
-          &quot;distributionCut&quot;: { # A DistributionCut defines a TimeSeries and thresholds used for measuring good service and total service. The TimeSeries must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE. The computed good_service will be the count of values x in the Distribution such that range.min &lt;= x &lt; range.max. # distribution_cut is used when good_service is a count of values aggregated in a Distribution that fall into a good range. The total_service is the total count of all values aggregated in the Distribution.
+          &quot;distributionCut&quot;: { # A DistributionCut defines a TimeSeries and thresholds used for measuring good service and total service. The TimeSeries must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE. The computed good_service will be the estimated count of values in the Distribution that fall within the specified min and max. # distribution_cut is used when good_service is a count of values aggregated in a Distribution that fall into a good range. The total_service is the total count of all values aggregated in the Distribution.
             &quot;distributionFilter&quot;: &quot;A String&quot;, # A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying a TimeSeries aggregating values. Must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE.
-            &quot;range&quot;: { # Range of numerical values, inclusive of min and exclusive of max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
+            &quot;range&quot;: { # Range of numerical values within min and max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
               &quot;max&quot;: 3.14, # Range maximum.
               &quot;min&quot;: 3.14, # Range minimum.
             },
@@ -760,15 +760,15 @@
         },
         &quot;threshold&quot;: 3.14, # If window performance &gt;= threshold, the window is counted as good.
       },
-      &quot;metricMeanInRange&quot;: { # A MetricRange is used when each window is good when the value x of a single TimeSeries satisfies range.min &lt;= x &lt; range.max. The provided TimeSeries must have ValueType = INT64 or ValueType = DOUBLE and MetricKind = GAUGE. # A window is good if the metric&#x27;s value is in a good range, averaged across returned streams.
-        &quot;range&quot;: { # Range of numerical values, inclusive of min and exclusive of max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
+      &quot;metricMeanInRange&quot;: { # A MetricRange is used when each window is good when the value x of a single TimeSeries satisfies range.min &lt;= x &lt;= range.max. The provided TimeSeries must have ValueType = INT64 or ValueType = DOUBLE and MetricKind = GAUGE. # A window is good if the metric&#x27;s value is in a good range, averaged across returned streams.
+        &quot;range&quot;: { # Range of numerical values within min and max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
           &quot;max&quot;: 3.14, # Range maximum.
           &quot;min&quot;: 3.14, # Range minimum.
         },
         &quot;timeSeries&quot;: &quot;A String&quot;, # A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying the TimeSeries to use for evaluating window quality.
       },
-      &quot;metricSumInRange&quot;: { # A MetricRange is used when each window is good when the value x of a single TimeSeries satisfies range.min &lt;= x &lt; range.max. The provided TimeSeries must have ValueType = INT64 or ValueType = DOUBLE and MetricKind = GAUGE. # A window is good if the metric&#x27;s value is in a good range, summed across returned streams.
-        &quot;range&quot;: { # Range of numerical values, inclusive of min and exclusive of max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
+      &quot;metricSumInRange&quot;: { # A MetricRange is used when each window is good when the value x of a single TimeSeries satisfies range.min &lt;= x &lt;= range.max. The provided TimeSeries must have ValueType = INT64 or ValueType = DOUBLE and MetricKind = GAUGE. # A window is good if the metric&#x27;s value is in a good range, summed across returned streams.
+        &quot;range&quot;: { # Range of numerical values within min and max. If the open range &quot;&lt; range.max&quot; is desired, set range.min = -infinity. If the open range &quot;&gt;= range.min&quot; is desired, set range.max = infinity. # Range of values considered &quot;good.&quot; For a one-sided range, set one bound to an infinite value.
           &quot;max&quot;: 3.14, # Range maximum.
           &quot;min&quot;: 3.14, # Range minimum.
         },
diff --git a/docs/dyn/mybusinessnotifications_v1.accounts.html b/docs/dyn/mybusinessnotifications_v1.accounts.html
index a27641b..9e5f8ff 100644
--- a/docs/dyn/mybusinessnotifications_v1.accounts.html
+++ b/docs/dyn/mybusinessnotifications_v1.accounts.html
@@ -104,7 +104,7 @@
   An object of the form:
 
     { # A Google Pub/Sub topic where notifications can be published when a location is updated or has a new review. There will be only one notification setting resource per-account.
-  &quot;name&quot;: &quot;A String&quot;, # Required. The resource name this setting is for. This is of the form `accounts/{account_id}/notifications/setting`.
+  &quot;name&quot;: &quot;A String&quot;, # Required. The resource name this setting is for. This is of the form `accounts/{account_id}/notificationSetting`.
   &quot;notificationTypes&quot;: [ # The types of notifications that will be sent to the Pub/Sub topic. To stop receiving notifications entirely, use NotificationSettings.UpdateNotificationSetting with an empty notification_types or set the pubsub_topic to an empty string.
     &quot;A String&quot;,
   ],
@@ -117,12 +117,12 @@
   <pre>Sets the pubsub notification setting for the account informing Google which topic to send pubsub notifications for. Use the notification_types field within notification_setting to manipulate the events an account wants to subscribe to. An account will only have one notification setting resource, and only one pubsub topic can be set. To delete the setting, update with an empty notification_types
 
 Args:
-  name: string, Required. The resource name this setting is for. This is of the form `accounts/{account_id}/notifications/setting`. (required)
+  name: string, Required. The resource name this setting is for. This is of the form `accounts/{account_id}/notificationSetting`. (required)
   body: object, The request body.
     The object takes the form of:
 
 { # A Google Pub/Sub topic where notifications can be published when a location is updated or has a new review. There will be only one notification setting resource per-account.
-  &quot;name&quot;: &quot;A String&quot;, # Required. The resource name this setting is for. This is of the form `accounts/{account_id}/notifications/setting`.
+  &quot;name&quot;: &quot;A String&quot;, # Required. The resource name this setting is for. This is of the form `accounts/{account_id}/notificationSetting`.
   &quot;notificationTypes&quot;: [ # The types of notifications that will be sent to the Pub/Sub topic. To stop receiving notifications entirely, use NotificationSettings.UpdateNotificationSetting with an empty notification_types or set the pubsub_topic to an empty string.
     &quot;A String&quot;,
   ],
@@ -139,7 +139,7 @@
   An object of the form:
 
     { # A Google Pub/Sub topic where notifications can be published when a location is updated or has a new review. There will be only one notification setting resource per-account.
-  &quot;name&quot;: &quot;A String&quot;, # Required. The resource name this setting is for. This is of the form `accounts/{account_id}/notifications/setting`.
+  &quot;name&quot;: &quot;A String&quot;, # Required. The resource name this setting is for. This is of the form `accounts/{account_id}/notificationSetting`.
   &quot;notificationTypes&quot;: [ # The types of notifications that will be sent to the Pub/Sub topic. To stop receiving notifications entirely, use NotificationSettings.UpdateNotificationSetting with an empty notification_types or set the pubsub_topic to an empty string.
     &quot;A String&quot;,
   ],
diff --git a/docs/dyn/notebooks_v1.projects.locations.runtimes.html b/docs/dyn/notebooks_v1.projects.locations.runtimes.html
index 76c317a..2b478c4 100644
--- a/docs/dyn/notebooks_v1.projects.locations.runtimes.html
+++ b/docs/dyn/notebooks_v1.projects.locations.runtimes.html
@@ -135,8 +135,8 @@
       &quot;a_key&quot;: &quot;A String&quot;,
     },
   },
-  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the runtime. Format: `projects/{project}/locations/{location}/runtimes/{runtime}`
-  &quot;softwareConfig&quot;: { # Specifies the selection and config of software inside the runtime. / The properties to set on runtime. Properties keys are specified in `key:value` format, for example: * idle_shutdown: idle_shutdown=true * idle_shutdown_timeout: idle_shutdown_timeout=180 * report-system-health: report-system-health=true # The config settings for software inside the runtime.
+  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the runtime. Format: `projects/{project}/locations/{location}/runtimes/{runtimeId}`
+  &quot;softwareConfig&quot;: { # Specifies the selection and configuration of software inside the runtime. The properties to set on runtime. Properties keys are specified in `key:value` format, for example: * `idle_shutdown: true` * `idle_shutdown_timeout: 180` * `report-system-health: true` # The config settings for software inside the runtime.
     &quot;customGpuDriverPath&quot;: &quot;A String&quot;, # Specify a custom Cloud Storage path where the GPU driver is stored. If not specified, we&#x27;ll automatically choose from official GPU drivers.
     &quot;enableHealthMonitoring&quot;: True or False, # Verifies core internal services are running. Default: True
     &quot;idleShutdown&quot;: True or False, # Runtime will automatically shutdown after idle_shutdown_time. Default: True
@@ -162,16 +162,16 @@
         },
       ],
       &quot;dataDisk&quot;: { # An Local attached disk resource. # Required. Data disk option configuration settings.
-        &quot;autoDelete&quot;: True or False, # Output only. Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance).
-        &quot;boot&quot;: True or False, # Output only. Indicates that this is a boot disk. The virtual machine will use the first partition of the disk for its root filesystem.
-        &quot;deviceName&quot;: &quot;A String&quot;, # Output only. Specifies a unique device name of your choice that is reflected into the /dev/disk/by-id/google-* tree of a Linux operating system running within the instance. This name can be used to reference the device for mounting, resizing, and so on, from within the instance. If not specified, the server chooses a default device name to apply to this disk, in the form persistent-disk-x, where x is a number assigned by Google Compute Engine. This field is only applicable for persistent disks.
+        &quot;autoDelete&quot;: True or False, # Optional. Output only. Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance).
+        &quot;boot&quot;: True or False, # Optional. Output only. Indicates that this is a boot disk. The virtual machine will use the first partition of the disk for its root filesystem.
+        &quot;deviceName&quot;: &quot;A String&quot;, # Optional. Output only. Specifies a unique device name of your choice that is reflected into the /dev/disk/by-id/google-* tree of a Linux operating system running within the instance. This name can be used to reference the device for mounting, resizing, and so on, from within the instance. If not specified, the server chooses a default device name to apply to this disk, in the form persistent-disk-x, where x is a number assigned by Google Compute Engine. This field is only applicable for persistent disks.
         &quot;guestOsFeatures&quot;: [ # Output only. Indicates a list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options.
-          { # A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options. Guest OS features for boot disk.
-            &quot;type&quot;: &quot;A String&quot;, # The ID of a supported feature. Read Enabling guest operating system features to see a list of available options. Valid values: FEATURE_TYPE_UNSPECIFIED MULTI_IP_SUBNET SECURE_BOOT UEFI_COMPATIBLE VIRTIO_SCSI_MULTIQUEUE WINDOWS
+          { # Optional. A list of features to enable on the guest operating system. Applicable only for bootable images. Read [Enabling guest operating system features](https://cloud.google.com/compute/docs/images/create-delete-deprecate-private-images#guest-os-features) to see a list of available options. Guest OS features for boot disk.
+            &quot;type&quot;: &quot;A String&quot;, # The ID of a supported feature. Read [Enabling guest operating system features](https://cloud.google.com/compute/docs/images/create-delete-deprecate-private-images#guest-os-features) to see a list of available options. Valid values: * FEATURE_TYPE_UNSPECIFIED * MULTI_IP_SUBNET * SECURE_BOOT * UEFI_COMPATIBLE * VIRTIO_SCSI_MULTIQUEUE * WINDOWS
           },
         ],
-        &quot;index&quot;: 42, # Output only. [Output Only] A zero-based index to this disk, where 0 is reserved for the boot disk. If you have many disks attached to an instance, each disk would have a unique index number.
-        &quot;initializeParams&quot;: { # [Input Only] Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new runtime. This property is mutually exclusive with the source property; you can only define one or the other, but not both. # Input only. [Input Only] Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new instance. This property is mutually exclusive with the source property; you can only define one or the other, but not both.
+        &quot;index&quot;: 42, # Output only. A zero-based index to this disk, where 0 is reserved for the boot disk. If you have many disks attached to an instance, each disk would have a unique index number.
+        &quot;initializeParams&quot;: { # Input only. Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new runtime. This property is mutually exclusive with the source property; you can only define one or the other, but not both. # Input only. Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new instance. This property is mutually exclusive with the source property; you can only define one or the other, but not both.
           &quot;description&quot;: &quot;A String&quot;, # Optional. Provide this property when creating the disk.
           &quot;diskName&quot;: &quot;A String&quot;, # Optional. Specifies the disk name. If not specified, the default is to use the name of the instance. If the disk with the instance name exists already in the given zone/region, a new name will be automatically generated.
           &quot;diskSizeGb&quot;: &quot;A String&quot;, # Optional. Specifies the size of the disk in base-2 GB. If not specified, the disk will be the same size as the image (usually 10GB). If specified, the size must be equal to or larger than 10GB. Default 100 GB.
@@ -182,7 +182,7 @@
         },
         &quot;interface&quot;: &quot;A String&quot;, # Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance. Valid values: NVME SCSI
         &quot;kind&quot;: &quot;A String&quot;, # Output only. Type of the resource. Always compute#attachedDisk for attached disks.
-        &quot;licenses&quot;: [ # Output only. [Output Only] Any valid publicly visible licenses.
+        &quot;licenses&quot;: [ # Output only. Any valid publicly visible licenses.
           &quot;A String&quot;,
         ],
         &quot;mode&quot;: &quot;A String&quot;, # The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode. Valid values: READ_ONLY READ_WRITE
@@ -205,7 +205,7 @@
       },
       &quot;network&quot;: &quot;A String&quot;, # Optional. The Compute Engine network to be used for machine communications. Cannot be specified with subnetwork. If neither `network` nor `subnet` is specified, the &quot;default&quot; network of the project is used, if it exists. A full URL or partial URI. Examples: * `https://www.googleapis.com/compute/v1/projects/[project_id]/regions/global/default` * `projects/[project_id]/regions/global/default` Runtimes are managed resources inside Google Infrastructure. Runtimes support the following network configurations: * Google Managed Network (Network &amp; subnet are empty) * Consumer Project VPC (network &amp; subnet are required). Requires configuring Private Service Access. * Shared VPC (network &amp; subnet are required). Requires configuring Private Service Access.
       &quot;nicType&quot;: &quot;A String&quot;, # Optional. The type of vNIC to be used on this interface. This may be gVNIC or VirtioNet.
-      &quot;shieldedInstanceConfig&quot;: { # A set of Shielded Instance options. Check [Images using supported Shielded VM features] Not all combinations are valid. # Optional. Shielded VM Instance configuration settings.
+      &quot;shieldedInstanceConfig&quot;: { # A set of Shielded Instance options. Check [Images using supported Shielded VM features](https://cloud.google.com/compute/docs/instances/modifying-shielded-vm). Not all combinations are valid. # Optional. Shielded VM Instance configuration settings.
         &quot;enableIntegrityMonitoring&quot;: True or False, # Defines whether the instance has integrity monitoring enabled. Enables monitoring and attestation of the boot integrity of the instance. The attestation is performed against the integrity policy baseline. This baseline is initially derived from the implicitly trusted boot image when the instance is created. Enabled by default.
         &quot;enableSecureBoot&quot;: True or False, # Defines whether the instance has Secure Boot enabled. Secure Boot helps ensure that the system only runs authentic software by verifying the digital signature of all boot components, and halting the boot process if signature verification fails. Disabled by default.
         &quot;enableVtpm&quot;: True or False, # Defines whether the instance has the vTPM enabled. Enabled by default.
@@ -311,8 +311,8 @@
       &quot;a_key&quot;: &quot;A String&quot;,
     },
   },
-  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the runtime. Format: `projects/{project}/locations/{location}/runtimes/{runtime}`
-  &quot;softwareConfig&quot;: { # Specifies the selection and config of software inside the runtime. / The properties to set on runtime. Properties keys are specified in `key:value` format, for example: * idle_shutdown: idle_shutdown=true * idle_shutdown_timeout: idle_shutdown_timeout=180 * report-system-health: report-system-health=true # The config settings for software inside the runtime.
+  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the runtime. Format: `projects/{project}/locations/{location}/runtimes/{runtimeId}`
+  &quot;softwareConfig&quot;: { # Specifies the selection and configuration of software inside the runtime. The properties to set on runtime. Properties keys are specified in `key:value` format, for example: * `idle_shutdown: true` * `idle_shutdown_timeout: 180` * `report-system-health: true` # The config settings for software inside the runtime.
     &quot;customGpuDriverPath&quot;: &quot;A String&quot;, # Specify a custom Cloud Storage path where the GPU driver is stored. If not specified, we&#x27;ll automatically choose from official GPU drivers.
     &quot;enableHealthMonitoring&quot;: True or False, # Verifies core internal services are running. Default: True
     &quot;idleShutdown&quot;: True or False, # Runtime will automatically shutdown after idle_shutdown_time. Default: True
@@ -338,16 +338,16 @@
         },
       ],
       &quot;dataDisk&quot;: { # An Local attached disk resource. # Required. Data disk option configuration settings.
-        &quot;autoDelete&quot;: True or False, # Output only. Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance).
-        &quot;boot&quot;: True or False, # Output only. Indicates that this is a boot disk. The virtual machine will use the first partition of the disk for its root filesystem.
-        &quot;deviceName&quot;: &quot;A String&quot;, # Output only. Specifies a unique device name of your choice that is reflected into the /dev/disk/by-id/google-* tree of a Linux operating system running within the instance. This name can be used to reference the device for mounting, resizing, and so on, from within the instance. If not specified, the server chooses a default device name to apply to this disk, in the form persistent-disk-x, where x is a number assigned by Google Compute Engine. This field is only applicable for persistent disks.
+        &quot;autoDelete&quot;: True or False, # Optional. Output only. Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance).
+        &quot;boot&quot;: True or False, # Optional. Output only. Indicates that this is a boot disk. The virtual machine will use the first partition of the disk for its root filesystem.
+        &quot;deviceName&quot;: &quot;A String&quot;, # Optional. Output only. Specifies a unique device name of your choice that is reflected into the /dev/disk/by-id/google-* tree of a Linux operating system running within the instance. This name can be used to reference the device for mounting, resizing, and so on, from within the instance. If not specified, the server chooses a default device name to apply to this disk, in the form persistent-disk-x, where x is a number assigned by Google Compute Engine. This field is only applicable for persistent disks.
         &quot;guestOsFeatures&quot;: [ # Output only. Indicates a list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options.
-          { # A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options. Guest OS features for boot disk.
-            &quot;type&quot;: &quot;A String&quot;, # The ID of a supported feature. Read Enabling guest operating system features to see a list of available options. Valid values: FEATURE_TYPE_UNSPECIFIED MULTI_IP_SUBNET SECURE_BOOT UEFI_COMPATIBLE VIRTIO_SCSI_MULTIQUEUE WINDOWS
+          { # Optional. A list of features to enable on the guest operating system. Applicable only for bootable images. Read [Enabling guest operating system features](https://cloud.google.com/compute/docs/images/create-delete-deprecate-private-images#guest-os-features) to see a list of available options. Guest OS features for boot disk.
+            &quot;type&quot;: &quot;A String&quot;, # The ID of a supported feature. Read [Enabling guest operating system features](https://cloud.google.com/compute/docs/images/create-delete-deprecate-private-images#guest-os-features) to see a list of available options. Valid values: * FEATURE_TYPE_UNSPECIFIED * MULTI_IP_SUBNET * SECURE_BOOT * UEFI_COMPATIBLE * VIRTIO_SCSI_MULTIQUEUE * WINDOWS
           },
         ],
-        &quot;index&quot;: 42, # Output only. [Output Only] A zero-based index to this disk, where 0 is reserved for the boot disk. If you have many disks attached to an instance, each disk would have a unique index number.
-        &quot;initializeParams&quot;: { # [Input Only] Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new runtime. This property is mutually exclusive with the source property; you can only define one or the other, but not both. # Input only. [Input Only] Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new instance. This property is mutually exclusive with the source property; you can only define one or the other, but not both.
+        &quot;index&quot;: 42, # Output only. A zero-based index to this disk, where 0 is reserved for the boot disk. If you have many disks attached to an instance, each disk would have a unique index number.
+        &quot;initializeParams&quot;: { # Input only. Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new runtime. This property is mutually exclusive with the source property; you can only define one or the other, but not both. # Input only. Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new instance. This property is mutually exclusive with the source property; you can only define one or the other, but not both.
           &quot;description&quot;: &quot;A String&quot;, # Optional. Provide this property when creating the disk.
           &quot;diskName&quot;: &quot;A String&quot;, # Optional. Specifies the disk name. If not specified, the default is to use the name of the instance. If the disk with the instance name exists already in the given zone/region, a new name will be automatically generated.
           &quot;diskSizeGb&quot;: &quot;A String&quot;, # Optional. Specifies the size of the disk in base-2 GB. If not specified, the disk will be the same size as the image (usually 10GB). If specified, the size must be equal to or larger than 10GB. Default 100 GB.
@@ -358,7 +358,7 @@
         },
         &quot;interface&quot;: &quot;A String&quot;, # Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance. Valid values: NVME SCSI
         &quot;kind&quot;: &quot;A String&quot;, # Output only. Type of the resource. Always compute#attachedDisk for attached disks.
-        &quot;licenses&quot;: [ # Output only. [Output Only] Any valid publicly visible licenses.
+        &quot;licenses&quot;: [ # Output only. Any valid publicly visible licenses.
           &quot;A String&quot;,
         ],
         &quot;mode&quot;: &quot;A String&quot;, # The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode. Valid values: READ_ONLY READ_WRITE
@@ -381,7 +381,7 @@
       },
       &quot;network&quot;: &quot;A String&quot;, # Optional. The Compute Engine network to be used for machine communications. Cannot be specified with subnetwork. If neither `network` nor `subnet` is specified, the &quot;default&quot; network of the project is used, if it exists. A full URL or partial URI. Examples: * `https://www.googleapis.com/compute/v1/projects/[project_id]/regions/global/default` * `projects/[project_id]/regions/global/default` Runtimes are managed resources inside Google Infrastructure. Runtimes support the following network configurations: * Google Managed Network (Network &amp; subnet are empty) * Consumer Project VPC (network &amp; subnet are required). Requires configuring Private Service Access. * Shared VPC (network &amp; subnet are required). Requires configuring Private Service Access.
       &quot;nicType&quot;: &quot;A String&quot;, # Optional. The type of vNIC to be used on this interface. This may be gVNIC or VirtioNet.
-      &quot;shieldedInstanceConfig&quot;: { # A set of Shielded Instance options. Check [Images using supported Shielded VM features] Not all combinations are valid. # Optional. Shielded VM Instance configuration settings.
+      &quot;shieldedInstanceConfig&quot;: { # A set of Shielded Instance options. Check [Images using supported Shielded VM features](https://cloud.google.com/compute/docs/instances/modifying-shielded-vm). Not all combinations are valid. # Optional. Shielded VM Instance configuration settings.
         &quot;enableIntegrityMonitoring&quot;: True or False, # Defines whether the instance has integrity monitoring enabled. Enables monitoring and attestation of the boot integrity of the instance. The attestation is performed against the integrity policy baseline. This baseline is initially derived from the implicitly trusted boot image when the instance is created. Enabled by default.
         &quot;enableSecureBoot&quot;: True or False, # Defines whether the instance has Secure Boot enabled. Secure Boot helps ensure that the system only runs authentic software by verifying the digital signature of all boot components, and halting the boot process if signature verification fails. Disabled by default.
         &quot;enableVtpm&quot;: True or False, # Defines whether the instance has the vTPM enabled. Enabled by default.
@@ -428,8 +428,8 @@
           &quot;a_key&quot;: &quot;A String&quot;,
         },
       },
-      &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the runtime. Format: `projects/{project}/locations/{location}/runtimes/{runtime}`
-      &quot;softwareConfig&quot;: { # Specifies the selection and config of software inside the runtime. / The properties to set on runtime. Properties keys are specified in `key:value` format, for example: * idle_shutdown: idle_shutdown=true * idle_shutdown_timeout: idle_shutdown_timeout=180 * report-system-health: report-system-health=true # The config settings for software inside the runtime.
+      &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the runtime. Format: `projects/{project}/locations/{location}/runtimes/{runtimeId}`
+      &quot;softwareConfig&quot;: { # Specifies the selection and configuration of software inside the runtime. The properties to set on runtime. Properties keys are specified in `key:value` format, for example: * `idle_shutdown: true` * `idle_shutdown_timeout: 180` * `report-system-health: true` # The config settings for software inside the runtime.
         &quot;customGpuDriverPath&quot;: &quot;A String&quot;, # Specify a custom Cloud Storage path where the GPU driver is stored. If not specified, we&#x27;ll automatically choose from official GPU drivers.
         &quot;enableHealthMonitoring&quot;: True or False, # Verifies core internal services are running. Default: True
         &quot;idleShutdown&quot;: True or False, # Runtime will automatically shutdown after idle_shutdown_time. Default: True
@@ -455,16 +455,16 @@
             },
           ],
           &quot;dataDisk&quot;: { # An Local attached disk resource. # Required. Data disk option configuration settings.
-            &quot;autoDelete&quot;: True or False, # Output only. Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance).
-            &quot;boot&quot;: True or False, # Output only. Indicates that this is a boot disk. The virtual machine will use the first partition of the disk for its root filesystem.
-            &quot;deviceName&quot;: &quot;A String&quot;, # Output only. Specifies a unique device name of your choice that is reflected into the /dev/disk/by-id/google-* tree of a Linux operating system running within the instance. This name can be used to reference the device for mounting, resizing, and so on, from within the instance. If not specified, the server chooses a default device name to apply to this disk, in the form persistent-disk-x, where x is a number assigned by Google Compute Engine. This field is only applicable for persistent disks.
+            &quot;autoDelete&quot;: True or False, # Optional. Output only. Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance).
+            &quot;boot&quot;: True or False, # Optional. Output only. Indicates that this is a boot disk. The virtual machine will use the first partition of the disk for its root filesystem.
+            &quot;deviceName&quot;: &quot;A String&quot;, # Optional. Output only. Specifies a unique device name of your choice that is reflected into the /dev/disk/by-id/google-* tree of a Linux operating system running within the instance. This name can be used to reference the device for mounting, resizing, and so on, from within the instance. If not specified, the server chooses a default device name to apply to this disk, in the form persistent-disk-x, where x is a number assigned by Google Compute Engine. This field is only applicable for persistent disks.
             &quot;guestOsFeatures&quot;: [ # Output only. Indicates a list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options.
-              { # A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options. Guest OS features for boot disk.
-                &quot;type&quot;: &quot;A String&quot;, # The ID of a supported feature. Read Enabling guest operating system features to see a list of available options. Valid values: FEATURE_TYPE_UNSPECIFIED MULTI_IP_SUBNET SECURE_BOOT UEFI_COMPATIBLE VIRTIO_SCSI_MULTIQUEUE WINDOWS
+              { # Optional. A list of features to enable on the guest operating system. Applicable only for bootable images. Read [Enabling guest operating system features](https://cloud.google.com/compute/docs/images/create-delete-deprecate-private-images#guest-os-features) to see a list of available options. Guest OS features for boot disk.
+                &quot;type&quot;: &quot;A String&quot;, # The ID of a supported feature. Read [Enabling guest operating system features](https://cloud.google.com/compute/docs/images/create-delete-deprecate-private-images#guest-os-features) to see a list of available options. Valid values: * FEATURE_TYPE_UNSPECIFIED * MULTI_IP_SUBNET * SECURE_BOOT * UEFI_COMPATIBLE * VIRTIO_SCSI_MULTIQUEUE * WINDOWS
               },
             ],
-            &quot;index&quot;: 42, # Output only. [Output Only] A zero-based index to this disk, where 0 is reserved for the boot disk. If you have many disks attached to an instance, each disk would have a unique index number.
-            &quot;initializeParams&quot;: { # [Input Only] Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new runtime. This property is mutually exclusive with the source property; you can only define one or the other, but not both. # Input only. [Input Only] Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new instance. This property is mutually exclusive with the source property; you can only define one or the other, but not both.
+            &quot;index&quot;: 42, # Output only. A zero-based index to this disk, where 0 is reserved for the boot disk. If you have many disks attached to an instance, each disk would have a unique index number.
+            &quot;initializeParams&quot;: { # Input only. Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new runtime. This property is mutually exclusive with the source property; you can only define one or the other, but not both. # Input only. Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new instance. This property is mutually exclusive with the source property; you can only define one or the other, but not both.
               &quot;description&quot;: &quot;A String&quot;, # Optional. Provide this property when creating the disk.
               &quot;diskName&quot;: &quot;A String&quot;, # Optional. Specifies the disk name. If not specified, the default is to use the name of the instance. If the disk with the instance name exists already in the given zone/region, a new name will be automatically generated.
               &quot;diskSizeGb&quot;: &quot;A String&quot;, # Optional. Specifies the size of the disk in base-2 GB. If not specified, the disk will be the same size as the image (usually 10GB). If specified, the size must be equal to or larger than 10GB. Default 100 GB.
@@ -475,7 +475,7 @@
             },
             &quot;interface&quot;: &quot;A String&quot;, # Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance. Valid values: NVME SCSI
             &quot;kind&quot;: &quot;A String&quot;, # Output only. Type of the resource. Always compute#attachedDisk for attached disks.
-            &quot;licenses&quot;: [ # Output only. [Output Only] Any valid publicly visible licenses.
+            &quot;licenses&quot;: [ # Output only. Any valid publicly visible licenses.
               &quot;A String&quot;,
             ],
             &quot;mode&quot;: &quot;A String&quot;, # The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode. Valid values: READ_ONLY READ_WRITE
@@ -498,7 +498,7 @@
           },
           &quot;network&quot;: &quot;A String&quot;, # Optional. The Compute Engine network to be used for machine communications. Cannot be specified with subnetwork. If neither `network` nor `subnet` is specified, the &quot;default&quot; network of the project is used, if it exists. A full URL or partial URI. Examples: * `https://www.googleapis.com/compute/v1/projects/[project_id]/regions/global/default` * `projects/[project_id]/regions/global/default` Runtimes are managed resources inside Google Infrastructure. Runtimes support the following network configurations: * Google Managed Network (Network &amp; subnet are empty) * Consumer Project VPC (network &amp; subnet are required). Requires configuring Private Service Access. * Shared VPC (network &amp; subnet are required). Requires configuring Private Service Access.
           &quot;nicType&quot;: &quot;A String&quot;, # Optional. The type of vNIC to be used on this interface. This may be gVNIC or VirtioNet.
-          &quot;shieldedInstanceConfig&quot;: { # A set of Shielded Instance options. Check [Images using supported Shielded VM features] Not all combinations are valid. # Optional. Shielded VM Instance configuration settings.
+          &quot;shieldedInstanceConfig&quot;: { # A set of Shielded Instance options. Check [Images using supported Shielded VM features](https://cloud.google.com/compute/docs/instances/modifying-shielded-vm). Not all combinations are valid. # Optional. Shielded VM Instance configuration settings.
             &quot;enableIntegrityMonitoring&quot;: True or False, # Defines whether the instance has integrity monitoring enabled. Enables monitoring and attestation of the boot integrity of the instance. The attestation is performed against the integrity policy baseline. This baseline is initially derived from the implicitly trusted boot image when the instance is created. Enabled by default.
             &quot;enableSecureBoot&quot;: True or False, # Defines whether the instance has Secure Boot enabled. Secure Boot helps ensure that the system only runs authentic software by verifying the digital signature of all boot components, and halting the boot process if signature verification fails. Disabled by default.
             &quot;enableVtpm&quot;: True or False, # Defines whether the instance has the vTPM enabled. Enabled by default.
diff --git a/docs/dyn/people_v1.otherContacts.html b/docs/dyn/people_v1.otherContacts.html
index 9b427f0..c6c31f8 100644
--- a/docs/dyn/people_v1.otherContacts.html
+++ b/docs/dyn/people_v1.otherContacts.html
@@ -82,7 +82,7 @@
 <p class="firstline">Copies an "Other contact" to a new contact in the user's "myContacts" group</p>
 <p class="toc_element">
   <code><a href="#list">list(pageSize=None, pageToken=None, readMask=None, requestSyncToken=None, sources=None, syncToken=None, x__xgafv=None)</a></code></p>
-<p class="firstline">List all "Other contacts", that is contacts that are not in a contact group. "Other contacts" are typically auto created contacts from interactions. Sync tokens expire 7 days after the full sync. A request with an expired sync token will result in a 410 error. In the case of such an error clients should make a full sync request without a `sync_token`. The first page of a full sync request has an additional quota. If the quota is exceeded, a 429 error will be returned. This quota is fixed and can not be increased. When the `sync_token` is specified, resources deleted since the last sync will be returned as a person with `PersonMetadata.deleted` set to true. When the `page_token` or `sync_token` is specified, all other request parameters must match the first call. See example usage at [List the user's other contacts that have changed](/people/v1/other-contacts#list_the_users_other_contacts_that_have_changed).</p>
+<p class="firstline">List all "Other contacts", that is contacts that are not in a contact group. "Other contacts" are typically auto created contacts from interactions. Sync tokens expire 7 days after the full sync. A request with an expired sync token will result in a 410 error. In the case of such an error clients should make a full sync request without a `sync_token`. The first page of a full sync request has an additional quota. If the quota is exceeded, a 429 error will be returned. This quota is fixed and can not be increased. When the `sync_token` is specified, resources deleted since the last sync will be returned as a person with `PersonMetadata.deleted` set to true. When the `page_token` or `sync_token` is specified, all other request parameters must match the first call. Writes may have a propagation delay of several minutes for sync requests. Incremental syncs are not intended for read-after-write use cases. See example usage at [List the user's other contacts that have changed](/people/v1/other-contacts#list_the_users_other_contacts_that_have_changed).</p>
 <p class="toc_element">
   <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
 <p class="firstline">Retrieves the next page of results.</p>
@@ -130,7 +130,7 @@
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;formattedValue&quot;: &quot;A String&quot;, # The unstructured value of the address. If this is not set by the user it will be automatically constructed from structured values.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the address.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -143,6 +143,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;poBox&quot;: &quot;A String&quot;, # The P.O. box of the address.
@@ -157,7 +158,7 @@
     { # A person&#x27;s age range.
       &quot;ageRange&quot;: &quot;A String&quot;, # The age range.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the age range.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -170,6 +171,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
     },
@@ -178,7 +180,7 @@
     { # A person&#x27;s short biography.
       &quot;contentType&quot;: &quot;A String&quot;, # The content type of the biography.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the biography.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -191,6 +193,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The short biography.
@@ -204,7 +207,7 @@
         &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
       },
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the birthday.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -217,6 +220,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;text&quot;: &quot;A String&quot;, # A free-form string representing the user&#x27;s birthday.
@@ -225,7 +229,7 @@
   &quot;braggingRights&quot;: [ # **DEPRECATED**: No data will be returned The person&#x27;s bragging rights.
     { # **DEPRECATED**: No data will be returned A person&#x27;s bragging rights.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the bragging rights.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -238,6 +242,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The bragging rights; for example, `climbed mount everest`.
@@ -247,7 +252,7 @@
     { # A person&#x27;s calendar URL.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the calendar URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the calendar URL.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -260,6 +265,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the calendar URL. The type can be custom or one of these predefined values: * `home` * `freeBusy` * `work`
@@ -270,7 +276,7 @@
     { # Arbitrary client data that is populated by clients. Duplicate keys and values are allowed.
       &quot;key&quot;: &quot;A String&quot;, # The client specified key of the client data.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the client data.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -283,6 +289,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The client specified value of the client data.
@@ -292,7 +299,7 @@
     { # A person&#x27;s cover photo. A large image shown on the person&#x27;s profile page that represents who they are or what they care about.
       &quot;default&quot;: True or False, # True if the cover photo is the default cover photo; false if the cover photo is a user-provided cover photo.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the cover photo.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -305,6 +312,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;url&quot;: &quot;A String&quot;, # The URL of the cover photo.
@@ -315,7 +323,7 @@
       &quot;displayName&quot;: &quot;A String&quot;, # The display name of the email.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the email address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the email address.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -328,6 +336,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the email address. The type can be custom or one of these predefined values: * `home` * `work` * `other`
@@ -344,7 +353,7 @@
       },
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the event.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -357,6 +366,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the event. The type can be custom or one of these predefined values: * `anniversary` * `other`
@@ -366,7 +376,7 @@
     { # An identifier from an external entity related to the person.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the external ID.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -379,6 +389,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the external ID. The type can be custom or one of these predefined values: * `account` * `customer` * `loginId` * `network` * `organization`
@@ -388,7 +399,7 @@
   &quot;fileAses&quot;: [ # The person&#x27;s file-ases.
     { # The name that should be used to sort the person in a list.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the file-as.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -401,6 +412,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The file-as value
@@ -411,7 +423,7 @@
       &quot;addressMeAs&quot;: &quot;A String&quot;, # The type of pronouns that should be used to address the person. The value can be custom or one of these predefined values: * `male` * `female` * `other`
       &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the gender translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale. Unspecified or custom value are not localized.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the gender.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -424,6 +436,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The gender for the person. The gender can be custom or one of these predefined values: * `male` * `female` * `unspecified`
@@ -434,7 +447,7 @@
       &quot;formattedProtocol&quot;: &quot;A String&quot;, # Output only. The protocol of the IM client formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the IM client translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the IM client.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -447,6 +460,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;protocol&quot;: &quot;A String&quot;, # The protocol of the IM client. The protocol can be custom or one of these predefined values: * `aim` * `msn` * `yahoo` * `skype` * `qq` * `googleTalk` * `icq` * `jabber` * `netMeeting`
@@ -457,7 +471,7 @@
   &quot;interests&quot;: [ # The person&#x27;s interests.
     { # One of the person&#x27;s interests.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the interest.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -470,6 +484,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The interest; for example, `stargazing`.
@@ -478,7 +493,7 @@
   &quot;locales&quot;: [ # The person&#x27;s locale preferences.
     { # A person&#x27;s locale preference.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the locale.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -491,6 +506,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The well-formed [IETF BCP 47](https://tools.ietf.org/html/bcp47) language tag representing the locale.
@@ -504,7 +520,7 @@
       &quot;floor&quot;: &quot;A String&quot;, # The floor name or number.
       &quot;floorSection&quot;: &quot;A String&quot;, # The floor section in `floor_name`.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the location.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -517,6 +533,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the location. The type can be custom or one of these predefined values: * `desk` * `grewUp`
@@ -533,7 +550,7 @@
         &quot;inViewerDomain&quot;: True or False, # True if the person is in the viewer&#x27;s Google Workspace domain.
       },
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the membership.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -546,6 +563,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
     },
@@ -578,7 +596,7 @@
     { # A person&#x27;s miscellaneous keyword.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the miscellaneous keyword translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the miscellaneous keyword.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -591,6 +609,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The miscellaneous keyword type.
@@ -606,7 +625,7 @@
       &quot;honorificPrefix&quot;: &quot;A String&quot;, # The honorific prefixes, such as `Mrs.` or `Dr.`
       &quot;honorificSuffix&quot;: &quot;A String&quot;, # The honorific suffixes, such as `Jr.`
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the name.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -619,6 +638,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;middleName&quot;: &quot;A String&quot;, # The middle name(s).
@@ -634,7 +654,7 @@
   &quot;nicknames&quot;: [ # The person&#x27;s nicknames.
     { # A person&#x27;s nickname.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the nickname.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -647,6 +667,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the nickname.
@@ -656,7 +677,7 @@
   &quot;occupations&quot;: [ # The person&#x27;s occupations.
     { # A person&#x27;s occupation.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the occupation.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -669,6 +690,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The occupation; for example, `carpenter`.
@@ -688,7 +710,7 @@
       &quot;jobDescription&quot;: &quot;A String&quot;, # The person&#x27;s job description at the organization.
       &quot;location&quot;: &quot;A String&quot;, # The location of the organization office the person works at.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the organization.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -701,6 +723,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;name&quot;: &quot;A String&quot;, # The name of the organization.
@@ -720,7 +743,7 @@
       &quot;canonicalForm&quot;: &quot;A String&quot;, # Output only. The canonicalized [ITU-T E.164](https://law.resource.org/pub/us/cfr/ibr/004/itu-t.E.164.1.2008.pdf) form of the phone number.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the phone number translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the phone number.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -733,6 +756,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the phone number. The type can be custom or one of these predefined values: * `home` * `work` * `mobile` * `homeFax` * `workFax` * `otherFax` * `pager` * `workMobile` * `workPager` * `main` * `googleVoice` * `other`
@@ -743,7 +767,7 @@
     { # A person&#x27;s photo. A picture shown next to the person&#x27;s name to help others recognize the person.
       &quot;default&quot;: True or False, # True if the photo is a default photo; false if the photo is a user-provided photo.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the photo.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -756,6 +780,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;url&quot;: &quot;A String&quot;, # The URL of the photo. You can change the desired size by appending a query parameter `sz={size}` at the end of the url, where {size} is the size in pixels. Example: https://lh3.googleusercontent.com/-T_wVWLlmg7w/AAAAAAAAAAI/AAAAAAAABa8/00gzXvDBYqw/s100/photo.jpg?sz=50
@@ -765,7 +790,7 @@
     { # A person&#x27;s relation to another person.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the relation translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relation.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -778,6 +803,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;person&quot;: &quot;A String&quot;, # The name of the other person this relation refers to.
@@ -788,7 +814,7 @@
     { # **DEPRECATED**: No data will be returned A person&#x27;s relationship interest .
       &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship interest translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship interest.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -801,6 +827,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The kind of relationship the person is looking for. The value can be custom or one of these predefined values: * `friend` * `date` * `relationship` * `networking`
@@ -810,7 +837,7 @@
     { # **DEPRECATED**: No data will be returned A person&#x27;s relationship status.
       &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship status translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship status.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -823,6 +850,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The relationship status. The value can be custom or one of these predefined values: * `single` * `inARelationship` * `engaged` * `married` * `itsComplicated` * `openRelationship` * `widowed` * `inDomesticPartnership` * `inCivilUnion`
@@ -832,7 +860,7 @@
     { # **DEPRECATED**: Please use `person.locations` instead. A person&#x27;s past or current residence.
       &quot;current&quot;: True or False, # True if the residence is the person&#x27;s current residence; false if the residence is a past residence.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the residence.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -845,6 +873,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The address of the residence.
@@ -855,7 +884,7 @@
     { # A person&#x27;s SIP address. Session Initial Protocol addresses are used for VoIP communications to make voice or video calls over the internet.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the SIP address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the SIP address.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -868,6 +897,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the SIP address. The type can be custom or or one of these predefined values: * `home` * `work` * `mobile` * `other`
@@ -877,7 +907,7 @@
   &quot;skills&quot;: [ # The person&#x27;s skills.
     { # A skill that the person has.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the skill.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -890,6 +920,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The skill; for example, `underwater basket weaving`.
@@ -898,7 +929,7 @@
   &quot;taglines&quot;: [ # Output only. **DEPRECATED**: No data will be returned The person&#x27;s taglines.
     { # **DEPRECATED**: No data will be returned A brief one-line description of the person.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the tagline.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -911,6 +942,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The tagline.
@@ -920,7 +952,7 @@
     { # A person&#x27;s associated URLs.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the URL.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -933,6 +965,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the URL. The type can be custom or one of these predefined values: * `home` * `work` * `blog` * `profile` * `homePage` * `ftp` * `reservations` * `appInstallPage`: website for a Currents application. * `other`
@@ -943,7 +976,7 @@
     { # Arbitrary user data that is populated by the end users.
       &quot;key&quot;: &quot;A String&quot;, # The end user specified key of the user defined data.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the user defined data.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -956,6 +989,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The end user specified value of the user defined data.
@@ -966,7 +1000,7 @@
 
 <div class="method">
     <code class="details" id="list">list(pageSize=None, pageToken=None, readMask=None, requestSyncToken=None, sources=None, syncToken=None, x__xgafv=None)</code>
-  <pre>List all &quot;Other contacts&quot;, that is contacts that are not in a contact group. &quot;Other contacts&quot; are typically auto created contacts from interactions. Sync tokens expire 7 days after the full sync. A request with an expired sync token will result in a 410 error. In the case of such an error clients should make a full sync request without a `sync_token`. The first page of a full sync request has an additional quota. If the quota is exceeded, a 429 error will be returned. This quota is fixed and can not be increased. When the `sync_token` is specified, resources deleted since the last sync will be returned as a person with `PersonMetadata.deleted` set to true. When the `page_token` or `sync_token` is specified, all other request parameters must match the first call. See example usage at [List the user&#x27;s other contacts that have changed](/people/v1/other-contacts#list_the_users_other_contacts_that_have_changed).
+  <pre>List all &quot;Other contacts&quot;, that is contacts that are not in a contact group. &quot;Other contacts&quot; are typically auto created contacts from interactions. Sync tokens expire 7 days after the full sync. A request with an expired sync token will result in a 410 error. In the case of such an error clients should make a full sync request without a `sync_token`. The first page of a full sync request has an additional quota. If the quota is exceeded, a 429 error will be returned. This quota is fixed and can not be increased. When the `sync_token` is specified, resources deleted since the last sync will be returned as a person with `PersonMetadata.deleted` set to true. When the `page_token` or `sync_token` is specified, all other request parameters must match the first call. Writes may have a propagation delay of several minutes for sync requests. Incremental syncs are not intended for read-after-write use cases. See example usage at [List the user&#x27;s other contacts that have changed](/people/v1/other-contacts#list_the_users_other_contacts_that_have_changed).
 
 Args:
   pageSize: integer, Optional. The number of &quot;Other contacts&quot; to include in the response. Valid values are between 1 and 1000, inclusive. Defaults to 100 if not set or set to 0.
@@ -1002,7 +1036,7 @@
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;formattedValue&quot;: &quot;A String&quot;, # The unstructured value of the address. If this is not set by the user it will be automatically constructed from structured values.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the address.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1015,6 +1049,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;poBox&quot;: &quot;A String&quot;, # The P.O. box of the address.
@@ -1029,7 +1064,7 @@
         { # A person&#x27;s age range.
           &quot;ageRange&quot;: &quot;A String&quot;, # The age range.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the age range.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1042,6 +1077,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
         },
@@ -1050,7 +1086,7 @@
         { # A person&#x27;s short biography.
           &quot;contentType&quot;: &quot;A String&quot;, # The content type of the biography.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the biography.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1063,6 +1099,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The short biography.
@@ -1076,7 +1113,7 @@
             &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
           },
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the birthday.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1089,6 +1126,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;text&quot;: &quot;A String&quot;, # A free-form string representing the user&#x27;s birthday.
@@ -1097,7 +1135,7 @@
       &quot;braggingRights&quot;: [ # **DEPRECATED**: No data will be returned The person&#x27;s bragging rights.
         { # **DEPRECATED**: No data will be returned A person&#x27;s bragging rights.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the bragging rights.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1110,6 +1148,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The bragging rights; for example, `climbed mount everest`.
@@ -1119,7 +1158,7 @@
         { # A person&#x27;s calendar URL.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the calendar URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the calendar URL.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1132,6 +1171,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the calendar URL. The type can be custom or one of these predefined values: * `home` * `freeBusy` * `work`
@@ -1142,7 +1182,7 @@
         { # Arbitrary client data that is populated by clients. Duplicate keys and values are allowed.
           &quot;key&quot;: &quot;A String&quot;, # The client specified key of the client data.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the client data.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1155,6 +1195,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The client specified value of the client data.
@@ -1164,7 +1205,7 @@
         { # A person&#x27;s cover photo. A large image shown on the person&#x27;s profile page that represents who they are or what they care about.
           &quot;default&quot;: True or False, # True if the cover photo is the default cover photo; false if the cover photo is a user-provided cover photo.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the cover photo.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1177,6 +1218,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;url&quot;: &quot;A String&quot;, # The URL of the cover photo.
@@ -1187,7 +1229,7 @@
           &quot;displayName&quot;: &quot;A String&quot;, # The display name of the email.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the email address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the email address.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1200,6 +1242,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the email address. The type can be custom or one of these predefined values: * `home` * `work` * `other`
@@ -1216,7 +1259,7 @@
           },
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the event.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1229,6 +1272,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the event. The type can be custom or one of these predefined values: * `anniversary` * `other`
@@ -1238,7 +1282,7 @@
         { # An identifier from an external entity related to the person.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the external ID.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1251,6 +1295,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the external ID. The type can be custom or one of these predefined values: * `account` * `customer` * `loginId` * `network` * `organization`
@@ -1260,7 +1305,7 @@
       &quot;fileAses&quot;: [ # The person&#x27;s file-ases.
         { # The name that should be used to sort the person in a list.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the file-as.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1273,6 +1318,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The file-as value
@@ -1283,7 +1329,7 @@
           &quot;addressMeAs&quot;: &quot;A String&quot;, # The type of pronouns that should be used to address the person. The value can be custom or one of these predefined values: * `male` * `female` * `other`
           &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the gender translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale. Unspecified or custom value are not localized.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the gender.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1296,6 +1342,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The gender for the person. The gender can be custom or one of these predefined values: * `male` * `female` * `unspecified`
@@ -1306,7 +1353,7 @@
           &quot;formattedProtocol&quot;: &quot;A String&quot;, # Output only. The protocol of the IM client formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the IM client translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the IM client.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1319,6 +1366,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;protocol&quot;: &quot;A String&quot;, # The protocol of the IM client. The protocol can be custom or one of these predefined values: * `aim` * `msn` * `yahoo` * `skype` * `qq` * `googleTalk` * `icq` * `jabber` * `netMeeting`
@@ -1329,7 +1377,7 @@
       &quot;interests&quot;: [ # The person&#x27;s interests.
         { # One of the person&#x27;s interests.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the interest.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1342,6 +1390,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The interest; for example, `stargazing`.
@@ -1350,7 +1399,7 @@
       &quot;locales&quot;: [ # The person&#x27;s locale preferences.
         { # A person&#x27;s locale preference.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the locale.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1363,6 +1412,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The well-formed [IETF BCP 47](https://tools.ietf.org/html/bcp47) language tag representing the locale.
@@ -1376,7 +1426,7 @@
           &quot;floor&quot;: &quot;A String&quot;, # The floor name or number.
           &quot;floorSection&quot;: &quot;A String&quot;, # The floor section in `floor_name`.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the location.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1389,6 +1439,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the location. The type can be custom or one of these predefined values: * `desk` * `grewUp`
@@ -1405,7 +1456,7 @@
             &quot;inViewerDomain&quot;: True or False, # True if the person is in the viewer&#x27;s Google Workspace domain.
           },
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the membership.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1418,6 +1469,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
         },
@@ -1450,7 +1502,7 @@
         { # A person&#x27;s miscellaneous keyword.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the miscellaneous keyword translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the miscellaneous keyword.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1463,6 +1515,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The miscellaneous keyword type.
@@ -1478,7 +1531,7 @@
           &quot;honorificPrefix&quot;: &quot;A String&quot;, # The honorific prefixes, such as `Mrs.` or `Dr.`
           &quot;honorificSuffix&quot;: &quot;A String&quot;, # The honorific suffixes, such as `Jr.`
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the name.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1491,6 +1544,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;middleName&quot;: &quot;A String&quot;, # The middle name(s).
@@ -1506,7 +1560,7 @@
       &quot;nicknames&quot;: [ # The person&#x27;s nicknames.
         { # A person&#x27;s nickname.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the nickname.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1519,6 +1573,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the nickname.
@@ -1528,7 +1583,7 @@
       &quot;occupations&quot;: [ # The person&#x27;s occupations.
         { # A person&#x27;s occupation.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the occupation.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1541,6 +1596,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The occupation; for example, `carpenter`.
@@ -1560,7 +1616,7 @@
           &quot;jobDescription&quot;: &quot;A String&quot;, # The person&#x27;s job description at the organization.
           &quot;location&quot;: &quot;A String&quot;, # The location of the organization office the person works at.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the organization.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1573,6 +1629,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;name&quot;: &quot;A String&quot;, # The name of the organization.
@@ -1592,7 +1649,7 @@
           &quot;canonicalForm&quot;: &quot;A String&quot;, # Output only. The canonicalized [ITU-T E.164](https://law.resource.org/pub/us/cfr/ibr/004/itu-t.E.164.1.2008.pdf) form of the phone number.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the phone number translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the phone number.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1605,6 +1662,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the phone number. The type can be custom or one of these predefined values: * `home` * `work` * `mobile` * `homeFax` * `workFax` * `otherFax` * `pager` * `workMobile` * `workPager` * `main` * `googleVoice` * `other`
@@ -1615,7 +1673,7 @@
         { # A person&#x27;s photo. A picture shown next to the person&#x27;s name to help others recognize the person.
           &quot;default&quot;: True or False, # True if the photo is a default photo; false if the photo is a user-provided photo.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the photo.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1628,6 +1686,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;url&quot;: &quot;A String&quot;, # The URL of the photo. You can change the desired size by appending a query parameter `sz={size}` at the end of the url, where {size} is the size in pixels. Example: https://lh3.googleusercontent.com/-T_wVWLlmg7w/AAAAAAAAAAI/AAAAAAAABa8/00gzXvDBYqw/s100/photo.jpg?sz=50
@@ -1637,7 +1696,7 @@
         { # A person&#x27;s relation to another person.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the relation translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relation.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1650,6 +1709,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;person&quot;: &quot;A String&quot;, # The name of the other person this relation refers to.
@@ -1660,7 +1720,7 @@
         { # **DEPRECATED**: No data will be returned A person&#x27;s relationship interest .
           &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship interest translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship interest.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1673,6 +1733,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The kind of relationship the person is looking for. The value can be custom or one of these predefined values: * `friend` * `date` * `relationship` * `networking`
@@ -1682,7 +1743,7 @@
         { # **DEPRECATED**: No data will be returned A person&#x27;s relationship status.
           &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship status translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship status.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1695,6 +1756,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The relationship status. The value can be custom or one of these predefined values: * `single` * `inARelationship` * `engaged` * `married` * `itsComplicated` * `openRelationship` * `widowed` * `inDomesticPartnership` * `inCivilUnion`
@@ -1704,7 +1766,7 @@
         { # **DEPRECATED**: Please use `person.locations` instead. A person&#x27;s past or current residence.
           &quot;current&quot;: True or False, # True if the residence is the person&#x27;s current residence; false if the residence is a past residence.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the residence.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1717,6 +1779,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The address of the residence.
@@ -1727,7 +1790,7 @@
         { # A person&#x27;s SIP address. Session Initial Protocol addresses are used for VoIP communications to make voice or video calls over the internet.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the SIP address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the SIP address.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1740,6 +1803,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the SIP address. The type can be custom or or one of these predefined values: * `home` * `work` * `mobile` * `other`
@@ -1749,7 +1813,7 @@
       &quot;skills&quot;: [ # The person&#x27;s skills.
         { # A skill that the person has.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the skill.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1762,6 +1826,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The skill; for example, `underwater basket weaving`.
@@ -1770,7 +1835,7 @@
       &quot;taglines&quot;: [ # Output only. **DEPRECATED**: No data will be returned The person&#x27;s taglines.
         { # **DEPRECATED**: No data will be returned A brief one-line description of the person.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the tagline.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1783,6 +1848,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The tagline.
@@ -1792,7 +1858,7 @@
         { # A person&#x27;s associated URLs.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the URL.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1805,6 +1871,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the URL. The type can be custom or one of these predefined values: * `home` * `work` * `blog` * `profile` * `homePage` * `ftp` * `reservations` * `appInstallPage`: website for a Currents application. * `other`
@@ -1815,7 +1882,7 @@
         { # Arbitrary user data that is populated by the end users.
           &quot;key&quot;: &quot;A String&quot;, # The end user specified key of the user defined data.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the user defined data.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1828,6 +1895,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The end user specified value of the user defined data.
@@ -1882,7 +1950,7 @@
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;formattedValue&quot;: &quot;A String&quot;, # The unstructured value of the address. If this is not set by the user it will be automatically constructed from structured values.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the address.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1895,6 +1963,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;poBox&quot;: &quot;A String&quot;, # The P.O. box of the address.
@@ -1909,7 +1978,7 @@
           { # A person&#x27;s age range.
             &quot;ageRange&quot;: &quot;A String&quot;, # The age range.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the age range.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1922,6 +1991,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
           },
@@ -1930,7 +2000,7 @@
           { # A person&#x27;s short biography.
             &quot;contentType&quot;: &quot;A String&quot;, # The content type of the biography.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the biography.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1943,6 +2013,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The short biography.
@@ -1956,7 +2027,7 @@
               &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
             },
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the birthday.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1969,6 +2040,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;text&quot;: &quot;A String&quot;, # A free-form string representing the user&#x27;s birthday.
@@ -1977,7 +2049,7 @@
         &quot;braggingRights&quot;: [ # **DEPRECATED**: No data will be returned The person&#x27;s bragging rights.
           { # **DEPRECATED**: No data will be returned A person&#x27;s bragging rights.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the bragging rights.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1990,6 +2062,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The bragging rights; for example, `climbed mount everest`.
@@ -1999,7 +2072,7 @@
           { # A person&#x27;s calendar URL.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the calendar URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the calendar URL.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2012,6 +2085,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the calendar URL. The type can be custom or one of these predefined values: * `home` * `freeBusy` * `work`
@@ -2022,7 +2096,7 @@
           { # Arbitrary client data that is populated by clients. Duplicate keys and values are allowed.
             &quot;key&quot;: &quot;A String&quot;, # The client specified key of the client data.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the client data.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2035,6 +2109,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The client specified value of the client data.
@@ -2044,7 +2119,7 @@
           { # A person&#x27;s cover photo. A large image shown on the person&#x27;s profile page that represents who they are or what they care about.
             &quot;default&quot;: True or False, # True if the cover photo is the default cover photo; false if the cover photo is a user-provided cover photo.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the cover photo.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2057,6 +2132,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;url&quot;: &quot;A String&quot;, # The URL of the cover photo.
@@ -2067,7 +2143,7 @@
             &quot;displayName&quot;: &quot;A String&quot;, # The display name of the email.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the email address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the email address.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2080,6 +2156,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the email address. The type can be custom or one of these predefined values: * `home` * `work` * `other`
@@ -2096,7 +2173,7 @@
             },
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the event.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2109,6 +2186,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the event. The type can be custom or one of these predefined values: * `anniversary` * `other`
@@ -2118,7 +2196,7 @@
           { # An identifier from an external entity related to the person.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the external ID.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2131,6 +2209,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the external ID. The type can be custom or one of these predefined values: * `account` * `customer` * `loginId` * `network` * `organization`
@@ -2140,7 +2219,7 @@
         &quot;fileAses&quot;: [ # The person&#x27;s file-ases.
           { # The name that should be used to sort the person in a list.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the file-as.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2153,6 +2232,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The file-as value
@@ -2163,7 +2243,7 @@
             &quot;addressMeAs&quot;: &quot;A String&quot;, # The type of pronouns that should be used to address the person. The value can be custom or one of these predefined values: * `male` * `female` * `other`
             &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the gender translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale. Unspecified or custom value are not localized.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the gender.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2176,6 +2256,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The gender for the person. The gender can be custom or one of these predefined values: * `male` * `female` * `unspecified`
@@ -2186,7 +2267,7 @@
             &quot;formattedProtocol&quot;: &quot;A String&quot;, # Output only. The protocol of the IM client formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the IM client translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the IM client.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2199,6 +2280,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;protocol&quot;: &quot;A String&quot;, # The protocol of the IM client. The protocol can be custom or one of these predefined values: * `aim` * `msn` * `yahoo` * `skype` * `qq` * `googleTalk` * `icq` * `jabber` * `netMeeting`
@@ -2209,7 +2291,7 @@
         &quot;interests&quot;: [ # The person&#x27;s interests.
           { # One of the person&#x27;s interests.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the interest.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2222,6 +2304,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The interest; for example, `stargazing`.
@@ -2230,7 +2313,7 @@
         &quot;locales&quot;: [ # The person&#x27;s locale preferences.
           { # A person&#x27;s locale preference.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the locale.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2243,6 +2326,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The well-formed [IETF BCP 47](https://tools.ietf.org/html/bcp47) language tag representing the locale.
@@ -2256,7 +2340,7 @@
             &quot;floor&quot;: &quot;A String&quot;, # The floor name or number.
             &quot;floorSection&quot;: &quot;A String&quot;, # The floor section in `floor_name`.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the location.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2269,6 +2353,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the location. The type can be custom or one of these predefined values: * `desk` * `grewUp`
@@ -2285,7 +2370,7 @@
               &quot;inViewerDomain&quot;: True or False, # True if the person is in the viewer&#x27;s Google Workspace domain.
             },
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the membership.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2298,6 +2383,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
           },
@@ -2330,7 +2416,7 @@
           { # A person&#x27;s miscellaneous keyword.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the miscellaneous keyword translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the miscellaneous keyword.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2343,6 +2429,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The miscellaneous keyword type.
@@ -2358,7 +2445,7 @@
             &quot;honorificPrefix&quot;: &quot;A String&quot;, # The honorific prefixes, such as `Mrs.` or `Dr.`
             &quot;honorificSuffix&quot;: &quot;A String&quot;, # The honorific suffixes, such as `Jr.`
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the name.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2371,6 +2458,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;middleName&quot;: &quot;A String&quot;, # The middle name(s).
@@ -2386,7 +2474,7 @@
         &quot;nicknames&quot;: [ # The person&#x27;s nicknames.
           { # A person&#x27;s nickname.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the nickname.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2399,6 +2487,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the nickname.
@@ -2408,7 +2497,7 @@
         &quot;occupations&quot;: [ # The person&#x27;s occupations.
           { # A person&#x27;s occupation.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the occupation.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2421,6 +2510,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The occupation; for example, `carpenter`.
@@ -2440,7 +2530,7 @@
             &quot;jobDescription&quot;: &quot;A String&quot;, # The person&#x27;s job description at the organization.
             &quot;location&quot;: &quot;A String&quot;, # The location of the organization office the person works at.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the organization.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2453,6 +2543,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;name&quot;: &quot;A String&quot;, # The name of the organization.
@@ -2472,7 +2563,7 @@
             &quot;canonicalForm&quot;: &quot;A String&quot;, # Output only. The canonicalized [ITU-T E.164](https://law.resource.org/pub/us/cfr/ibr/004/itu-t.E.164.1.2008.pdf) form of the phone number.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the phone number translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the phone number.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2485,6 +2576,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the phone number. The type can be custom or one of these predefined values: * `home` * `work` * `mobile` * `homeFax` * `workFax` * `otherFax` * `pager` * `workMobile` * `workPager` * `main` * `googleVoice` * `other`
@@ -2495,7 +2587,7 @@
           { # A person&#x27;s photo. A picture shown next to the person&#x27;s name to help others recognize the person.
             &quot;default&quot;: True or False, # True if the photo is a default photo; false if the photo is a user-provided photo.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the photo.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2508,6 +2600,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;url&quot;: &quot;A String&quot;, # The URL of the photo. You can change the desired size by appending a query parameter `sz={size}` at the end of the url, where {size} is the size in pixels. Example: https://lh3.googleusercontent.com/-T_wVWLlmg7w/AAAAAAAAAAI/AAAAAAAABa8/00gzXvDBYqw/s100/photo.jpg?sz=50
@@ -2517,7 +2610,7 @@
           { # A person&#x27;s relation to another person.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the relation translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relation.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2530,6 +2623,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;person&quot;: &quot;A String&quot;, # The name of the other person this relation refers to.
@@ -2540,7 +2634,7 @@
           { # **DEPRECATED**: No data will be returned A person&#x27;s relationship interest .
             &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship interest translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship interest.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2553,6 +2647,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The kind of relationship the person is looking for. The value can be custom or one of these predefined values: * `friend` * `date` * `relationship` * `networking`
@@ -2562,7 +2657,7 @@
           { # **DEPRECATED**: No data will be returned A person&#x27;s relationship status.
             &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship status translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship status.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2575,6 +2670,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The relationship status. The value can be custom or one of these predefined values: * `single` * `inARelationship` * `engaged` * `married` * `itsComplicated` * `openRelationship` * `widowed` * `inDomesticPartnership` * `inCivilUnion`
@@ -2584,7 +2680,7 @@
           { # **DEPRECATED**: Please use `person.locations` instead. A person&#x27;s past or current residence.
             &quot;current&quot;: True or False, # True if the residence is the person&#x27;s current residence; false if the residence is a past residence.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the residence.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2597,6 +2693,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The address of the residence.
@@ -2607,7 +2704,7 @@
           { # A person&#x27;s SIP address. Session Initial Protocol addresses are used for VoIP communications to make voice or video calls over the internet.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the SIP address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the SIP address.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2620,6 +2717,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the SIP address. The type can be custom or or one of these predefined values: * `home` * `work` * `mobile` * `other`
@@ -2629,7 +2727,7 @@
         &quot;skills&quot;: [ # The person&#x27;s skills.
           { # A skill that the person has.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the skill.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2642,6 +2740,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The skill; for example, `underwater basket weaving`.
@@ -2650,7 +2749,7 @@
         &quot;taglines&quot;: [ # Output only. **DEPRECATED**: No data will be returned The person&#x27;s taglines.
           { # **DEPRECATED**: No data will be returned A brief one-line description of the person.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the tagline.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2663,6 +2762,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The tagline.
@@ -2672,7 +2772,7 @@
           { # A person&#x27;s associated URLs.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the URL.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2685,6 +2785,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the URL. The type can be custom or one of these predefined values: * `home` * `work` * `blog` * `profile` * `homePage` * `ftp` * `reservations` * `appInstallPage`: website for a Currents application. * `other`
@@ -2695,7 +2796,7 @@
           { # Arbitrary user data that is populated by the end users.
             &quot;key&quot;: &quot;A String&quot;, # The end user specified key of the user defined data.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the user defined data.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2708,6 +2809,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The end user specified value of the user defined data.
diff --git a/docs/dyn/people_v1.people.connections.html b/docs/dyn/people_v1.people.connections.html
index 5bb979e..eacaed0 100644
--- a/docs/dyn/people_v1.people.connections.html
+++ b/docs/dyn/people_v1.people.connections.html
@@ -79,7 +79,7 @@
 <p class="firstline">Close httplib2 connections.</p>
 <p class="toc_element">
   <code><a href="#list">list(resourceName, pageSize=None, pageToken=None, personFields=None, requestMask_includeField=None, requestSyncToken=None, sortOrder=None, sources=None, syncToken=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Provides a list of the authenticated user's contacts. Sync tokens expire 7 days after the full sync. A request with an expired sync token will result in a 410 error. In the case of such an error clients should make a full sync request without a `sync_token`. The first page of a full sync request has an additional quota. If the quota is exceeded, a 429 error will be returned. This quota is fixed and can not be increased. When the `sync_token` is specified, resources deleted since the last sync will be returned as a person with `PersonMetadata.deleted` set to true. When the `page_token` or `sync_token` is specified, all other request parameters must match the first call. See example usage at [List the user's contacts that have changed](/people/v1/contacts#list_the_users_contacts_that_have_changed).</p>
+<p class="firstline">Provides a list of the authenticated user's contacts. Sync tokens expire 7 days after the full sync. A request with an expired sync token will result in a 410 error. In the case of such an error clients should make a full sync request without a `sync_token`. The first page of a full sync request has an additional quota. If the quota is exceeded, a 429 error will be returned. This quota is fixed and can not be increased. When the `sync_token` is specified, resources deleted since the last sync will be returned as a person with `PersonMetadata.deleted` set to true. When the `page_token` or `sync_token` is specified, all other request parameters must match the first call. Writes may have a propagation delay of several minutes for sync requests. Incremental syncs are not intended for read-after-write use cases. See example usage at [List the user's contacts that have changed](/people/v1/contacts#list_the_users_contacts_that_have_changed).</p>
 <p class="toc_element">
   <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
 <p class="firstline">Retrieves the next page of results.</p>
@@ -91,7 +91,7 @@
 
 <div class="method">
     <code class="details" id="list">list(resourceName, pageSize=None, pageToken=None, personFields=None, requestMask_includeField=None, requestSyncToken=None, sortOrder=None, sources=None, syncToken=None, x__xgafv=None)</code>
-  <pre>Provides a list of the authenticated user&#x27;s contacts. Sync tokens expire 7 days after the full sync. A request with an expired sync token will result in a 410 error. In the case of such an error clients should make a full sync request without a `sync_token`. The first page of a full sync request has an additional quota. If the quota is exceeded, a 429 error will be returned. This quota is fixed and can not be increased. When the `sync_token` is specified, resources deleted since the last sync will be returned as a person with `PersonMetadata.deleted` set to true. When the `page_token` or `sync_token` is specified, all other request parameters must match the first call. See example usage at [List the user&#x27;s contacts that have changed](/people/v1/contacts#list_the_users_contacts_that_have_changed).
+  <pre>Provides a list of the authenticated user&#x27;s contacts. Sync tokens expire 7 days after the full sync. A request with an expired sync token will result in a 410 error. In the case of such an error clients should make a full sync request without a `sync_token`. The first page of a full sync request has an additional quota. If the quota is exceeded, a 429 error will be returned. This quota is fixed and can not be increased. When the `sync_token` is specified, resources deleted since the last sync will be returned as a person with `PersonMetadata.deleted` set to true. When the `page_token` or `sync_token` is specified, all other request parameters must match the first call. Writes may have a propagation delay of several minutes for sync requests. Incremental syncs are not intended for read-after-write use cases. See example usage at [List the user&#x27;s contacts that have changed](/people/v1/contacts#list_the_users_contacts_that_have_changed).
 
 Args:
   resourceName: string, Required. The resource name to return connections for. Only `people/me` is valid. (required)
@@ -133,7 +133,7 @@
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;formattedValue&quot;: &quot;A String&quot;, # The unstructured value of the address. If this is not set by the user it will be automatically constructed from structured values.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the address.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -146,6 +146,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;poBox&quot;: &quot;A String&quot;, # The P.O. box of the address.
@@ -160,7 +161,7 @@
         { # A person&#x27;s age range.
           &quot;ageRange&quot;: &quot;A String&quot;, # The age range.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the age range.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -173,6 +174,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
         },
@@ -181,7 +183,7 @@
         { # A person&#x27;s short biography.
           &quot;contentType&quot;: &quot;A String&quot;, # The content type of the biography.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the biography.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -194,6 +196,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The short biography.
@@ -207,7 +210,7 @@
             &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
           },
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the birthday.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -220,6 +223,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;text&quot;: &quot;A String&quot;, # A free-form string representing the user&#x27;s birthday.
@@ -228,7 +232,7 @@
       &quot;braggingRights&quot;: [ # **DEPRECATED**: No data will be returned The person&#x27;s bragging rights.
         { # **DEPRECATED**: No data will be returned A person&#x27;s bragging rights.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the bragging rights.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -241,6 +245,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The bragging rights; for example, `climbed mount everest`.
@@ -250,7 +255,7 @@
         { # A person&#x27;s calendar URL.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the calendar URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the calendar URL.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -263,6 +268,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the calendar URL. The type can be custom or one of these predefined values: * `home` * `freeBusy` * `work`
@@ -273,7 +279,7 @@
         { # Arbitrary client data that is populated by clients. Duplicate keys and values are allowed.
           &quot;key&quot;: &quot;A String&quot;, # The client specified key of the client data.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the client data.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -286,6 +292,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The client specified value of the client data.
@@ -295,7 +302,7 @@
         { # A person&#x27;s cover photo. A large image shown on the person&#x27;s profile page that represents who they are or what they care about.
           &quot;default&quot;: True or False, # True if the cover photo is the default cover photo; false if the cover photo is a user-provided cover photo.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the cover photo.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -308,6 +315,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;url&quot;: &quot;A String&quot;, # The URL of the cover photo.
@@ -318,7 +326,7 @@
           &quot;displayName&quot;: &quot;A String&quot;, # The display name of the email.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the email address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the email address.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -331,6 +339,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the email address. The type can be custom or one of these predefined values: * `home` * `work` * `other`
@@ -347,7 +356,7 @@
           },
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the event.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -360,6 +369,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the event. The type can be custom or one of these predefined values: * `anniversary` * `other`
@@ -369,7 +379,7 @@
         { # An identifier from an external entity related to the person.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the external ID.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -382,6 +392,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the external ID. The type can be custom or one of these predefined values: * `account` * `customer` * `loginId` * `network` * `organization`
@@ -391,7 +402,7 @@
       &quot;fileAses&quot;: [ # The person&#x27;s file-ases.
         { # The name that should be used to sort the person in a list.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the file-as.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -404,6 +415,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The file-as value
@@ -414,7 +426,7 @@
           &quot;addressMeAs&quot;: &quot;A String&quot;, # The type of pronouns that should be used to address the person. The value can be custom or one of these predefined values: * `male` * `female` * `other`
           &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the gender translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale. Unspecified or custom value are not localized.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the gender.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -427,6 +439,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The gender for the person. The gender can be custom or one of these predefined values: * `male` * `female` * `unspecified`
@@ -437,7 +450,7 @@
           &quot;formattedProtocol&quot;: &quot;A String&quot;, # Output only. The protocol of the IM client formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the IM client translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the IM client.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -450,6 +463,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;protocol&quot;: &quot;A String&quot;, # The protocol of the IM client. The protocol can be custom or one of these predefined values: * `aim` * `msn` * `yahoo` * `skype` * `qq` * `googleTalk` * `icq` * `jabber` * `netMeeting`
@@ -460,7 +474,7 @@
       &quot;interests&quot;: [ # The person&#x27;s interests.
         { # One of the person&#x27;s interests.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the interest.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -473,6 +487,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The interest; for example, `stargazing`.
@@ -481,7 +496,7 @@
       &quot;locales&quot;: [ # The person&#x27;s locale preferences.
         { # A person&#x27;s locale preference.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the locale.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -494,6 +509,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The well-formed [IETF BCP 47](https://tools.ietf.org/html/bcp47) language tag representing the locale.
@@ -507,7 +523,7 @@
           &quot;floor&quot;: &quot;A String&quot;, # The floor name or number.
           &quot;floorSection&quot;: &quot;A String&quot;, # The floor section in `floor_name`.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the location.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -520,6 +536,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the location. The type can be custom or one of these predefined values: * `desk` * `grewUp`
@@ -536,7 +553,7 @@
             &quot;inViewerDomain&quot;: True or False, # True if the person is in the viewer&#x27;s Google Workspace domain.
           },
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the membership.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -549,6 +566,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
         },
@@ -581,7 +599,7 @@
         { # A person&#x27;s miscellaneous keyword.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the miscellaneous keyword translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the miscellaneous keyword.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -594,6 +612,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The miscellaneous keyword type.
@@ -609,7 +628,7 @@
           &quot;honorificPrefix&quot;: &quot;A String&quot;, # The honorific prefixes, such as `Mrs.` or `Dr.`
           &quot;honorificSuffix&quot;: &quot;A String&quot;, # The honorific suffixes, such as `Jr.`
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the name.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -622,6 +641,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;middleName&quot;: &quot;A String&quot;, # The middle name(s).
@@ -637,7 +657,7 @@
       &quot;nicknames&quot;: [ # The person&#x27;s nicknames.
         { # A person&#x27;s nickname.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the nickname.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -650,6 +670,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the nickname.
@@ -659,7 +680,7 @@
       &quot;occupations&quot;: [ # The person&#x27;s occupations.
         { # A person&#x27;s occupation.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the occupation.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -672,6 +693,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The occupation; for example, `carpenter`.
@@ -691,7 +713,7 @@
           &quot;jobDescription&quot;: &quot;A String&quot;, # The person&#x27;s job description at the organization.
           &quot;location&quot;: &quot;A String&quot;, # The location of the organization office the person works at.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the organization.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -704,6 +726,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;name&quot;: &quot;A String&quot;, # The name of the organization.
@@ -723,7 +746,7 @@
           &quot;canonicalForm&quot;: &quot;A String&quot;, # Output only. The canonicalized [ITU-T E.164](https://law.resource.org/pub/us/cfr/ibr/004/itu-t.E.164.1.2008.pdf) form of the phone number.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the phone number translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the phone number.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -736,6 +759,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the phone number. The type can be custom or one of these predefined values: * `home` * `work` * `mobile` * `homeFax` * `workFax` * `otherFax` * `pager` * `workMobile` * `workPager` * `main` * `googleVoice` * `other`
@@ -746,7 +770,7 @@
         { # A person&#x27;s photo. A picture shown next to the person&#x27;s name to help others recognize the person.
           &quot;default&quot;: True or False, # True if the photo is a default photo; false if the photo is a user-provided photo.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the photo.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -759,6 +783,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;url&quot;: &quot;A String&quot;, # The URL of the photo. You can change the desired size by appending a query parameter `sz={size}` at the end of the url, where {size} is the size in pixels. Example: https://lh3.googleusercontent.com/-T_wVWLlmg7w/AAAAAAAAAAI/AAAAAAAABa8/00gzXvDBYqw/s100/photo.jpg?sz=50
@@ -768,7 +793,7 @@
         { # A person&#x27;s relation to another person.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the relation translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relation.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -781,6 +806,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;person&quot;: &quot;A String&quot;, # The name of the other person this relation refers to.
@@ -791,7 +817,7 @@
         { # **DEPRECATED**: No data will be returned A person&#x27;s relationship interest .
           &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship interest translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship interest.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -804,6 +830,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The kind of relationship the person is looking for. The value can be custom or one of these predefined values: * `friend` * `date` * `relationship` * `networking`
@@ -813,7 +840,7 @@
         { # **DEPRECATED**: No data will be returned A person&#x27;s relationship status.
           &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship status translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship status.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -826,6 +853,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The relationship status. The value can be custom or one of these predefined values: * `single` * `inARelationship` * `engaged` * `married` * `itsComplicated` * `openRelationship` * `widowed` * `inDomesticPartnership` * `inCivilUnion`
@@ -835,7 +863,7 @@
         { # **DEPRECATED**: Please use `person.locations` instead. A person&#x27;s past or current residence.
           &quot;current&quot;: True or False, # True if the residence is the person&#x27;s current residence; false if the residence is a past residence.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the residence.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -848,6 +876,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The address of the residence.
@@ -858,7 +887,7 @@
         { # A person&#x27;s SIP address. Session Initial Protocol addresses are used for VoIP communications to make voice or video calls over the internet.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the SIP address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the SIP address.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -871,6 +900,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the SIP address. The type can be custom or or one of these predefined values: * `home` * `work` * `mobile` * `other`
@@ -880,7 +910,7 @@
       &quot;skills&quot;: [ # The person&#x27;s skills.
         { # A skill that the person has.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the skill.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -893,6 +923,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The skill; for example, `underwater basket weaving`.
@@ -901,7 +932,7 @@
       &quot;taglines&quot;: [ # Output only. **DEPRECATED**: No data will be returned The person&#x27;s taglines.
         { # **DEPRECATED**: No data will be returned A brief one-line description of the person.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the tagline.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -914,6 +945,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The tagline.
@@ -923,7 +955,7 @@
         { # A person&#x27;s associated URLs.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the URL.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -936,6 +968,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the URL. The type can be custom or one of these predefined values: * `home` * `work` * `blog` * `profile` * `homePage` * `ftp` * `reservations` * `appInstallPage`: website for a Currents application. * `other`
@@ -946,7 +979,7 @@
         { # Arbitrary user data that is populated by the end users.
           &quot;key&quot;: &quot;A String&quot;, # The end user specified key of the user defined data.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the user defined data.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -959,6 +992,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The end user specified value of the user defined data.
diff --git a/docs/dyn/people_v1.people.html b/docs/dyn/people_v1.people.html
index bde6b99..07ea4b0 100644
--- a/docs/dyn/people_v1.people.html
+++ b/docs/dyn/people_v1.people.html
@@ -108,7 +108,7 @@
 <p class="firstline">Provides information about a list of specific people by specifying a list of requested resource names. Use `people/me` to indicate the authenticated user. The request returns a 400 error if 'personFields' is not specified.</p>
 <p class="toc_element">
   <code><a href="#listDirectoryPeople">listDirectoryPeople(mergeSources=None, pageSize=None, pageToken=None, readMask=None, requestSyncToken=None, sources=None, syncToken=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Provides a list of domain profiles and domain contacts in the authenticated user's domain directory. When the `sync_token` is specified, resources deleted since the last sync will be returned as a person with `PersonMetadata.deleted` set to true. When the `page_token` or `sync_token` is specified, all other request parameters must match the first call. See example usage at [List the directory people that have changed](/people/v1/directory#list_the_directory_people_that_have_changed).</p>
+<p class="firstline">Provides a list of domain profiles and domain contacts in the authenticated user's domain directory. When the `sync_token` is specified, resources deleted since the last sync will be returned as a person with `PersonMetadata.deleted` set to true. When the `page_token` or `sync_token` is specified, all other request parameters must match the first call. Writes may have a propagation delay of several minutes for sync requests. Incremental syncs are not intended for read-after-write use cases. See example usage at [List the directory people that have changed](/people/v1/directory#list_the_directory_people_that_have_changed).</p>
 <p class="toc_element">
   <code><a href="#listDirectoryPeople_next">listDirectoryPeople_next(previous_request, previous_response)</a></code></p>
 <p class="firstline">Retrieves the next page of results.</p>
@@ -149,7 +149,7 @@
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;formattedValue&quot;: &quot;A String&quot;, # The unstructured value of the address. If this is not set by the user it will be automatically constructed from structured values.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the address.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -162,6 +162,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;poBox&quot;: &quot;A String&quot;, # The P.O. box of the address.
@@ -176,7 +177,7 @@
           { # A person&#x27;s age range.
             &quot;ageRange&quot;: &quot;A String&quot;, # The age range.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the age range.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -189,6 +190,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
           },
@@ -197,7 +199,7 @@
           { # A person&#x27;s short biography.
             &quot;contentType&quot;: &quot;A String&quot;, # The content type of the biography.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the biography.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -210,6 +212,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The short biography.
@@ -223,7 +226,7 @@
               &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
             },
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the birthday.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -236,6 +239,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;text&quot;: &quot;A String&quot;, # A free-form string representing the user&#x27;s birthday.
@@ -244,7 +248,7 @@
         &quot;braggingRights&quot;: [ # **DEPRECATED**: No data will be returned The person&#x27;s bragging rights.
           { # **DEPRECATED**: No data will be returned A person&#x27;s bragging rights.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the bragging rights.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -257,6 +261,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The bragging rights; for example, `climbed mount everest`.
@@ -266,7 +271,7 @@
           { # A person&#x27;s calendar URL.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the calendar URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the calendar URL.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -279,6 +284,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the calendar URL. The type can be custom or one of these predefined values: * `home` * `freeBusy` * `work`
@@ -289,7 +295,7 @@
           { # Arbitrary client data that is populated by clients. Duplicate keys and values are allowed.
             &quot;key&quot;: &quot;A String&quot;, # The client specified key of the client data.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the client data.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -302,6 +308,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The client specified value of the client data.
@@ -311,7 +318,7 @@
           { # A person&#x27;s cover photo. A large image shown on the person&#x27;s profile page that represents who they are or what they care about.
             &quot;default&quot;: True or False, # True if the cover photo is the default cover photo; false if the cover photo is a user-provided cover photo.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the cover photo.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -324,6 +331,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;url&quot;: &quot;A String&quot;, # The URL of the cover photo.
@@ -334,7 +342,7 @@
             &quot;displayName&quot;: &quot;A String&quot;, # The display name of the email.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the email address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the email address.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -347,6 +355,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the email address. The type can be custom or one of these predefined values: * `home` * `work` * `other`
@@ -363,7 +372,7 @@
             },
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the event.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -376,6 +385,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the event. The type can be custom or one of these predefined values: * `anniversary` * `other`
@@ -385,7 +395,7 @@
           { # An identifier from an external entity related to the person.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the external ID.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -398,6 +408,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the external ID. The type can be custom or one of these predefined values: * `account` * `customer` * `loginId` * `network` * `organization`
@@ -407,7 +418,7 @@
         &quot;fileAses&quot;: [ # The person&#x27;s file-ases.
           { # The name that should be used to sort the person in a list.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the file-as.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -420,6 +431,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The file-as value
@@ -430,7 +442,7 @@
             &quot;addressMeAs&quot;: &quot;A String&quot;, # The type of pronouns that should be used to address the person. The value can be custom or one of these predefined values: * `male` * `female` * `other`
             &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the gender translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale. Unspecified or custom value are not localized.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the gender.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -443,6 +455,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The gender for the person. The gender can be custom or one of these predefined values: * `male` * `female` * `unspecified`
@@ -453,7 +466,7 @@
             &quot;formattedProtocol&quot;: &quot;A String&quot;, # Output only. The protocol of the IM client formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the IM client translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the IM client.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -466,6 +479,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;protocol&quot;: &quot;A String&quot;, # The protocol of the IM client. The protocol can be custom or one of these predefined values: * `aim` * `msn` * `yahoo` * `skype` * `qq` * `googleTalk` * `icq` * `jabber` * `netMeeting`
@@ -476,7 +490,7 @@
         &quot;interests&quot;: [ # The person&#x27;s interests.
           { # One of the person&#x27;s interests.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the interest.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -489,6 +503,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The interest; for example, `stargazing`.
@@ -497,7 +512,7 @@
         &quot;locales&quot;: [ # The person&#x27;s locale preferences.
           { # A person&#x27;s locale preference.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the locale.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -510,6 +525,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The well-formed [IETF BCP 47](https://tools.ietf.org/html/bcp47) language tag representing the locale.
@@ -523,7 +539,7 @@
             &quot;floor&quot;: &quot;A String&quot;, # The floor name or number.
             &quot;floorSection&quot;: &quot;A String&quot;, # The floor section in `floor_name`.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the location.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -536,6 +552,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the location. The type can be custom or one of these predefined values: * `desk` * `grewUp`
@@ -552,7 +569,7 @@
               &quot;inViewerDomain&quot;: True or False, # True if the person is in the viewer&#x27;s Google Workspace domain.
             },
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the membership.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -565,6 +582,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
           },
@@ -597,7 +615,7 @@
           { # A person&#x27;s miscellaneous keyword.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the miscellaneous keyword translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the miscellaneous keyword.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -610,6 +628,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The miscellaneous keyword type.
@@ -625,7 +644,7 @@
             &quot;honorificPrefix&quot;: &quot;A String&quot;, # The honorific prefixes, such as `Mrs.` or `Dr.`
             &quot;honorificSuffix&quot;: &quot;A String&quot;, # The honorific suffixes, such as `Jr.`
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the name.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -638,6 +657,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;middleName&quot;: &quot;A String&quot;, # The middle name(s).
@@ -653,7 +673,7 @@
         &quot;nicknames&quot;: [ # The person&#x27;s nicknames.
           { # A person&#x27;s nickname.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the nickname.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -666,6 +686,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the nickname.
@@ -675,7 +696,7 @@
         &quot;occupations&quot;: [ # The person&#x27;s occupations.
           { # A person&#x27;s occupation.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the occupation.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -688,6 +709,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The occupation; for example, `carpenter`.
@@ -707,7 +729,7 @@
             &quot;jobDescription&quot;: &quot;A String&quot;, # The person&#x27;s job description at the organization.
             &quot;location&quot;: &quot;A String&quot;, # The location of the organization office the person works at.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the organization.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -720,6 +742,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;name&quot;: &quot;A String&quot;, # The name of the organization.
@@ -739,7 +762,7 @@
             &quot;canonicalForm&quot;: &quot;A String&quot;, # Output only. The canonicalized [ITU-T E.164](https://law.resource.org/pub/us/cfr/ibr/004/itu-t.E.164.1.2008.pdf) form of the phone number.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the phone number translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the phone number.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -752,6 +775,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the phone number. The type can be custom or one of these predefined values: * `home` * `work` * `mobile` * `homeFax` * `workFax` * `otherFax` * `pager` * `workMobile` * `workPager` * `main` * `googleVoice` * `other`
@@ -762,7 +786,7 @@
           { # A person&#x27;s photo. A picture shown next to the person&#x27;s name to help others recognize the person.
             &quot;default&quot;: True or False, # True if the photo is a default photo; false if the photo is a user-provided photo.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the photo.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -775,6 +799,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;url&quot;: &quot;A String&quot;, # The URL of the photo. You can change the desired size by appending a query parameter `sz={size}` at the end of the url, where {size} is the size in pixels. Example: https://lh3.googleusercontent.com/-T_wVWLlmg7w/AAAAAAAAAAI/AAAAAAAABa8/00gzXvDBYqw/s100/photo.jpg?sz=50
@@ -784,7 +809,7 @@
           { # A person&#x27;s relation to another person.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the relation translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relation.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -797,6 +822,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;person&quot;: &quot;A String&quot;, # The name of the other person this relation refers to.
@@ -807,7 +833,7 @@
           { # **DEPRECATED**: No data will be returned A person&#x27;s relationship interest .
             &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship interest translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship interest.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -820,6 +846,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The kind of relationship the person is looking for. The value can be custom or one of these predefined values: * `friend` * `date` * `relationship` * `networking`
@@ -829,7 +856,7 @@
           { # **DEPRECATED**: No data will be returned A person&#x27;s relationship status.
             &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship status translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship status.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -842,6 +869,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The relationship status. The value can be custom or one of these predefined values: * `single` * `inARelationship` * `engaged` * `married` * `itsComplicated` * `openRelationship` * `widowed` * `inDomesticPartnership` * `inCivilUnion`
@@ -851,7 +879,7 @@
           { # **DEPRECATED**: Please use `person.locations` instead. A person&#x27;s past or current residence.
             &quot;current&quot;: True or False, # True if the residence is the person&#x27;s current residence; false if the residence is a past residence.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the residence.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -864,6 +892,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The address of the residence.
@@ -874,7 +903,7 @@
           { # A person&#x27;s SIP address. Session Initial Protocol addresses are used for VoIP communications to make voice or video calls over the internet.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the SIP address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the SIP address.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -887,6 +916,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the SIP address. The type can be custom or or one of these predefined values: * `home` * `work` * `mobile` * `other`
@@ -896,7 +926,7 @@
         &quot;skills&quot;: [ # The person&#x27;s skills.
           { # A skill that the person has.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the skill.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -909,6 +939,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The skill; for example, `underwater basket weaving`.
@@ -917,7 +948,7 @@
         &quot;taglines&quot;: [ # Output only. **DEPRECATED**: No data will be returned The person&#x27;s taglines.
           { # **DEPRECATED**: No data will be returned A brief one-line description of the person.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the tagline.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -930,6 +961,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The tagline.
@@ -939,7 +971,7 @@
           { # A person&#x27;s associated URLs.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the URL.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -952,6 +984,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the URL. The type can be custom or one of these predefined values: * `home` * `work` * `blog` * `profile` * `homePage` * `ftp` * `reservations` * `appInstallPage`: website for a Currents application. * `other`
@@ -962,7 +995,7 @@
           { # Arbitrary user data that is populated by the end users.
             &quot;key&quot;: &quot;A String&quot;, # The end user specified key of the user defined data.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the user defined data.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -975,6 +1008,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The end user specified value of the user defined data.
@@ -1011,7 +1045,7 @@
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;formattedValue&quot;: &quot;A String&quot;, # The unstructured value of the address. If this is not set by the user it will be automatically constructed from structured values.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the address.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1024,6 +1058,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;poBox&quot;: &quot;A String&quot;, # The P.O. box of the address.
@@ -1038,7 +1073,7 @@
           { # A person&#x27;s age range.
             &quot;ageRange&quot;: &quot;A String&quot;, # The age range.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the age range.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1051,6 +1086,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
           },
@@ -1059,7 +1095,7 @@
           { # A person&#x27;s short biography.
             &quot;contentType&quot;: &quot;A String&quot;, # The content type of the biography.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the biography.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1072,6 +1108,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The short biography.
@@ -1085,7 +1122,7 @@
               &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
             },
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the birthday.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1098,6 +1135,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;text&quot;: &quot;A String&quot;, # A free-form string representing the user&#x27;s birthday.
@@ -1106,7 +1144,7 @@
         &quot;braggingRights&quot;: [ # **DEPRECATED**: No data will be returned The person&#x27;s bragging rights.
           { # **DEPRECATED**: No data will be returned A person&#x27;s bragging rights.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the bragging rights.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1119,6 +1157,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The bragging rights; for example, `climbed mount everest`.
@@ -1128,7 +1167,7 @@
           { # A person&#x27;s calendar URL.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the calendar URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the calendar URL.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1141,6 +1180,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the calendar URL. The type can be custom or one of these predefined values: * `home` * `freeBusy` * `work`
@@ -1151,7 +1191,7 @@
           { # Arbitrary client data that is populated by clients. Duplicate keys and values are allowed.
             &quot;key&quot;: &quot;A String&quot;, # The client specified key of the client data.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the client data.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1164,6 +1204,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The client specified value of the client data.
@@ -1173,7 +1214,7 @@
           { # A person&#x27;s cover photo. A large image shown on the person&#x27;s profile page that represents who they are or what they care about.
             &quot;default&quot;: True or False, # True if the cover photo is the default cover photo; false if the cover photo is a user-provided cover photo.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the cover photo.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1186,6 +1227,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;url&quot;: &quot;A String&quot;, # The URL of the cover photo.
@@ -1196,7 +1238,7 @@
             &quot;displayName&quot;: &quot;A String&quot;, # The display name of the email.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the email address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the email address.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1209,6 +1251,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the email address. The type can be custom or one of these predefined values: * `home` * `work` * `other`
@@ -1225,7 +1268,7 @@
             },
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the event.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1238,6 +1281,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the event. The type can be custom or one of these predefined values: * `anniversary` * `other`
@@ -1247,7 +1291,7 @@
           { # An identifier from an external entity related to the person.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the external ID.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1260,6 +1304,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the external ID. The type can be custom or one of these predefined values: * `account` * `customer` * `loginId` * `network` * `organization`
@@ -1269,7 +1314,7 @@
         &quot;fileAses&quot;: [ # The person&#x27;s file-ases.
           { # The name that should be used to sort the person in a list.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the file-as.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1282,6 +1327,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The file-as value
@@ -1292,7 +1338,7 @@
             &quot;addressMeAs&quot;: &quot;A String&quot;, # The type of pronouns that should be used to address the person. The value can be custom or one of these predefined values: * `male` * `female` * `other`
             &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the gender translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale. Unspecified or custom value are not localized.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the gender.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1305,6 +1351,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The gender for the person. The gender can be custom or one of these predefined values: * `male` * `female` * `unspecified`
@@ -1315,7 +1362,7 @@
             &quot;formattedProtocol&quot;: &quot;A String&quot;, # Output only. The protocol of the IM client formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the IM client translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the IM client.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1328,6 +1375,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;protocol&quot;: &quot;A String&quot;, # The protocol of the IM client. The protocol can be custom or one of these predefined values: * `aim` * `msn` * `yahoo` * `skype` * `qq` * `googleTalk` * `icq` * `jabber` * `netMeeting`
@@ -1338,7 +1386,7 @@
         &quot;interests&quot;: [ # The person&#x27;s interests.
           { # One of the person&#x27;s interests.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the interest.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1351,6 +1399,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The interest; for example, `stargazing`.
@@ -1359,7 +1408,7 @@
         &quot;locales&quot;: [ # The person&#x27;s locale preferences.
           { # A person&#x27;s locale preference.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the locale.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1372,6 +1421,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The well-formed [IETF BCP 47](https://tools.ietf.org/html/bcp47) language tag representing the locale.
@@ -1385,7 +1435,7 @@
             &quot;floor&quot;: &quot;A String&quot;, # The floor name or number.
             &quot;floorSection&quot;: &quot;A String&quot;, # The floor section in `floor_name`.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the location.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1398,6 +1448,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the location. The type can be custom or one of these predefined values: * `desk` * `grewUp`
@@ -1414,7 +1465,7 @@
               &quot;inViewerDomain&quot;: True or False, # True if the person is in the viewer&#x27;s Google Workspace domain.
             },
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the membership.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1427,6 +1478,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
           },
@@ -1459,7 +1511,7 @@
           { # A person&#x27;s miscellaneous keyword.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the miscellaneous keyword translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the miscellaneous keyword.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1472,6 +1524,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The miscellaneous keyword type.
@@ -1487,7 +1540,7 @@
             &quot;honorificPrefix&quot;: &quot;A String&quot;, # The honorific prefixes, such as `Mrs.` or `Dr.`
             &quot;honorificSuffix&quot;: &quot;A String&quot;, # The honorific suffixes, such as `Jr.`
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the name.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1500,6 +1553,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;middleName&quot;: &quot;A String&quot;, # The middle name(s).
@@ -1515,7 +1569,7 @@
         &quot;nicknames&quot;: [ # The person&#x27;s nicknames.
           { # A person&#x27;s nickname.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the nickname.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1528,6 +1582,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the nickname.
@@ -1537,7 +1592,7 @@
         &quot;occupations&quot;: [ # The person&#x27;s occupations.
           { # A person&#x27;s occupation.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the occupation.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1550,6 +1605,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The occupation; for example, `carpenter`.
@@ -1569,7 +1625,7 @@
             &quot;jobDescription&quot;: &quot;A String&quot;, # The person&#x27;s job description at the organization.
             &quot;location&quot;: &quot;A String&quot;, # The location of the organization office the person works at.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the organization.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1582,6 +1638,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;name&quot;: &quot;A String&quot;, # The name of the organization.
@@ -1601,7 +1658,7 @@
             &quot;canonicalForm&quot;: &quot;A String&quot;, # Output only. The canonicalized [ITU-T E.164](https://law.resource.org/pub/us/cfr/ibr/004/itu-t.E.164.1.2008.pdf) form of the phone number.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the phone number translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the phone number.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1614,6 +1671,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the phone number. The type can be custom or one of these predefined values: * `home` * `work` * `mobile` * `homeFax` * `workFax` * `otherFax` * `pager` * `workMobile` * `workPager` * `main` * `googleVoice` * `other`
@@ -1624,7 +1682,7 @@
           { # A person&#x27;s photo. A picture shown next to the person&#x27;s name to help others recognize the person.
             &quot;default&quot;: True or False, # True if the photo is a default photo; false if the photo is a user-provided photo.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the photo.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1637,6 +1695,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;url&quot;: &quot;A String&quot;, # The URL of the photo. You can change the desired size by appending a query parameter `sz={size}` at the end of the url, where {size} is the size in pixels. Example: https://lh3.googleusercontent.com/-T_wVWLlmg7w/AAAAAAAAAAI/AAAAAAAABa8/00gzXvDBYqw/s100/photo.jpg?sz=50
@@ -1646,7 +1705,7 @@
           { # A person&#x27;s relation to another person.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the relation translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relation.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1659,6 +1718,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;person&quot;: &quot;A String&quot;, # The name of the other person this relation refers to.
@@ -1669,7 +1729,7 @@
           { # **DEPRECATED**: No data will be returned A person&#x27;s relationship interest .
             &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship interest translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship interest.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1682,6 +1742,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The kind of relationship the person is looking for. The value can be custom or one of these predefined values: * `friend` * `date` * `relationship` * `networking`
@@ -1691,7 +1752,7 @@
           { # **DEPRECATED**: No data will be returned A person&#x27;s relationship status.
             &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship status translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship status.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1704,6 +1765,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The relationship status. The value can be custom or one of these predefined values: * `single` * `inARelationship` * `engaged` * `married` * `itsComplicated` * `openRelationship` * `widowed` * `inDomesticPartnership` * `inCivilUnion`
@@ -1713,7 +1775,7 @@
           { # **DEPRECATED**: Please use `person.locations` instead. A person&#x27;s past or current residence.
             &quot;current&quot;: True or False, # True if the residence is the person&#x27;s current residence; false if the residence is a past residence.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the residence.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1726,6 +1788,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The address of the residence.
@@ -1736,7 +1799,7 @@
           { # A person&#x27;s SIP address. Session Initial Protocol addresses are used for VoIP communications to make voice or video calls over the internet.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the SIP address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the SIP address.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1749,6 +1812,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the SIP address. The type can be custom or or one of these predefined values: * `home` * `work` * `mobile` * `other`
@@ -1758,7 +1822,7 @@
         &quot;skills&quot;: [ # The person&#x27;s skills.
           { # A skill that the person has.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the skill.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1771,6 +1835,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The skill; for example, `underwater basket weaving`.
@@ -1779,7 +1844,7 @@
         &quot;taglines&quot;: [ # Output only. **DEPRECATED**: No data will be returned The person&#x27;s taglines.
           { # **DEPRECATED**: No data will be returned A brief one-line description of the person.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the tagline.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1792,6 +1857,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The tagline.
@@ -1801,7 +1867,7 @@
           { # A person&#x27;s associated URLs.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the URL.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1814,6 +1880,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the URL. The type can be custom or one of these predefined values: * `home` * `work` * `blog` * `profile` * `homePage` * `ftp` * `reservations` * `appInstallPage`: website for a Currents application. * `other`
@@ -1824,7 +1891,7 @@
           { # Arbitrary user data that is populated by the end users.
             &quot;key&quot;: &quot;A String&quot;, # The end user specified key of the user defined data.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the user defined data.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1837,6 +1904,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The end user specified value of the user defined data.
@@ -1904,7 +1972,7 @@
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;formattedValue&quot;: &quot;A String&quot;, # The unstructured value of the address. If this is not set by the user it will be automatically constructed from structured values.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the address.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1917,6 +1985,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;poBox&quot;: &quot;A String&quot;, # The P.O. box of the address.
@@ -1931,7 +2000,7 @@
         { # A person&#x27;s age range.
           &quot;ageRange&quot;: &quot;A String&quot;, # The age range.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the age range.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1944,6 +2013,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
         },
@@ -1952,7 +2022,7 @@
         { # A person&#x27;s short biography.
           &quot;contentType&quot;: &quot;A String&quot;, # The content type of the biography.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the biography.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1965,6 +2035,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The short biography.
@@ -1978,7 +2049,7 @@
             &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
           },
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the birthday.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -1991,6 +2062,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;text&quot;: &quot;A String&quot;, # A free-form string representing the user&#x27;s birthday.
@@ -1999,7 +2071,7 @@
       &quot;braggingRights&quot;: [ # **DEPRECATED**: No data will be returned The person&#x27;s bragging rights.
         { # **DEPRECATED**: No data will be returned A person&#x27;s bragging rights.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the bragging rights.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2012,6 +2084,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The bragging rights; for example, `climbed mount everest`.
@@ -2021,7 +2094,7 @@
         { # A person&#x27;s calendar URL.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the calendar URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the calendar URL.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2034,6 +2107,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the calendar URL. The type can be custom or one of these predefined values: * `home` * `freeBusy` * `work`
@@ -2044,7 +2118,7 @@
         { # Arbitrary client data that is populated by clients. Duplicate keys and values are allowed.
           &quot;key&quot;: &quot;A String&quot;, # The client specified key of the client data.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the client data.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2057,6 +2131,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The client specified value of the client data.
@@ -2066,7 +2141,7 @@
         { # A person&#x27;s cover photo. A large image shown on the person&#x27;s profile page that represents who they are or what they care about.
           &quot;default&quot;: True or False, # True if the cover photo is the default cover photo; false if the cover photo is a user-provided cover photo.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the cover photo.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2079,6 +2154,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;url&quot;: &quot;A String&quot;, # The URL of the cover photo.
@@ -2089,7 +2165,7 @@
           &quot;displayName&quot;: &quot;A String&quot;, # The display name of the email.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the email address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the email address.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2102,6 +2178,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the email address. The type can be custom or one of these predefined values: * `home` * `work` * `other`
@@ -2118,7 +2195,7 @@
           },
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the event.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2131,6 +2208,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the event. The type can be custom or one of these predefined values: * `anniversary` * `other`
@@ -2140,7 +2218,7 @@
         { # An identifier from an external entity related to the person.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the external ID.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2153,6 +2231,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the external ID. The type can be custom or one of these predefined values: * `account` * `customer` * `loginId` * `network` * `organization`
@@ -2162,7 +2241,7 @@
       &quot;fileAses&quot;: [ # The person&#x27;s file-ases.
         { # The name that should be used to sort the person in a list.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the file-as.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2175,6 +2254,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The file-as value
@@ -2185,7 +2265,7 @@
           &quot;addressMeAs&quot;: &quot;A String&quot;, # The type of pronouns that should be used to address the person. The value can be custom or one of these predefined values: * `male` * `female` * `other`
           &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the gender translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale. Unspecified or custom value are not localized.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the gender.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2198,6 +2278,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The gender for the person. The gender can be custom or one of these predefined values: * `male` * `female` * `unspecified`
@@ -2208,7 +2289,7 @@
           &quot;formattedProtocol&quot;: &quot;A String&quot;, # Output only. The protocol of the IM client formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the IM client translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the IM client.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2221,6 +2302,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;protocol&quot;: &quot;A String&quot;, # The protocol of the IM client. The protocol can be custom or one of these predefined values: * `aim` * `msn` * `yahoo` * `skype` * `qq` * `googleTalk` * `icq` * `jabber` * `netMeeting`
@@ -2231,7 +2313,7 @@
       &quot;interests&quot;: [ # The person&#x27;s interests.
         { # One of the person&#x27;s interests.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the interest.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2244,6 +2326,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The interest; for example, `stargazing`.
@@ -2252,7 +2335,7 @@
       &quot;locales&quot;: [ # The person&#x27;s locale preferences.
         { # A person&#x27;s locale preference.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the locale.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2265,6 +2348,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The well-formed [IETF BCP 47](https://tools.ietf.org/html/bcp47) language tag representing the locale.
@@ -2278,7 +2362,7 @@
           &quot;floor&quot;: &quot;A String&quot;, # The floor name or number.
           &quot;floorSection&quot;: &quot;A String&quot;, # The floor section in `floor_name`.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the location.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2291,6 +2375,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the location. The type can be custom or one of these predefined values: * `desk` * `grewUp`
@@ -2307,7 +2392,7 @@
             &quot;inViewerDomain&quot;: True or False, # True if the person is in the viewer&#x27;s Google Workspace domain.
           },
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the membership.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2320,6 +2405,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
         },
@@ -2352,7 +2438,7 @@
         { # A person&#x27;s miscellaneous keyword.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the miscellaneous keyword translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the miscellaneous keyword.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2365,6 +2451,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The miscellaneous keyword type.
@@ -2380,7 +2467,7 @@
           &quot;honorificPrefix&quot;: &quot;A String&quot;, # The honorific prefixes, such as `Mrs.` or `Dr.`
           &quot;honorificSuffix&quot;: &quot;A String&quot;, # The honorific suffixes, such as `Jr.`
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the name.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2393,6 +2480,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;middleName&quot;: &quot;A String&quot;, # The middle name(s).
@@ -2408,7 +2496,7 @@
       &quot;nicknames&quot;: [ # The person&#x27;s nicknames.
         { # A person&#x27;s nickname.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the nickname.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2421,6 +2509,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the nickname.
@@ -2430,7 +2519,7 @@
       &quot;occupations&quot;: [ # The person&#x27;s occupations.
         { # A person&#x27;s occupation.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the occupation.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2443,6 +2532,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The occupation; for example, `carpenter`.
@@ -2462,7 +2552,7 @@
           &quot;jobDescription&quot;: &quot;A String&quot;, # The person&#x27;s job description at the organization.
           &quot;location&quot;: &quot;A String&quot;, # The location of the organization office the person works at.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the organization.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2475,6 +2565,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;name&quot;: &quot;A String&quot;, # The name of the organization.
@@ -2494,7 +2585,7 @@
           &quot;canonicalForm&quot;: &quot;A String&quot;, # Output only. The canonicalized [ITU-T E.164](https://law.resource.org/pub/us/cfr/ibr/004/itu-t.E.164.1.2008.pdf) form of the phone number.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the phone number translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the phone number.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2507,6 +2598,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the phone number. The type can be custom or one of these predefined values: * `home` * `work` * `mobile` * `homeFax` * `workFax` * `otherFax` * `pager` * `workMobile` * `workPager` * `main` * `googleVoice` * `other`
@@ -2517,7 +2609,7 @@
         { # A person&#x27;s photo. A picture shown next to the person&#x27;s name to help others recognize the person.
           &quot;default&quot;: True or False, # True if the photo is a default photo; false if the photo is a user-provided photo.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the photo.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2530,6 +2622,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;url&quot;: &quot;A String&quot;, # The URL of the photo. You can change the desired size by appending a query parameter `sz={size}` at the end of the url, where {size} is the size in pixels. Example: https://lh3.googleusercontent.com/-T_wVWLlmg7w/AAAAAAAAAAI/AAAAAAAABa8/00gzXvDBYqw/s100/photo.jpg?sz=50
@@ -2539,7 +2632,7 @@
         { # A person&#x27;s relation to another person.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the relation translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relation.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2552,6 +2645,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;person&quot;: &quot;A String&quot;, # The name of the other person this relation refers to.
@@ -2562,7 +2656,7 @@
         { # **DEPRECATED**: No data will be returned A person&#x27;s relationship interest .
           &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship interest translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship interest.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2575,6 +2669,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The kind of relationship the person is looking for. The value can be custom or one of these predefined values: * `friend` * `date` * `relationship` * `networking`
@@ -2584,7 +2679,7 @@
         { # **DEPRECATED**: No data will be returned A person&#x27;s relationship status.
           &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship status translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship status.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2597,6 +2692,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The relationship status. The value can be custom or one of these predefined values: * `single` * `inARelationship` * `engaged` * `married` * `itsComplicated` * `openRelationship` * `widowed` * `inDomesticPartnership` * `inCivilUnion`
@@ -2606,7 +2702,7 @@
         { # **DEPRECATED**: Please use `person.locations` instead. A person&#x27;s past or current residence.
           &quot;current&quot;: True or False, # True if the residence is the person&#x27;s current residence; false if the residence is a past residence.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the residence.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2619,6 +2715,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The address of the residence.
@@ -2629,7 +2726,7 @@
         { # A person&#x27;s SIP address. Session Initial Protocol addresses are used for VoIP communications to make voice or video calls over the internet.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the SIP address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the SIP address.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2642,6 +2739,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the SIP address. The type can be custom or or one of these predefined values: * `home` * `work` * `mobile` * `other`
@@ -2651,7 +2749,7 @@
       &quot;skills&quot;: [ # The person&#x27;s skills.
         { # A skill that the person has.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the skill.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2664,6 +2762,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The skill; for example, `underwater basket weaving`.
@@ -2672,7 +2771,7 @@
       &quot;taglines&quot;: [ # Output only. **DEPRECATED**: No data will be returned The person&#x27;s taglines.
         { # **DEPRECATED**: No data will be returned A brief one-line description of the person.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the tagline.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2685,6 +2784,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The tagline.
@@ -2694,7 +2794,7 @@
         { # A person&#x27;s associated URLs.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the URL.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2707,6 +2807,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the URL. The type can be custom or one of these predefined values: * `home` * `work` * `blog` * `profile` * `homePage` * `ftp` * `reservations` * `appInstallPage`: website for a Currents application. * `other`
@@ -2717,7 +2818,7 @@
         { # Arbitrary user data that is populated by the end users.
           &quot;key&quot;: &quot;A String&quot;, # The end user specified key of the user defined data.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the user defined data.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2730,6 +2831,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The end user specified value of the user defined data.
@@ -2766,7 +2868,7 @@
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;formattedValue&quot;: &quot;A String&quot;, # The unstructured value of the address. If this is not set by the user it will be automatically constructed from structured values.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the address.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2779,6 +2881,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;poBox&quot;: &quot;A String&quot;, # The P.O. box of the address.
@@ -2793,7 +2896,7 @@
           { # A person&#x27;s age range.
             &quot;ageRange&quot;: &quot;A String&quot;, # The age range.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the age range.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2806,6 +2909,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
           },
@@ -2814,7 +2918,7 @@
           { # A person&#x27;s short biography.
             &quot;contentType&quot;: &quot;A String&quot;, # The content type of the biography.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the biography.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2827,6 +2931,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The short biography.
@@ -2840,7 +2945,7 @@
               &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
             },
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the birthday.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2853,6 +2958,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;text&quot;: &quot;A String&quot;, # A free-form string representing the user&#x27;s birthday.
@@ -2861,7 +2967,7 @@
         &quot;braggingRights&quot;: [ # **DEPRECATED**: No data will be returned The person&#x27;s bragging rights.
           { # **DEPRECATED**: No data will be returned A person&#x27;s bragging rights.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the bragging rights.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2874,6 +2980,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The bragging rights; for example, `climbed mount everest`.
@@ -2883,7 +2990,7 @@
           { # A person&#x27;s calendar URL.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the calendar URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the calendar URL.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2896,6 +3003,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the calendar URL. The type can be custom or one of these predefined values: * `home` * `freeBusy` * `work`
@@ -2906,7 +3014,7 @@
           { # Arbitrary client data that is populated by clients. Duplicate keys and values are allowed.
             &quot;key&quot;: &quot;A String&quot;, # The client specified key of the client data.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the client data.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2919,6 +3027,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The client specified value of the client data.
@@ -2928,7 +3037,7 @@
           { # A person&#x27;s cover photo. A large image shown on the person&#x27;s profile page that represents who they are or what they care about.
             &quot;default&quot;: True or False, # True if the cover photo is the default cover photo; false if the cover photo is a user-provided cover photo.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the cover photo.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2941,6 +3050,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;url&quot;: &quot;A String&quot;, # The URL of the cover photo.
@@ -2951,7 +3061,7 @@
             &quot;displayName&quot;: &quot;A String&quot;, # The display name of the email.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the email address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the email address.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2964,6 +3074,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the email address. The type can be custom or one of these predefined values: * `home` * `work` * `other`
@@ -2980,7 +3091,7 @@
             },
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the event.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -2993,6 +3104,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the event. The type can be custom or one of these predefined values: * `anniversary` * `other`
@@ -3002,7 +3114,7 @@
           { # An identifier from an external entity related to the person.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the external ID.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3015,6 +3127,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the external ID. The type can be custom or one of these predefined values: * `account` * `customer` * `loginId` * `network` * `organization`
@@ -3024,7 +3137,7 @@
         &quot;fileAses&quot;: [ # The person&#x27;s file-ases.
           { # The name that should be used to sort the person in a list.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the file-as.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3037,6 +3150,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The file-as value
@@ -3047,7 +3161,7 @@
             &quot;addressMeAs&quot;: &quot;A String&quot;, # The type of pronouns that should be used to address the person. The value can be custom or one of these predefined values: * `male` * `female` * `other`
             &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the gender translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale. Unspecified or custom value are not localized.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the gender.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3060,6 +3174,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The gender for the person. The gender can be custom or one of these predefined values: * `male` * `female` * `unspecified`
@@ -3070,7 +3185,7 @@
             &quot;formattedProtocol&quot;: &quot;A String&quot;, # Output only. The protocol of the IM client formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the IM client translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the IM client.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3083,6 +3198,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;protocol&quot;: &quot;A String&quot;, # The protocol of the IM client. The protocol can be custom or one of these predefined values: * `aim` * `msn` * `yahoo` * `skype` * `qq` * `googleTalk` * `icq` * `jabber` * `netMeeting`
@@ -3093,7 +3209,7 @@
         &quot;interests&quot;: [ # The person&#x27;s interests.
           { # One of the person&#x27;s interests.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the interest.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3106,6 +3222,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The interest; for example, `stargazing`.
@@ -3114,7 +3231,7 @@
         &quot;locales&quot;: [ # The person&#x27;s locale preferences.
           { # A person&#x27;s locale preference.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the locale.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3127,6 +3244,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The well-formed [IETF BCP 47](https://tools.ietf.org/html/bcp47) language tag representing the locale.
@@ -3140,7 +3258,7 @@
             &quot;floor&quot;: &quot;A String&quot;, # The floor name or number.
             &quot;floorSection&quot;: &quot;A String&quot;, # The floor section in `floor_name`.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the location.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3153,6 +3271,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the location. The type can be custom or one of these predefined values: * `desk` * `grewUp`
@@ -3169,7 +3288,7 @@
               &quot;inViewerDomain&quot;: True or False, # True if the person is in the viewer&#x27;s Google Workspace domain.
             },
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the membership.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3182,6 +3301,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
           },
@@ -3214,7 +3334,7 @@
           { # A person&#x27;s miscellaneous keyword.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the miscellaneous keyword translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the miscellaneous keyword.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3227,6 +3347,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The miscellaneous keyword type.
@@ -3242,7 +3363,7 @@
             &quot;honorificPrefix&quot;: &quot;A String&quot;, # The honorific prefixes, such as `Mrs.` or `Dr.`
             &quot;honorificSuffix&quot;: &quot;A String&quot;, # The honorific suffixes, such as `Jr.`
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the name.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3255,6 +3376,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;middleName&quot;: &quot;A String&quot;, # The middle name(s).
@@ -3270,7 +3392,7 @@
         &quot;nicknames&quot;: [ # The person&#x27;s nicknames.
           { # A person&#x27;s nickname.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the nickname.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3283,6 +3405,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the nickname.
@@ -3292,7 +3415,7 @@
         &quot;occupations&quot;: [ # The person&#x27;s occupations.
           { # A person&#x27;s occupation.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the occupation.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3305,6 +3428,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The occupation; for example, `carpenter`.
@@ -3324,7 +3448,7 @@
             &quot;jobDescription&quot;: &quot;A String&quot;, # The person&#x27;s job description at the organization.
             &quot;location&quot;: &quot;A String&quot;, # The location of the organization office the person works at.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the organization.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3337,6 +3461,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;name&quot;: &quot;A String&quot;, # The name of the organization.
@@ -3356,7 +3481,7 @@
             &quot;canonicalForm&quot;: &quot;A String&quot;, # Output only. The canonicalized [ITU-T E.164](https://law.resource.org/pub/us/cfr/ibr/004/itu-t.E.164.1.2008.pdf) form of the phone number.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the phone number translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the phone number.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3369,6 +3494,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the phone number. The type can be custom or one of these predefined values: * `home` * `work` * `mobile` * `homeFax` * `workFax` * `otherFax` * `pager` * `workMobile` * `workPager` * `main` * `googleVoice` * `other`
@@ -3379,7 +3505,7 @@
           { # A person&#x27;s photo. A picture shown next to the person&#x27;s name to help others recognize the person.
             &quot;default&quot;: True or False, # True if the photo is a default photo; false if the photo is a user-provided photo.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the photo.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3392,6 +3518,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;url&quot;: &quot;A String&quot;, # The URL of the photo. You can change the desired size by appending a query parameter `sz={size}` at the end of the url, where {size} is the size in pixels. Example: https://lh3.googleusercontent.com/-T_wVWLlmg7w/AAAAAAAAAAI/AAAAAAAABa8/00gzXvDBYqw/s100/photo.jpg?sz=50
@@ -3401,7 +3528,7 @@
           { # A person&#x27;s relation to another person.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the relation translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relation.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3414,6 +3541,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;person&quot;: &quot;A String&quot;, # The name of the other person this relation refers to.
@@ -3424,7 +3552,7 @@
           { # **DEPRECATED**: No data will be returned A person&#x27;s relationship interest .
             &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship interest translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship interest.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3437,6 +3565,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The kind of relationship the person is looking for. The value can be custom or one of these predefined values: * `friend` * `date` * `relationship` * `networking`
@@ -3446,7 +3575,7 @@
           { # **DEPRECATED**: No data will be returned A person&#x27;s relationship status.
             &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship status translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship status.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3459,6 +3588,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The relationship status. The value can be custom or one of these predefined values: * `single` * `inARelationship` * `engaged` * `married` * `itsComplicated` * `openRelationship` * `widowed` * `inDomesticPartnership` * `inCivilUnion`
@@ -3468,7 +3598,7 @@
           { # **DEPRECATED**: Please use `person.locations` instead. A person&#x27;s past or current residence.
             &quot;current&quot;: True or False, # True if the residence is the person&#x27;s current residence; false if the residence is a past residence.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the residence.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3481,6 +3611,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The address of the residence.
@@ -3491,7 +3622,7 @@
           { # A person&#x27;s SIP address. Session Initial Protocol addresses are used for VoIP communications to make voice or video calls over the internet.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the SIP address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the SIP address.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3504,6 +3635,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the SIP address. The type can be custom or or one of these predefined values: * `home` * `work` * `mobile` * `other`
@@ -3513,7 +3645,7 @@
         &quot;skills&quot;: [ # The person&#x27;s skills.
           { # A skill that the person has.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the skill.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3526,6 +3658,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The skill; for example, `underwater basket weaving`.
@@ -3534,7 +3667,7 @@
         &quot;taglines&quot;: [ # Output only. **DEPRECATED**: No data will be returned The person&#x27;s taglines.
           { # **DEPRECATED**: No data will be returned A brief one-line description of the person.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the tagline.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3547,6 +3680,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The tagline.
@@ -3556,7 +3690,7 @@
           { # A person&#x27;s associated URLs.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the URL.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3569,6 +3703,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the URL. The type can be custom or one of these predefined values: * `home` * `work` * `blog` * `profile` * `homePage` * `ftp` * `reservations` * `appInstallPage`: website for a Currents application. * `other`
@@ -3579,7 +3714,7 @@
           { # Arbitrary user data that is populated by the end users.
             &quot;key&quot;: &quot;A String&quot;, # The end user specified key of the user defined data.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the user defined data.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3592,6 +3727,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The end user specified value of the user defined data.
@@ -3636,7 +3772,7 @@
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;formattedValue&quot;: &quot;A String&quot;, # The unstructured value of the address. If this is not set by the user it will be automatically constructed from structured values.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the address.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3649,6 +3785,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;poBox&quot;: &quot;A String&quot;, # The P.O. box of the address.
@@ -3663,7 +3800,7 @@
     { # A person&#x27;s age range.
       &quot;ageRange&quot;: &quot;A String&quot;, # The age range.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the age range.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3676,6 +3813,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
     },
@@ -3684,7 +3822,7 @@
     { # A person&#x27;s short biography.
       &quot;contentType&quot;: &quot;A String&quot;, # The content type of the biography.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the biography.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3697,6 +3835,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The short biography.
@@ -3710,7 +3849,7 @@
         &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
       },
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the birthday.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3723,6 +3862,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;text&quot;: &quot;A String&quot;, # A free-form string representing the user&#x27;s birthday.
@@ -3731,7 +3871,7 @@
   &quot;braggingRights&quot;: [ # **DEPRECATED**: No data will be returned The person&#x27;s bragging rights.
     { # **DEPRECATED**: No data will be returned A person&#x27;s bragging rights.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the bragging rights.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3744,6 +3884,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The bragging rights; for example, `climbed mount everest`.
@@ -3753,7 +3894,7 @@
     { # A person&#x27;s calendar URL.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the calendar URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the calendar URL.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3766,6 +3907,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the calendar URL. The type can be custom or one of these predefined values: * `home` * `freeBusy` * `work`
@@ -3776,7 +3918,7 @@
     { # Arbitrary client data that is populated by clients. Duplicate keys and values are allowed.
       &quot;key&quot;: &quot;A String&quot;, # The client specified key of the client data.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the client data.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3789,6 +3931,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The client specified value of the client data.
@@ -3798,7 +3941,7 @@
     { # A person&#x27;s cover photo. A large image shown on the person&#x27;s profile page that represents who they are or what they care about.
       &quot;default&quot;: True or False, # True if the cover photo is the default cover photo; false if the cover photo is a user-provided cover photo.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the cover photo.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3811,6 +3954,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;url&quot;: &quot;A String&quot;, # The URL of the cover photo.
@@ -3821,7 +3965,7 @@
       &quot;displayName&quot;: &quot;A String&quot;, # The display name of the email.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the email address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the email address.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3834,6 +3978,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the email address. The type can be custom or one of these predefined values: * `home` * `work` * `other`
@@ -3850,7 +3995,7 @@
       },
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the event.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3863,6 +4008,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the event. The type can be custom or one of these predefined values: * `anniversary` * `other`
@@ -3872,7 +4018,7 @@
     { # An identifier from an external entity related to the person.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the external ID.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3885,6 +4031,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the external ID. The type can be custom or one of these predefined values: * `account` * `customer` * `loginId` * `network` * `organization`
@@ -3894,7 +4041,7 @@
   &quot;fileAses&quot;: [ # The person&#x27;s file-ases.
     { # The name that should be used to sort the person in a list.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the file-as.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3907,6 +4054,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The file-as value
@@ -3917,7 +4065,7 @@
       &quot;addressMeAs&quot;: &quot;A String&quot;, # The type of pronouns that should be used to address the person. The value can be custom or one of these predefined values: * `male` * `female` * `other`
       &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the gender translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale. Unspecified or custom value are not localized.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the gender.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3930,6 +4078,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The gender for the person. The gender can be custom or one of these predefined values: * `male` * `female` * `unspecified`
@@ -3940,7 +4089,7 @@
       &quot;formattedProtocol&quot;: &quot;A String&quot;, # Output only. The protocol of the IM client formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the IM client translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the IM client.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3953,6 +4102,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;protocol&quot;: &quot;A String&quot;, # The protocol of the IM client. The protocol can be custom or one of these predefined values: * `aim` * `msn` * `yahoo` * `skype` * `qq` * `googleTalk` * `icq` * `jabber` * `netMeeting`
@@ -3963,7 +4113,7 @@
   &quot;interests&quot;: [ # The person&#x27;s interests.
     { # One of the person&#x27;s interests.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the interest.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3976,6 +4126,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The interest; for example, `stargazing`.
@@ -3984,7 +4135,7 @@
   &quot;locales&quot;: [ # The person&#x27;s locale preferences.
     { # A person&#x27;s locale preference.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the locale.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -3997,6 +4148,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The well-formed [IETF BCP 47](https://tools.ietf.org/html/bcp47) language tag representing the locale.
@@ -4010,7 +4162,7 @@
       &quot;floor&quot;: &quot;A String&quot;, # The floor name or number.
       &quot;floorSection&quot;: &quot;A String&quot;, # The floor section in `floor_name`.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the location.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4023,6 +4175,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the location. The type can be custom or one of these predefined values: * `desk` * `grewUp`
@@ -4039,7 +4192,7 @@
         &quot;inViewerDomain&quot;: True or False, # True if the person is in the viewer&#x27;s Google Workspace domain.
       },
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the membership.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4052,6 +4205,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
     },
@@ -4084,7 +4238,7 @@
     { # A person&#x27;s miscellaneous keyword.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the miscellaneous keyword translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the miscellaneous keyword.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4097,6 +4251,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The miscellaneous keyword type.
@@ -4112,7 +4267,7 @@
       &quot;honorificPrefix&quot;: &quot;A String&quot;, # The honorific prefixes, such as `Mrs.` or `Dr.`
       &quot;honorificSuffix&quot;: &quot;A String&quot;, # The honorific suffixes, such as `Jr.`
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the name.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4125,6 +4280,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;middleName&quot;: &quot;A String&quot;, # The middle name(s).
@@ -4140,7 +4296,7 @@
   &quot;nicknames&quot;: [ # The person&#x27;s nicknames.
     { # A person&#x27;s nickname.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the nickname.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4153,6 +4309,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the nickname.
@@ -4162,7 +4319,7 @@
   &quot;occupations&quot;: [ # The person&#x27;s occupations.
     { # A person&#x27;s occupation.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the occupation.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4175,6 +4332,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The occupation; for example, `carpenter`.
@@ -4194,7 +4352,7 @@
       &quot;jobDescription&quot;: &quot;A String&quot;, # The person&#x27;s job description at the organization.
       &quot;location&quot;: &quot;A String&quot;, # The location of the organization office the person works at.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the organization.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4207,6 +4365,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;name&quot;: &quot;A String&quot;, # The name of the organization.
@@ -4226,7 +4385,7 @@
       &quot;canonicalForm&quot;: &quot;A String&quot;, # Output only. The canonicalized [ITU-T E.164](https://law.resource.org/pub/us/cfr/ibr/004/itu-t.E.164.1.2008.pdf) form of the phone number.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the phone number translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the phone number.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4239,6 +4398,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the phone number. The type can be custom or one of these predefined values: * `home` * `work` * `mobile` * `homeFax` * `workFax` * `otherFax` * `pager` * `workMobile` * `workPager` * `main` * `googleVoice` * `other`
@@ -4249,7 +4409,7 @@
     { # A person&#x27;s photo. A picture shown next to the person&#x27;s name to help others recognize the person.
       &quot;default&quot;: True or False, # True if the photo is a default photo; false if the photo is a user-provided photo.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the photo.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4262,6 +4422,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;url&quot;: &quot;A String&quot;, # The URL of the photo. You can change the desired size by appending a query parameter `sz={size}` at the end of the url, where {size} is the size in pixels. Example: https://lh3.googleusercontent.com/-T_wVWLlmg7w/AAAAAAAAAAI/AAAAAAAABa8/00gzXvDBYqw/s100/photo.jpg?sz=50
@@ -4271,7 +4432,7 @@
     { # A person&#x27;s relation to another person.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the relation translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relation.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4284,6 +4445,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;person&quot;: &quot;A String&quot;, # The name of the other person this relation refers to.
@@ -4294,7 +4456,7 @@
     { # **DEPRECATED**: No data will be returned A person&#x27;s relationship interest .
       &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship interest translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship interest.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4307,6 +4469,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The kind of relationship the person is looking for. The value can be custom or one of these predefined values: * `friend` * `date` * `relationship` * `networking`
@@ -4316,7 +4479,7 @@
     { # **DEPRECATED**: No data will be returned A person&#x27;s relationship status.
       &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship status translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship status.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4329,6 +4492,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The relationship status. The value can be custom or one of these predefined values: * `single` * `inARelationship` * `engaged` * `married` * `itsComplicated` * `openRelationship` * `widowed` * `inDomesticPartnership` * `inCivilUnion`
@@ -4338,7 +4502,7 @@
     { # **DEPRECATED**: Please use `person.locations` instead. A person&#x27;s past or current residence.
       &quot;current&quot;: True or False, # True if the residence is the person&#x27;s current residence; false if the residence is a past residence.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the residence.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4351,6 +4515,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The address of the residence.
@@ -4361,7 +4526,7 @@
     { # A person&#x27;s SIP address. Session Initial Protocol addresses are used for VoIP communications to make voice or video calls over the internet.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the SIP address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the SIP address.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4374,6 +4539,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the SIP address. The type can be custom or or one of these predefined values: * `home` * `work` * `mobile` * `other`
@@ -4383,7 +4549,7 @@
   &quot;skills&quot;: [ # The person&#x27;s skills.
     { # A skill that the person has.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the skill.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4396,6 +4562,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The skill; for example, `underwater basket weaving`.
@@ -4404,7 +4571,7 @@
   &quot;taglines&quot;: [ # Output only. **DEPRECATED**: No data will be returned The person&#x27;s taglines.
     { # **DEPRECATED**: No data will be returned A brief one-line description of the person.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the tagline.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4417,6 +4584,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The tagline.
@@ -4426,7 +4594,7 @@
     { # A person&#x27;s associated URLs.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the URL.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4439,6 +4607,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the URL. The type can be custom or one of these predefined values: * `home` * `work` * `blog` * `profile` * `homePage` * `ftp` * `reservations` * `appInstallPage`: website for a Currents application. * `other`
@@ -4449,7 +4618,7 @@
     { # Arbitrary user data that is populated by the end users.
       &quot;key&quot;: &quot;A String&quot;, # The end user specified key of the user defined data.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the user defined data.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4462,6 +4631,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The end user specified value of the user defined data.
@@ -4494,7 +4664,7 @@
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;formattedValue&quot;: &quot;A String&quot;, # The unstructured value of the address. If this is not set by the user it will be automatically constructed from structured values.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the address.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4507,6 +4677,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;poBox&quot;: &quot;A String&quot;, # The P.O. box of the address.
@@ -4521,7 +4692,7 @@
     { # A person&#x27;s age range.
       &quot;ageRange&quot;: &quot;A String&quot;, # The age range.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the age range.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4534,6 +4705,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
     },
@@ -4542,7 +4714,7 @@
     { # A person&#x27;s short biography.
       &quot;contentType&quot;: &quot;A String&quot;, # The content type of the biography.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the biography.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4555,6 +4727,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The short biography.
@@ -4568,7 +4741,7 @@
         &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
       },
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the birthday.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4581,6 +4754,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;text&quot;: &quot;A String&quot;, # A free-form string representing the user&#x27;s birthday.
@@ -4589,7 +4763,7 @@
   &quot;braggingRights&quot;: [ # **DEPRECATED**: No data will be returned The person&#x27;s bragging rights.
     { # **DEPRECATED**: No data will be returned A person&#x27;s bragging rights.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the bragging rights.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4602,6 +4776,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The bragging rights; for example, `climbed mount everest`.
@@ -4611,7 +4786,7 @@
     { # A person&#x27;s calendar URL.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the calendar URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the calendar URL.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4624,6 +4799,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the calendar URL. The type can be custom or one of these predefined values: * `home` * `freeBusy` * `work`
@@ -4634,7 +4810,7 @@
     { # Arbitrary client data that is populated by clients. Duplicate keys and values are allowed.
       &quot;key&quot;: &quot;A String&quot;, # The client specified key of the client data.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the client data.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4647,6 +4823,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The client specified value of the client data.
@@ -4656,7 +4833,7 @@
     { # A person&#x27;s cover photo. A large image shown on the person&#x27;s profile page that represents who they are or what they care about.
       &quot;default&quot;: True or False, # True if the cover photo is the default cover photo; false if the cover photo is a user-provided cover photo.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the cover photo.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4669,6 +4846,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;url&quot;: &quot;A String&quot;, # The URL of the cover photo.
@@ -4679,7 +4857,7 @@
       &quot;displayName&quot;: &quot;A String&quot;, # The display name of the email.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the email address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the email address.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4692,6 +4870,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the email address. The type can be custom or one of these predefined values: * `home` * `work` * `other`
@@ -4708,7 +4887,7 @@
       },
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the event.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4721,6 +4900,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the event. The type can be custom or one of these predefined values: * `anniversary` * `other`
@@ -4730,7 +4910,7 @@
     { # An identifier from an external entity related to the person.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the external ID.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4743,6 +4923,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the external ID. The type can be custom or one of these predefined values: * `account` * `customer` * `loginId` * `network` * `organization`
@@ -4752,7 +4933,7 @@
   &quot;fileAses&quot;: [ # The person&#x27;s file-ases.
     { # The name that should be used to sort the person in a list.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the file-as.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4765,6 +4946,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The file-as value
@@ -4775,7 +4957,7 @@
       &quot;addressMeAs&quot;: &quot;A String&quot;, # The type of pronouns that should be used to address the person. The value can be custom or one of these predefined values: * `male` * `female` * `other`
       &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the gender translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale. Unspecified or custom value are not localized.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the gender.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4788,6 +4970,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The gender for the person. The gender can be custom or one of these predefined values: * `male` * `female` * `unspecified`
@@ -4798,7 +4981,7 @@
       &quot;formattedProtocol&quot;: &quot;A String&quot;, # Output only. The protocol of the IM client formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the IM client translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the IM client.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4811,6 +4994,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;protocol&quot;: &quot;A String&quot;, # The protocol of the IM client. The protocol can be custom or one of these predefined values: * `aim` * `msn` * `yahoo` * `skype` * `qq` * `googleTalk` * `icq` * `jabber` * `netMeeting`
@@ -4821,7 +5005,7 @@
   &quot;interests&quot;: [ # The person&#x27;s interests.
     { # One of the person&#x27;s interests.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the interest.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4834,6 +5018,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The interest; for example, `stargazing`.
@@ -4842,7 +5027,7 @@
   &quot;locales&quot;: [ # The person&#x27;s locale preferences.
     { # A person&#x27;s locale preference.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the locale.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4855,6 +5040,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The well-formed [IETF BCP 47](https://tools.ietf.org/html/bcp47) language tag representing the locale.
@@ -4868,7 +5054,7 @@
       &quot;floor&quot;: &quot;A String&quot;, # The floor name or number.
       &quot;floorSection&quot;: &quot;A String&quot;, # The floor section in `floor_name`.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the location.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4881,6 +5067,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the location. The type can be custom or one of these predefined values: * `desk` * `grewUp`
@@ -4897,7 +5084,7 @@
         &quot;inViewerDomain&quot;: True or False, # True if the person is in the viewer&#x27;s Google Workspace domain.
       },
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the membership.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4910,6 +5097,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
     },
@@ -4942,7 +5130,7 @@
     { # A person&#x27;s miscellaneous keyword.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the miscellaneous keyword translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the miscellaneous keyword.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4955,6 +5143,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The miscellaneous keyword type.
@@ -4970,7 +5159,7 @@
       &quot;honorificPrefix&quot;: &quot;A String&quot;, # The honorific prefixes, such as `Mrs.` or `Dr.`
       &quot;honorificSuffix&quot;: &quot;A String&quot;, # The honorific suffixes, such as `Jr.`
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the name.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -4983,6 +5172,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;middleName&quot;: &quot;A String&quot;, # The middle name(s).
@@ -4998,7 +5188,7 @@
   &quot;nicknames&quot;: [ # The person&#x27;s nicknames.
     { # A person&#x27;s nickname.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the nickname.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5011,6 +5201,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the nickname.
@@ -5020,7 +5211,7 @@
   &quot;occupations&quot;: [ # The person&#x27;s occupations.
     { # A person&#x27;s occupation.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the occupation.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5033,6 +5224,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The occupation; for example, `carpenter`.
@@ -5052,7 +5244,7 @@
       &quot;jobDescription&quot;: &quot;A String&quot;, # The person&#x27;s job description at the organization.
       &quot;location&quot;: &quot;A String&quot;, # The location of the organization office the person works at.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the organization.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5065,6 +5257,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;name&quot;: &quot;A String&quot;, # The name of the organization.
@@ -5084,7 +5277,7 @@
       &quot;canonicalForm&quot;: &quot;A String&quot;, # Output only. The canonicalized [ITU-T E.164](https://law.resource.org/pub/us/cfr/ibr/004/itu-t.E.164.1.2008.pdf) form of the phone number.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the phone number translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the phone number.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5097,6 +5290,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the phone number. The type can be custom or one of these predefined values: * `home` * `work` * `mobile` * `homeFax` * `workFax` * `otherFax` * `pager` * `workMobile` * `workPager` * `main` * `googleVoice` * `other`
@@ -5107,7 +5301,7 @@
     { # A person&#x27;s photo. A picture shown next to the person&#x27;s name to help others recognize the person.
       &quot;default&quot;: True or False, # True if the photo is a default photo; false if the photo is a user-provided photo.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the photo.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5120,6 +5314,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;url&quot;: &quot;A String&quot;, # The URL of the photo. You can change the desired size by appending a query parameter `sz={size}` at the end of the url, where {size} is the size in pixels. Example: https://lh3.googleusercontent.com/-T_wVWLlmg7w/AAAAAAAAAAI/AAAAAAAABa8/00gzXvDBYqw/s100/photo.jpg?sz=50
@@ -5129,7 +5324,7 @@
     { # A person&#x27;s relation to another person.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the relation translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relation.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5142,6 +5337,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;person&quot;: &quot;A String&quot;, # The name of the other person this relation refers to.
@@ -5152,7 +5348,7 @@
     { # **DEPRECATED**: No data will be returned A person&#x27;s relationship interest .
       &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship interest translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship interest.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5165,6 +5361,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The kind of relationship the person is looking for. The value can be custom or one of these predefined values: * `friend` * `date` * `relationship` * `networking`
@@ -5174,7 +5371,7 @@
     { # **DEPRECATED**: No data will be returned A person&#x27;s relationship status.
       &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship status translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship status.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5187,6 +5384,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The relationship status. The value can be custom or one of these predefined values: * `single` * `inARelationship` * `engaged` * `married` * `itsComplicated` * `openRelationship` * `widowed` * `inDomesticPartnership` * `inCivilUnion`
@@ -5196,7 +5394,7 @@
     { # **DEPRECATED**: Please use `person.locations` instead. A person&#x27;s past or current residence.
       &quot;current&quot;: True or False, # True if the residence is the person&#x27;s current residence; false if the residence is a past residence.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the residence.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5209,6 +5407,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The address of the residence.
@@ -5219,7 +5418,7 @@
     { # A person&#x27;s SIP address. Session Initial Protocol addresses are used for VoIP communications to make voice or video calls over the internet.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the SIP address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the SIP address.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5232,6 +5431,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the SIP address. The type can be custom or or one of these predefined values: * `home` * `work` * `mobile` * `other`
@@ -5241,7 +5441,7 @@
   &quot;skills&quot;: [ # The person&#x27;s skills.
     { # A skill that the person has.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the skill.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5254,6 +5454,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The skill; for example, `underwater basket weaving`.
@@ -5262,7 +5463,7 @@
   &quot;taglines&quot;: [ # Output only. **DEPRECATED**: No data will be returned The person&#x27;s taglines.
     { # **DEPRECATED**: No data will be returned A brief one-line description of the person.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the tagline.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5275,6 +5476,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The tagline.
@@ -5284,7 +5486,7 @@
     { # A person&#x27;s associated URLs.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the URL.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5297,6 +5499,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the URL. The type can be custom or one of these predefined values: * `home` * `work` * `blog` * `profile` * `homePage` * `ftp` * `reservations` * `appInstallPage`: website for a Currents application. * `other`
@@ -5307,7 +5510,7 @@
     { # Arbitrary user data that is populated by the end users.
       &quot;key&quot;: &quot;A String&quot;, # The end user specified key of the user defined data.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the user defined data.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5320,6 +5523,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The end user specified value of the user defined data.
@@ -5378,7 +5582,7 @@
         &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
         &quot;formattedValue&quot;: &quot;A String&quot;, # The unstructured value of the address. If this is not set by the user it will be automatically constructed from structured values.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the address.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5391,6 +5595,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;poBox&quot;: &quot;A String&quot;, # The P.O. box of the address.
@@ -5405,7 +5610,7 @@
       { # A person&#x27;s age range.
         &quot;ageRange&quot;: &quot;A String&quot;, # The age range.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the age range.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5418,6 +5623,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
       },
@@ -5426,7 +5632,7 @@
       { # A person&#x27;s short biography.
         &quot;contentType&quot;: &quot;A String&quot;, # The content type of the biography.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the biography.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5439,6 +5645,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;value&quot;: &quot;A String&quot;, # The short biography.
@@ -5452,7 +5659,7 @@
           &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
         },
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the birthday.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5465,6 +5672,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;text&quot;: &quot;A String&quot;, # A free-form string representing the user&#x27;s birthday.
@@ -5473,7 +5681,7 @@
     &quot;braggingRights&quot;: [ # **DEPRECATED**: No data will be returned The person&#x27;s bragging rights.
       { # **DEPRECATED**: No data will be returned A person&#x27;s bragging rights.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the bragging rights.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5486,6 +5694,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;value&quot;: &quot;A String&quot;, # The bragging rights; for example, `climbed mount everest`.
@@ -5495,7 +5704,7 @@
       { # A person&#x27;s calendar URL.
         &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the calendar URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the calendar URL.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5508,6 +5717,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;type&quot;: &quot;A String&quot;, # The type of the calendar URL. The type can be custom or one of these predefined values: * `home` * `freeBusy` * `work`
@@ -5518,7 +5728,7 @@
       { # Arbitrary client data that is populated by clients. Duplicate keys and values are allowed.
         &quot;key&quot;: &quot;A String&quot;, # The client specified key of the client data.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the client data.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5531,6 +5741,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;value&quot;: &quot;A String&quot;, # The client specified value of the client data.
@@ -5540,7 +5751,7 @@
       { # A person&#x27;s cover photo. A large image shown on the person&#x27;s profile page that represents who they are or what they care about.
         &quot;default&quot;: True or False, # True if the cover photo is the default cover photo; false if the cover photo is a user-provided cover photo.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the cover photo.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5553,6 +5764,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;url&quot;: &quot;A String&quot;, # The URL of the cover photo.
@@ -5563,7 +5775,7 @@
         &quot;displayName&quot;: &quot;A String&quot;, # The display name of the email.
         &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the email address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the email address.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5576,6 +5788,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;type&quot;: &quot;A String&quot;, # The type of the email address. The type can be custom or one of these predefined values: * `home` * `work` * `other`
@@ -5592,7 +5805,7 @@
         },
         &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the event.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5605,6 +5818,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;type&quot;: &quot;A String&quot;, # The type of the event. The type can be custom or one of these predefined values: * `anniversary` * `other`
@@ -5614,7 +5828,7 @@
       { # An identifier from an external entity related to the person.
         &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the external ID.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5627,6 +5841,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;type&quot;: &quot;A String&quot;, # The type of the external ID. The type can be custom or one of these predefined values: * `account` * `customer` * `loginId` * `network` * `organization`
@@ -5636,7 +5851,7 @@
     &quot;fileAses&quot;: [ # The person&#x27;s file-ases.
       { # The name that should be used to sort the person in a list.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the file-as.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5649,6 +5864,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;value&quot;: &quot;A String&quot;, # The file-as value
@@ -5659,7 +5875,7 @@
         &quot;addressMeAs&quot;: &quot;A String&quot;, # The type of pronouns that should be used to address the person. The value can be custom or one of these predefined values: * `male` * `female` * `other`
         &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the gender translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale. Unspecified or custom value are not localized.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the gender.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5672,6 +5888,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;value&quot;: &quot;A String&quot;, # The gender for the person. The gender can be custom or one of these predefined values: * `male` * `female` * `unspecified`
@@ -5682,7 +5899,7 @@
         &quot;formattedProtocol&quot;: &quot;A String&quot;, # Output only. The protocol of the IM client formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
         &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the IM client translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the IM client.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5695,6 +5912,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;protocol&quot;: &quot;A String&quot;, # The protocol of the IM client. The protocol can be custom or one of these predefined values: * `aim` * `msn` * `yahoo` * `skype` * `qq` * `googleTalk` * `icq` * `jabber` * `netMeeting`
@@ -5705,7 +5923,7 @@
     &quot;interests&quot;: [ # The person&#x27;s interests.
       { # One of the person&#x27;s interests.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the interest.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5718,6 +5936,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;value&quot;: &quot;A String&quot;, # The interest; for example, `stargazing`.
@@ -5726,7 +5945,7 @@
     &quot;locales&quot;: [ # The person&#x27;s locale preferences.
       { # A person&#x27;s locale preference.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the locale.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5739,6 +5958,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;value&quot;: &quot;A String&quot;, # The well-formed [IETF BCP 47](https://tools.ietf.org/html/bcp47) language tag representing the locale.
@@ -5752,7 +5972,7 @@
         &quot;floor&quot;: &quot;A String&quot;, # The floor name or number.
         &quot;floorSection&quot;: &quot;A String&quot;, # The floor section in `floor_name`.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the location.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5765,6 +5985,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;type&quot;: &quot;A String&quot;, # The type of the location. The type can be custom or one of these predefined values: * `desk` * `grewUp`
@@ -5781,7 +6002,7 @@
           &quot;inViewerDomain&quot;: True or False, # True if the person is in the viewer&#x27;s Google Workspace domain.
         },
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the membership.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5794,6 +6015,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
       },
@@ -5826,7 +6048,7 @@
       { # A person&#x27;s miscellaneous keyword.
         &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the miscellaneous keyword translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the miscellaneous keyword.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5839,6 +6061,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;type&quot;: &quot;A String&quot;, # The miscellaneous keyword type.
@@ -5854,7 +6077,7 @@
         &quot;honorificPrefix&quot;: &quot;A String&quot;, # The honorific prefixes, such as `Mrs.` or `Dr.`
         &quot;honorificSuffix&quot;: &quot;A String&quot;, # The honorific suffixes, such as `Jr.`
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the name.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5867,6 +6090,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;middleName&quot;: &quot;A String&quot;, # The middle name(s).
@@ -5882,7 +6106,7 @@
     &quot;nicknames&quot;: [ # The person&#x27;s nicknames.
       { # A person&#x27;s nickname.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the nickname.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5895,6 +6119,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;type&quot;: &quot;A String&quot;, # The type of the nickname.
@@ -5904,7 +6129,7 @@
     &quot;occupations&quot;: [ # The person&#x27;s occupations.
       { # A person&#x27;s occupation.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the occupation.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5917,6 +6142,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;value&quot;: &quot;A String&quot;, # The occupation; for example, `carpenter`.
@@ -5936,7 +6162,7 @@
         &quot;jobDescription&quot;: &quot;A String&quot;, # The person&#x27;s job description at the organization.
         &quot;location&quot;: &quot;A String&quot;, # The location of the organization office the person works at.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the organization.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5949,6 +6175,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;name&quot;: &quot;A String&quot;, # The name of the organization.
@@ -5968,7 +6195,7 @@
         &quot;canonicalForm&quot;: &quot;A String&quot;, # Output only. The canonicalized [ITU-T E.164](https://law.resource.org/pub/us/cfr/ibr/004/itu-t.E.164.1.2008.pdf) form of the phone number.
         &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the phone number translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the phone number.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -5981,6 +6208,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;type&quot;: &quot;A String&quot;, # The type of the phone number. The type can be custom or one of these predefined values: * `home` * `work` * `mobile` * `homeFax` * `workFax` * `otherFax` * `pager` * `workMobile` * `workPager` * `main` * `googleVoice` * `other`
@@ -5991,7 +6219,7 @@
       { # A person&#x27;s photo. A picture shown next to the person&#x27;s name to help others recognize the person.
         &quot;default&quot;: True or False, # True if the photo is a default photo; false if the photo is a user-provided photo.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the photo.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6004,6 +6232,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;url&quot;: &quot;A String&quot;, # The URL of the photo. You can change the desired size by appending a query parameter `sz={size}` at the end of the url, where {size} is the size in pixels. Example: https://lh3.googleusercontent.com/-T_wVWLlmg7w/AAAAAAAAAAI/AAAAAAAABa8/00gzXvDBYqw/s100/photo.jpg?sz=50
@@ -6013,7 +6242,7 @@
       { # A person&#x27;s relation to another person.
         &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the relation translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relation.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6026,6 +6255,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;person&quot;: &quot;A String&quot;, # The name of the other person this relation refers to.
@@ -6036,7 +6266,7 @@
       { # **DEPRECATED**: No data will be returned A person&#x27;s relationship interest .
         &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship interest translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship interest.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6049,6 +6279,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;value&quot;: &quot;A String&quot;, # The kind of relationship the person is looking for. The value can be custom or one of these predefined values: * `friend` * `date` * `relationship` * `networking`
@@ -6058,7 +6289,7 @@
       { # **DEPRECATED**: No data will be returned A person&#x27;s relationship status.
         &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship status translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship status.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6071,6 +6302,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;value&quot;: &quot;A String&quot;, # The relationship status. The value can be custom or one of these predefined values: * `single` * `inARelationship` * `engaged` * `married` * `itsComplicated` * `openRelationship` * `widowed` * `inDomesticPartnership` * `inCivilUnion`
@@ -6080,7 +6312,7 @@
       { # **DEPRECATED**: Please use `person.locations` instead. A person&#x27;s past or current residence.
         &quot;current&quot;: True or False, # True if the residence is the person&#x27;s current residence; false if the residence is a past residence.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the residence.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6093,6 +6325,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;value&quot;: &quot;A String&quot;, # The address of the residence.
@@ -6103,7 +6336,7 @@
       { # A person&#x27;s SIP address. Session Initial Protocol addresses are used for VoIP communications to make voice or video calls over the internet.
         &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the SIP address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the SIP address.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6116,6 +6349,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;type&quot;: &quot;A String&quot;, # The type of the SIP address. The type can be custom or or one of these predefined values: * `home` * `work` * `mobile` * `other`
@@ -6125,7 +6359,7 @@
     &quot;skills&quot;: [ # The person&#x27;s skills.
       { # A skill that the person has.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the skill.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6138,6 +6372,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;value&quot;: &quot;A String&quot;, # The skill; for example, `underwater basket weaving`.
@@ -6146,7 +6381,7 @@
     &quot;taglines&quot;: [ # Output only. **DEPRECATED**: No data will be returned The person&#x27;s taglines.
       { # **DEPRECATED**: No data will be returned A brief one-line description of the person.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the tagline.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6159,6 +6394,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;value&quot;: &quot;A String&quot;, # The tagline.
@@ -6168,7 +6404,7 @@
       { # A person&#x27;s associated URLs.
         &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the URL.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6181,6 +6417,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;type&quot;: &quot;A String&quot;, # The type of the URL. The type can be custom or one of these predefined values: * `home` * `work` * `blog` * `profile` * `homePage` * `ftp` * `reservations` * `appInstallPage`: website for a Currents application. * `other`
@@ -6191,7 +6428,7 @@
       { # Arbitrary user data that is populated by the end users.
         &quot;key&quot;: &quot;A String&quot;, # The end user specified key of the user defined data.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the user defined data.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6204,6 +6441,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;value&quot;: &quot;A String&quot;, # The end user specified value of the user defined data.
@@ -6245,7 +6483,7 @@
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;formattedValue&quot;: &quot;A String&quot;, # The unstructured value of the address. If this is not set by the user it will be automatically constructed from structured values.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the address.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6258,6 +6496,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;poBox&quot;: &quot;A String&quot;, # The P.O. box of the address.
@@ -6272,7 +6511,7 @@
     { # A person&#x27;s age range.
       &quot;ageRange&quot;: &quot;A String&quot;, # The age range.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the age range.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6285,6 +6524,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
     },
@@ -6293,7 +6533,7 @@
     { # A person&#x27;s short biography.
       &quot;contentType&quot;: &quot;A String&quot;, # The content type of the biography.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the biography.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6306,6 +6546,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The short biography.
@@ -6319,7 +6560,7 @@
         &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
       },
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the birthday.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6332,6 +6573,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;text&quot;: &quot;A String&quot;, # A free-form string representing the user&#x27;s birthday.
@@ -6340,7 +6582,7 @@
   &quot;braggingRights&quot;: [ # **DEPRECATED**: No data will be returned The person&#x27;s bragging rights.
     { # **DEPRECATED**: No data will be returned A person&#x27;s bragging rights.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the bragging rights.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6353,6 +6595,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The bragging rights; for example, `climbed mount everest`.
@@ -6362,7 +6605,7 @@
     { # A person&#x27;s calendar URL.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the calendar URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the calendar URL.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6375,6 +6618,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the calendar URL. The type can be custom or one of these predefined values: * `home` * `freeBusy` * `work`
@@ -6385,7 +6629,7 @@
     { # Arbitrary client data that is populated by clients. Duplicate keys and values are allowed.
       &quot;key&quot;: &quot;A String&quot;, # The client specified key of the client data.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the client data.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6398,6 +6642,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The client specified value of the client data.
@@ -6407,7 +6652,7 @@
     { # A person&#x27;s cover photo. A large image shown on the person&#x27;s profile page that represents who they are or what they care about.
       &quot;default&quot;: True or False, # True if the cover photo is the default cover photo; false if the cover photo is a user-provided cover photo.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the cover photo.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6420,6 +6665,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;url&quot;: &quot;A String&quot;, # The URL of the cover photo.
@@ -6430,7 +6676,7 @@
       &quot;displayName&quot;: &quot;A String&quot;, # The display name of the email.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the email address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the email address.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6443,6 +6689,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the email address. The type can be custom or one of these predefined values: * `home` * `work` * `other`
@@ -6459,7 +6706,7 @@
       },
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the event.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6472,6 +6719,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the event. The type can be custom or one of these predefined values: * `anniversary` * `other`
@@ -6481,7 +6729,7 @@
     { # An identifier from an external entity related to the person.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the external ID.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6494,6 +6742,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the external ID. The type can be custom or one of these predefined values: * `account` * `customer` * `loginId` * `network` * `organization`
@@ -6503,7 +6752,7 @@
   &quot;fileAses&quot;: [ # The person&#x27;s file-ases.
     { # The name that should be used to sort the person in a list.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the file-as.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6516,6 +6765,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The file-as value
@@ -6526,7 +6776,7 @@
       &quot;addressMeAs&quot;: &quot;A String&quot;, # The type of pronouns that should be used to address the person. The value can be custom or one of these predefined values: * `male` * `female` * `other`
       &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the gender translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale. Unspecified or custom value are not localized.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the gender.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6539,6 +6789,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The gender for the person. The gender can be custom or one of these predefined values: * `male` * `female` * `unspecified`
@@ -6549,7 +6800,7 @@
       &quot;formattedProtocol&quot;: &quot;A String&quot;, # Output only. The protocol of the IM client formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the IM client translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the IM client.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6562,6 +6813,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;protocol&quot;: &quot;A String&quot;, # The protocol of the IM client. The protocol can be custom or one of these predefined values: * `aim` * `msn` * `yahoo` * `skype` * `qq` * `googleTalk` * `icq` * `jabber` * `netMeeting`
@@ -6572,7 +6824,7 @@
   &quot;interests&quot;: [ # The person&#x27;s interests.
     { # One of the person&#x27;s interests.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the interest.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6585,6 +6837,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The interest; for example, `stargazing`.
@@ -6593,7 +6846,7 @@
   &quot;locales&quot;: [ # The person&#x27;s locale preferences.
     { # A person&#x27;s locale preference.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the locale.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6606,6 +6859,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The well-formed [IETF BCP 47](https://tools.ietf.org/html/bcp47) language tag representing the locale.
@@ -6619,7 +6873,7 @@
       &quot;floor&quot;: &quot;A String&quot;, # The floor name or number.
       &quot;floorSection&quot;: &quot;A String&quot;, # The floor section in `floor_name`.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the location.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6632,6 +6886,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the location. The type can be custom or one of these predefined values: * `desk` * `grewUp`
@@ -6648,7 +6903,7 @@
         &quot;inViewerDomain&quot;: True or False, # True if the person is in the viewer&#x27;s Google Workspace domain.
       },
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the membership.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6661,6 +6916,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
     },
@@ -6693,7 +6949,7 @@
     { # A person&#x27;s miscellaneous keyword.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the miscellaneous keyword translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the miscellaneous keyword.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6706,6 +6962,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The miscellaneous keyword type.
@@ -6721,7 +6978,7 @@
       &quot;honorificPrefix&quot;: &quot;A String&quot;, # The honorific prefixes, such as `Mrs.` or `Dr.`
       &quot;honorificSuffix&quot;: &quot;A String&quot;, # The honorific suffixes, such as `Jr.`
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the name.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6734,6 +6991,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;middleName&quot;: &quot;A String&quot;, # The middle name(s).
@@ -6749,7 +7007,7 @@
   &quot;nicknames&quot;: [ # The person&#x27;s nicknames.
     { # A person&#x27;s nickname.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the nickname.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6762,6 +7020,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the nickname.
@@ -6771,7 +7030,7 @@
   &quot;occupations&quot;: [ # The person&#x27;s occupations.
     { # A person&#x27;s occupation.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the occupation.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6784,6 +7043,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The occupation; for example, `carpenter`.
@@ -6803,7 +7063,7 @@
       &quot;jobDescription&quot;: &quot;A String&quot;, # The person&#x27;s job description at the organization.
       &quot;location&quot;: &quot;A String&quot;, # The location of the organization office the person works at.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the organization.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6816,6 +7076,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;name&quot;: &quot;A String&quot;, # The name of the organization.
@@ -6835,7 +7096,7 @@
       &quot;canonicalForm&quot;: &quot;A String&quot;, # Output only. The canonicalized [ITU-T E.164](https://law.resource.org/pub/us/cfr/ibr/004/itu-t.E.164.1.2008.pdf) form of the phone number.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the phone number translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the phone number.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6848,6 +7109,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the phone number. The type can be custom or one of these predefined values: * `home` * `work` * `mobile` * `homeFax` * `workFax` * `otherFax` * `pager` * `workMobile` * `workPager` * `main` * `googleVoice` * `other`
@@ -6858,7 +7120,7 @@
     { # A person&#x27;s photo. A picture shown next to the person&#x27;s name to help others recognize the person.
       &quot;default&quot;: True or False, # True if the photo is a default photo; false if the photo is a user-provided photo.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the photo.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6871,6 +7133,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;url&quot;: &quot;A String&quot;, # The URL of the photo. You can change the desired size by appending a query parameter `sz={size}` at the end of the url, where {size} is the size in pixels. Example: https://lh3.googleusercontent.com/-T_wVWLlmg7w/AAAAAAAAAAI/AAAAAAAABa8/00gzXvDBYqw/s100/photo.jpg?sz=50
@@ -6880,7 +7143,7 @@
     { # A person&#x27;s relation to another person.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the relation translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relation.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6893,6 +7156,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;person&quot;: &quot;A String&quot;, # The name of the other person this relation refers to.
@@ -6903,7 +7167,7 @@
     { # **DEPRECATED**: No data will be returned A person&#x27;s relationship interest .
       &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship interest translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship interest.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6916,6 +7180,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The kind of relationship the person is looking for. The value can be custom or one of these predefined values: * `friend` * `date` * `relationship` * `networking`
@@ -6925,7 +7190,7 @@
     { # **DEPRECATED**: No data will be returned A person&#x27;s relationship status.
       &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship status translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship status.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6938,6 +7203,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The relationship status. The value can be custom or one of these predefined values: * `single` * `inARelationship` * `engaged` * `married` * `itsComplicated` * `openRelationship` * `widowed` * `inDomesticPartnership` * `inCivilUnion`
@@ -6947,7 +7213,7 @@
     { # **DEPRECATED**: Please use `person.locations` instead. A person&#x27;s past or current residence.
       &quot;current&quot;: True or False, # True if the residence is the person&#x27;s current residence; false if the residence is a past residence.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the residence.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6960,6 +7226,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The address of the residence.
@@ -6970,7 +7237,7 @@
     { # A person&#x27;s SIP address. Session Initial Protocol addresses are used for VoIP communications to make voice or video calls over the internet.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the SIP address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the SIP address.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -6983,6 +7250,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the SIP address. The type can be custom or or one of these predefined values: * `home` * `work` * `mobile` * `other`
@@ -6992,7 +7260,7 @@
   &quot;skills&quot;: [ # The person&#x27;s skills.
     { # A skill that the person has.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the skill.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7005,6 +7273,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The skill; for example, `underwater basket weaving`.
@@ -7013,7 +7282,7 @@
   &quot;taglines&quot;: [ # Output only. **DEPRECATED**: No data will be returned The person&#x27;s taglines.
     { # **DEPRECATED**: No data will be returned A brief one-line description of the person.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the tagline.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7026,6 +7295,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The tagline.
@@ -7035,7 +7305,7 @@
     { # A person&#x27;s associated URLs.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the URL.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7048,6 +7318,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the URL. The type can be custom or one of these predefined values: * `home` * `work` * `blog` * `profile` * `homePage` * `ftp` * `reservations` * `appInstallPage`: website for a Currents application. * `other`
@@ -7058,7 +7329,7 @@
     { # Arbitrary user data that is populated by the end users.
       &quot;key&quot;: &quot;A String&quot;, # The end user specified key of the user defined data.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the user defined data.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7071,6 +7342,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The end user specified value of the user defined data.
@@ -7115,7 +7387,7 @@
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;formattedValue&quot;: &quot;A String&quot;, # The unstructured value of the address. If this is not set by the user it will be automatically constructed from structured values.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the address.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7128,6 +7400,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;poBox&quot;: &quot;A String&quot;, # The P.O. box of the address.
@@ -7142,7 +7415,7 @@
           { # A person&#x27;s age range.
             &quot;ageRange&quot;: &quot;A String&quot;, # The age range.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the age range.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7155,6 +7428,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
           },
@@ -7163,7 +7437,7 @@
           { # A person&#x27;s short biography.
             &quot;contentType&quot;: &quot;A String&quot;, # The content type of the biography.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the biography.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7176,6 +7450,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The short biography.
@@ -7189,7 +7464,7 @@
               &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
             },
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the birthday.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7202,6 +7477,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;text&quot;: &quot;A String&quot;, # A free-form string representing the user&#x27;s birthday.
@@ -7210,7 +7486,7 @@
         &quot;braggingRights&quot;: [ # **DEPRECATED**: No data will be returned The person&#x27;s bragging rights.
           { # **DEPRECATED**: No data will be returned A person&#x27;s bragging rights.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the bragging rights.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7223,6 +7499,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The bragging rights; for example, `climbed mount everest`.
@@ -7232,7 +7509,7 @@
           { # A person&#x27;s calendar URL.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the calendar URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the calendar URL.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7245,6 +7522,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the calendar URL. The type can be custom or one of these predefined values: * `home` * `freeBusy` * `work`
@@ -7255,7 +7533,7 @@
           { # Arbitrary client data that is populated by clients. Duplicate keys and values are allowed.
             &quot;key&quot;: &quot;A String&quot;, # The client specified key of the client data.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the client data.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7268,6 +7546,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The client specified value of the client data.
@@ -7277,7 +7556,7 @@
           { # A person&#x27;s cover photo. A large image shown on the person&#x27;s profile page that represents who they are or what they care about.
             &quot;default&quot;: True or False, # True if the cover photo is the default cover photo; false if the cover photo is a user-provided cover photo.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the cover photo.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7290,6 +7569,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;url&quot;: &quot;A String&quot;, # The URL of the cover photo.
@@ -7300,7 +7580,7 @@
             &quot;displayName&quot;: &quot;A String&quot;, # The display name of the email.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the email address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the email address.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7313,6 +7593,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the email address. The type can be custom or one of these predefined values: * `home` * `work` * `other`
@@ -7329,7 +7610,7 @@
             },
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the event.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7342,6 +7623,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the event. The type can be custom or one of these predefined values: * `anniversary` * `other`
@@ -7351,7 +7633,7 @@
           { # An identifier from an external entity related to the person.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the external ID.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7364,6 +7646,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the external ID. The type can be custom or one of these predefined values: * `account` * `customer` * `loginId` * `network` * `organization`
@@ -7373,7 +7656,7 @@
         &quot;fileAses&quot;: [ # The person&#x27;s file-ases.
           { # The name that should be used to sort the person in a list.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the file-as.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7386,6 +7669,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The file-as value
@@ -7396,7 +7680,7 @@
             &quot;addressMeAs&quot;: &quot;A String&quot;, # The type of pronouns that should be used to address the person. The value can be custom or one of these predefined values: * `male` * `female` * `other`
             &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the gender translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale. Unspecified or custom value are not localized.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the gender.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7409,6 +7693,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The gender for the person. The gender can be custom or one of these predefined values: * `male` * `female` * `unspecified`
@@ -7419,7 +7704,7 @@
             &quot;formattedProtocol&quot;: &quot;A String&quot;, # Output only. The protocol of the IM client formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the IM client translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the IM client.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7432,6 +7717,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;protocol&quot;: &quot;A String&quot;, # The protocol of the IM client. The protocol can be custom or one of these predefined values: * `aim` * `msn` * `yahoo` * `skype` * `qq` * `googleTalk` * `icq` * `jabber` * `netMeeting`
@@ -7442,7 +7728,7 @@
         &quot;interests&quot;: [ # The person&#x27;s interests.
           { # One of the person&#x27;s interests.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the interest.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7455,6 +7741,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The interest; for example, `stargazing`.
@@ -7463,7 +7750,7 @@
         &quot;locales&quot;: [ # The person&#x27;s locale preferences.
           { # A person&#x27;s locale preference.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the locale.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7476,6 +7763,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The well-formed [IETF BCP 47](https://tools.ietf.org/html/bcp47) language tag representing the locale.
@@ -7489,7 +7777,7 @@
             &quot;floor&quot;: &quot;A String&quot;, # The floor name or number.
             &quot;floorSection&quot;: &quot;A String&quot;, # The floor section in `floor_name`.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the location.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7502,6 +7790,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the location. The type can be custom or one of these predefined values: * `desk` * `grewUp`
@@ -7518,7 +7807,7 @@
               &quot;inViewerDomain&quot;: True or False, # True if the person is in the viewer&#x27;s Google Workspace domain.
             },
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the membership.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7531,6 +7820,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
           },
@@ -7563,7 +7853,7 @@
           { # A person&#x27;s miscellaneous keyword.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the miscellaneous keyword translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the miscellaneous keyword.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7576,6 +7866,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The miscellaneous keyword type.
@@ -7591,7 +7882,7 @@
             &quot;honorificPrefix&quot;: &quot;A String&quot;, # The honorific prefixes, such as `Mrs.` or `Dr.`
             &quot;honorificSuffix&quot;: &quot;A String&quot;, # The honorific suffixes, such as `Jr.`
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the name.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7604,6 +7895,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;middleName&quot;: &quot;A String&quot;, # The middle name(s).
@@ -7619,7 +7911,7 @@
         &quot;nicknames&quot;: [ # The person&#x27;s nicknames.
           { # A person&#x27;s nickname.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the nickname.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7632,6 +7924,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the nickname.
@@ -7641,7 +7934,7 @@
         &quot;occupations&quot;: [ # The person&#x27;s occupations.
           { # A person&#x27;s occupation.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the occupation.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7654,6 +7947,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The occupation; for example, `carpenter`.
@@ -7673,7 +7967,7 @@
             &quot;jobDescription&quot;: &quot;A String&quot;, # The person&#x27;s job description at the organization.
             &quot;location&quot;: &quot;A String&quot;, # The location of the organization office the person works at.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the organization.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7686,6 +7980,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;name&quot;: &quot;A String&quot;, # The name of the organization.
@@ -7705,7 +8000,7 @@
             &quot;canonicalForm&quot;: &quot;A String&quot;, # Output only. The canonicalized [ITU-T E.164](https://law.resource.org/pub/us/cfr/ibr/004/itu-t.E.164.1.2008.pdf) form of the phone number.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the phone number translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the phone number.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7718,6 +8013,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the phone number. The type can be custom or one of these predefined values: * `home` * `work` * `mobile` * `homeFax` * `workFax` * `otherFax` * `pager` * `workMobile` * `workPager` * `main` * `googleVoice` * `other`
@@ -7728,7 +8024,7 @@
           { # A person&#x27;s photo. A picture shown next to the person&#x27;s name to help others recognize the person.
             &quot;default&quot;: True or False, # True if the photo is a default photo; false if the photo is a user-provided photo.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the photo.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7741,6 +8037,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;url&quot;: &quot;A String&quot;, # The URL of the photo. You can change the desired size by appending a query parameter `sz={size}` at the end of the url, where {size} is the size in pixels. Example: https://lh3.googleusercontent.com/-T_wVWLlmg7w/AAAAAAAAAAI/AAAAAAAABa8/00gzXvDBYqw/s100/photo.jpg?sz=50
@@ -7750,7 +8047,7 @@
           { # A person&#x27;s relation to another person.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the relation translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relation.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7763,6 +8060,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;person&quot;: &quot;A String&quot;, # The name of the other person this relation refers to.
@@ -7773,7 +8071,7 @@
           { # **DEPRECATED**: No data will be returned A person&#x27;s relationship interest .
             &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship interest translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship interest.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7786,6 +8084,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The kind of relationship the person is looking for. The value can be custom or one of these predefined values: * `friend` * `date` * `relationship` * `networking`
@@ -7795,7 +8094,7 @@
           { # **DEPRECATED**: No data will be returned A person&#x27;s relationship status.
             &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship status translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship status.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7808,6 +8107,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The relationship status. The value can be custom or one of these predefined values: * `single` * `inARelationship` * `engaged` * `married` * `itsComplicated` * `openRelationship` * `widowed` * `inDomesticPartnership` * `inCivilUnion`
@@ -7817,7 +8117,7 @@
           { # **DEPRECATED**: Please use `person.locations` instead. A person&#x27;s past or current residence.
             &quot;current&quot;: True or False, # True if the residence is the person&#x27;s current residence; false if the residence is a past residence.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the residence.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7830,6 +8130,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The address of the residence.
@@ -7840,7 +8141,7 @@
           { # A person&#x27;s SIP address. Session Initial Protocol addresses are used for VoIP communications to make voice or video calls over the internet.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the SIP address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the SIP address.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7853,6 +8154,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the SIP address. The type can be custom or or one of these predefined values: * `home` * `work` * `mobile` * `other`
@@ -7862,7 +8164,7 @@
         &quot;skills&quot;: [ # The person&#x27;s skills.
           { # A skill that the person has.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the skill.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7875,6 +8177,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The skill; for example, `underwater basket weaving`.
@@ -7883,7 +8186,7 @@
         &quot;taglines&quot;: [ # Output only. **DEPRECATED**: No data will be returned The person&#x27;s taglines.
           { # **DEPRECATED**: No data will be returned A brief one-line description of the person.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the tagline.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7896,6 +8199,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The tagline.
@@ -7905,7 +8209,7 @@
           { # A person&#x27;s associated URLs.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the URL.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7918,6 +8222,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the URL. The type can be custom or one of these predefined values: * `home` * `work` * `blog` * `profile` * `homePage` * `ftp` * `reservations` * `appInstallPage`: website for a Currents application. * `other`
@@ -7928,7 +8233,7 @@
           { # Arbitrary user data that is populated by the end users.
             &quot;key&quot;: &quot;A String&quot;, # The end user specified key of the user defined data.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the user defined data.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -7941,6 +8246,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The end user specified value of the user defined data.
@@ -7964,7 +8270,7 @@
 
 <div class="method">
     <code class="details" id="listDirectoryPeople">listDirectoryPeople(mergeSources=None, pageSize=None, pageToken=None, readMask=None, requestSyncToken=None, sources=None, syncToken=None, x__xgafv=None)</code>
-  <pre>Provides a list of domain profiles and domain contacts in the authenticated user&#x27;s domain directory. When the `sync_token` is specified, resources deleted since the last sync will be returned as a person with `PersonMetadata.deleted` set to true. When the `page_token` or `sync_token` is specified, all other request parameters must match the first call. See example usage at [List the directory people that have changed](/people/v1/directory#list_the_directory_people_that_have_changed).
+  <pre>Provides a list of domain profiles and domain contacts in the authenticated user&#x27;s domain directory. When the `sync_token` is specified, resources deleted since the last sync will be returned as a person with `PersonMetadata.deleted` set to true. When the `page_token` or `sync_token` is specified, all other request parameters must match the first call. Writes may have a propagation delay of several minutes for sync requests. Incremental syncs are not intended for read-after-write use cases. See example usage at [List the directory people that have changed](/people/v1/directory#list_the_directory_people_that_have_changed).
 
 Args:
   mergeSources: string, Optional. Additional data to merge into the directory sources if they are connected through verified join keys such as email addresses or phone numbers. (repeated)
@@ -8003,7 +8309,7 @@
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;formattedValue&quot;: &quot;A String&quot;, # The unstructured value of the address. If this is not set by the user it will be automatically constructed from structured values.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the address.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8016,6 +8322,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;poBox&quot;: &quot;A String&quot;, # The P.O. box of the address.
@@ -8030,7 +8337,7 @@
         { # A person&#x27;s age range.
           &quot;ageRange&quot;: &quot;A String&quot;, # The age range.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the age range.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8043,6 +8350,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
         },
@@ -8051,7 +8359,7 @@
         { # A person&#x27;s short biography.
           &quot;contentType&quot;: &quot;A String&quot;, # The content type of the biography.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the biography.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8064,6 +8372,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The short biography.
@@ -8077,7 +8386,7 @@
             &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
           },
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the birthday.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8090,6 +8399,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;text&quot;: &quot;A String&quot;, # A free-form string representing the user&#x27;s birthday.
@@ -8098,7 +8408,7 @@
       &quot;braggingRights&quot;: [ # **DEPRECATED**: No data will be returned The person&#x27;s bragging rights.
         { # **DEPRECATED**: No data will be returned A person&#x27;s bragging rights.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the bragging rights.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8111,6 +8421,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The bragging rights; for example, `climbed mount everest`.
@@ -8120,7 +8431,7 @@
         { # A person&#x27;s calendar URL.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the calendar URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the calendar URL.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8133,6 +8444,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the calendar URL. The type can be custom or one of these predefined values: * `home` * `freeBusy` * `work`
@@ -8143,7 +8455,7 @@
         { # Arbitrary client data that is populated by clients. Duplicate keys and values are allowed.
           &quot;key&quot;: &quot;A String&quot;, # The client specified key of the client data.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the client data.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8156,6 +8468,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The client specified value of the client data.
@@ -8165,7 +8478,7 @@
         { # A person&#x27;s cover photo. A large image shown on the person&#x27;s profile page that represents who they are or what they care about.
           &quot;default&quot;: True or False, # True if the cover photo is the default cover photo; false if the cover photo is a user-provided cover photo.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the cover photo.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8178,6 +8491,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;url&quot;: &quot;A String&quot;, # The URL of the cover photo.
@@ -8188,7 +8502,7 @@
           &quot;displayName&quot;: &quot;A String&quot;, # The display name of the email.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the email address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the email address.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8201,6 +8515,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the email address. The type can be custom or one of these predefined values: * `home` * `work` * `other`
@@ -8217,7 +8532,7 @@
           },
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the event.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8230,6 +8545,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the event. The type can be custom or one of these predefined values: * `anniversary` * `other`
@@ -8239,7 +8555,7 @@
         { # An identifier from an external entity related to the person.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the external ID.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8252,6 +8568,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the external ID. The type can be custom or one of these predefined values: * `account` * `customer` * `loginId` * `network` * `organization`
@@ -8261,7 +8578,7 @@
       &quot;fileAses&quot;: [ # The person&#x27;s file-ases.
         { # The name that should be used to sort the person in a list.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the file-as.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8274,6 +8591,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The file-as value
@@ -8284,7 +8602,7 @@
           &quot;addressMeAs&quot;: &quot;A String&quot;, # The type of pronouns that should be used to address the person. The value can be custom or one of these predefined values: * `male` * `female` * `other`
           &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the gender translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale. Unspecified or custom value are not localized.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the gender.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8297,6 +8615,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The gender for the person. The gender can be custom or one of these predefined values: * `male` * `female` * `unspecified`
@@ -8307,7 +8626,7 @@
           &quot;formattedProtocol&quot;: &quot;A String&quot;, # Output only. The protocol of the IM client formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the IM client translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the IM client.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8320,6 +8639,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;protocol&quot;: &quot;A String&quot;, # The protocol of the IM client. The protocol can be custom or one of these predefined values: * `aim` * `msn` * `yahoo` * `skype` * `qq` * `googleTalk` * `icq` * `jabber` * `netMeeting`
@@ -8330,7 +8650,7 @@
       &quot;interests&quot;: [ # The person&#x27;s interests.
         { # One of the person&#x27;s interests.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the interest.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8343,6 +8663,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The interest; for example, `stargazing`.
@@ -8351,7 +8672,7 @@
       &quot;locales&quot;: [ # The person&#x27;s locale preferences.
         { # A person&#x27;s locale preference.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the locale.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8364,6 +8685,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The well-formed [IETF BCP 47](https://tools.ietf.org/html/bcp47) language tag representing the locale.
@@ -8377,7 +8699,7 @@
           &quot;floor&quot;: &quot;A String&quot;, # The floor name or number.
           &quot;floorSection&quot;: &quot;A String&quot;, # The floor section in `floor_name`.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the location.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8390,6 +8712,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the location. The type can be custom or one of these predefined values: * `desk` * `grewUp`
@@ -8406,7 +8729,7 @@
             &quot;inViewerDomain&quot;: True or False, # True if the person is in the viewer&#x27;s Google Workspace domain.
           },
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the membership.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8419,6 +8742,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
         },
@@ -8451,7 +8775,7 @@
         { # A person&#x27;s miscellaneous keyword.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the miscellaneous keyword translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the miscellaneous keyword.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8464,6 +8788,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The miscellaneous keyword type.
@@ -8479,7 +8804,7 @@
           &quot;honorificPrefix&quot;: &quot;A String&quot;, # The honorific prefixes, such as `Mrs.` or `Dr.`
           &quot;honorificSuffix&quot;: &quot;A String&quot;, # The honorific suffixes, such as `Jr.`
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the name.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8492,6 +8817,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;middleName&quot;: &quot;A String&quot;, # The middle name(s).
@@ -8507,7 +8833,7 @@
       &quot;nicknames&quot;: [ # The person&#x27;s nicknames.
         { # A person&#x27;s nickname.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the nickname.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8520,6 +8846,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the nickname.
@@ -8529,7 +8856,7 @@
       &quot;occupations&quot;: [ # The person&#x27;s occupations.
         { # A person&#x27;s occupation.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the occupation.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8542,6 +8869,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The occupation; for example, `carpenter`.
@@ -8561,7 +8889,7 @@
           &quot;jobDescription&quot;: &quot;A String&quot;, # The person&#x27;s job description at the organization.
           &quot;location&quot;: &quot;A String&quot;, # The location of the organization office the person works at.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the organization.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8574,6 +8902,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;name&quot;: &quot;A String&quot;, # The name of the organization.
@@ -8593,7 +8922,7 @@
           &quot;canonicalForm&quot;: &quot;A String&quot;, # Output only. The canonicalized [ITU-T E.164](https://law.resource.org/pub/us/cfr/ibr/004/itu-t.E.164.1.2008.pdf) form of the phone number.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the phone number translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the phone number.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8606,6 +8935,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the phone number. The type can be custom or one of these predefined values: * `home` * `work` * `mobile` * `homeFax` * `workFax` * `otherFax` * `pager` * `workMobile` * `workPager` * `main` * `googleVoice` * `other`
@@ -8616,7 +8946,7 @@
         { # A person&#x27;s photo. A picture shown next to the person&#x27;s name to help others recognize the person.
           &quot;default&quot;: True or False, # True if the photo is a default photo; false if the photo is a user-provided photo.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the photo.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8629,6 +8959,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;url&quot;: &quot;A String&quot;, # The URL of the photo. You can change the desired size by appending a query parameter `sz={size}` at the end of the url, where {size} is the size in pixels. Example: https://lh3.googleusercontent.com/-T_wVWLlmg7w/AAAAAAAAAAI/AAAAAAAABa8/00gzXvDBYqw/s100/photo.jpg?sz=50
@@ -8638,7 +8969,7 @@
         { # A person&#x27;s relation to another person.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the relation translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relation.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8651,6 +8982,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;person&quot;: &quot;A String&quot;, # The name of the other person this relation refers to.
@@ -8661,7 +8993,7 @@
         { # **DEPRECATED**: No data will be returned A person&#x27;s relationship interest .
           &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship interest translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship interest.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8674,6 +9006,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The kind of relationship the person is looking for. The value can be custom or one of these predefined values: * `friend` * `date` * `relationship` * `networking`
@@ -8683,7 +9016,7 @@
         { # **DEPRECATED**: No data will be returned A person&#x27;s relationship status.
           &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship status translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship status.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8696,6 +9029,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The relationship status. The value can be custom or one of these predefined values: * `single` * `inARelationship` * `engaged` * `married` * `itsComplicated` * `openRelationship` * `widowed` * `inDomesticPartnership` * `inCivilUnion`
@@ -8705,7 +9039,7 @@
         { # **DEPRECATED**: Please use `person.locations` instead. A person&#x27;s past or current residence.
           &quot;current&quot;: True or False, # True if the residence is the person&#x27;s current residence; false if the residence is a past residence.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the residence.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8718,6 +9052,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The address of the residence.
@@ -8728,7 +9063,7 @@
         { # A person&#x27;s SIP address. Session Initial Protocol addresses are used for VoIP communications to make voice or video calls over the internet.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the SIP address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the SIP address.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8741,6 +9076,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the SIP address. The type can be custom or or one of these predefined values: * `home` * `work` * `mobile` * `other`
@@ -8750,7 +9086,7 @@
       &quot;skills&quot;: [ # The person&#x27;s skills.
         { # A skill that the person has.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the skill.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8763,6 +9099,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The skill; for example, `underwater basket weaving`.
@@ -8771,7 +9108,7 @@
       &quot;taglines&quot;: [ # Output only. **DEPRECATED**: No data will be returned The person&#x27;s taglines.
         { # **DEPRECATED**: No data will be returned A brief one-line description of the person.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the tagline.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8784,6 +9121,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The tagline.
@@ -8793,7 +9131,7 @@
         { # A person&#x27;s associated URLs.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the URL.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8806,6 +9144,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the URL. The type can be custom or one of these predefined values: * `home` * `work` * `blog` * `profile` * `homePage` * `ftp` * `reservations` * `appInstallPage`: website for a Currents application. * `other`
@@ -8816,7 +9155,7 @@
         { # Arbitrary user data that is populated by the end users.
           &quot;key&quot;: &quot;A String&quot;, # The end user specified key of the user defined data.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the user defined data.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8829,6 +9168,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The end user specified value of the user defined data.
@@ -8888,7 +9228,7 @@
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;formattedValue&quot;: &quot;A String&quot;, # The unstructured value of the address. If this is not set by the user it will be automatically constructed from structured values.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the address.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8901,6 +9241,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;poBox&quot;: &quot;A String&quot;, # The P.O. box of the address.
@@ -8915,7 +9256,7 @@
           { # A person&#x27;s age range.
             &quot;ageRange&quot;: &quot;A String&quot;, # The age range.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the age range.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8928,6 +9269,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
           },
@@ -8936,7 +9278,7 @@
           { # A person&#x27;s short biography.
             &quot;contentType&quot;: &quot;A String&quot;, # The content type of the biography.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the biography.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8949,6 +9291,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The short biography.
@@ -8962,7 +9305,7 @@
               &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
             },
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the birthday.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8975,6 +9318,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;text&quot;: &quot;A String&quot;, # A free-form string representing the user&#x27;s birthday.
@@ -8983,7 +9327,7 @@
         &quot;braggingRights&quot;: [ # **DEPRECATED**: No data will be returned The person&#x27;s bragging rights.
           { # **DEPRECATED**: No data will be returned A person&#x27;s bragging rights.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the bragging rights.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -8996,6 +9340,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The bragging rights; for example, `climbed mount everest`.
@@ -9005,7 +9350,7 @@
           { # A person&#x27;s calendar URL.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the calendar URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the calendar URL.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9018,6 +9363,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the calendar URL. The type can be custom or one of these predefined values: * `home` * `freeBusy` * `work`
@@ -9028,7 +9374,7 @@
           { # Arbitrary client data that is populated by clients. Duplicate keys and values are allowed.
             &quot;key&quot;: &quot;A String&quot;, # The client specified key of the client data.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the client data.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9041,6 +9387,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The client specified value of the client data.
@@ -9050,7 +9397,7 @@
           { # A person&#x27;s cover photo. A large image shown on the person&#x27;s profile page that represents who they are or what they care about.
             &quot;default&quot;: True or False, # True if the cover photo is the default cover photo; false if the cover photo is a user-provided cover photo.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the cover photo.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9063,6 +9410,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;url&quot;: &quot;A String&quot;, # The URL of the cover photo.
@@ -9073,7 +9421,7 @@
             &quot;displayName&quot;: &quot;A String&quot;, # The display name of the email.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the email address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the email address.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9086,6 +9434,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the email address. The type can be custom or one of these predefined values: * `home` * `work` * `other`
@@ -9102,7 +9451,7 @@
             },
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the event.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9115,6 +9464,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the event. The type can be custom or one of these predefined values: * `anniversary` * `other`
@@ -9124,7 +9474,7 @@
           { # An identifier from an external entity related to the person.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the external ID.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9137,6 +9487,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the external ID. The type can be custom or one of these predefined values: * `account` * `customer` * `loginId` * `network` * `organization`
@@ -9146,7 +9497,7 @@
         &quot;fileAses&quot;: [ # The person&#x27;s file-ases.
           { # The name that should be used to sort the person in a list.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the file-as.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9159,6 +9510,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The file-as value
@@ -9169,7 +9521,7 @@
             &quot;addressMeAs&quot;: &quot;A String&quot;, # The type of pronouns that should be used to address the person. The value can be custom or one of these predefined values: * `male` * `female` * `other`
             &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the gender translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale. Unspecified or custom value are not localized.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the gender.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9182,6 +9534,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The gender for the person. The gender can be custom or one of these predefined values: * `male` * `female` * `unspecified`
@@ -9192,7 +9545,7 @@
             &quot;formattedProtocol&quot;: &quot;A String&quot;, # Output only. The protocol of the IM client formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the IM client translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the IM client.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9205,6 +9558,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;protocol&quot;: &quot;A String&quot;, # The protocol of the IM client. The protocol can be custom or one of these predefined values: * `aim` * `msn` * `yahoo` * `skype` * `qq` * `googleTalk` * `icq` * `jabber` * `netMeeting`
@@ -9215,7 +9569,7 @@
         &quot;interests&quot;: [ # The person&#x27;s interests.
           { # One of the person&#x27;s interests.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the interest.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9228,6 +9582,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The interest; for example, `stargazing`.
@@ -9236,7 +9591,7 @@
         &quot;locales&quot;: [ # The person&#x27;s locale preferences.
           { # A person&#x27;s locale preference.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the locale.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9249,6 +9604,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The well-formed [IETF BCP 47](https://tools.ietf.org/html/bcp47) language tag representing the locale.
@@ -9262,7 +9618,7 @@
             &quot;floor&quot;: &quot;A String&quot;, # The floor name or number.
             &quot;floorSection&quot;: &quot;A String&quot;, # The floor section in `floor_name`.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the location.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9275,6 +9631,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the location. The type can be custom or one of these predefined values: * `desk` * `grewUp`
@@ -9291,7 +9648,7 @@
               &quot;inViewerDomain&quot;: True or False, # True if the person is in the viewer&#x27;s Google Workspace domain.
             },
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the membership.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9304,6 +9661,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
           },
@@ -9336,7 +9694,7 @@
           { # A person&#x27;s miscellaneous keyword.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the miscellaneous keyword translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the miscellaneous keyword.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9349,6 +9707,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The miscellaneous keyword type.
@@ -9364,7 +9723,7 @@
             &quot;honorificPrefix&quot;: &quot;A String&quot;, # The honorific prefixes, such as `Mrs.` or `Dr.`
             &quot;honorificSuffix&quot;: &quot;A String&quot;, # The honorific suffixes, such as `Jr.`
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the name.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9377,6 +9736,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;middleName&quot;: &quot;A String&quot;, # The middle name(s).
@@ -9392,7 +9752,7 @@
         &quot;nicknames&quot;: [ # The person&#x27;s nicknames.
           { # A person&#x27;s nickname.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the nickname.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9405,6 +9765,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the nickname.
@@ -9414,7 +9775,7 @@
         &quot;occupations&quot;: [ # The person&#x27;s occupations.
           { # A person&#x27;s occupation.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the occupation.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9427,6 +9788,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The occupation; for example, `carpenter`.
@@ -9446,7 +9808,7 @@
             &quot;jobDescription&quot;: &quot;A String&quot;, # The person&#x27;s job description at the organization.
             &quot;location&quot;: &quot;A String&quot;, # The location of the organization office the person works at.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the organization.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9459,6 +9821,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;name&quot;: &quot;A String&quot;, # The name of the organization.
@@ -9478,7 +9841,7 @@
             &quot;canonicalForm&quot;: &quot;A String&quot;, # Output only. The canonicalized [ITU-T E.164](https://law.resource.org/pub/us/cfr/ibr/004/itu-t.E.164.1.2008.pdf) form of the phone number.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the phone number translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the phone number.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9491,6 +9854,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the phone number. The type can be custom or one of these predefined values: * `home` * `work` * `mobile` * `homeFax` * `workFax` * `otherFax` * `pager` * `workMobile` * `workPager` * `main` * `googleVoice` * `other`
@@ -9501,7 +9865,7 @@
           { # A person&#x27;s photo. A picture shown next to the person&#x27;s name to help others recognize the person.
             &quot;default&quot;: True or False, # True if the photo is a default photo; false if the photo is a user-provided photo.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the photo.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9514,6 +9878,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;url&quot;: &quot;A String&quot;, # The URL of the photo. You can change the desired size by appending a query parameter `sz={size}` at the end of the url, where {size} is the size in pixels. Example: https://lh3.googleusercontent.com/-T_wVWLlmg7w/AAAAAAAAAAI/AAAAAAAABa8/00gzXvDBYqw/s100/photo.jpg?sz=50
@@ -9523,7 +9888,7 @@
           { # A person&#x27;s relation to another person.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the relation translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relation.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9536,6 +9901,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;person&quot;: &quot;A String&quot;, # The name of the other person this relation refers to.
@@ -9546,7 +9912,7 @@
           { # **DEPRECATED**: No data will be returned A person&#x27;s relationship interest .
             &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship interest translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship interest.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9559,6 +9925,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The kind of relationship the person is looking for. The value can be custom or one of these predefined values: * `friend` * `date` * `relationship` * `networking`
@@ -9568,7 +9935,7 @@
           { # **DEPRECATED**: No data will be returned A person&#x27;s relationship status.
             &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship status translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship status.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9581,6 +9948,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The relationship status. The value can be custom or one of these predefined values: * `single` * `inARelationship` * `engaged` * `married` * `itsComplicated` * `openRelationship` * `widowed` * `inDomesticPartnership` * `inCivilUnion`
@@ -9590,7 +9958,7 @@
           { # **DEPRECATED**: Please use `person.locations` instead. A person&#x27;s past or current residence.
             &quot;current&quot;: True or False, # True if the residence is the person&#x27;s current residence; false if the residence is a past residence.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the residence.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9603,6 +9971,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The address of the residence.
@@ -9613,7 +9982,7 @@
           { # A person&#x27;s SIP address. Session Initial Protocol addresses are used for VoIP communications to make voice or video calls over the internet.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the SIP address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the SIP address.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9626,6 +9995,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the SIP address. The type can be custom or or one of these predefined values: * `home` * `work` * `mobile` * `other`
@@ -9635,7 +10005,7 @@
         &quot;skills&quot;: [ # The person&#x27;s skills.
           { # A skill that the person has.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the skill.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9648,6 +10018,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The skill; for example, `underwater basket weaving`.
@@ -9656,7 +10027,7 @@
         &quot;taglines&quot;: [ # Output only. **DEPRECATED**: No data will be returned The person&#x27;s taglines.
           { # **DEPRECATED**: No data will be returned A brief one-line description of the person.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the tagline.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9669,6 +10040,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The tagline.
@@ -9678,7 +10050,7 @@
           { # A person&#x27;s associated URLs.
             &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the URL.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9691,6 +10063,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;type&quot;: &quot;A String&quot;, # The type of the URL. The type can be custom or one of these predefined values: * `home` * `work` * `blog` * `profile` * `homePage` * `ftp` * `reservations` * `appInstallPage`: website for a Currents application. * `other`
@@ -9701,7 +10074,7 @@
           { # Arbitrary user data that is populated by the end users.
             &quot;key&quot;: &quot;A String&quot;, # The end user specified key of the user defined data.
             &quot;metadata&quot;: { # Metadata about a field. # Metadata about the user defined data.
-              &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+              &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
               &quot;source&quot;: { # The source of a field. # The source of the field.
                 &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
                 &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9714,6 +10087,7 @@
                 &quot;type&quot;: &quot;A String&quot;, # The source type.
                 &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
               },
+              &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
               &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
             },
             &quot;value&quot;: &quot;A String&quot;, # The end user specified value of the user defined data.
@@ -9764,7 +10138,7 @@
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;formattedValue&quot;: &quot;A String&quot;, # The unstructured value of the address. If this is not set by the user it will be automatically constructed from structured values.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the address.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9777,6 +10151,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;poBox&quot;: &quot;A String&quot;, # The P.O. box of the address.
@@ -9791,7 +10166,7 @@
         { # A person&#x27;s age range.
           &quot;ageRange&quot;: &quot;A String&quot;, # The age range.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the age range.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9804,6 +10179,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
         },
@@ -9812,7 +10188,7 @@
         { # A person&#x27;s short biography.
           &quot;contentType&quot;: &quot;A String&quot;, # The content type of the biography.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the biography.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9825,6 +10201,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The short biography.
@@ -9838,7 +10215,7 @@
             &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
           },
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the birthday.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9851,6 +10228,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;text&quot;: &quot;A String&quot;, # A free-form string representing the user&#x27;s birthday.
@@ -9859,7 +10237,7 @@
       &quot;braggingRights&quot;: [ # **DEPRECATED**: No data will be returned The person&#x27;s bragging rights.
         { # **DEPRECATED**: No data will be returned A person&#x27;s bragging rights.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the bragging rights.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9872,6 +10250,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The bragging rights; for example, `climbed mount everest`.
@@ -9881,7 +10260,7 @@
         { # A person&#x27;s calendar URL.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the calendar URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the calendar URL.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9894,6 +10273,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the calendar URL. The type can be custom or one of these predefined values: * `home` * `freeBusy` * `work`
@@ -9904,7 +10284,7 @@
         { # Arbitrary client data that is populated by clients. Duplicate keys and values are allowed.
           &quot;key&quot;: &quot;A String&quot;, # The client specified key of the client data.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the client data.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9917,6 +10297,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The client specified value of the client data.
@@ -9926,7 +10307,7 @@
         { # A person&#x27;s cover photo. A large image shown on the person&#x27;s profile page that represents who they are or what they care about.
           &quot;default&quot;: True or False, # True if the cover photo is the default cover photo; false if the cover photo is a user-provided cover photo.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the cover photo.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9939,6 +10320,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;url&quot;: &quot;A String&quot;, # The URL of the cover photo.
@@ -9949,7 +10331,7 @@
           &quot;displayName&quot;: &quot;A String&quot;, # The display name of the email.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the email address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the email address.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9962,6 +10344,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the email address. The type can be custom or one of these predefined values: * `home` * `work` * `other`
@@ -9978,7 +10361,7 @@
           },
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the event.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -9991,6 +10374,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the event. The type can be custom or one of these predefined values: * `anniversary` * `other`
@@ -10000,7 +10384,7 @@
         { # An identifier from an external entity related to the person.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the external ID.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10013,6 +10397,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the external ID. The type can be custom or one of these predefined values: * `account` * `customer` * `loginId` * `network` * `organization`
@@ -10022,7 +10407,7 @@
       &quot;fileAses&quot;: [ # The person&#x27;s file-ases.
         { # The name that should be used to sort the person in a list.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the file-as.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10035,6 +10420,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The file-as value
@@ -10045,7 +10431,7 @@
           &quot;addressMeAs&quot;: &quot;A String&quot;, # The type of pronouns that should be used to address the person. The value can be custom or one of these predefined values: * `male` * `female` * `other`
           &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the gender translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale. Unspecified or custom value are not localized.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the gender.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10058,6 +10444,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The gender for the person. The gender can be custom or one of these predefined values: * `male` * `female` * `unspecified`
@@ -10068,7 +10455,7 @@
           &quot;formattedProtocol&quot;: &quot;A String&quot;, # Output only. The protocol of the IM client formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the IM client translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the IM client.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10081,6 +10468,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;protocol&quot;: &quot;A String&quot;, # The protocol of the IM client. The protocol can be custom or one of these predefined values: * `aim` * `msn` * `yahoo` * `skype` * `qq` * `googleTalk` * `icq` * `jabber` * `netMeeting`
@@ -10091,7 +10479,7 @@
       &quot;interests&quot;: [ # The person&#x27;s interests.
         { # One of the person&#x27;s interests.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the interest.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10104,6 +10492,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The interest; for example, `stargazing`.
@@ -10112,7 +10501,7 @@
       &quot;locales&quot;: [ # The person&#x27;s locale preferences.
         { # A person&#x27;s locale preference.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the locale.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10125,6 +10514,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The well-formed [IETF BCP 47](https://tools.ietf.org/html/bcp47) language tag representing the locale.
@@ -10138,7 +10528,7 @@
           &quot;floor&quot;: &quot;A String&quot;, # The floor name or number.
           &quot;floorSection&quot;: &quot;A String&quot;, # The floor section in `floor_name`.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the location.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10151,6 +10541,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the location. The type can be custom or one of these predefined values: * `desk` * `grewUp`
@@ -10167,7 +10558,7 @@
             &quot;inViewerDomain&quot;: True or False, # True if the person is in the viewer&#x27;s Google Workspace domain.
           },
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the membership.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10180,6 +10571,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
         },
@@ -10212,7 +10604,7 @@
         { # A person&#x27;s miscellaneous keyword.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the miscellaneous keyword translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the miscellaneous keyword.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10225,6 +10617,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The miscellaneous keyword type.
@@ -10240,7 +10633,7 @@
           &quot;honorificPrefix&quot;: &quot;A String&quot;, # The honorific prefixes, such as `Mrs.` or `Dr.`
           &quot;honorificSuffix&quot;: &quot;A String&quot;, # The honorific suffixes, such as `Jr.`
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the name.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10253,6 +10646,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;middleName&quot;: &quot;A String&quot;, # The middle name(s).
@@ -10268,7 +10662,7 @@
       &quot;nicknames&quot;: [ # The person&#x27;s nicknames.
         { # A person&#x27;s nickname.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the nickname.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10281,6 +10675,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the nickname.
@@ -10290,7 +10685,7 @@
       &quot;occupations&quot;: [ # The person&#x27;s occupations.
         { # A person&#x27;s occupation.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the occupation.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10303,6 +10698,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The occupation; for example, `carpenter`.
@@ -10322,7 +10718,7 @@
           &quot;jobDescription&quot;: &quot;A String&quot;, # The person&#x27;s job description at the organization.
           &quot;location&quot;: &quot;A String&quot;, # The location of the organization office the person works at.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the organization.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10335,6 +10731,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;name&quot;: &quot;A String&quot;, # The name of the organization.
@@ -10354,7 +10751,7 @@
           &quot;canonicalForm&quot;: &quot;A String&quot;, # Output only. The canonicalized [ITU-T E.164](https://law.resource.org/pub/us/cfr/ibr/004/itu-t.E.164.1.2008.pdf) form of the phone number.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the phone number translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the phone number.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10367,6 +10764,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the phone number. The type can be custom or one of these predefined values: * `home` * `work` * `mobile` * `homeFax` * `workFax` * `otherFax` * `pager` * `workMobile` * `workPager` * `main` * `googleVoice` * `other`
@@ -10377,7 +10775,7 @@
         { # A person&#x27;s photo. A picture shown next to the person&#x27;s name to help others recognize the person.
           &quot;default&quot;: True or False, # True if the photo is a default photo; false if the photo is a user-provided photo.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the photo.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10390,6 +10788,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;url&quot;: &quot;A String&quot;, # The URL of the photo. You can change the desired size by appending a query parameter `sz={size}` at the end of the url, where {size} is the size in pixels. Example: https://lh3.googleusercontent.com/-T_wVWLlmg7w/AAAAAAAAAAI/AAAAAAAABa8/00gzXvDBYqw/s100/photo.jpg?sz=50
@@ -10399,7 +10798,7 @@
         { # A person&#x27;s relation to another person.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the relation translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relation.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10412,6 +10811,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;person&quot;: &quot;A String&quot;, # The name of the other person this relation refers to.
@@ -10422,7 +10822,7 @@
         { # **DEPRECATED**: No data will be returned A person&#x27;s relationship interest .
           &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship interest translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship interest.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10435,6 +10835,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The kind of relationship the person is looking for. The value can be custom or one of these predefined values: * `friend` * `date` * `relationship` * `networking`
@@ -10444,7 +10845,7 @@
         { # **DEPRECATED**: No data will be returned A person&#x27;s relationship status.
           &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship status translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship status.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10457,6 +10858,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The relationship status. The value can be custom or one of these predefined values: * `single` * `inARelationship` * `engaged` * `married` * `itsComplicated` * `openRelationship` * `widowed` * `inDomesticPartnership` * `inCivilUnion`
@@ -10466,7 +10868,7 @@
         { # **DEPRECATED**: Please use `person.locations` instead. A person&#x27;s past or current residence.
           &quot;current&quot;: True or False, # True if the residence is the person&#x27;s current residence; false if the residence is a past residence.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the residence.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10479,6 +10881,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The address of the residence.
@@ -10489,7 +10892,7 @@
         { # A person&#x27;s SIP address. Session Initial Protocol addresses are used for VoIP communications to make voice or video calls over the internet.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the SIP address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the SIP address.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10502,6 +10905,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the SIP address. The type can be custom or or one of these predefined values: * `home` * `work` * `mobile` * `other`
@@ -10511,7 +10915,7 @@
       &quot;skills&quot;: [ # The person&#x27;s skills.
         { # A skill that the person has.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the skill.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10524,6 +10928,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The skill; for example, `underwater basket weaving`.
@@ -10532,7 +10937,7 @@
       &quot;taglines&quot;: [ # Output only. **DEPRECATED**: No data will be returned The person&#x27;s taglines.
         { # **DEPRECATED**: No data will be returned A brief one-line description of the person.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the tagline.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10545,6 +10950,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The tagline.
@@ -10554,7 +10960,7 @@
         { # A person&#x27;s associated URLs.
           &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the URL.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10567,6 +10973,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;type&quot;: &quot;A String&quot;, # The type of the URL. The type can be custom or one of these predefined values: * `home` * `work` * `blog` * `profile` * `homePage` * `ftp` * `reservations` * `appInstallPage`: website for a Currents application. * `other`
@@ -10577,7 +10984,7 @@
         { # Arbitrary user data that is populated by the end users.
           &quot;key&quot;: &quot;A String&quot;, # The end user specified key of the user defined data.
           &quot;metadata&quot;: { # Metadata about a field. # Metadata about the user defined data.
-            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+            &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
             &quot;source&quot;: { # The source of a field. # The source of the field.
               &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
               &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10590,6 +10997,7 @@
               &quot;type&quot;: &quot;A String&quot;, # The source type.
               &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
             },
+            &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
             &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
           },
           &quot;value&quot;: &quot;A String&quot;, # The end user specified value of the user defined data.
@@ -10634,7 +11042,7 @@
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;formattedValue&quot;: &quot;A String&quot;, # The unstructured value of the address. If this is not set by the user it will be automatically constructed from structured values.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the address.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10647,6 +11055,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;poBox&quot;: &quot;A String&quot;, # The P.O. box of the address.
@@ -10661,7 +11070,7 @@
     { # A person&#x27;s age range.
       &quot;ageRange&quot;: &quot;A String&quot;, # The age range.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the age range.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10674,6 +11083,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
     },
@@ -10682,7 +11092,7 @@
     { # A person&#x27;s short biography.
       &quot;contentType&quot;: &quot;A String&quot;, # The content type of the biography.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the biography.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10695,6 +11105,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The short biography.
@@ -10708,7 +11119,7 @@
         &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
       },
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the birthday.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10721,6 +11132,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;text&quot;: &quot;A String&quot;, # A free-form string representing the user&#x27;s birthday.
@@ -10729,7 +11141,7 @@
   &quot;braggingRights&quot;: [ # **DEPRECATED**: No data will be returned The person&#x27;s bragging rights.
     { # **DEPRECATED**: No data will be returned A person&#x27;s bragging rights.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the bragging rights.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10742,6 +11154,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The bragging rights; for example, `climbed mount everest`.
@@ -10751,7 +11164,7 @@
     { # A person&#x27;s calendar URL.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the calendar URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the calendar URL.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10764,6 +11177,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the calendar URL. The type can be custom or one of these predefined values: * `home` * `freeBusy` * `work`
@@ -10774,7 +11188,7 @@
     { # Arbitrary client data that is populated by clients. Duplicate keys and values are allowed.
       &quot;key&quot;: &quot;A String&quot;, # The client specified key of the client data.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the client data.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10787,6 +11201,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The client specified value of the client data.
@@ -10796,7 +11211,7 @@
     { # A person&#x27;s cover photo. A large image shown on the person&#x27;s profile page that represents who they are or what they care about.
       &quot;default&quot;: True or False, # True if the cover photo is the default cover photo; false if the cover photo is a user-provided cover photo.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the cover photo.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10809,6 +11224,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;url&quot;: &quot;A String&quot;, # The URL of the cover photo.
@@ -10819,7 +11235,7 @@
       &quot;displayName&quot;: &quot;A String&quot;, # The display name of the email.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the email address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the email address.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10832,6 +11248,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the email address. The type can be custom or one of these predefined values: * `home` * `work` * `other`
@@ -10848,7 +11265,7 @@
       },
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the event.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10861,6 +11278,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the event. The type can be custom or one of these predefined values: * `anniversary` * `other`
@@ -10870,7 +11288,7 @@
     { # An identifier from an external entity related to the person.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the external ID.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10883,6 +11301,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the external ID. The type can be custom or one of these predefined values: * `account` * `customer` * `loginId` * `network` * `organization`
@@ -10892,7 +11311,7 @@
   &quot;fileAses&quot;: [ # The person&#x27;s file-ases.
     { # The name that should be used to sort the person in a list.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the file-as.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10905,6 +11324,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The file-as value
@@ -10915,7 +11335,7 @@
       &quot;addressMeAs&quot;: &quot;A String&quot;, # The type of pronouns that should be used to address the person. The value can be custom or one of these predefined values: * `male` * `female` * `other`
       &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the gender translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale. Unspecified or custom value are not localized.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the gender.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10928,6 +11348,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The gender for the person. The gender can be custom or one of these predefined values: * `male` * `female` * `unspecified`
@@ -10938,7 +11359,7 @@
       &quot;formattedProtocol&quot;: &quot;A String&quot;, # Output only. The protocol of the IM client formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the IM client translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the IM client.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10951,6 +11372,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;protocol&quot;: &quot;A String&quot;, # The protocol of the IM client. The protocol can be custom or one of these predefined values: * `aim` * `msn` * `yahoo` * `skype` * `qq` * `googleTalk` * `icq` * `jabber` * `netMeeting`
@@ -10961,7 +11383,7 @@
   &quot;interests&quot;: [ # The person&#x27;s interests.
     { # One of the person&#x27;s interests.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the interest.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10974,6 +11396,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The interest; for example, `stargazing`.
@@ -10982,7 +11405,7 @@
   &quot;locales&quot;: [ # The person&#x27;s locale preferences.
     { # A person&#x27;s locale preference.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the locale.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -10995,6 +11418,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The well-formed [IETF BCP 47](https://tools.ietf.org/html/bcp47) language tag representing the locale.
@@ -11008,7 +11432,7 @@
       &quot;floor&quot;: &quot;A String&quot;, # The floor name or number.
       &quot;floorSection&quot;: &quot;A String&quot;, # The floor section in `floor_name`.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the location.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11021,6 +11445,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the location. The type can be custom or one of these predefined values: * `desk` * `grewUp`
@@ -11037,7 +11462,7 @@
         &quot;inViewerDomain&quot;: True or False, # True if the person is in the viewer&#x27;s Google Workspace domain.
       },
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the membership.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11050,6 +11475,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
     },
@@ -11082,7 +11508,7 @@
     { # A person&#x27;s miscellaneous keyword.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the miscellaneous keyword translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the miscellaneous keyword.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11095,6 +11521,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The miscellaneous keyword type.
@@ -11110,7 +11537,7 @@
       &quot;honorificPrefix&quot;: &quot;A String&quot;, # The honorific prefixes, such as `Mrs.` or `Dr.`
       &quot;honorificSuffix&quot;: &quot;A String&quot;, # The honorific suffixes, such as `Jr.`
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the name.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11123,6 +11550,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;middleName&quot;: &quot;A String&quot;, # The middle name(s).
@@ -11138,7 +11566,7 @@
   &quot;nicknames&quot;: [ # The person&#x27;s nicknames.
     { # A person&#x27;s nickname.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the nickname.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11151,6 +11579,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the nickname.
@@ -11160,7 +11589,7 @@
   &quot;occupations&quot;: [ # The person&#x27;s occupations.
     { # A person&#x27;s occupation.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the occupation.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11173,6 +11602,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The occupation; for example, `carpenter`.
@@ -11192,7 +11622,7 @@
       &quot;jobDescription&quot;: &quot;A String&quot;, # The person&#x27;s job description at the organization.
       &quot;location&quot;: &quot;A String&quot;, # The location of the organization office the person works at.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the organization.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11205,6 +11635,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;name&quot;: &quot;A String&quot;, # The name of the organization.
@@ -11224,7 +11655,7 @@
       &quot;canonicalForm&quot;: &quot;A String&quot;, # Output only. The canonicalized [ITU-T E.164](https://law.resource.org/pub/us/cfr/ibr/004/itu-t.E.164.1.2008.pdf) form of the phone number.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the phone number translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the phone number.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11237,6 +11668,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the phone number. The type can be custom or one of these predefined values: * `home` * `work` * `mobile` * `homeFax` * `workFax` * `otherFax` * `pager` * `workMobile` * `workPager` * `main` * `googleVoice` * `other`
@@ -11247,7 +11679,7 @@
     { # A person&#x27;s photo. A picture shown next to the person&#x27;s name to help others recognize the person.
       &quot;default&quot;: True or False, # True if the photo is a default photo; false if the photo is a user-provided photo.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the photo.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11260,6 +11692,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;url&quot;: &quot;A String&quot;, # The URL of the photo. You can change the desired size by appending a query parameter `sz={size}` at the end of the url, where {size} is the size in pixels. Example: https://lh3.googleusercontent.com/-T_wVWLlmg7w/AAAAAAAAAAI/AAAAAAAABa8/00gzXvDBYqw/s100/photo.jpg?sz=50
@@ -11269,7 +11702,7 @@
     { # A person&#x27;s relation to another person.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the relation translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relation.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11282,6 +11715,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;person&quot;: &quot;A String&quot;, # The name of the other person this relation refers to.
@@ -11292,7 +11726,7 @@
     { # **DEPRECATED**: No data will be returned A person&#x27;s relationship interest .
       &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship interest translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship interest.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11305,6 +11739,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The kind of relationship the person is looking for. The value can be custom or one of these predefined values: * `friend` * `date` * `relationship` * `networking`
@@ -11314,7 +11749,7 @@
     { # **DEPRECATED**: No data will be returned A person&#x27;s relationship status.
       &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship status translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship status.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11327,6 +11762,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The relationship status. The value can be custom or one of these predefined values: * `single` * `inARelationship` * `engaged` * `married` * `itsComplicated` * `openRelationship` * `widowed` * `inDomesticPartnership` * `inCivilUnion`
@@ -11336,7 +11772,7 @@
     { # **DEPRECATED**: Please use `person.locations` instead. A person&#x27;s past or current residence.
       &quot;current&quot;: True or False, # True if the residence is the person&#x27;s current residence; false if the residence is a past residence.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the residence.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11349,6 +11785,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The address of the residence.
@@ -11359,7 +11796,7 @@
     { # A person&#x27;s SIP address. Session Initial Protocol addresses are used for VoIP communications to make voice or video calls over the internet.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the SIP address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the SIP address.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11372,6 +11809,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the SIP address. The type can be custom or or one of these predefined values: * `home` * `work` * `mobile` * `other`
@@ -11381,7 +11819,7 @@
   &quot;skills&quot;: [ # The person&#x27;s skills.
     { # A skill that the person has.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the skill.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11394,6 +11832,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The skill; for example, `underwater basket weaving`.
@@ -11402,7 +11841,7 @@
   &quot;taglines&quot;: [ # Output only. **DEPRECATED**: No data will be returned The person&#x27;s taglines.
     { # **DEPRECATED**: No data will be returned A brief one-line description of the person.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the tagline.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11415,6 +11854,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The tagline.
@@ -11424,7 +11864,7 @@
     { # A person&#x27;s associated URLs.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the URL.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11437,6 +11877,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the URL. The type can be custom or one of these predefined values: * `home` * `work` * `blog` * `profile` * `homePage` * `ftp` * `reservations` * `appInstallPage`: website for a Currents application. * `other`
@@ -11447,7 +11888,7 @@
     { # Arbitrary user data that is populated by the end users.
       &quot;key&quot;: &quot;A String&quot;, # The end user specified key of the user defined data.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the user defined data.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11460,6 +11901,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The end user specified value of the user defined data.
@@ -11493,7 +11935,7 @@
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;formattedValue&quot;: &quot;A String&quot;, # The unstructured value of the address. If this is not set by the user it will be automatically constructed from structured values.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the address.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11506,6 +11948,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;poBox&quot;: &quot;A String&quot;, # The P.O. box of the address.
@@ -11520,7 +11963,7 @@
     { # A person&#x27;s age range.
       &quot;ageRange&quot;: &quot;A String&quot;, # The age range.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the age range.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11533,6 +11976,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
     },
@@ -11541,7 +11985,7 @@
     { # A person&#x27;s short biography.
       &quot;contentType&quot;: &quot;A String&quot;, # The content type of the biography.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the biography.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11554,6 +11998,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The short biography.
@@ -11567,7 +12012,7 @@
         &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
       },
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the birthday.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11580,6 +12025,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;text&quot;: &quot;A String&quot;, # A free-form string representing the user&#x27;s birthday.
@@ -11588,7 +12034,7 @@
   &quot;braggingRights&quot;: [ # **DEPRECATED**: No data will be returned The person&#x27;s bragging rights.
     { # **DEPRECATED**: No data will be returned A person&#x27;s bragging rights.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the bragging rights.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11601,6 +12047,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The bragging rights; for example, `climbed mount everest`.
@@ -11610,7 +12057,7 @@
     { # A person&#x27;s calendar URL.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the calendar URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the calendar URL.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11623,6 +12070,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the calendar URL. The type can be custom or one of these predefined values: * `home` * `freeBusy` * `work`
@@ -11633,7 +12081,7 @@
     { # Arbitrary client data that is populated by clients. Duplicate keys and values are allowed.
       &quot;key&quot;: &quot;A String&quot;, # The client specified key of the client data.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the client data.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11646,6 +12094,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The client specified value of the client data.
@@ -11655,7 +12104,7 @@
     { # A person&#x27;s cover photo. A large image shown on the person&#x27;s profile page that represents who they are or what they care about.
       &quot;default&quot;: True or False, # True if the cover photo is the default cover photo; false if the cover photo is a user-provided cover photo.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the cover photo.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11668,6 +12117,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;url&quot;: &quot;A String&quot;, # The URL of the cover photo.
@@ -11678,7 +12128,7 @@
       &quot;displayName&quot;: &quot;A String&quot;, # The display name of the email.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the email address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the email address.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11691,6 +12141,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the email address. The type can be custom or one of these predefined values: * `home` * `work` * `other`
@@ -11707,7 +12158,7 @@
       },
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the event.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11720,6 +12171,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the event. The type can be custom or one of these predefined values: * `anniversary` * `other`
@@ -11729,7 +12181,7 @@
     { # An identifier from an external entity related to the person.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the external ID.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11742,6 +12194,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the external ID. The type can be custom or one of these predefined values: * `account` * `customer` * `loginId` * `network` * `organization`
@@ -11751,7 +12204,7 @@
   &quot;fileAses&quot;: [ # The person&#x27;s file-ases.
     { # The name that should be used to sort the person in a list.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the file-as.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11764,6 +12217,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The file-as value
@@ -11774,7 +12228,7 @@
       &quot;addressMeAs&quot;: &quot;A String&quot;, # The type of pronouns that should be used to address the person. The value can be custom or one of these predefined values: * `male` * `female` * `other`
       &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the gender translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale. Unspecified or custom value are not localized.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the gender.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11787,6 +12241,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The gender for the person. The gender can be custom or one of these predefined values: * `male` * `female` * `unspecified`
@@ -11797,7 +12252,7 @@
       &quot;formattedProtocol&quot;: &quot;A String&quot;, # Output only. The protocol of the IM client formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the IM client translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the IM client.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11810,6 +12265,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;protocol&quot;: &quot;A String&quot;, # The protocol of the IM client. The protocol can be custom or one of these predefined values: * `aim` * `msn` * `yahoo` * `skype` * `qq` * `googleTalk` * `icq` * `jabber` * `netMeeting`
@@ -11820,7 +12276,7 @@
   &quot;interests&quot;: [ # The person&#x27;s interests.
     { # One of the person&#x27;s interests.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the interest.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11833,6 +12289,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The interest; for example, `stargazing`.
@@ -11841,7 +12298,7 @@
   &quot;locales&quot;: [ # The person&#x27;s locale preferences.
     { # A person&#x27;s locale preference.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the locale.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11854,6 +12311,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The well-formed [IETF BCP 47](https://tools.ietf.org/html/bcp47) language tag representing the locale.
@@ -11867,7 +12325,7 @@
       &quot;floor&quot;: &quot;A String&quot;, # The floor name or number.
       &quot;floorSection&quot;: &quot;A String&quot;, # The floor section in `floor_name`.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the location.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11880,6 +12338,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the location. The type can be custom or one of these predefined values: * `desk` * `grewUp`
@@ -11896,7 +12355,7 @@
         &quot;inViewerDomain&quot;: True or False, # True if the person is in the viewer&#x27;s Google Workspace domain.
       },
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the membership.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11909,6 +12368,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
     },
@@ -11941,7 +12401,7 @@
     { # A person&#x27;s miscellaneous keyword.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the miscellaneous keyword translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the miscellaneous keyword.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11954,6 +12414,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The miscellaneous keyword type.
@@ -11969,7 +12430,7 @@
       &quot;honorificPrefix&quot;: &quot;A String&quot;, # The honorific prefixes, such as `Mrs.` or `Dr.`
       &quot;honorificSuffix&quot;: &quot;A String&quot;, # The honorific suffixes, such as `Jr.`
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the name.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -11982,6 +12443,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;middleName&quot;: &quot;A String&quot;, # The middle name(s).
@@ -11997,7 +12459,7 @@
   &quot;nicknames&quot;: [ # The person&#x27;s nicknames.
     { # A person&#x27;s nickname.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the nickname.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12010,6 +12472,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the nickname.
@@ -12019,7 +12482,7 @@
   &quot;occupations&quot;: [ # The person&#x27;s occupations.
     { # A person&#x27;s occupation.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the occupation.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12032,6 +12495,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The occupation; for example, `carpenter`.
@@ -12051,7 +12515,7 @@
       &quot;jobDescription&quot;: &quot;A String&quot;, # The person&#x27;s job description at the organization.
       &quot;location&quot;: &quot;A String&quot;, # The location of the organization office the person works at.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the organization.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12064,6 +12528,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;name&quot;: &quot;A String&quot;, # The name of the organization.
@@ -12083,7 +12548,7 @@
       &quot;canonicalForm&quot;: &quot;A String&quot;, # Output only. The canonicalized [ITU-T E.164](https://law.resource.org/pub/us/cfr/ibr/004/itu-t.E.164.1.2008.pdf) form of the phone number.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the phone number translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the phone number.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12096,6 +12561,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the phone number. The type can be custom or one of these predefined values: * `home` * `work` * `mobile` * `homeFax` * `workFax` * `otherFax` * `pager` * `workMobile` * `workPager` * `main` * `googleVoice` * `other`
@@ -12106,7 +12572,7 @@
     { # A person&#x27;s photo. A picture shown next to the person&#x27;s name to help others recognize the person.
       &quot;default&quot;: True or False, # True if the photo is a default photo; false if the photo is a user-provided photo.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the photo.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12119,6 +12585,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;url&quot;: &quot;A String&quot;, # The URL of the photo. You can change the desired size by appending a query parameter `sz={size}` at the end of the url, where {size} is the size in pixels. Example: https://lh3.googleusercontent.com/-T_wVWLlmg7w/AAAAAAAAAAI/AAAAAAAABa8/00gzXvDBYqw/s100/photo.jpg?sz=50
@@ -12128,7 +12595,7 @@
     { # A person&#x27;s relation to another person.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the relation translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relation.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12141,6 +12608,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;person&quot;: &quot;A String&quot;, # The name of the other person this relation refers to.
@@ -12151,7 +12619,7 @@
     { # **DEPRECATED**: No data will be returned A person&#x27;s relationship interest .
       &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship interest translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship interest.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12164,6 +12632,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The kind of relationship the person is looking for. The value can be custom or one of these predefined values: * `friend` * `date` * `relationship` * `networking`
@@ -12173,7 +12642,7 @@
     { # **DEPRECATED**: No data will be returned A person&#x27;s relationship status.
       &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship status translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship status.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12186,6 +12655,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The relationship status. The value can be custom or one of these predefined values: * `single` * `inARelationship` * `engaged` * `married` * `itsComplicated` * `openRelationship` * `widowed` * `inDomesticPartnership` * `inCivilUnion`
@@ -12195,7 +12665,7 @@
     { # **DEPRECATED**: Please use `person.locations` instead. A person&#x27;s past or current residence.
       &quot;current&quot;: True or False, # True if the residence is the person&#x27;s current residence; false if the residence is a past residence.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the residence.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12208,6 +12678,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The address of the residence.
@@ -12218,7 +12689,7 @@
     { # A person&#x27;s SIP address. Session Initial Protocol addresses are used for VoIP communications to make voice or video calls over the internet.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the SIP address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the SIP address.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12231,6 +12702,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the SIP address. The type can be custom or or one of these predefined values: * `home` * `work` * `mobile` * `other`
@@ -12240,7 +12712,7 @@
   &quot;skills&quot;: [ # The person&#x27;s skills.
     { # A skill that the person has.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the skill.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12253,6 +12725,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The skill; for example, `underwater basket weaving`.
@@ -12261,7 +12734,7 @@
   &quot;taglines&quot;: [ # Output only. **DEPRECATED**: No data will be returned The person&#x27;s taglines.
     { # **DEPRECATED**: No data will be returned A brief one-line description of the person.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the tagline.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12274,6 +12747,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The tagline.
@@ -12283,7 +12757,7 @@
     { # A person&#x27;s associated URLs.
       &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the URL.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12296,6 +12770,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;type&quot;: &quot;A String&quot;, # The type of the URL. The type can be custom or one of these predefined values: * `home` * `work` * `blog` * `profile` * `homePage` * `ftp` * `reservations` * `appInstallPage`: website for a Currents application. * `other`
@@ -12306,7 +12781,7 @@
     { # Arbitrary user data that is populated by the end users.
       &quot;key&quot;: &quot;A String&quot;, # The end user specified key of the user defined data.
       &quot;metadata&quot;: { # Metadata about a field. # Metadata about the user defined data.
-        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+        &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
         &quot;source&quot;: { # The source of a field. # The source of the field.
           &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
           &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12319,6 +12794,7 @@
           &quot;type&quot;: &quot;A String&quot;, # The source type.
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
         },
+        &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
         &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
       },
       &quot;value&quot;: &quot;A String&quot;, # The end user specified value of the user defined data.
@@ -12363,7 +12839,7 @@
         &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
         &quot;formattedValue&quot;: &quot;A String&quot;, # The unstructured value of the address. If this is not set by the user it will be automatically constructed from structured values.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the address.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12376,6 +12852,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;poBox&quot;: &quot;A String&quot;, # The P.O. box of the address.
@@ -12390,7 +12867,7 @@
       { # A person&#x27;s age range.
         &quot;ageRange&quot;: &quot;A String&quot;, # The age range.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the age range.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12403,6 +12880,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
       },
@@ -12411,7 +12889,7 @@
       { # A person&#x27;s short biography.
         &quot;contentType&quot;: &quot;A String&quot;, # The content type of the biography.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the biography.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12424,6 +12902,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;value&quot;: &quot;A String&quot;, # The short biography.
@@ -12437,7 +12916,7 @@
           &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
         },
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the birthday.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12450,6 +12929,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;text&quot;: &quot;A String&quot;, # A free-form string representing the user&#x27;s birthday.
@@ -12458,7 +12938,7 @@
     &quot;braggingRights&quot;: [ # **DEPRECATED**: No data will be returned The person&#x27;s bragging rights.
       { # **DEPRECATED**: No data will be returned A person&#x27;s bragging rights.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the bragging rights.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12471,6 +12951,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;value&quot;: &quot;A String&quot;, # The bragging rights; for example, `climbed mount everest`.
@@ -12480,7 +12961,7 @@
       { # A person&#x27;s calendar URL.
         &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the calendar URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the calendar URL.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12493,6 +12974,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;type&quot;: &quot;A String&quot;, # The type of the calendar URL. The type can be custom or one of these predefined values: * `home` * `freeBusy` * `work`
@@ -12503,7 +12985,7 @@
       { # Arbitrary client data that is populated by clients. Duplicate keys and values are allowed.
         &quot;key&quot;: &quot;A String&quot;, # The client specified key of the client data.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the client data.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12516,6 +12998,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;value&quot;: &quot;A String&quot;, # The client specified value of the client data.
@@ -12525,7 +13008,7 @@
       { # A person&#x27;s cover photo. A large image shown on the person&#x27;s profile page that represents who they are or what they care about.
         &quot;default&quot;: True or False, # True if the cover photo is the default cover photo; false if the cover photo is a user-provided cover photo.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the cover photo.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12538,6 +13021,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;url&quot;: &quot;A String&quot;, # The URL of the cover photo.
@@ -12548,7 +13032,7 @@
         &quot;displayName&quot;: &quot;A String&quot;, # The display name of the email.
         &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the email address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the email address.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12561,6 +13045,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;type&quot;: &quot;A String&quot;, # The type of the email address. The type can be custom or one of these predefined values: * `home` * `work` * `other`
@@ -12577,7 +13062,7 @@
         },
         &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the event.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12590,6 +13075,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;type&quot;: &quot;A String&quot;, # The type of the event. The type can be custom or one of these predefined values: * `anniversary` * `other`
@@ -12599,7 +13085,7 @@
       { # An identifier from an external entity related to the person.
         &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the external ID.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12612,6 +13098,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;type&quot;: &quot;A String&quot;, # The type of the external ID. The type can be custom or one of these predefined values: * `account` * `customer` * `loginId` * `network` * `organization`
@@ -12621,7 +13108,7 @@
     &quot;fileAses&quot;: [ # The person&#x27;s file-ases.
       { # The name that should be used to sort the person in a list.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the file-as.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12634,6 +13121,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;value&quot;: &quot;A String&quot;, # The file-as value
@@ -12644,7 +13132,7 @@
         &quot;addressMeAs&quot;: &quot;A String&quot;, # The type of pronouns that should be used to address the person. The value can be custom or one of these predefined values: * `male` * `female` * `other`
         &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the gender translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale. Unspecified or custom value are not localized.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the gender.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12657,6 +13145,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;value&quot;: &quot;A String&quot;, # The gender for the person. The gender can be custom or one of these predefined values: * `male` * `female` * `unspecified`
@@ -12667,7 +13156,7 @@
         &quot;formattedProtocol&quot;: &quot;A String&quot;, # Output only. The protocol of the IM client formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
         &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the IM client translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the IM client.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12680,6 +13169,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;protocol&quot;: &quot;A String&quot;, # The protocol of the IM client. The protocol can be custom or one of these predefined values: * `aim` * `msn` * `yahoo` * `skype` * `qq` * `googleTalk` * `icq` * `jabber` * `netMeeting`
@@ -12690,7 +13180,7 @@
     &quot;interests&quot;: [ # The person&#x27;s interests.
       { # One of the person&#x27;s interests.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the interest.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12703,6 +13193,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;value&quot;: &quot;A String&quot;, # The interest; for example, `stargazing`.
@@ -12711,7 +13202,7 @@
     &quot;locales&quot;: [ # The person&#x27;s locale preferences.
       { # A person&#x27;s locale preference.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the locale.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12724,6 +13215,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;value&quot;: &quot;A String&quot;, # The well-formed [IETF BCP 47](https://tools.ietf.org/html/bcp47) language tag representing the locale.
@@ -12737,7 +13229,7 @@
         &quot;floor&quot;: &quot;A String&quot;, # The floor name or number.
         &quot;floorSection&quot;: &quot;A String&quot;, # The floor section in `floor_name`.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the location.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12750,6 +13242,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;type&quot;: &quot;A String&quot;, # The type of the location. The type can be custom or one of these predefined values: * `desk` * `grewUp`
@@ -12766,7 +13259,7 @@
           &quot;inViewerDomain&quot;: True or False, # True if the person is in the viewer&#x27;s Google Workspace domain.
         },
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the membership.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12779,6 +13272,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
       },
@@ -12811,7 +13305,7 @@
       { # A person&#x27;s miscellaneous keyword.
         &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the miscellaneous keyword translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the miscellaneous keyword.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12824,6 +13318,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;type&quot;: &quot;A String&quot;, # The miscellaneous keyword type.
@@ -12839,7 +13334,7 @@
         &quot;honorificPrefix&quot;: &quot;A String&quot;, # The honorific prefixes, such as `Mrs.` or `Dr.`
         &quot;honorificSuffix&quot;: &quot;A String&quot;, # The honorific suffixes, such as `Jr.`
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the name.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12852,6 +13347,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;middleName&quot;: &quot;A String&quot;, # The middle name(s).
@@ -12867,7 +13363,7 @@
     &quot;nicknames&quot;: [ # The person&#x27;s nicknames.
       { # A person&#x27;s nickname.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the nickname.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12880,6 +13376,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;type&quot;: &quot;A String&quot;, # The type of the nickname.
@@ -12889,7 +13386,7 @@
     &quot;occupations&quot;: [ # The person&#x27;s occupations.
       { # A person&#x27;s occupation.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the occupation.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12902,6 +13399,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;value&quot;: &quot;A String&quot;, # The occupation; for example, `carpenter`.
@@ -12921,7 +13419,7 @@
         &quot;jobDescription&quot;: &quot;A String&quot;, # The person&#x27;s job description at the organization.
         &quot;location&quot;: &quot;A String&quot;, # The location of the organization office the person works at.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the organization.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12934,6 +13432,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;name&quot;: &quot;A String&quot;, # The name of the organization.
@@ -12953,7 +13452,7 @@
         &quot;canonicalForm&quot;: &quot;A String&quot;, # Output only. The canonicalized [ITU-T E.164](https://law.resource.org/pub/us/cfr/ibr/004/itu-t.E.164.1.2008.pdf) form of the phone number.
         &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the phone number translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the phone number.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12966,6 +13465,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;type&quot;: &quot;A String&quot;, # The type of the phone number. The type can be custom or one of these predefined values: * `home` * `work` * `mobile` * `homeFax` * `workFax` * `otherFax` * `pager` * `workMobile` * `workPager` * `main` * `googleVoice` * `other`
@@ -12976,7 +13476,7 @@
       { # A person&#x27;s photo. A picture shown next to the person&#x27;s name to help others recognize the person.
         &quot;default&quot;: True or False, # True if the photo is a default photo; false if the photo is a user-provided photo.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the photo.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -12989,6 +13489,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;url&quot;: &quot;A String&quot;, # The URL of the photo. You can change the desired size by appending a query parameter `sz={size}` at the end of the url, where {size} is the size in pixels. Example: https://lh3.googleusercontent.com/-T_wVWLlmg7w/AAAAAAAAAAI/AAAAAAAABa8/00gzXvDBYqw/s100/photo.jpg?sz=50
@@ -12998,7 +13499,7 @@
       { # A person&#x27;s relation to another person.
         &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the relation translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relation.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -13011,6 +13512,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;person&quot;: &quot;A String&quot;, # The name of the other person this relation refers to.
@@ -13021,7 +13523,7 @@
       { # **DEPRECATED**: No data will be returned A person&#x27;s relationship interest .
         &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship interest translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship interest.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -13034,6 +13536,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;value&quot;: &quot;A String&quot;, # The kind of relationship the person is looking for. The value can be custom or one of these predefined values: * `friend` * `date` * `relationship` * `networking`
@@ -13043,7 +13546,7 @@
       { # **DEPRECATED**: No data will be returned A person&#x27;s relationship status.
         &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship status translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship status.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -13056,6 +13559,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;value&quot;: &quot;A String&quot;, # The relationship status. The value can be custom or one of these predefined values: * `single` * `inARelationship` * `engaged` * `married` * `itsComplicated` * `openRelationship` * `widowed` * `inDomesticPartnership` * `inCivilUnion`
@@ -13065,7 +13569,7 @@
       { # **DEPRECATED**: Please use `person.locations` instead. A person&#x27;s past or current residence.
         &quot;current&quot;: True or False, # True if the residence is the person&#x27;s current residence; false if the residence is a past residence.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the residence.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -13078,6 +13582,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;value&quot;: &quot;A String&quot;, # The address of the residence.
@@ -13088,7 +13593,7 @@
       { # A person&#x27;s SIP address. Session Initial Protocol addresses are used for VoIP communications to make voice or video calls over the internet.
         &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the SIP address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the SIP address.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -13101,6 +13606,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;type&quot;: &quot;A String&quot;, # The type of the SIP address. The type can be custom or or one of these predefined values: * `home` * `work` * `mobile` * `other`
@@ -13110,7 +13616,7 @@
     &quot;skills&quot;: [ # The person&#x27;s skills.
       { # A skill that the person has.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the skill.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -13123,6 +13629,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;value&quot;: &quot;A String&quot;, # The skill; for example, `underwater basket weaving`.
@@ -13131,7 +13638,7 @@
     &quot;taglines&quot;: [ # Output only. **DEPRECATED**: No data will be returned The person&#x27;s taglines.
       { # **DEPRECATED**: No data will be returned A brief one-line description of the person.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the tagline.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -13144,6 +13651,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;value&quot;: &quot;A String&quot;, # The tagline.
@@ -13153,7 +13661,7 @@
       { # A person&#x27;s associated URLs.
         &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the URL.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -13166,6 +13674,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;type&quot;: &quot;A String&quot;, # The type of the URL. The type can be custom or one of these predefined values: * `home` * `work` * `blog` * `profile` * `homePage` * `ftp` * `reservations` * `appInstallPage`: website for a Currents application. * `other`
@@ -13176,7 +13685,7 @@
       { # Arbitrary user data that is populated by the end users.
         &quot;key&quot;: &quot;A String&quot;, # The end user specified key of the user defined data.
         &quot;metadata&quot;: { # Metadata about a field. # Metadata about the user defined data.
-          &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
+          &quot;primary&quot;: True or False, # True if the field is the primary field for the person.
           &quot;source&quot;: { # The source of a field. # The source of the field.
             &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
             &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
@@ -13189,6 +13698,7 @@
             &quot;type&quot;: &quot;A String&quot;, # The source type.
             &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
           },
+          &quot;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source.
           &quot;verified&quot;: True or False, # Output only. True if the field is verified; false if the field is unverified. A verified field is typically a name, email address, phone number, or website that has been confirmed to be owned by the person.
         },
         &quot;value&quot;: &quot;A String&quot;, # The end user specified value of the user defined data.
diff --git a/docs/dyn/privateca_v1.projects.locations.caPools.certificates.html b/docs/dyn/privateca_v1.projects.locations.caPools.certificates.html
index c09a146..d3f2223 100644
--- a/docs/dyn/privateca_v1.projects.locations.caPools.certificates.html
+++ b/docs/dyn/privateca_v1.projects.locations.caPools.certificates.html
@@ -349,7 +349,7 @@
 
   certificateId: string, Optional. It must be unique within a location and match the regular expression `[a-zA-Z0-9_-]{1,63}`. This field is required when using a CertificateAuthority in the Enterprise CertificateAuthority.Tier, but is optional and its value is ignored otherwise.
   issuingCertificateAuthorityId: string, Optional. The resource ID of the CertificateAuthority that should issue the certificate. This optional field will ignore the load-balancing scheme of the Pool and directly issue the certificate from the CA with the specified ID, contained in the same CaPool referenced by `parent`. Per-CA quota rules apply. If left empty, a CertificateAuthority will be chosen from the CaPool by the service. For example, to issue a Certificate from a Certificate Authority with resource name &quot;projects/my-project/locations/us-central1/caPools/my-pool/certificateAuthorities/my-ca&quot;, you can set the parent to &quot;projects/my-project/locations/us-central1/caPools/my-pool&quot; and the issuing_certificate_authority_id to &quot;my-ca&quot;.
-  requestId: string, Optional. An 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 t he request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).
+  requestId: string, Optional. An 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).
   validateOnly: boolean, Optional. If this is true, no Certificate resource will be persisted regardless of the CaPool&#x27;s tier, and the returned Certificate will not contain the pem_certificate field.
   x__xgafv: string, V1 error format.
     Allowed values
diff --git a/docs/dyn/privateca_v1beta1.projects.locations.certificateAuthorities.html b/docs/dyn/privateca_v1beta1.projects.locations.certificateAuthorities.html
index ccef4f8..c8ce851 100644
--- a/docs/dyn/privateca_v1beta1.projects.locations.certificateAuthorities.html
+++ b/docs/dyn/privateca_v1beta1.projects.locations.certificateAuthorities.html
@@ -143,7 +143,7 @@
   &quot;pemCaCertificate&quot;: &quot;A String&quot;, # Required. The signed CA certificate issued from FetchCertificateAuthorityCsrResponse.pem_csr.
   &quot;requestId&quot;: &quot;A String&quot;, # Optional. An 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 t he request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).
   &quot;subordinateConfig&quot;: { # Describes a subordinate CA&#x27;s issuers. This is either a resource path to a known issuing CertificateAuthority, or a PEM issuer certificate chain. # Required. Must include information about the issuer of &#x27;pem_ca_certificate&#x27;, and any further issuers until the self-signed CA.
-    &quot;certificateAuthority&quot;: &quot;A String&quot;, # Required. This can refer to a CertificateAuthority in the same project that was used to create a subordinate CertificateAuthority. This field is used for information and usability purposes only. The resource name is in the format `projects/*/locations/*/certificateAuthorities/*`.
+    &quot;certificateAuthority&quot;: &quot;A String&quot;, # Required. This can refer to a CertificateAuthority that was used to create a subordinate CertificateAuthority. This field is used for information and usability purposes only. The resource name is in the format `projects/*/locations/*/certificateAuthorities/*`.
     &quot;pemIssuerChain&quot;: { # This message describes a subordinate CA&#x27;s issuer certificate chain. This wrapper exists for compatibility reasons. # Required. Contains the PEM certificate chain for the issuers of this CertificateAuthority, but not pem certificate for this CA itself.
       &quot;pemCertificates&quot;: [ # Required. Expected to be in leaf-to-root order according to RFC 5246.
         &quot;A String&quot;,
@@ -598,7 +598,7 @@
   ],
   &quot;state&quot;: &quot;A String&quot;, # Output only. The State for this CertificateAuthority.
   &quot;subordinateConfig&quot;: { # Describes a subordinate CA&#x27;s issuers. This is either a resource path to a known issuing CertificateAuthority, or a PEM issuer certificate chain. # Optional. If this is a subordinate CertificateAuthority, this field will be set with the subordinate configuration, which describes its issuers. This may be updated, but this CertificateAuthority must continue to validate.
-    &quot;certificateAuthority&quot;: &quot;A String&quot;, # Required. This can refer to a CertificateAuthority in the same project that was used to create a subordinate CertificateAuthority. This field is used for information and usability purposes only. The resource name is in the format `projects/*/locations/*/certificateAuthorities/*`.
+    &quot;certificateAuthority&quot;: &quot;A String&quot;, # Required. This can refer to a CertificateAuthority that was used to create a subordinate CertificateAuthority. This field is used for information and usability purposes only. The resource name is in the format `projects/*/locations/*/certificateAuthorities/*`.
     &quot;pemIssuerChain&quot;: { # This message describes a subordinate CA&#x27;s issuer certificate chain. This wrapper exists for compatibility reasons. # Required. Contains the PEM certificate chain for the issuers of this CertificateAuthority, but not pem certificate for this CA itself.
       &quot;pemCertificates&quot;: [ # Required. Expected to be in leaf-to-root order according to RFC 5246.
         &quot;A String&quot;,
@@ -1161,7 +1161,7 @@
   ],
   &quot;state&quot;: &quot;A String&quot;, # Output only. The State for this CertificateAuthority.
   &quot;subordinateConfig&quot;: { # Describes a subordinate CA&#x27;s issuers. This is either a resource path to a known issuing CertificateAuthority, or a PEM issuer certificate chain. # Optional. If this is a subordinate CertificateAuthority, this field will be set with the subordinate configuration, which describes its issuers. This may be updated, but this CertificateAuthority must continue to validate.
-    &quot;certificateAuthority&quot;: &quot;A String&quot;, # Required. This can refer to a CertificateAuthority in the same project that was used to create a subordinate CertificateAuthority. This field is used for information and usability purposes only. The resource name is in the format `projects/*/locations/*/certificateAuthorities/*`.
+    &quot;certificateAuthority&quot;: &quot;A String&quot;, # Required. This can refer to a CertificateAuthority that was used to create a subordinate CertificateAuthority. This field is used for information and usability purposes only. The resource name is in the format `projects/*/locations/*/certificateAuthorities/*`.
     &quot;pemIssuerChain&quot;: { # This message describes a subordinate CA&#x27;s issuer certificate chain. This wrapper exists for compatibility reasons. # Required. Contains the PEM certificate chain for the issuers of this CertificateAuthority, but not pem certificate for this CA itself.
       &quot;pemCertificates&quot;: [ # Required. Expected to be in leaf-to-root order according to RFC 5246.
         &quot;A String&quot;,
@@ -1645,7 +1645,7 @@
       ],
       &quot;state&quot;: &quot;A String&quot;, # Output only. The State for this CertificateAuthority.
       &quot;subordinateConfig&quot;: { # Describes a subordinate CA&#x27;s issuers. This is either a resource path to a known issuing CertificateAuthority, or a PEM issuer certificate chain. # Optional. If this is a subordinate CertificateAuthority, this field will be set with the subordinate configuration, which describes its issuers. This may be updated, but this CertificateAuthority must continue to validate.
-        &quot;certificateAuthority&quot;: &quot;A String&quot;, # Required. This can refer to a CertificateAuthority in the same project that was used to create a subordinate CertificateAuthority. This field is used for information and usability purposes only. The resource name is in the format `projects/*/locations/*/certificateAuthorities/*`.
+        &quot;certificateAuthority&quot;: &quot;A String&quot;, # Required. This can refer to a CertificateAuthority that was used to create a subordinate CertificateAuthority. This field is used for information and usability purposes only. The resource name is in the format `projects/*/locations/*/certificateAuthorities/*`.
         &quot;pemIssuerChain&quot;: { # This message describes a subordinate CA&#x27;s issuer certificate chain. This wrapper exists for compatibility reasons. # Required. Contains the PEM certificate chain for the issuers of this CertificateAuthority, but not pem certificate for this CA itself.
           &quot;pemCertificates&quot;: [ # Required. Expected to be in leaf-to-root order according to RFC 5246.
             &quot;A String&quot;,
@@ -2090,7 +2090,7 @@
   ],
   &quot;state&quot;: &quot;A String&quot;, # Output only. The State for this CertificateAuthority.
   &quot;subordinateConfig&quot;: { # Describes a subordinate CA&#x27;s issuers. This is either a resource path to a known issuing CertificateAuthority, or a PEM issuer certificate chain. # Optional. If this is a subordinate CertificateAuthority, this field will be set with the subordinate configuration, which describes its issuers. This may be updated, but this CertificateAuthority must continue to validate.
-    &quot;certificateAuthority&quot;: &quot;A String&quot;, # Required. This can refer to a CertificateAuthority in the same project that was used to create a subordinate CertificateAuthority. This field is used for information and usability purposes only. The resource name is in the format `projects/*/locations/*/certificateAuthorities/*`.
+    &quot;certificateAuthority&quot;: &quot;A String&quot;, # Required. This can refer to a CertificateAuthority that was used to create a subordinate CertificateAuthority. This field is used for information and usability purposes only. The resource name is in the format `projects/*/locations/*/certificateAuthorities/*`.
     &quot;pemIssuerChain&quot;: { # This message describes a subordinate CA&#x27;s issuer certificate chain. This wrapper exists for compatibility reasons. # Required. Contains the PEM certificate chain for the issuers of this CertificateAuthority, but not pem certificate for this CA itself.
       &quot;pemCertificates&quot;: [ # Required. Expected to be in leaf-to-root order according to RFC 5246.
         &quot;A String&quot;,
diff --git a/docs/dyn/reseller_v1.customers.html b/docs/dyn/reseller_v1.customers.html
index ccfb5e4..85b8c6c 100644
--- a/docs/dyn/reseller_v1.customers.html
+++ b/docs/dyn/reseller_v1.customers.html
@@ -79,16 +79,16 @@
 <p class="firstline">Close httplib2 connections.</p>
 <p class="toc_element">
   <code><a href="#get">get(customerId, x__xgafv=None)</a></code></p>
-<p class="firstline">Get a customer account. Use this operation to see a customer account already in your reseller management, or to see the minimal account information for an existing customer that you do not manage. For more information about the API response for existing customers, see [retrieving a customer account](/admin-sdk/reseller/v1/how-tos/manage_customers#get_customer).</p>
+<p class="firstline">Gets a customer account. Use this operation to see a customer account already in your reseller management, or to see the minimal account information for an existing customer that you do not manage. For more information about the API response for existing customers, see [retrieving a customer account](/admin-sdk/reseller/v1/how-tos/manage_customers#get_customer).</p>
 <p class="toc_element">
   <code><a href="#insert">insert(body=None, customerAuthToken=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Order a new customer's account. Before ordering a new customer account, establish whether the customer account already exists using the [`customers.get`](/admin-sdk/reseller/v1/reference/customers/get) If the customer account exists as a direct Google account or as a resold customer account from another reseller, use the `customerAuthToken\` as described in [order a resold account for an existing customer](/admin-sdk/reseller/v1/how-tos/manage_customers#create_existing_customer). For more information about ordering a new customer account, see [order a new customer account](/admin-sdk/reseller/v1/how-tos/manage_customers#create_customer). After creating a new customer account, you must provision a user as an administrator. The customer's administrator is required to sign in to the Admin console and sign the G Suite via Reseller agreement to activate the account. Resellers are prohibited from signing the G Suite via Reseller agreement on the customer's behalf. For more information, see [order a new customer account](/admin-sdk/reseller/v1/how-tos/manage_customers#tos).</p>
+<p class="firstline">Orders a new customer's account. Before ordering a new customer account, establish whether the customer account already exists using the [`customers.get`](/admin-sdk/reseller/v1/reference/customers/get) If the customer account exists as a direct Google account or as a resold customer account from another reseller, use the `customerAuthToken\` as described in [order a resold account for an existing customer](/admin-sdk/reseller/v1/how-tos/manage_customers#create_existing_customer). For more information about ordering a new customer account, see [order a new customer account](/admin-sdk/reseller/v1/how-tos/manage_customers#create_customer). After creating a new customer account, you must provision a user as an administrator. The customer's administrator is required to sign in to the Admin console and sign the G Suite via Reseller agreement to activate the account. Resellers are prohibited from signing the G Suite via Reseller agreement on the customer's behalf. For more information, see [order a new customer account](/admin-sdk/reseller/v1/how-tos/manage_customers#tos).</p>
 <p class="toc_element">
   <code><a href="#patch">patch(customerId, body=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Update a customer account's settings. This method supports patch semantics.</p>
+<p class="firstline">Updates a customer account's settings. This method supports patch semantics. You cannot update `customerType` via the Reseller API, but a `"team"` customer can verify their domain and become `customerType = "domain"`. For more information, see [Verify your domain to unlock Essentials features](https://support.google.com/a/answer/9122284).</p>
 <p class="toc_element">
   <code><a href="#update">update(customerId, body=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Update a customer account's settings. For more information, see [update a customer's settings](/admin-sdk/reseller/v1/how-tos/manage_customers#update_customer).</p>
+<p class="firstline">Updates a customer account's settings. You cannot update `customerType` via the Reseller API, but a `"team"` customer can verify their domain and become `customerType = "domain"`. For more information, see [update a customer's settings](/admin-sdk/reseller/v1/how-tos/manage_customers#update_customer).</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="close">close()</code>
@@ -97,7 +97,7 @@
 
 <div class="method">
     <code class="details" id="get">get(customerId, x__xgafv=None)</code>
-  <pre>Get a customer account. Use this operation to see a customer account already in your reseller management, or to see the minimal account information for an existing customer that you do not manage. For more information about the API response for existing customers, see [retrieving a customer account](/admin-sdk/reseller/v1/how-tos/manage_customers#get_customer).
+  <pre>Gets a customer account. Use this operation to see a customer account already in your reseller management, or to see the minimal account information for an existing customer that you do not manage. For more information about the API response for existing customers, see [retrieving a customer account](/admin-sdk/reseller/v1/how-tos/manage_customers#get_customer).
 
 Args:
   customerId: string, Either the customer&#x27;s primary domain name or the customer&#x27;s unique identifier. If using the domain name, we do not recommend using a `customerId` as a key for persistent data. If the domain name for a `customerId` is changed, the Google system automatically updates. (required)
@@ -110,11 +110,11 @@
   An object of the form:
 
     { # When a Google customer&#x27;s account is registered with a reseller, the customer&#x27;s subscriptions for Google services are managed by this reseller. A customer is described by a primary domain name and a physical address.
-  &quot;alternateEmail&quot;: &quot;A String&quot;, # Like the &quot;Customer email&quot; in the reseller tools, this email is the secondary contact used if something happens to the customer&#x27;s service such as service outage or a security issue. This property is required when creating a new customer and should not use the same domain as `customerDomain`.
+  &quot;alternateEmail&quot;: &quot;A String&quot;, # Like the &quot;Customer email&quot; in the reseller tools, this email is the secondary contact used if something happens to the customer&#x27;s service such as service outage or a security issue. This property is required when creating a new &quot;domain&quot; customer and should not use the same domain as `customerDomain`. The `alternateEmail` field is not necessary to create a &quot;team&quot; customer.
   &quot;customerDomain&quot;: &quot;A String&quot;, # The customer&#x27;s primary domain name string. `customerDomain` is required when creating a new customer. Do not include the `www` prefix in the domain when adding a customer.
   &quot;customerDomainVerified&quot;: True or False, # Whether the customer&#x27;s primary domain has been verified.
   &quot;customerId&quot;: &quot;A String&quot;, # This property will always be returned in a response as the unique identifier generated by Google. In a request, this property can be either the primary domain or the unique identifier generated by Google.
-  &quot;customerType&quot;: &quot;A String&quot;, # The type of the customer (DOMAIN or TEAM), default is DOMAIN.
+  &quot;customerType&quot;: &quot;A String&quot;, # Identifies the type of the customer. Acceptable values include: * `domain`: Implies a domain-verified customer (default). * `team`: Implies an email-verified customer. For more information, see [managed teams](https://support.google.com/a/users/answer/9939479).
   &quot;kind&quot;: &quot;reseller#customer&quot;, # Identifies the resource as a customer. Value: `reseller#customer`
   &quot;phoneNumber&quot;: &quot;A String&quot;, # Customer contact phone number. Must start with &quot;+&quot; followed by the country code. The rest of the number can be contiguous numbers or respect the phone local format conventions, but it must be a real phone number and not, for example, &quot;123&quot;. This field is silently ignored if invalid.
   &quot;postalAddress&quot;: { # JSON template for address of a customer. # A customer&#x27;s address information. Each field has a limit of 255 charcters.
@@ -130,7 +130,7 @@
     &quot;region&quot;: &quot;A String&quot;, # An example of a `region` value is `CA` for the state of California.
   },
   &quot;primaryAdmin&quot;: { # JSON template for primary admin in case of TEAM customers # The first admin details of the customer, present in case of TEAM customer.
-    &quot;primaryEmail&quot;: &quot;A String&quot;, # Primary admin&#x27;s domained email This email&#x27;s domain will be used to create TEAM customer
+    &quot;primaryEmail&quot;: &quot;A String&quot;, # The business email of the primary administrator of the customer. The email verification link is sent to this email address at the time of customer creation. Primary administrators have access to the customer&#x27;s Admin Console, including the ability to invite and evict users and manage the administrative needs of the customer.
   },
   &quot;resourceUiUrl&quot;: &quot;A String&quot;, # URL to customer&#x27;s Admin console dashboard. The read-only URL is generated by the API service. This is used if your client application requires the customer to complete a task in the Admin console.
 }</pre>
@@ -138,18 +138,18 @@
 
 <div class="method">
     <code class="details" id="insert">insert(body=None, customerAuthToken=None, x__xgafv=None)</code>
-  <pre>Order a new customer&#x27;s account. Before ordering a new customer account, establish whether the customer account already exists using the [`customers.get`](/admin-sdk/reseller/v1/reference/customers/get) If the customer account exists as a direct Google account or as a resold customer account from another reseller, use the `customerAuthToken\` as described in [order a resold account for an existing customer](/admin-sdk/reseller/v1/how-tos/manage_customers#create_existing_customer). For more information about ordering a new customer account, see [order a new customer account](/admin-sdk/reseller/v1/how-tos/manage_customers#create_customer). After creating a new customer account, you must provision a user as an administrator. The customer&#x27;s administrator is required to sign in to the Admin console and sign the G Suite via Reseller agreement to activate the account. Resellers are prohibited from signing the G Suite via Reseller agreement on the customer&#x27;s behalf. For more information, see [order a new customer account](/admin-sdk/reseller/v1/how-tos/manage_customers#tos).
+  <pre>Orders a new customer&#x27;s account. Before ordering a new customer account, establish whether the customer account already exists using the [`customers.get`](/admin-sdk/reseller/v1/reference/customers/get) If the customer account exists as a direct Google account or as a resold customer account from another reseller, use the `customerAuthToken\` as described in [order a resold account for an existing customer](/admin-sdk/reseller/v1/how-tos/manage_customers#create_existing_customer). For more information about ordering a new customer account, see [order a new customer account](/admin-sdk/reseller/v1/how-tos/manage_customers#create_customer). After creating a new customer account, you must provision a user as an administrator. The customer&#x27;s administrator is required to sign in to the Admin console and sign the G Suite via Reseller agreement to activate the account. Resellers are prohibited from signing the G Suite via Reseller agreement on the customer&#x27;s behalf. For more information, see [order a new customer account](/admin-sdk/reseller/v1/how-tos/manage_customers#tos).
 
 Args:
   body: object, The request body.
     The object takes the form of:
 
 { # When a Google customer&#x27;s account is registered with a reseller, the customer&#x27;s subscriptions for Google services are managed by this reseller. A customer is described by a primary domain name and a physical address.
-  &quot;alternateEmail&quot;: &quot;A String&quot;, # Like the &quot;Customer email&quot; in the reseller tools, this email is the secondary contact used if something happens to the customer&#x27;s service such as service outage or a security issue. This property is required when creating a new customer and should not use the same domain as `customerDomain`.
+  &quot;alternateEmail&quot;: &quot;A String&quot;, # Like the &quot;Customer email&quot; in the reseller tools, this email is the secondary contact used if something happens to the customer&#x27;s service such as service outage or a security issue. This property is required when creating a new &quot;domain&quot; customer and should not use the same domain as `customerDomain`. The `alternateEmail` field is not necessary to create a &quot;team&quot; customer.
   &quot;customerDomain&quot;: &quot;A String&quot;, # The customer&#x27;s primary domain name string. `customerDomain` is required when creating a new customer. Do not include the `www` prefix in the domain when adding a customer.
   &quot;customerDomainVerified&quot;: True or False, # Whether the customer&#x27;s primary domain has been verified.
   &quot;customerId&quot;: &quot;A String&quot;, # This property will always be returned in a response as the unique identifier generated by Google. In a request, this property can be either the primary domain or the unique identifier generated by Google.
-  &quot;customerType&quot;: &quot;A String&quot;, # The type of the customer (DOMAIN or TEAM), default is DOMAIN.
+  &quot;customerType&quot;: &quot;A String&quot;, # Identifies the type of the customer. Acceptable values include: * `domain`: Implies a domain-verified customer (default). * `team`: Implies an email-verified customer. For more information, see [managed teams](https://support.google.com/a/users/answer/9939479).
   &quot;kind&quot;: &quot;reseller#customer&quot;, # Identifies the resource as a customer. Value: `reseller#customer`
   &quot;phoneNumber&quot;: &quot;A String&quot;, # Customer contact phone number. Must start with &quot;+&quot; followed by the country code. The rest of the number can be contiguous numbers or respect the phone local format conventions, but it must be a real phone number and not, for example, &quot;123&quot;. This field is silently ignored if invalid.
   &quot;postalAddress&quot;: { # JSON template for address of a customer. # A customer&#x27;s address information. Each field has a limit of 255 charcters.
@@ -165,7 +165,7 @@
     &quot;region&quot;: &quot;A String&quot;, # An example of a `region` value is `CA` for the state of California.
   },
   &quot;primaryAdmin&quot;: { # JSON template for primary admin in case of TEAM customers # The first admin details of the customer, present in case of TEAM customer.
-    &quot;primaryEmail&quot;: &quot;A String&quot;, # Primary admin&#x27;s domained email This email&#x27;s domain will be used to create TEAM customer
+    &quot;primaryEmail&quot;: &quot;A String&quot;, # The business email of the primary administrator of the customer. The email verification link is sent to this email address at the time of customer creation. Primary administrators have access to the customer&#x27;s Admin Console, including the ability to invite and evict users and manage the administrative needs of the customer.
   },
   &quot;resourceUiUrl&quot;: &quot;A String&quot;, # URL to customer&#x27;s Admin console dashboard. The read-only URL is generated by the API service. This is used if your client application requires the customer to complete a task in the Admin console.
 }
@@ -180,11 +180,11 @@
   An object of the form:
 
     { # When a Google customer&#x27;s account is registered with a reseller, the customer&#x27;s subscriptions for Google services are managed by this reseller. A customer is described by a primary domain name and a physical address.
-  &quot;alternateEmail&quot;: &quot;A String&quot;, # Like the &quot;Customer email&quot; in the reseller tools, this email is the secondary contact used if something happens to the customer&#x27;s service such as service outage or a security issue. This property is required when creating a new customer and should not use the same domain as `customerDomain`.
+  &quot;alternateEmail&quot;: &quot;A String&quot;, # Like the &quot;Customer email&quot; in the reseller tools, this email is the secondary contact used if something happens to the customer&#x27;s service such as service outage or a security issue. This property is required when creating a new &quot;domain&quot; customer and should not use the same domain as `customerDomain`. The `alternateEmail` field is not necessary to create a &quot;team&quot; customer.
   &quot;customerDomain&quot;: &quot;A String&quot;, # The customer&#x27;s primary domain name string. `customerDomain` is required when creating a new customer. Do not include the `www` prefix in the domain when adding a customer.
   &quot;customerDomainVerified&quot;: True or False, # Whether the customer&#x27;s primary domain has been verified.
   &quot;customerId&quot;: &quot;A String&quot;, # This property will always be returned in a response as the unique identifier generated by Google. In a request, this property can be either the primary domain or the unique identifier generated by Google.
-  &quot;customerType&quot;: &quot;A String&quot;, # The type of the customer (DOMAIN or TEAM), default is DOMAIN.
+  &quot;customerType&quot;: &quot;A String&quot;, # Identifies the type of the customer. Acceptable values include: * `domain`: Implies a domain-verified customer (default). * `team`: Implies an email-verified customer. For more information, see [managed teams](https://support.google.com/a/users/answer/9939479).
   &quot;kind&quot;: &quot;reseller#customer&quot;, # Identifies the resource as a customer. Value: `reseller#customer`
   &quot;phoneNumber&quot;: &quot;A String&quot;, # Customer contact phone number. Must start with &quot;+&quot; followed by the country code. The rest of the number can be contiguous numbers or respect the phone local format conventions, but it must be a real phone number and not, for example, &quot;123&quot;. This field is silently ignored if invalid.
   &quot;postalAddress&quot;: { # JSON template for address of a customer. # A customer&#x27;s address information. Each field has a limit of 255 charcters.
@@ -200,7 +200,7 @@
     &quot;region&quot;: &quot;A String&quot;, # An example of a `region` value is `CA` for the state of California.
   },
   &quot;primaryAdmin&quot;: { # JSON template for primary admin in case of TEAM customers # The first admin details of the customer, present in case of TEAM customer.
-    &quot;primaryEmail&quot;: &quot;A String&quot;, # Primary admin&#x27;s domained email This email&#x27;s domain will be used to create TEAM customer
+    &quot;primaryEmail&quot;: &quot;A String&quot;, # The business email of the primary administrator of the customer. The email verification link is sent to this email address at the time of customer creation. Primary administrators have access to the customer&#x27;s Admin Console, including the ability to invite and evict users and manage the administrative needs of the customer.
   },
   &quot;resourceUiUrl&quot;: &quot;A String&quot;, # URL to customer&#x27;s Admin console dashboard. The read-only URL is generated by the API service. This is used if your client application requires the customer to complete a task in the Admin console.
 }</pre>
@@ -208,7 +208,7 @@
 
 <div class="method">
     <code class="details" id="patch">patch(customerId, body=None, x__xgafv=None)</code>
-  <pre>Update a customer account&#x27;s settings. This method supports patch semantics.
+  <pre>Updates a customer account&#x27;s settings. This method supports patch semantics. You cannot update `customerType` via the Reseller API, but a `&quot;team&quot;` customer can verify their domain and become `customerType = &quot;domain&quot;`. For more information, see [Verify your domain to unlock Essentials features](https://support.google.com/a/answer/9122284).
 
 Args:
   customerId: string, Either the customer&#x27;s primary domain name or the customer&#x27;s unique identifier. If using the domain name, we do not recommend using a `customerId` as a key for persistent data. If the domain name for a `customerId` is changed, the Google system automatically updates. (required)
@@ -216,11 +216,11 @@
     The object takes the form of:
 
 { # When a Google customer&#x27;s account is registered with a reseller, the customer&#x27;s subscriptions for Google services are managed by this reseller. A customer is described by a primary domain name and a physical address.
-  &quot;alternateEmail&quot;: &quot;A String&quot;, # Like the &quot;Customer email&quot; in the reseller tools, this email is the secondary contact used if something happens to the customer&#x27;s service such as service outage or a security issue. This property is required when creating a new customer and should not use the same domain as `customerDomain`.
+  &quot;alternateEmail&quot;: &quot;A String&quot;, # Like the &quot;Customer email&quot; in the reseller tools, this email is the secondary contact used if something happens to the customer&#x27;s service such as service outage or a security issue. This property is required when creating a new &quot;domain&quot; customer and should not use the same domain as `customerDomain`. The `alternateEmail` field is not necessary to create a &quot;team&quot; customer.
   &quot;customerDomain&quot;: &quot;A String&quot;, # The customer&#x27;s primary domain name string. `customerDomain` is required when creating a new customer. Do not include the `www` prefix in the domain when adding a customer.
   &quot;customerDomainVerified&quot;: True or False, # Whether the customer&#x27;s primary domain has been verified.
   &quot;customerId&quot;: &quot;A String&quot;, # This property will always be returned in a response as the unique identifier generated by Google. In a request, this property can be either the primary domain or the unique identifier generated by Google.
-  &quot;customerType&quot;: &quot;A String&quot;, # The type of the customer (DOMAIN or TEAM), default is DOMAIN.
+  &quot;customerType&quot;: &quot;A String&quot;, # Identifies the type of the customer. Acceptable values include: * `domain`: Implies a domain-verified customer (default). * `team`: Implies an email-verified customer. For more information, see [managed teams](https://support.google.com/a/users/answer/9939479).
   &quot;kind&quot;: &quot;reseller#customer&quot;, # Identifies the resource as a customer. Value: `reseller#customer`
   &quot;phoneNumber&quot;: &quot;A String&quot;, # Customer contact phone number. Must start with &quot;+&quot; followed by the country code. The rest of the number can be contiguous numbers or respect the phone local format conventions, but it must be a real phone number and not, for example, &quot;123&quot;. This field is silently ignored if invalid.
   &quot;postalAddress&quot;: { # JSON template for address of a customer. # A customer&#x27;s address information. Each field has a limit of 255 charcters.
@@ -236,7 +236,7 @@
     &quot;region&quot;: &quot;A String&quot;, # An example of a `region` value is `CA` for the state of California.
   },
   &quot;primaryAdmin&quot;: { # JSON template for primary admin in case of TEAM customers # The first admin details of the customer, present in case of TEAM customer.
-    &quot;primaryEmail&quot;: &quot;A String&quot;, # Primary admin&#x27;s domained email This email&#x27;s domain will be used to create TEAM customer
+    &quot;primaryEmail&quot;: &quot;A String&quot;, # The business email of the primary administrator of the customer. The email verification link is sent to this email address at the time of customer creation. Primary administrators have access to the customer&#x27;s Admin Console, including the ability to invite and evict users and manage the administrative needs of the customer.
   },
   &quot;resourceUiUrl&quot;: &quot;A String&quot;, # URL to customer&#x27;s Admin console dashboard. The read-only URL is generated by the API service. This is used if your client application requires the customer to complete a task in the Admin console.
 }
@@ -250,11 +250,11 @@
   An object of the form:
 
     { # When a Google customer&#x27;s account is registered with a reseller, the customer&#x27;s subscriptions for Google services are managed by this reseller. A customer is described by a primary domain name and a physical address.
-  &quot;alternateEmail&quot;: &quot;A String&quot;, # Like the &quot;Customer email&quot; in the reseller tools, this email is the secondary contact used if something happens to the customer&#x27;s service such as service outage or a security issue. This property is required when creating a new customer and should not use the same domain as `customerDomain`.
+  &quot;alternateEmail&quot;: &quot;A String&quot;, # Like the &quot;Customer email&quot; in the reseller tools, this email is the secondary contact used if something happens to the customer&#x27;s service such as service outage or a security issue. This property is required when creating a new &quot;domain&quot; customer and should not use the same domain as `customerDomain`. The `alternateEmail` field is not necessary to create a &quot;team&quot; customer.
   &quot;customerDomain&quot;: &quot;A String&quot;, # The customer&#x27;s primary domain name string. `customerDomain` is required when creating a new customer. Do not include the `www` prefix in the domain when adding a customer.
   &quot;customerDomainVerified&quot;: True or False, # Whether the customer&#x27;s primary domain has been verified.
   &quot;customerId&quot;: &quot;A String&quot;, # This property will always be returned in a response as the unique identifier generated by Google. In a request, this property can be either the primary domain or the unique identifier generated by Google.
-  &quot;customerType&quot;: &quot;A String&quot;, # The type of the customer (DOMAIN or TEAM), default is DOMAIN.
+  &quot;customerType&quot;: &quot;A String&quot;, # Identifies the type of the customer. Acceptable values include: * `domain`: Implies a domain-verified customer (default). * `team`: Implies an email-verified customer. For more information, see [managed teams](https://support.google.com/a/users/answer/9939479).
   &quot;kind&quot;: &quot;reseller#customer&quot;, # Identifies the resource as a customer. Value: `reseller#customer`
   &quot;phoneNumber&quot;: &quot;A String&quot;, # Customer contact phone number. Must start with &quot;+&quot; followed by the country code. The rest of the number can be contiguous numbers or respect the phone local format conventions, but it must be a real phone number and not, for example, &quot;123&quot;. This field is silently ignored if invalid.
   &quot;postalAddress&quot;: { # JSON template for address of a customer. # A customer&#x27;s address information. Each field has a limit of 255 charcters.
@@ -270,7 +270,7 @@
     &quot;region&quot;: &quot;A String&quot;, # An example of a `region` value is `CA` for the state of California.
   },
   &quot;primaryAdmin&quot;: { # JSON template for primary admin in case of TEAM customers # The first admin details of the customer, present in case of TEAM customer.
-    &quot;primaryEmail&quot;: &quot;A String&quot;, # Primary admin&#x27;s domained email This email&#x27;s domain will be used to create TEAM customer
+    &quot;primaryEmail&quot;: &quot;A String&quot;, # The business email of the primary administrator of the customer. The email verification link is sent to this email address at the time of customer creation. Primary administrators have access to the customer&#x27;s Admin Console, including the ability to invite and evict users and manage the administrative needs of the customer.
   },
   &quot;resourceUiUrl&quot;: &quot;A String&quot;, # URL to customer&#x27;s Admin console dashboard. The read-only URL is generated by the API service. This is used if your client application requires the customer to complete a task in the Admin console.
 }</pre>
@@ -278,7 +278,7 @@
 
 <div class="method">
     <code class="details" id="update">update(customerId, body=None, x__xgafv=None)</code>
-  <pre>Update a customer account&#x27;s settings. For more information, see [update a customer&#x27;s settings](/admin-sdk/reseller/v1/how-tos/manage_customers#update_customer).
+  <pre>Updates a customer account&#x27;s settings. You cannot update `customerType` via the Reseller API, but a `&quot;team&quot;` customer can verify their domain and become `customerType = &quot;domain&quot;`. For more information, see [update a customer&#x27;s settings](/admin-sdk/reseller/v1/how-tos/manage_customers#update_customer).
 
 Args:
   customerId: string, Either the customer&#x27;s primary domain name or the customer&#x27;s unique identifier. If using the domain name, we do not recommend using a `customerId` as a key for persistent data. If the domain name for a `customerId` is changed, the Google system automatically updates. (required)
@@ -286,11 +286,11 @@
     The object takes the form of:
 
 { # When a Google customer&#x27;s account is registered with a reseller, the customer&#x27;s subscriptions for Google services are managed by this reseller. A customer is described by a primary domain name and a physical address.
-  &quot;alternateEmail&quot;: &quot;A String&quot;, # Like the &quot;Customer email&quot; in the reseller tools, this email is the secondary contact used if something happens to the customer&#x27;s service such as service outage or a security issue. This property is required when creating a new customer and should not use the same domain as `customerDomain`.
+  &quot;alternateEmail&quot;: &quot;A String&quot;, # Like the &quot;Customer email&quot; in the reseller tools, this email is the secondary contact used if something happens to the customer&#x27;s service such as service outage or a security issue. This property is required when creating a new &quot;domain&quot; customer and should not use the same domain as `customerDomain`. The `alternateEmail` field is not necessary to create a &quot;team&quot; customer.
   &quot;customerDomain&quot;: &quot;A String&quot;, # The customer&#x27;s primary domain name string. `customerDomain` is required when creating a new customer. Do not include the `www` prefix in the domain when adding a customer.
   &quot;customerDomainVerified&quot;: True or False, # Whether the customer&#x27;s primary domain has been verified.
   &quot;customerId&quot;: &quot;A String&quot;, # This property will always be returned in a response as the unique identifier generated by Google. In a request, this property can be either the primary domain or the unique identifier generated by Google.
-  &quot;customerType&quot;: &quot;A String&quot;, # The type of the customer (DOMAIN or TEAM), default is DOMAIN.
+  &quot;customerType&quot;: &quot;A String&quot;, # Identifies the type of the customer. Acceptable values include: * `domain`: Implies a domain-verified customer (default). * `team`: Implies an email-verified customer. For more information, see [managed teams](https://support.google.com/a/users/answer/9939479).
   &quot;kind&quot;: &quot;reseller#customer&quot;, # Identifies the resource as a customer. Value: `reseller#customer`
   &quot;phoneNumber&quot;: &quot;A String&quot;, # Customer contact phone number. Must start with &quot;+&quot; followed by the country code. The rest of the number can be contiguous numbers or respect the phone local format conventions, but it must be a real phone number and not, for example, &quot;123&quot;. This field is silently ignored if invalid.
   &quot;postalAddress&quot;: { # JSON template for address of a customer. # A customer&#x27;s address information. Each field has a limit of 255 charcters.
@@ -306,7 +306,7 @@
     &quot;region&quot;: &quot;A String&quot;, # An example of a `region` value is `CA` for the state of California.
   },
   &quot;primaryAdmin&quot;: { # JSON template for primary admin in case of TEAM customers # The first admin details of the customer, present in case of TEAM customer.
-    &quot;primaryEmail&quot;: &quot;A String&quot;, # Primary admin&#x27;s domained email This email&#x27;s domain will be used to create TEAM customer
+    &quot;primaryEmail&quot;: &quot;A String&quot;, # The business email of the primary administrator of the customer. The email verification link is sent to this email address at the time of customer creation. Primary administrators have access to the customer&#x27;s Admin Console, including the ability to invite and evict users and manage the administrative needs of the customer.
   },
   &quot;resourceUiUrl&quot;: &quot;A String&quot;, # URL to customer&#x27;s Admin console dashboard. The read-only URL is generated by the API service. This is used if your client application requires the customer to complete a task in the Admin console.
 }
@@ -320,11 +320,11 @@
   An object of the form:
 
     { # When a Google customer&#x27;s account is registered with a reseller, the customer&#x27;s subscriptions for Google services are managed by this reseller. A customer is described by a primary domain name and a physical address.
-  &quot;alternateEmail&quot;: &quot;A String&quot;, # Like the &quot;Customer email&quot; in the reseller tools, this email is the secondary contact used if something happens to the customer&#x27;s service such as service outage or a security issue. This property is required when creating a new customer and should not use the same domain as `customerDomain`.
+  &quot;alternateEmail&quot;: &quot;A String&quot;, # Like the &quot;Customer email&quot; in the reseller tools, this email is the secondary contact used if something happens to the customer&#x27;s service such as service outage or a security issue. This property is required when creating a new &quot;domain&quot; customer and should not use the same domain as `customerDomain`. The `alternateEmail` field is not necessary to create a &quot;team&quot; customer.
   &quot;customerDomain&quot;: &quot;A String&quot;, # The customer&#x27;s primary domain name string. `customerDomain` is required when creating a new customer. Do not include the `www` prefix in the domain when adding a customer.
   &quot;customerDomainVerified&quot;: True or False, # Whether the customer&#x27;s primary domain has been verified.
   &quot;customerId&quot;: &quot;A String&quot;, # This property will always be returned in a response as the unique identifier generated by Google. In a request, this property can be either the primary domain or the unique identifier generated by Google.
-  &quot;customerType&quot;: &quot;A String&quot;, # The type of the customer (DOMAIN or TEAM), default is DOMAIN.
+  &quot;customerType&quot;: &quot;A String&quot;, # Identifies the type of the customer. Acceptable values include: * `domain`: Implies a domain-verified customer (default). * `team`: Implies an email-verified customer. For more information, see [managed teams](https://support.google.com/a/users/answer/9939479).
   &quot;kind&quot;: &quot;reseller#customer&quot;, # Identifies the resource as a customer. Value: `reseller#customer`
   &quot;phoneNumber&quot;: &quot;A String&quot;, # Customer contact phone number. Must start with &quot;+&quot; followed by the country code. The rest of the number can be contiguous numbers or respect the phone local format conventions, but it must be a real phone number and not, for example, &quot;123&quot;. This field is silently ignored if invalid.
   &quot;postalAddress&quot;: { # JSON template for address of a customer. # A customer&#x27;s address information. Each field has a limit of 255 charcters.
@@ -340,7 +340,7 @@
     &quot;region&quot;: &quot;A String&quot;, # An example of a `region` value is `CA` for the state of California.
   },
   &quot;primaryAdmin&quot;: { # JSON template for primary admin in case of TEAM customers # The first admin details of the customer, present in case of TEAM customer.
-    &quot;primaryEmail&quot;: &quot;A String&quot;, # Primary admin&#x27;s domained email This email&#x27;s domain will be used to create TEAM customer
+    &quot;primaryEmail&quot;: &quot;A String&quot;, # The business email of the primary administrator of the customer. The email verification link is sent to this email address at the time of customer creation. Primary administrators have access to the customer&#x27;s Admin Console, including the ability to invite and evict users and manage the administrative needs of the customer.
   },
   &quot;resourceUiUrl&quot;: &quot;A String&quot;, # URL to customer&#x27;s Admin console dashboard. The read-only URL is generated by the API service. This is used if your client application requires the customer to complete a task in the Admin console.
 }</pre>
diff --git a/docs/dyn/reseller_v1.subscriptions.html b/docs/dyn/reseller_v1.subscriptions.html
index fd4d83a..e00164a 100644
--- a/docs/dyn/reseller_v1.subscriptions.html
+++ b/docs/dyn/reseller_v1.subscriptions.html
@@ -79,28 +79,28 @@
 <p class="firstline">Activates a subscription previously suspended by the reseller. If you did not suspend the customer subscription and it is suspended for any other reason, such as for abuse or a pending ToS acceptance, this call will not reactivate the customer subscription.</p>
 <p class="toc_element">
   <code><a href="#changePlan">changePlan(customerId, subscriptionId, body=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Update a subscription plan. Use this method to update a plan for a 30-day trial or a flexible plan subscription to an annual commitment plan with monthly or yearly payments. How a plan is updated differs depending on the plan and the products. For more information, see the description in [manage subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#update_subscription_plan).</p>
+<p class="firstline">Updates a subscription plan. Use this method to update a plan for a 30-day trial or a flexible plan subscription to an annual commitment plan with monthly or yearly payments. How a plan is updated differs depending on the plan and the products. For more information, see the description in [manage subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#update_subscription_plan).</p>
 <p class="toc_element">
   <code><a href="#changeRenewalSettings">changeRenewalSettings(customerId, subscriptionId, body=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Update a user license's renewal settings. This is applicable for accounts with annual commitment plans only. For more information, see the description in [manage subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#update_renewal).</p>
+<p class="firstline">Updates a user license's renewal settings. This is applicable for accounts with annual commitment plans only. For more information, see the description in [manage subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#update_renewal).</p>
 <p class="toc_element">
   <code><a href="#changeSeats">changeSeats(customerId, subscriptionId, body=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Update a subscription's user license settings. For more information about updating an annual commitment plan or a flexible plan subscription’s licenses, see [Manage Subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#update_subscription_seat).</p>
+<p class="firstline">Updates a subscription's user license settings. For more information about updating an annual commitment plan or a flexible plan subscription’s licenses, see [Manage Subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#update_subscription_seat).</p>
 <p class="toc_element">
   <code><a href="#close">close()</a></code></p>
 <p class="firstline">Close httplib2 connections.</p>
 <p class="toc_element">
   <code><a href="#delete">delete(customerId, subscriptionId, deletionType, x__xgafv=None)</a></code></p>
-<p class="firstline">Cancel, suspend, or transfer a subscription to direct.</p>
+<p class="firstline">Cancels, suspends, or transfers a subscription to direct.</p>
 <p class="toc_element">
   <code><a href="#get">get(customerId, subscriptionId, x__xgafv=None)</a></code></p>
-<p class="firstline">Get a specific subscription. The `subscriptionId` can be found using the [Retrieve all reseller subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#get_all_subscriptions) method. For more information about retrieving a specific subscription, see the information descrived in [manage subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#get_subscription).</p>
+<p class="firstline">Gets a specific subscription. The `subscriptionId` can be found using the [Retrieve all reseller subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#get_all_subscriptions) method. For more information about retrieving a specific subscription, see the information descrived in [manage subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#get_subscription).</p>
 <p class="toc_element">
   <code><a href="#insert">insert(customerId, body=None, customerAuthToken=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Create or transfer a subscription. Create a subscription for a customer's account that you ordered using the [Order a new customer account](/admin-sdk/reseller/v1/reference/customers/insert.html) method. For more information about creating a subscription for different payment plans, see [manage subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#create_subscription).\ If you did not order the customer's account using the customer insert method, use the customer's `customerAuthToken` when creating a subscription for that customer. If transferring a G Suite subscription with an associated Google Drive or Google Vault subscription, use the [batch operation](/admin-sdk/reseller/v1/how-tos/batch.html) to transfer all of these subscriptions. For more information, see how to [transfer subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#transfer_a_subscription).</p>
+<p class="firstline">Creates or transfer a subscription. Create a subscription for a customer's account that you ordered using the [Order a new customer account](/admin-sdk/reseller/v1/reference/customers/insert.html) method. For more information about creating a subscription for different payment plans, see [manage subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#create_subscription).\ If you did not order the customer's account using the customer insert method, use the customer's `customerAuthToken` when creating a subscription for that customer. If transferring a G Suite subscription with an associated Google Drive or Google Vault subscription, use the [batch operation](/admin-sdk/reseller/v1/how-tos/batch.html) to transfer all of these subscriptions. For more information, see how to [transfer subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#transfer_a_subscription).</p>
 <p class="toc_element">
   <code><a href="#list">list(customerAuthToken=None, customerId=None, customerNamePrefix=None, maxResults=None, pageToken=None, x__xgafv=None)</a></code></p>
-<p class="firstline">List of subscriptions managed by the reseller. The list can be all subscriptions, all of a customer's subscriptions, or all of a customer's transferable subscriptions. Optionally, this method can filter the response by a `customerNamePrefix`. For more information, see [manage subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions).</p>
+<p class="firstline">Lists of subscriptions managed by the reseller. The list can be all subscriptions, all of a customer's subscriptions, or all of a customer's transferable subscriptions. Optionally, this method can filter the response by a `customerNamePrefix`. For more information, see [manage subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions).</p>
 <p class="toc_element">
   <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
 <p class="firstline">Retrieves the next page of results.</p>
@@ -161,7 +161,7 @@
     &quot;A String&quot;,
   ],
   &quot;transferInfo&quot;: { # Read-only transfer related information for the subscription. For more information, see retrieve transferable subscriptions for a customer.
-    &quot;currentLegacySkuId&quot;: &quot;A String&quot;, # Sku id of the current resold subscription. This is populated only when customer has subscription with legacy sku and the subscription resource is populated with recommeded sku for transfer in.
+    &quot;currentLegacySkuId&quot;: &quot;A String&quot;, # The `skuId` of the current resold subscription. This is populated only when the customer has a subscription with a legacy SKU and the subscription resource is populated with the `skuId` of the SKU recommended for the transfer.
     &quot;minimumTransferableSeats&quot;: 42, # When inserting a subscription, this is the minimum number of seats listed in the transfer order for this product. For example, if the customer has 20 users, the reseller cannot place a transfer order of 15 seats. The minimum is 20 seats.
     &quot;transferabilityExpirationTime&quot;: &quot;A String&quot;, # The time when transfer token or intent to transfer will expire. The time is in milliseconds using UNIX Epoch format.
   },
@@ -174,7 +174,7 @@
 
 <div class="method">
     <code class="details" id="changePlan">changePlan(customerId, subscriptionId, body=None, x__xgafv=None)</code>
-  <pre>Update a subscription plan. Use this method to update a plan for a 30-day trial or a flexible plan subscription to an annual commitment plan with monthly or yearly payments. How a plan is updated differs depending on the plan and the products. For more information, see the description in [manage subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#update_subscription_plan).
+  <pre>Updates a subscription plan. Use this method to update a plan for a 30-day trial or a flexible plan subscription to an annual commitment plan with monthly or yearly payments. How a plan is updated differs depending on the plan and the products. For more information, see the description in [manage subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#update_subscription_plan).
 
 Args:
   customerId: string, Either the customer&#x27;s primary domain name or the customer&#x27;s unique identifier. If using the domain name, we do not recommend using a `customerId` as a key for persistent data. If the domain name for a `customerId` is changed, the Google system automatically updates. (required)
@@ -238,7 +238,7 @@
     &quot;A String&quot;,
   ],
   &quot;transferInfo&quot;: { # Read-only transfer related information for the subscription. For more information, see retrieve transferable subscriptions for a customer.
-    &quot;currentLegacySkuId&quot;: &quot;A String&quot;, # Sku id of the current resold subscription. This is populated only when customer has subscription with legacy sku and the subscription resource is populated with recommeded sku for transfer in.
+    &quot;currentLegacySkuId&quot;: &quot;A String&quot;, # The `skuId` of the current resold subscription. This is populated only when the customer has a subscription with a legacy SKU and the subscription resource is populated with the `skuId` of the SKU recommended for the transfer.
     &quot;minimumTransferableSeats&quot;: 42, # When inserting a subscription, this is the minimum number of seats listed in the transfer order for this product. For example, if the customer has 20 users, the reseller cannot place a transfer order of 15 seats. The minimum is 20 seats.
     &quot;transferabilityExpirationTime&quot;: &quot;A String&quot;, # The time when transfer token or intent to transfer will expire. The time is in milliseconds using UNIX Epoch format.
   },
@@ -251,7 +251,7 @@
 
 <div class="method">
     <code class="details" id="changeRenewalSettings">changeRenewalSettings(customerId, subscriptionId, body=None, x__xgafv=None)</code>
-  <pre>Update a user license&#x27;s renewal settings. This is applicable for accounts with annual commitment plans only. For more information, see the description in [manage subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#update_renewal).
+  <pre>Updates a user license&#x27;s renewal settings. This is applicable for accounts with annual commitment plans only. For more information, see the description in [manage subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#update_renewal).
 
 Args:
   customerId: string, Either the customer&#x27;s primary domain name or the customer&#x27;s unique identifier. If using the domain name, we do not recommend using a `customerId` as a key for persistent data. If the domain name for a `customerId` is changed, the Google system automatically updates. (required)
@@ -307,7 +307,7 @@
     &quot;A String&quot;,
   ],
   &quot;transferInfo&quot;: { # Read-only transfer related information for the subscription. For more information, see retrieve transferable subscriptions for a customer.
-    &quot;currentLegacySkuId&quot;: &quot;A String&quot;, # Sku id of the current resold subscription. This is populated only when customer has subscription with legacy sku and the subscription resource is populated with recommeded sku for transfer in.
+    &quot;currentLegacySkuId&quot;: &quot;A String&quot;, # The `skuId` of the current resold subscription. This is populated only when the customer has a subscription with a legacy SKU and the subscription resource is populated with the `skuId` of the SKU recommended for the transfer.
     &quot;minimumTransferableSeats&quot;: 42, # When inserting a subscription, this is the minimum number of seats listed in the transfer order for this product. For example, if the customer has 20 users, the reseller cannot place a transfer order of 15 seats. The minimum is 20 seats.
     &quot;transferabilityExpirationTime&quot;: &quot;A String&quot;, # The time when transfer token or intent to transfer will expire. The time is in milliseconds using UNIX Epoch format.
   },
@@ -320,7 +320,7 @@
 
 <div class="method">
     <code class="details" id="changeSeats">changeSeats(customerId, subscriptionId, body=None, x__xgafv=None)</code>
-  <pre>Update a subscription&#x27;s user license settings. For more information about updating an annual commitment plan or a flexible plan subscription’s licenses, see [Manage Subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#update_subscription_seat).
+  <pre>Updates a subscription&#x27;s user license settings. For more information about updating an annual commitment plan or a flexible plan subscription’s licenses, see [Manage Subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#update_subscription_seat).
 
 Args:
   customerId: string, Either the customer&#x27;s primary domain name or the customer&#x27;s unique identifier. If using the domain name, we do not recommend using a `customerId` as a key for persistent data. If the domain name for a `customerId` is changed, the Google system automatically updates. (required)
@@ -378,7 +378,7 @@
     &quot;A String&quot;,
   ],
   &quot;transferInfo&quot;: { # Read-only transfer related information for the subscription. For more information, see retrieve transferable subscriptions for a customer.
-    &quot;currentLegacySkuId&quot;: &quot;A String&quot;, # Sku id of the current resold subscription. This is populated only when customer has subscription with legacy sku and the subscription resource is populated with recommeded sku for transfer in.
+    &quot;currentLegacySkuId&quot;: &quot;A String&quot;, # The `skuId` of the current resold subscription. This is populated only when the customer has a subscription with a legacy SKU and the subscription resource is populated with the `skuId` of the SKU recommended for the transfer.
     &quot;minimumTransferableSeats&quot;: 42, # When inserting a subscription, this is the minimum number of seats listed in the transfer order for this product. For example, if the customer has 20 users, the reseller cannot place a transfer order of 15 seats. The minimum is 20 seats.
     &quot;transferabilityExpirationTime&quot;: &quot;A String&quot;, # The time when transfer token or intent to transfer will expire. The time is in milliseconds using UNIX Epoch format.
   },
@@ -396,7 +396,7 @@
 
 <div class="method">
     <code class="details" id="delete">delete(customerId, subscriptionId, deletionType, x__xgafv=None)</code>
-  <pre>Cancel, suspend, or transfer a subscription to direct.
+  <pre>Cancels, suspends, or transfers a subscription to direct.
 
 Args:
   customerId: string, Either the customer&#x27;s primary domain name or the customer&#x27;s unique identifier. If using the domain name, we do not recommend using a `customerId` as a key for persistent data. If the domain name for a `customerId` is changed, the Google system automatically updates. (required)
@@ -415,7 +415,7 @@
 
 <div class="method">
     <code class="details" id="get">get(customerId, subscriptionId, x__xgafv=None)</code>
-  <pre>Get a specific subscription. The `subscriptionId` can be found using the [Retrieve all reseller subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#get_all_subscriptions) method. For more information about retrieving a specific subscription, see the information descrived in [manage subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#get_subscription).
+  <pre>Gets a specific subscription. The `subscriptionId` can be found using the [Retrieve all reseller subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#get_all_subscriptions) method. For more information about retrieving a specific subscription, see the information descrived in [manage subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#get_subscription).
 
 Args:
   customerId: string, Either the customer&#x27;s primary domain name or the customer&#x27;s unique identifier. If using the domain name, we do not recommend using a `customerId` as a key for persistent data. If the domain name for a `customerId` is changed, the Google system automatically updates. (required)
@@ -463,7 +463,7 @@
     &quot;A String&quot;,
   ],
   &quot;transferInfo&quot;: { # Read-only transfer related information for the subscription. For more information, see retrieve transferable subscriptions for a customer.
-    &quot;currentLegacySkuId&quot;: &quot;A String&quot;, # Sku id of the current resold subscription. This is populated only when customer has subscription with legacy sku and the subscription resource is populated with recommeded sku for transfer in.
+    &quot;currentLegacySkuId&quot;: &quot;A String&quot;, # The `skuId` of the current resold subscription. This is populated only when the customer has a subscription with a legacy SKU and the subscription resource is populated with the `skuId` of the SKU recommended for the transfer.
     &quot;minimumTransferableSeats&quot;: 42, # When inserting a subscription, this is the minimum number of seats listed in the transfer order for this product. For example, if the customer has 20 users, the reseller cannot place a transfer order of 15 seats. The minimum is 20 seats.
     &quot;transferabilityExpirationTime&quot;: &quot;A String&quot;, # The time when transfer token or intent to transfer will expire. The time is in milliseconds using UNIX Epoch format.
   },
@@ -476,7 +476,7 @@
 
 <div class="method">
     <code class="details" id="insert">insert(customerId, body=None, customerAuthToken=None, x__xgafv=None)</code>
-  <pre>Create or transfer a subscription. Create a subscription for a customer&#x27;s account that you ordered using the [Order a new customer account](/admin-sdk/reseller/v1/reference/customers/insert.html) method. For more information about creating a subscription for different payment plans, see [manage subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#create_subscription).\ If you did not order the customer&#x27;s account using the customer insert method, use the customer&#x27;s `customerAuthToken` when creating a subscription for that customer. If transferring a G Suite subscription with an associated Google Drive or Google Vault subscription, use the [batch operation](/admin-sdk/reseller/v1/how-tos/batch.html) to transfer all of these subscriptions. For more information, see how to [transfer subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#transfer_a_subscription).
+  <pre>Creates or transfer a subscription. Create a subscription for a customer&#x27;s account that you ordered using the [Order a new customer account](/admin-sdk/reseller/v1/reference/customers/insert.html) method. For more information about creating a subscription for different payment plans, see [manage subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#create_subscription).\ If you did not order the customer&#x27;s account using the customer insert method, use the customer&#x27;s `customerAuthToken` when creating a subscription for that customer. If transferring a G Suite subscription with an associated Google Drive or Google Vault subscription, use the [batch operation](/admin-sdk/reseller/v1/how-tos/batch.html) to transfer all of these subscriptions. For more information, see how to [transfer subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions#transfer_a_subscription).
 
 Args:
   customerId: string, Either the customer&#x27;s primary domain name or the customer&#x27;s unique identifier. If using the domain name, we do not recommend using a `customerId` as a key for persistent data. If the domain name for a `customerId` is changed, the Google system automatically updates. (required)
@@ -518,7 +518,7 @@
     &quot;A String&quot;,
   ],
   &quot;transferInfo&quot;: { # Read-only transfer related information for the subscription. For more information, see retrieve transferable subscriptions for a customer.
-    &quot;currentLegacySkuId&quot;: &quot;A String&quot;, # Sku id of the current resold subscription. This is populated only when customer has subscription with legacy sku and the subscription resource is populated with recommeded sku for transfer in.
+    &quot;currentLegacySkuId&quot;: &quot;A String&quot;, # The `skuId` of the current resold subscription. This is populated only when the customer has a subscription with a legacy SKU and the subscription resource is populated with the `skuId` of the SKU recommended for the transfer.
     &quot;minimumTransferableSeats&quot;: 42, # When inserting a subscription, this is the minimum number of seats listed in the transfer order for this product. For example, if the customer has 20 users, the reseller cannot place a transfer order of 15 seats. The minimum is 20 seats.
     &quot;transferabilityExpirationTime&quot;: &quot;A String&quot;, # The time when transfer token or intent to transfer will expire. The time is in milliseconds using UNIX Epoch format.
   },
@@ -572,7 +572,7 @@
     &quot;A String&quot;,
   ],
   &quot;transferInfo&quot;: { # Read-only transfer related information for the subscription. For more information, see retrieve transferable subscriptions for a customer.
-    &quot;currentLegacySkuId&quot;: &quot;A String&quot;, # Sku id of the current resold subscription. This is populated only when customer has subscription with legacy sku and the subscription resource is populated with recommeded sku for transfer in.
+    &quot;currentLegacySkuId&quot;: &quot;A String&quot;, # The `skuId` of the current resold subscription. This is populated only when the customer has a subscription with a legacy SKU and the subscription resource is populated with the `skuId` of the SKU recommended for the transfer.
     &quot;minimumTransferableSeats&quot;: 42, # When inserting a subscription, this is the minimum number of seats listed in the transfer order for this product. For example, if the customer has 20 users, the reseller cannot place a transfer order of 15 seats. The minimum is 20 seats.
     &quot;transferabilityExpirationTime&quot;: &quot;A String&quot;, # The time when transfer token or intent to transfer will expire. The time is in milliseconds using UNIX Epoch format.
   },
@@ -585,7 +585,7 @@
 
 <div class="method">
     <code class="details" id="list">list(customerAuthToken=None, customerId=None, customerNamePrefix=None, maxResults=None, pageToken=None, x__xgafv=None)</code>
-  <pre>List of subscriptions managed by the reseller. The list can be all subscriptions, all of a customer&#x27;s subscriptions, or all of a customer&#x27;s transferable subscriptions. Optionally, this method can filter the response by a `customerNamePrefix`. For more information, see [manage subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions).
+  <pre>Lists of subscriptions managed by the reseller. The list can be all subscriptions, all of a customer&#x27;s subscriptions, or all of a customer&#x27;s transferable subscriptions. Optionally, this method can filter the response by a `customerNamePrefix`. For more information, see [manage subscriptions](/admin-sdk/reseller/v1/how-tos/manage_subscriptions).
 
 Args:
   customerAuthToken: string, The `customerAuthToken` query string is required when creating a resold account that transfers a direct customer&#x27;s subscription or transfers another reseller customer&#x27;s subscription to your reseller management. This is a hexadecimal authentication token needed to complete the subscription transfer. For more information, see the administrator help center.
@@ -640,7 +640,7 @@
         &quot;A String&quot;,
       ],
       &quot;transferInfo&quot;: { # Read-only transfer related information for the subscription. For more information, see retrieve transferable subscriptions for a customer.
-        &quot;currentLegacySkuId&quot;: &quot;A String&quot;, # Sku id of the current resold subscription. This is populated only when customer has subscription with legacy sku and the subscription resource is populated with recommeded sku for transfer in.
+        &quot;currentLegacySkuId&quot;: &quot;A String&quot;, # The `skuId` of the current resold subscription. This is populated only when the customer has a subscription with a legacy SKU and the subscription resource is populated with the `skuId` of the SKU recommended for the transfer.
         &quot;minimumTransferableSeats&quot;: 42, # When inserting a subscription, this is the minimum number of seats listed in the transfer order for this product. For example, if the customer has 20 users, the reseller cannot place a transfer order of 15 seats. The minimum is 20 seats.
         &quot;transferabilityExpirationTime&quot;: &quot;A String&quot;, # The time when transfer token or intent to transfer will expire. The time is in milliseconds using UNIX Epoch format.
       },
@@ -717,7 +717,7 @@
     &quot;A String&quot;,
   ],
   &quot;transferInfo&quot;: { # Read-only transfer related information for the subscription. For more information, see retrieve transferable subscriptions for a customer.
-    &quot;currentLegacySkuId&quot;: &quot;A String&quot;, # Sku id of the current resold subscription. This is populated only when customer has subscription with legacy sku and the subscription resource is populated with recommeded sku for transfer in.
+    &quot;currentLegacySkuId&quot;: &quot;A String&quot;, # The `skuId` of the current resold subscription. This is populated only when the customer has a subscription with a legacy SKU and the subscription resource is populated with the `skuId` of the SKU recommended for the transfer.
     &quot;minimumTransferableSeats&quot;: 42, # When inserting a subscription, this is the minimum number of seats listed in the transfer order for this product. For example, if the customer has 20 users, the reseller cannot place a transfer order of 15 seats. The minimum is 20 seats.
     &quot;transferabilityExpirationTime&quot;: &quot;A String&quot;, # The time when transfer token or intent to transfer will expire. The time is in milliseconds using UNIX Epoch format.
   },
@@ -778,7 +778,7 @@
     &quot;A String&quot;,
   ],
   &quot;transferInfo&quot;: { # Read-only transfer related information for the subscription. For more information, see retrieve transferable subscriptions for a customer.
-    &quot;currentLegacySkuId&quot;: &quot;A String&quot;, # Sku id of the current resold subscription. This is populated only when customer has subscription with legacy sku and the subscription resource is populated with recommeded sku for transfer in.
+    &quot;currentLegacySkuId&quot;: &quot;A String&quot;, # The `skuId` of the current resold subscription. This is populated only when the customer has a subscription with a legacy SKU and the subscription resource is populated with the `skuId` of the SKU recommended for the transfer.
     &quot;minimumTransferableSeats&quot;: 42, # When inserting a subscription, this is the minimum number of seats listed in the transfer order for this product. For example, if the customer has 20 users, the reseller cannot place a transfer order of 15 seats. The minimum is 20 seats.
     &quot;transferabilityExpirationTime&quot;: &quot;A String&quot;, # The time when transfer token or intent to transfer will expire. The time is in milliseconds using UNIX Epoch format.
   },
diff --git a/docs/dyn/retail_v2.projects.locations.catalogs.branches.products.html b/docs/dyn/retail_v2.projects.locations.catalogs.branches.products.html
index f6b2fa5..de0c0c8 100644
--- a/docs/dyn/retail_v2.projects.locations.catalogs.branches.products.html
+++ b/docs/dyn/retail_v2.projects.locations.catalogs.branches.products.html
@@ -75,6 +75,9 @@
 <h1><a href="retail_v2.html">Retail API</a> . <a href="retail_v2.projects.html">projects</a> . <a href="retail_v2.projects.locations.html">locations</a> . <a href="retail_v2.projects.locations.catalogs.html">catalogs</a> . <a href="retail_v2.projects.locations.catalogs.branches.html">branches</a> . <a href="retail_v2.projects.locations.catalogs.branches.products.html">products</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
+  <code><a href="#addFulfillmentPlaces">addFulfillmentPlaces(product, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Incrementally adds place IDs to Product.fulfillment_info.place_ids. This process is asynchronous and does not require the Product to exist before updating fulfillment information. If the request is valid, the update will be enqueued and processed downstream. As a consequence, when a response is returned, the added place IDs are not immediately manifested in the Product queried by GetProduct or ListProducts. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.</p>
+<p class="toc_element">
   <code><a href="#close">close()</a></code></p>
 <p class="firstline">Close httplib2 connections.</p>
 <p class="toc_element">
@@ -90,10 +93,69 @@
   <code><a href="#import_">import_(parent, body=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Bulk import of multiple Products. Request processing may be synchronous. No partial updating is supported. Non-existing items are created. Note that it is possible for a subset of the Products to be successfully updated.</p>
 <p class="toc_element">
+  <code><a href="#list">list(parent, filter=None, pageSize=None, pageToken=None, readMask=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Gets a list of Products.</p>
+<p class="toc_element">
+  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
+<p class="firstline">Retrieves the next page of results.</p>
+<p class="toc_element">
   <code><a href="#patch">patch(name, allowMissing=None, body=None, updateMask=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Updates a Product.</p>
+<p class="toc_element">
+  <code><a href="#removeFulfillmentPlaces">removeFulfillmentPlaces(product, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Incrementally removes place IDs from a Product.fulfillment_info.place_ids. This process is asynchronous and does not require the Product to exist before updating fulfillment information. If the request is valid, the update will be enqueued and processed downstream. As a consequence, when a response is returned, the removed place IDs are not immediately manifested in the Product queried by GetProduct or ListProducts. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.</p>
+<p class="toc_element">
+  <code><a href="#setInventory">setInventory(name, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Updates inventory information for a Product while respecting the last update timestamps of each inventory field. This process is asynchronous and does not require the Product to exist before updating fulfillment information. If the request is valid, the update will be enqueued and processed downstream. As a consequence, when a response is returned, updates are not immediately manifested in the Product queried by GetProduct or ListProducts. When inventory is updated with CreateProduct and UpdateProduct, the specified inventory field value(s) will overwrite any existing value(s) while ignoring the last update time for this field. Furthermore, the last update time for the specified inventory fields will be overwritten to the time of the CreateProduct or UpdateProduct request. If no inventory fields are set in CreateProductRequest.product, then any pre-existing inventory information for this product will be used. If no inventory fields are set in UpdateProductRequest.set_mask, then any existing inventory information will be preserved. Pre-existing inventory information can only be updated with SetInventory, AddFulfillmentPlaces, and RemoveFulfillmentPlaces. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.</p>
 <h3>Method Details</h3>
 <div class="method">
+    <code class="details" id="addFulfillmentPlaces">addFulfillmentPlaces(product, body=None, x__xgafv=None)</code>
+  <pre>Incrementally adds place IDs to Product.fulfillment_info.place_ids. This process is asynchronous and does not require the Product to exist before updating fulfillment information. If the request is valid, the update will be enqueued and processed downstream. As a consequence, when a response is returned, the added place IDs are not immediately manifested in the Product queried by GetProduct or ListProducts. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.
+
+Args:
+  product: string, Required. Full resource name of Product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/some_product_id`. If the caller does not have permission to access the Product, regardless of whether or not it exists, a PERMISSION_DENIED error is returned. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Request message for AddFulfillmentPlaces method.
+  &quot;addTime&quot;: &quot;A String&quot;, # The time when the fulfillment updates are issued, used to prevent out-of-order updates on fulfillment information. If not provided, the internal system time will be used.
+  &quot;allowMissing&quot;: True or False, # If set to true, and the Product is not found, the fulfillment information will still be processed and retained for at most 1 day and processed once the Product is created. If set to false, an INVALID_ARGUMENT error is returned if the Product is not found.
+  &quot;placeIds&quot;: [ # Required. The IDs for this type, such as the store IDs for &quot;pickup-in-store&quot; or the region IDs for &quot;same-day-delivery&quot; to be added for this type. Duplicate IDs will be automatically ignored. At least 1 value is required, and a maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned. If the total number of place IDs exceeds 2000 for this type after adding, then the update will be rejected.
+    &quot;A String&quot;,
+  ],
+  &quot;type&quot;: &quot;A String&quot;, # Required. The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned. This field directly corresponds to Product.fulfillment_info.type.
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # This resource represents a long-running operation that is the result of a network API call.
+  &quot;done&quot;: True or False, # 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.
+  &quot;error&quot;: { # 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). # The error result of the operation in case of failure or cancellation.
+    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
+    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
+      {
+        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+      },
+    ],
+    &quot;message&quot;: &quot;A String&quot;, # 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.
+  },
+  &quot;metadata&quot;: { # 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.
+    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+  },
+  &quot;name&quot;: &quot;A String&quot;, # 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}`.
+  &quot;response&quot;: { # 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`.
+    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+  },
+}</pre>
+</div>
+
+<div class="method">
     <code class="details" id="close">close()</code>
   <pre>Close httplib2 connections.</pre>
 </div>
@@ -108,23 +170,60 @@
     The object takes the form of:
 
 { # Product captures all metadata information of items to be recommended or searched.
-  &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters.
+  &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
     &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+      &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
       &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         3.14,
       ],
+      &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
       &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         &quot;A String&quot;,
       ],
     },
   },
+  &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+    &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+      &quot;A String&quot;,
+    ],
+    &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+      &quot;A String&quot;,
+    ],
+  },
   &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
   &quot;availableQuantity&quot;: 42, # The available quantity of the item.
-  &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for recommendation.
+  &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+  &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+    &quot;A String&quot;,
+  ],
   &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
     &quot;A String&quot;,
   ],
+  &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+    &quot;A String&quot;,
+  ],
+  &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+    &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+      &quot;A String&quot;,
+    ],
+    &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+      &quot;A String&quot;,
+    ],
+  },
+  &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+    &quot;A String&quot;,
+  ],
   &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+  &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+  &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+    { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+      &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;A String&quot;,
+      ],
+      &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+    },
+  ],
+  &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
   &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
   &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
     { # Product thumbnail/detail image.
@@ -133,20 +232,64 @@
       &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
     },
   ],
+  &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+  &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+    &quot;A String&quot;,
+  ],
   &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+  &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+    &quot;A String&quot;,
+  ],
   &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
     &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
-    &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned.
+    &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
     &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
     &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+    &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+    &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+    &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+      &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+        &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+        &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+        &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+        &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+      },
+      &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+        &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+        &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+        &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+        &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+      },
+    },
   },
   &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+  &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+    { # Promotion information.
+      &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+    },
+  ],
+  &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+  &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+    &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+      42,
+    ],
+  },
+  &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+    &quot;A String&quot;,
+  ],
   &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
     &quot;A String&quot;,
   ],
   &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+  &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
   &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
   &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+  &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+    # Object with schema name: GoogleCloudRetailV2Product
+  ],
 }
 
   productId: string, Required. The ID to use for the Product, which will become the final component of the Product.name. If the caller does not have permission to create the Product, regardless of whether or not it exists, a PERMISSION_DENIED error is returned. This field must be unique among all Products with the same parent. Otherwise, an ALREADY_EXISTS error is returned. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.
@@ -159,23 +302,60 @@
   An object of the form:
 
     { # Product captures all metadata information of items to be recommended or searched.
-  &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters.
+  &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
     &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+      &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
       &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         3.14,
       ],
+      &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
       &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         &quot;A String&quot;,
       ],
     },
   },
+  &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+    &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+      &quot;A String&quot;,
+    ],
+    &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+      &quot;A String&quot;,
+    ],
+  },
   &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
   &quot;availableQuantity&quot;: 42, # The available quantity of the item.
-  &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for recommendation.
+  &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+  &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+    &quot;A String&quot;,
+  ],
   &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
     &quot;A String&quot;,
   ],
+  &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+    &quot;A String&quot;,
+  ],
+  &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+    &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+      &quot;A String&quot;,
+    ],
+    &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+      &quot;A String&quot;,
+    ],
+  },
+  &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+    &quot;A String&quot;,
+  ],
   &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+  &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+  &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+    { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+      &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;A String&quot;,
+      ],
+      &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+    },
+  ],
+  &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
   &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
   &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
     { # Product thumbnail/detail image.
@@ -184,20 +364,64 @@
       &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
     },
   ],
+  &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+  &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+    &quot;A String&quot;,
+  ],
   &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+  &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+    &quot;A String&quot;,
+  ],
   &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
     &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
-    &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned.
+    &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
     &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
     &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+    &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+    &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+    &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+      &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+        &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+        &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+        &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+        &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+      },
+      &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+        &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+        &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+        &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+        &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+      },
+    },
   },
   &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+  &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+    { # Promotion information.
+      &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+    },
+  ],
+  &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+  &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+    &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+      42,
+    ],
+  },
+  &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+    &quot;A String&quot;,
+  ],
   &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
     &quot;A String&quot;,
   ],
   &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+  &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
   &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
   &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+  &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+    # Object with schema name: GoogleCloudRetailV2Product
+  ],
 }</pre>
 </div>
 
@@ -234,23 +458,60 @@
   An object of the form:
 
     { # Product captures all metadata information of items to be recommended or searched.
-  &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters.
+  &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
     &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+      &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
       &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         3.14,
       ],
+      &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
       &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         &quot;A String&quot;,
       ],
     },
   },
+  &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+    &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+      &quot;A String&quot;,
+    ],
+    &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+      &quot;A String&quot;,
+    ],
+  },
   &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
   &quot;availableQuantity&quot;: 42, # The available quantity of the item.
-  &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for recommendation.
+  &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+  &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+    &quot;A String&quot;,
+  ],
   &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
     &quot;A String&quot;,
   ],
+  &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+    &quot;A String&quot;,
+  ],
+  &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+    &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+      &quot;A String&quot;,
+    ],
+    &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+      &quot;A String&quot;,
+    ],
+  },
+  &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+    &quot;A String&quot;,
+  ],
   &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+  &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+  &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+    { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+      &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;A String&quot;,
+      ],
+      &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+    },
+  ],
+  &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
   &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
   &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
     { # Product thumbnail/detail image.
@@ -259,20 +520,64 @@
       &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
     },
   ],
+  &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+  &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+    &quot;A String&quot;,
+  ],
   &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+  &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+    &quot;A String&quot;,
+  ],
   &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
     &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
-    &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned.
+    &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
     &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
     &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+    &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+    &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+    &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+      &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+        &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+        &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+        &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+        &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+      },
+      &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+        &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+        &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+        &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+        &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+      },
+    },
   },
   &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+  &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+    { # Promotion information.
+      &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+    },
+  ],
+  &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+  &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+    &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+      42,
+    ],
+  },
+  &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+    &quot;A String&quot;,
+  ],
   &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
     &quot;A String&quot;,
   ],
   &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+  &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
   &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
   &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+  &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+    # Object with schema name: GoogleCloudRetailV2Product
+  ],
 }</pre>
 </div>
 
@@ -291,14 +596,19 @@
   },
   &quot;inputConfig&quot;: { # The input config source for products. # Required. The desired input location of the data.
     &quot;bigQuerySource&quot;: { # BigQuery source import data from. # BigQuery input source.
-      &quot;dataSchema&quot;: &quot;A String&quot;, # The schema to use when parsing the data from the source. Supported values for product imports: * `product` (default): One JSON Product per line. Each product must have a valid Product.id. * `product_merchant_center`: See [Importing catalog data from Merchant Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc). Supported values for user events imports: * `user_event` (default): One JSON UserEvent per line. * `user_event_ga360`: Using https://support.google.com/analytics/answer/3437719?hl=en.
+      &quot;dataSchema&quot;: &quot;A String&quot;, # The schema to use when parsing the data from the source. Supported values for product imports: * `product` (default): One JSON Product per line. Each product must have a valid Product.id. * `product_merchant_center`: See [Importing catalog data from Merchant Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc). Supported values for user events imports: * `user_event` (default): One JSON UserEvent per line. * `user_event_ga360`: Using https://support.google.com/analytics/answer/3437719.
       &quot;datasetId&quot;: &quot;A String&quot;, # Required. The BigQuery data set to copy the data from with a length limit of 1,024 characters.
       &quot;gcsStagingDir&quot;: &quot;A String&quot;, # Intermediate Cloud Storage directory used for the import with a length limit of 2,000 characters. Can be specified if one wants to have the BigQuery export to a specific Cloud Storage directory.
+      &quot;partitionDate&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # BigQuery time partitioned table&#x27;s _PARTITIONDATE in YYYY-MM-DD format. Only supported when ImportProductsRequest.reconciliation_mode is set to `FULL`.
+        &quot;day&quot;: 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn&#x27;t significant.
+        &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
+        &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
+      },
       &quot;projectId&quot;: &quot;A String&quot;, # The project ID (can be project # or ID) that the BigQuery source is in with a length limit of 128 characters. If not specified, inherits the project ID from the parent request.
       &quot;tableId&quot;: &quot;A String&quot;, # Required. The BigQuery table to copy the data from with a length limit of 1,024 characters.
     },
     &quot;gcsSource&quot;: { # Google Cloud Storage location for input content. format. # Google Cloud Storage location for the input content.
-      &quot;dataSchema&quot;: &quot;A String&quot;, # The schema to use when parsing the data from the source. Supported values for product imports: * `product` (default): One JSON Product per line. Each product must have a valid Product.id. * `product_merchant_center`: See [Importing catalog data from Merchant Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc). Supported values for user events imports: * `user_event` (default): One JSON UserEvent per line. * `user_event_ga360`: Using https://support.google.com/analytics/answer/3437719?hl=en.
+      &quot;dataSchema&quot;: &quot;A String&quot;, # The schema to use when parsing the data from the source. Supported values for product imports: * `product` (default): One JSON Product per line. Each product must have a valid Product.id. * `product_merchant_center`: See [Importing catalog data from Merchant Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc). Supported values for user events imports: * `user_event` (default): One JSON UserEvent per line. * `user_event_ga360`: Using https://support.google.com/analytics/answer/3437719.
       &quot;inputUris&quot;: [ # Required. Google Cloud Storage URIs to input files. URI can be up to 2000 characters long. URIs can match the full object path (for example, `gs://bucket/directory/object.json`) or a pattern matching one or more files, such as `gs://bucket/directory/*.json`. A request can contain at most 100 files, and each file can be up to 2 GB. See [Importing product information](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog) for the expected file format and setup instructions.
         &quot;A String&quot;,
       ],
@@ -306,23 +616,60 @@
     &quot;productInlineSource&quot;: { # The inline source for the input config for ImportProducts method. # The Inline source for the input content for products.
       &quot;products&quot;: [ # Required. A list of products to update/create. Each product must have a valid Product.id. Recommended max of 100 items.
         { # Product captures all metadata information of items to be recommended or searched.
-          &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters.
+          &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
             &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+              &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
               &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
                 3.14,
               ],
+              &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
               &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
                 &quot;A String&quot;,
               ],
             },
           },
+          &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+            &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+              &quot;A String&quot;,
+            ],
+            &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+              &quot;A String&quot;,
+            ],
+          },
           &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
           &quot;availableQuantity&quot;: 42, # The available quantity of the item.
-          &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for recommendation.
+          &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+          &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+            &quot;A String&quot;,
+          ],
           &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
             &quot;A String&quot;,
           ],
+          &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+            &quot;A String&quot;,
+          ],
+          &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+            &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+              &quot;A String&quot;,
+            ],
+            &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+              &quot;A String&quot;,
+            ],
+          },
+          &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+            &quot;A String&quot;,
+          ],
           &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+          &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+          &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+            { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+              &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+                &quot;A String&quot;,
+              ],
+              &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+            },
+          ],
+          &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
           &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
           &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
             { # Product thumbnail/detail image.
@@ -331,24 +678,71 @@
               &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
             },
           ],
+          &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+          &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+            &quot;A String&quot;,
+          ],
           &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+          &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+            &quot;A String&quot;,
+          ],
           &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
             &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
-            &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned.
+            &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
             &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
             &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+            &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+            &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+            &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+              &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+                &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+                &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+                &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+                &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+              },
+              &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+                &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+                &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+                &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+                &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+              },
+            },
           },
           &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+          &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+            { # Promotion information.
+              &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+            },
+          ],
+          &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+          &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+            &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+            &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+            &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+              42,
+            ],
+          },
+          &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+            &quot;A String&quot;,
+          ],
           &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
             &quot;A String&quot;,
           ],
           &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+          &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
           &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
           &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+          &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+            # Object with schema name: GoogleCloudRetailV2Product
+          ],
         },
       ],
     },
   },
+  &quot;notificationPubsubTopic&quot;: &quot;A String&quot;, # Pub/Sub topic for receiving notification. If this field is set, when the import is finished, a notification will be sent to specified Pub/Sub topic. The message data will be JSON string of a Operation. Format of the Pub/Sub topic is `projects/{project}/topics/{topic}`. Only supported when ImportProductsRequest.reconciliation_mode is set to `FULL`.
+  &quot;reconciliationMode&quot;: &quot;A String&quot;, # The mode of reconciliation between existing products and the products to be imported. Defaults to ReconciliationMode.INCREMENTAL.
+  &quot;requestId&quot;: &quot;A String&quot;, # Unique identifier provided by client, within the ancestor dataset scope. Ensures idempotency and used for request deduplication. Server-generated if unspecified. Up to 128 characters long and must match the pattern: &quot;[a-zA-Z0-9_]+&quot;. This is returned as Operation.name in ImportMetadata. Only supported when ImportProductsRequest.reconciliation_mode is set to `FULL`.
   &quot;updateMask&quot;: &quot;A String&quot;, # Indicates which fields in the provided imported &#x27;products&#x27; to update. If not set, will by default update all fields.
 }
 
@@ -382,6 +776,167 @@
 </div>
 
 <div class="method">
+    <code class="details" id="list">list(parent, filter=None, pageSize=None, pageToken=None, readMask=None, x__xgafv=None)</code>
+  <pre>Gets a list of Products.
+
+Args:
+  parent: string, Required. The parent branch resource name, such as `projects/*/locations/global/catalogs/default_catalog/branches/0`. Use `default_branch` as the branch ID, to list products under the default branch. If the caller does not have permission to list Products under this branch, regardless of whether or not this branch exists, a PERMISSION_DENIED error is returned. (required)
+  filter: string, A filter to apply on the list results. Supported features: * List all the products under the parent branch if filter is unset. * List Product.Type.VARIANT Products sharing the same Product.Type.PRIMARY Product. For example: `primary_product_id = &quot;some_product_id&quot;` * List Products bundled in a Product.Type.COLLECTION Product. For example: `collection_product_id = &quot;some_product_id&quot;` * List Products with a partibular type. For example: `type = &quot;PRIMARY&quot;` `type = &quot;VARIANT&quot;` `type = &quot;COLLECTION&quot;` If the field is unrecognizable, an INVALID_ARGUMENT error is returned. If the specified Product.Type.PRIMARY Product or Product.Type.COLLECTION Product does not exist, a NOT_FOUND error is returned.
+  pageSize: integer, Maximum number of Products to return. If unspecified, defaults to 100. The maximum allowed value is 1000. Values above 1000 will be coerced to 1000. If this field is negative, an INVALID_ARGUMENT error is returned.
+  pageToken: string, A page token ListProductsResponse.next_page_token, received from a previous ProductService.ListProducts call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to ProductService.ListProducts must match the call that provided the page token. Otherwise, an INVALID_ARGUMENT error is returned.
+  readMask: string, The fields of Product to return in the responses. If not set or empty, the following fields are returned: * Product.name * Product.id * Product.title * Product.uri * Product.images * Product.price_info * Product.brands If &quot;*&quot; is provided, all fields are returned. Product.name is always returned no matter what mask is set. If an unsupported or unknown field is provided, an INVALID_ARGUMENT error is returned.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Response message for ProductService.ListProducts method.
+  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token that can be sent as ListProductsRequest.page_token to retrieve the next page. If this field is omitted, there are no subsequent pages.
+  &quot;products&quot;: [ # The Products.
+    { # Product captures all metadata information of items to be recommended or searched.
+      &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
+        &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+          &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
+          &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
+            3.14,
+          ],
+          &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
+          &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
+            &quot;A String&quot;,
+          ],
+        },
+      },
+      &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+        &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+          &quot;A String&quot;,
+        ],
+        &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+          &quot;A String&quot;,
+        ],
+      },
+      &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
+      &quot;availableQuantity&quot;: 42, # The available quantity of the item.
+      &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+      &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+        &quot;A String&quot;,
+      ],
+      &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
+        &quot;A String&quot;,
+      ],
+      &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+        &quot;A String&quot;,
+      ],
+      &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+        &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+          &quot;A String&quot;,
+        ],
+        &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+          &quot;A String&quot;,
+        ],
+      },
+      &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+        &quot;A String&quot;,
+      ],
+      &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+      &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+      &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+        { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+          &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+            &quot;A String&quot;,
+          ],
+          &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+        },
+      ],
+      &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
+      &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
+      &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
+        { # Product thumbnail/detail image.
+          &quot;height&quot;: 42, # Height of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;uri&quot;: &quot;A String&quot;, # Required. URI of the image. This field must be a valid UTF-8 encoded URI with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
+          &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+        },
+      ],
+      &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+      &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+        &quot;A String&quot;,
+      ],
+      &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+      &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+        &quot;A String&quot;,
+      ],
+      &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
+        &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
+        &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
+        &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
+        &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+        &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+        &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+        &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+          &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+            &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+            &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+            &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+            &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+          },
+          &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+            &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+            &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+            &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+            &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+          },
+        },
+      },
+      &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+      &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+        { # Promotion information.
+          &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+        },
+      ],
+      &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+      &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+        &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+          42,
+        ],
+      },
+      &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+      &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+        &quot;A String&quot;,
+      ],
+      &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
+        &quot;A String&quot;,
+      ],
+      &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+      &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
+      &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
+      &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+      &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+        # Object with schema name: GoogleCloudRetailV2Product
+      ],
+    },
+  ],
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
+  <pre>Retrieves the next page of results.
+
+Args:
+  previous_request: The request for the previous page. (required)
+  previous_response: The response from the request for the previous page. (required)
+
+Returns:
+  A request object that you can call &#x27;execute()&#x27; on to request the next
+  page. Returns None if there are no more items in the collection.
+    </pre>
+</div>
+
+<div class="method">
     <code class="details" id="patch">patch(name, allowMissing=None, body=None, updateMask=None, x__xgafv=None)</code>
   <pre>Updates a Product.
 
@@ -391,23 +946,60 @@
     The object takes the form of:
 
 { # Product captures all metadata information of items to be recommended or searched.
-  &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters.
+  &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
     &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+      &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
       &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         3.14,
       ],
+      &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
       &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         &quot;A String&quot;,
       ],
     },
   },
+  &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+    &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+      &quot;A String&quot;,
+    ],
+    &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+      &quot;A String&quot;,
+    ],
+  },
   &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
   &quot;availableQuantity&quot;: 42, # The available quantity of the item.
-  &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for recommendation.
+  &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+  &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+    &quot;A String&quot;,
+  ],
   &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
     &quot;A String&quot;,
   ],
+  &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+    &quot;A String&quot;,
+  ],
+  &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+    &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+      &quot;A String&quot;,
+    ],
+    &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+      &quot;A String&quot;,
+    ],
+  },
+  &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+    &quot;A String&quot;,
+  ],
   &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+  &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+  &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+    { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+      &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;A String&quot;,
+      ],
+      &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+    },
+  ],
+  &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
   &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
   &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
     { # Product thumbnail/detail image.
@@ -416,20 +1008,64 @@
       &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
     },
   ],
+  &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+  &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+    &quot;A String&quot;,
+  ],
   &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+  &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+    &quot;A String&quot;,
+  ],
   &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
     &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
-    &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned.
+    &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
     &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
     &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+    &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+    &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+    &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+      &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+        &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+        &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+        &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+        &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+      },
+      &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+        &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+        &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+        &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+        &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+      },
+    },
   },
   &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+  &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+    { # Promotion information.
+      &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+    },
+  ],
+  &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+  &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+    &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+      42,
+    ],
+  },
+  &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+    &quot;A String&quot;,
+  ],
   &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
     &quot;A String&quot;,
   ],
   &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+  &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
   &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
   &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+  &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+    # Object with schema name: GoogleCloudRetailV2Product
+  ],
 }
 
   allowMissing: boolean, If set to true, and the Product is not found, a new Product will be created. In this situation, `update_mask` is ignored.
@@ -443,23 +1079,60 @@
   An object of the form:
 
     { # Product captures all metadata information of items to be recommended or searched.
-  &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters.
+  &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
     &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+      &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
       &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         3.14,
       ],
+      &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
       &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         &quot;A String&quot;,
       ],
     },
   },
+  &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+    &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+      &quot;A String&quot;,
+    ],
+    &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+      &quot;A String&quot;,
+    ],
+  },
   &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
   &quot;availableQuantity&quot;: 42, # The available quantity of the item.
-  &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for recommendation.
+  &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+  &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+    &quot;A String&quot;,
+  ],
   &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
     &quot;A String&quot;,
   ],
+  &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+    &quot;A String&quot;,
+  ],
+  &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+    &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+      &quot;A String&quot;,
+    ],
+    &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+      &quot;A String&quot;,
+    ],
+  },
+  &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+    &quot;A String&quot;,
+  ],
   &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+  &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+  &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+    { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+      &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;A String&quot;,
+      ],
+      &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+    },
+  ],
+  &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
   &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
   &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
     { # Product thumbnail/detail image.
@@ -468,20 +1141,277 @@
       &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
     },
   ],
+  &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+  &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+    &quot;A String&quot;,
+  ],
   &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+  &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+    &quot;A String&quot;,
+  ],
   &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
     &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
-    &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned.
+    &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
     &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
     &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+    &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+    &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+    &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+      &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+        &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+        &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+        &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+        &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+      },
+      &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+        &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+        &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+        &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+        &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+      },
+    },
   },
   &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+  &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+    { # Promotion information.
+      &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+    },
+  ],
+  &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+  &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+    &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+      42,
+    ],
+  },
+  &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+    &quot;A String&quot;,
+  ],
   &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
     &quot;A String&quot;,
   ],
   &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+  &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
   &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
   &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+  &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+    # Object with schema name: GoogleCloudRetailV2Product
+  ],
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="removeFulfillmentPlaces">removeFulfillmentPlaces(product, body=None, x__xgafv=None)</code>
+  <pre>Incrementally removes place IDs from a Product.fulfillment_info.place_ids. This process is asynchronous and does not require the Product to exist before updating fulfillment information. If the request is valid, the update will be enqueued and processed downstream. As a consequence, when a response is returned, the removed place IDs are not immediately manifested in the Product queried by GetProduct or ListProducts. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.
+
+Args:
+  product: string, Required. Full resource name of Product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/some_product_id`. If the caller does not have permission to access the Product, regardless of whether or not it exists, a PERMISSION_DENIED error is returned. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Request message for RemoveFulfillmentPlaces method.
+  &quot;allowMissing&quot;: True or False, # If set to true, and the Product is not found, the fulfillment information will still be processed and retained for at most 1 day and processed once the Product is created. If set to false, an INVALID_ARGUMENT error is returned if the Product is not found.
+  &quot;placeIds&quot;: [ # Required. The IDs for this type, such as the store IDs for &quot;pickup-in-store&quot; or the region IDs for &quot;same-day-delivery&quot;, to be removed for this type. At least 1 value is required, and a maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;A String&quot;,
+  ],
+  &quot;removeTime&quot;: &quot;A String&quot;, # The time when the fulfillment updates are issued, used to prevent out-of-order updates on fulfillment information. If not provided, the internal system time will be used.
+  &quot;type&quot;: &quot;A String&quot;, # Required. The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned. This field directly corresponds to Product.fulfillment_info.type.
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # This resource represents a long-running operation that is the result of a network API call.
+  &quot;done&quot;: True or False, # 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.
+  &quot;error&quot;: { # 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). # The error result of the operation in case of failure or cancellation.
+    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
+    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
+      {
+        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+      },
+    ],
+    &quot;message&quot;: &quot;A String&quot;, # 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.
+  },
+  &quot;metadata&quot;: { # 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.
+    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+  },
+  &quot;name&quot;: &quot;A String&quot;, # 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}`.
+  &quot;response&quot;: { # 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`.
+    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+  },
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="setInventory">setInventory(name, body=None, x__xgafv=None)</code>
+  <pre>Updates inventory information for a Product while respecting the last update timestamps of each inventory field. This process is asynchronous and does not require the Product to exist before updating fulfillment information. If the request is valid, the update will be enqueued and processed downstream. As a consequence, when a response is returned, updates are not immediately manifested in the Product queried by GetProduct or ListProducts. When inventory is updated with CreateProduct and UpdateProduct, the specified inventory field value(s) will overwrite any existing value(s) while ignoring the last update time for this field. Furthermore, the last update time for the specified inventory fields will be overwritten to the time of the CreateProduct or UpdateProduct request. If no inventory fields are set in CreateProductRequest.product, then any pre-existing inventory information for this product will be used. If no inventory fields are set in UpdateProductRequest.set_mask, then any existing inventory information will be preserved. Pre-existing inventory information can only be updated with SetInventory, AddFulfillmentPlaces, and RemoveFulfillmentPlaces. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.
+
+Args:
+  name: string, Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Request message for SetInventory method.
+  &quot;allowMissing&quot;: True or False, # If set to true, and the Product with name Product.name is not found, the inventory update will still be processed and retained for at most 1 day until the Product is created. If set to false, an INVALID_ARGUMENT error is returned if the Product is not found.
+  &quot;inventory&quot;: { # Product captures all metadata information of items to be recommended or searched. # Required. The inventory information to update. The allowable fields to update are: * Product.price_info * Product.availability * Product.available_quantity * Product.fulfillment_info The updated inventory fields must be specified in SetInventoryRequest.set_mask. If SetInventoryRequest.inventory.name is empty or invalid, an INVALID_ARGUMENT error is returned. If the caller does not have permission to update the Product named in Product.name, regardless of whether or not it exists, a PERMISSION_DENIED error is returned. If the Product to update does not have existing inventory information, the provided inventory information will be inserted. If the Product to update has existing inventory information, the provided inventory information will be merged while respecting the last update time for each inventory field, using the provided or default value for SetInventoryRequest.set_time. The last update time is recorded for the following inventory fields: * Product.price_info * Product.availability * Product.available_quantity * Product.fulfillment_info If a full overwrite of inventory information while ignoring timestamps is needed, UpdateProduct should be invoked instead.
+    &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
+      &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+        &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
+        &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
+          3.14,
+        ],
+        &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
+        &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;A String&quot;,
+        ],
+      },
+    },
+    &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+      &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+        &quot;A String&quot;,
+      ],
+      &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
+    &quot;availableQuantity&quot;: 42, # The available quantity of the item.
+    &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+    &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+      &quot;A String&quot;,
+    ],
+    &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
+      &quot;A String&quot;,
+    ],
+    &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+      &quot;A String&quot;,
+    ],
+    &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+      &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+        &quot;A String&quot;,
+      ],
+      &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+      &quot;A String&quot;,
+    ],
+    &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+    &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+    &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+      { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+        &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;A String&quot;,
+        ],
+        &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+      },
+    ],
+    &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
+    &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
+    &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
+      { # Product thumbnail/detail image.
+        &quot;height&quot;: 42, # Height of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;uri&quot;: &quot;A String&quot;, # Required. URI of the image. This field must be a valid UTF-8 encoded URI with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
+        &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+      },
+    ],
+    &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+    &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+      &quot;A String&quot;,
+    ],
+    &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+    &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+      &quot;A String&quot;,
+    ],
+    &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
+      &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
+      &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
+      &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
+      &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+      &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+      &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+      &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+        &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+          &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+          &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+          &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+          &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+        },
+        &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+          &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+          &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+          &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+          &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+        },
+      },
+    },
+    &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+    &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+      { # Promotion information.
+        &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+      },
+    ],
+    &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+    &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+      &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+      &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+      &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+        42,
+      ],
+    },
+    &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+      &quot;A String&quot;,
+    ],
+    &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
+      &quot;A String&quot;,
+    ],
+    &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+    &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
+    &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
+    &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+    &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+      # Object with schema name: GoogleCloudRetailV2Product
+    ],
+  },
+  &quot;setMask&quot;: &quot;A String&quot;, # Indicates which inventory fields in the provided Product to update. If not set or set with empty paths, all inventory fields will be updated. If an unsupported or unknown field is provided, an INVALID_ARGUMENT error is returned and the entire update will be ignored.
+  &quot;setTime&quot;: &quot;A String&quot;, # The time when the request is issued, used to prevent out-of-order updates on inventory fields with the last update time recorded. If not provided, the internal system time will be used.
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # This resource represents a long-running operation that is the result of a network API call.
+  &quot;done&quot;: True or False, # 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.
+  &quot;error&quot;: { # 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). # The error result of the operation in case of failure or cancellation.
+    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
+    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
+      {
+        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+      },
+    ],
+    &quot;message&quot;: &quot;A String&quot;, # 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.
+  },
+  &quot;metadata&quot;: { # 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.
+    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+  },
+  &quot;name&quot;: &quot;A String&quot;, # 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}`.
+  &quot;response&quot;: { # 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`.
+    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+  },
 }</pre>
 </div>
 
diff --git a/docs/dyn/retail_v2.projects.locations.catalogs.completionData.html b/docs/dyn/retail_v2.projects.locations.catalogs.completionData.html
new file mode 100644
index 0000000..d550097
--- /dev/null
+++ b/docs/dyn/retail_v2.projects.locations.catalogs.completionData.html
@@ -0,0 +1,145 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="retail_v2.html">Retail API</a> . <a href="retail_v2.projects.html">projects</a> . <a href="retail_v2.projects.locations.html">locations</a> . <a href="retail_v2.projects.locations.catalogs.html">catalogs</a> . <a href="retail_v2.projects.locations.catalogs.completionData.html">completionData</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#close">close()</a></code></p>
+<p class="firstline">Close httplib2 connections.</p>
+<p class="toc_element">
+  <code><a href="#import_">import_(parent, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Bulk import of processed completion dataset. Request processing may be synchronous. Partial updating is not supported. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="close">close()</code>
+  <pre>Close httplib2 connections.</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="import_">import_(parent, body=None, x__xgafv=None)</code>
+  <pre>Bulk import of processed completion dataset. Request processing may be synchronous. Partial updating is not supported. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.
+
+Args:
+  parent: string, Required. The catalog which the suggestions dataset belongs to. Format: `projects/1234/locations/global/catalogs/default_catalog`. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Request message for ImportCompletionData methods.
+  &quot;inputConfig&quot;: { # The input config source for completion data. # Required. The desired input location of the data.
+    &quot;bigQuerySource&quot;: { # BigQuery source import data from. # Required. BigQuery input source. Add the IAM permission “BigQuery Data Viewer” for cloud-retail-customer-data-access@system.gserviceaccount.com before using this feature otherwise an error is thrown.
+      &quot;dataSchema&quot;: &quot;A String&quot;, # The schema to use when parsing the data from the source. Supported values for product imports: * `product` (default): One JSON Product per line. Each product must have a valid Product.id. * `product_merchant_center`: See [Importing catalog data from Merchant Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc). Supported values for user events imports: * `user_event` (default): One JSON UserEvent per line. * `user_event_ga360`: Using https://support.google.com/analytics/answer/3437719.
+      &quot;datasetId&quot;: &quot;A String&quot;, # Required. The BigQuery data set to copy the data from with a length limit of 1,024 characters.
+      &quot;gcsStagingDir&quot;: &quot;A String&quot;, # Intermediate Cloud Storage directory used for the import with a length limit of 2,000 characters. Can be specified if one wants to have the BigQuery export to a specific Cloud Storage directory.
+      &quot;partitionDate&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # BigQuery time partitioned table&#x27;s _PARTITIONDATE in YYYY-MM-DD format. Only supported when ImportProductsRequest.reconciliation_mode is set to `FULL`.
+        &quot;day&quot;: 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn&#x27;t significant.
+        &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
+        &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
+      },
+      &quot;projectId&quot;: &quot;A String&quot;, # The project ID (can be project # or ID) that the BigQuery source is in with a length limit of 128 characters. If not specified, inherits the project ID from the parent request.
+      &quot;tableId&quot;: &quot;A String&quot;, # Required. The BigQuery table to copy the data from with a length limit of 1,024 characters.
+    },
+  },
+  &quot;notificationPubsubTopic&quot;: &quot;A String&quot;, # Pub/Sub topic for receiving notification. If this field is set, when the import is finished, a notification will be sent to specified Pub/Sub topic. The message data will be JSON string of a Operation. Format of the Pub/Sub topic is `projects/{project}/topics/{topic}`.
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # This resource represents a long-running operation that is the result of a network API call.
+  &quot;done&quot;: True or False, # 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.
+  &quot;error&quot;: { # 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). # The error result of the operation in case of failure or cancellation.
+    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
+    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
+      {
+        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+      },
+    ],
+    &quot;message&quot;: &quot;A String&quot;, # 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.
+  },
+  &quot;metadata&quot;: { # 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.
+    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+  },
+  &quot;name&quot;: &quot;A String&quot;, # 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}`.
+  &quot;response&quot;: { # 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`.
+    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+  },
+}</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/retail_v2.projects.locations.catalogs.html b/docs/dyn/retail_v2.projects.locations.catalogs.html
index a917257..5b7a9fe 100644
--- a/docs/dyn/retail_v2.projects.locations.catalogs.html
+++ b/docs/dyn/retail_v2.projects.locations.catalogs.html
@@ -80,6 +80,11 @@
 <p class="firstline">Returns the branches Resource.</p>
 
 <p class="toc_element">
+  <code><a href="retail_v2.projects.locations.catalogs.completionData.html">completionData()</a></code>
+</p>
+<p class="firstline">Returns the completionData Resource.</p>
+
+<p class="toc_element">
   <code><a href="retail_v2.projects.locations.catalogs.operations.html">operations()</a></code>
 </p>
 <p class="firstline">Returns the operations Resource.</p>
@@ -98,6 +103,12 @@
   <code><a href="#close">close()</a></code></p>
 <p class="firstline">Close httplib2 connections.</p>
 <p class="toc_element">
+  <code><a href="#completeQuery">completeQuery(catalog, dataset=None, deviceType=None, languageCodes=None, maxSuggestions=None, query=None, visitorId=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Completes the specified prefix with keyword suggestions. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.</p>
+<p class="toc_element">
+  <code><a href="#getDefaultBranch">getDefaultBranch(catalog, x__xgafv=None)</a></code></p>
+<p class="firstline">Get which branch is currently default branch set by CatalogService.SetDefaultBranch method under a specified parent catalog. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.</p>
+<p class="toc_element">
   <code><a href="#list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Lists all the Catalogs associated with the project.</p>
 <p class="toc_element">
@@ -106,6 +117,9 @@
 <p class="toc_element">
   <code><a href="#patch">patch(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Updates the Catalogs.</p>
+<p class="toc_element">
+  <code><a href="#setDefaultBranch">setDefaultBranch(catalog, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Set a specified branch id as default branch. API methods such as SearchService.Search, ProductService.GetProduct, ProductService.ListProducts will treat requests using "default_branch" to the actual branch id set as default. For example, if `projects/*/locations/*/catalogs/*/branches/1` is set as default, setting SearchRequest.branch to `projects/*/locations/*/catalogs/*/branches/default_branch` is equivalent to setting SearchRequest.branch to `projects/*/locations/*/catalogs/*/branches/1`. Using multiple branches can be useful when developers would like to have a staging branch to test and verify for future usage. When it becomes ready, developers switch on the staging branch using this API while keeping using `projects/*/locations/*/catalogs/*/branches/default_branch` as SearchRequest.branch to route the traffic to this staging branch. CAUTION: If you have live predict/search traffic, switching the default branch could potentially cause outages if the ID space of the new branch is very different from the old one. More specifically: * PredictionService will only return product IDs from branch {newBranch}. * SearchService will only return product IDs from branch {newBranch} (if branch is not explicitly set). * UserEventService will only join events with products from branch {newBranch}. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="close">close()</code>
@@ -113,6 +127,74 @@
 </div>
 
 <div class="method">
+    <code class="details" id="completeQuery">completeQuery(catalog, dataset=None, deviceType=None, languageCodes=None, maxSuggestions=None, query=None, visitorId=None, x__xgafv=None)</code>
+  <pre>Completes the specified prefix with keyword suggestions. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.
+
+Args:
+  catalog: string, Required. Catalog for which the completion is performed. Full resource name of catalog, such as `projects/*/locations/global/catalogs/default_catalog`. (required)
+  dataset: string, Determines which dataset to use for fetching completion. &quot;user-data&quot; will use the imported dataset through ImportCompletionData. &quot;cloud-retail&quot; will use the dataset generated by cloud retail based on user events. If leave empty, it will use the &quot;user-data&quot;. Current supported values: * user-data * cloud-retail This option is not automatically enabled. Before using cloud-retail, contact retail-search-support@google.com first.
+  deviceType: string, The device type context for completion suggestions. It is useful to apply different suggestions on different device types, e.g. DESKTOP, MOBILE. If it is empty, the suggestions are across all device types. Supported formats: * UNKNOWN_DEVICE_TYPE * DESKTOP * MOBILE * A customized string starts with OTHER_, e.g. OTHER_IPHONE.
+  languageCodes: string, The list of languages of the query. This is the BCP-47 language code, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see [Tags for Identifying Languages](https://tools.ietf.org/html/bcp47). The maximum number of allowed characters is 255. Only &quot;en-US&quot; is currently supported. (repeated)
+  maxSuggestions: integer, Completion max suggestions. The maximum allowed max suggestions is 20. The default value is 20.
+  query: string, Required. The query used to generate suggestions. The maximum number of allowed characters is 255.
+  visitorId: string, A unique identifier for tracking visitors. For example, this could be implemented with an HTTP cookie, which should be able to uniquely identify a visitor on a single device. This unique identifier should not change if the visitor logs in or out of the website. The field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Response of the auto-complete query.
+  &quot;attributionToken&quot;: &quot;A String&quot;, # A unique complete token. This should be included in the SearchRequest resulting from this completion, which enables accurate attribution of complete model performance.
+  &quot;completionResults&quot;: [ # Results of the matching suggestions. The result list is ordered and the first result is top suggestion.
+    { # Resource that represents completion results.
+      &quot;attributes&quot;: { # Additional custom attributes ingested through BigQuery.
+        &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+          &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
+          &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
+            3.14,
+          ],
+          &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
+          &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
+            &quot;A String&quot;,
+          ],
+        },
+      },
+      &quot;suggestion&quot;: &quot;A String&quot;, # The suggestion for the query.
+    },
+  ],
+  &quot;recentSearchResults&quot;: [ # Matched recent searches of this user. This field is a restricted feature. Contact Retail Support (retail-search-support@google.com) if you are interested in enabling it. This feature is only available when CompleteQueryRequest.visitor_id field is set and UserEvent is imported. The recent searches satisfy the follow rules: * They are ordered from latest to oldest. * They are matched with CompleteQueryRequest.query case insensitively. * They are transformed to lower cases. * They are UTF-8 safe. Recent searches are deduplicated. More recent searches will be reserved when duplication happens.
+    { # Recent search of this user.
+      &quot;recentSearch&quot;: &quot;A String&quot;, # The recent search query.
+    },
+  ],
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="getDefaultBranch">getDefaultBranch(catalog, x__xgafv=None)</code>
+  <pre>Get which branch is currently default branch set by CatalogService.SetDefaultBranch method under a specified parent catalog. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.
+
+Args:
+  catalog: string, The parent catalog resource name, such as `projects/*/locations/global/catalogs/default_catalog`. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Response message of CatalogService.GetDefaultBranch.
+  &quot;branch&quot;: &quot;A String&quot;, # Full resource name of the branch id currently set as default branch.
+  &quot;note&quot;: &quot;A String&quot;, # This corresponds to SetDefaultBranchRequest.note field, when this branch was set as default.
+  &quot;setTime&quot;: &quot;A String&quot;, # The time when this branch is set to default.
+}</pre>
+</div>
+
+<div class="method">
     <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
   <pre>Lists all the Catalogs associated with the project.
 
@@ -194,4 +276,30 @@
 }</pre>
 </div>
 
+<div class="method">
+    <code class="details" id="setDefaultBranch">setDefaultBranch(catalog, body=None, x__xgafv=None)</code>
+  <pre>Set a specified branch id as default branch. API methods such as SearchService.Search, ProductService.GetProduct, ProductService.ListProducts will treat requests using &quot;default_branch&quot; to the actual branch id set as default. For example, if `projects/*/locations/*/catalogs/*/branches/1` is set as default, setting SearchRequest.branch to `projects/*/locations/*/catalogs/*/branches/default_branch` is equivalent to setting SearchRequest.branch to `projects/*/locations/*/catalogs/*/branches/1`. Using multiple branches can be useful when developers would like to have a staging branch to test and verify for future usage. When it becomes ready, developers switch on the staging branch using this API while keeping using `projects/*/locations/*/catalogs/*/branches/default_branch` as SearchRequest.branch to route the traffic to this staging branch. CAUTION: If you have live predict/search traffic, switching the default branch could potentially cause outages if the ID space of the new branch is very different from the old one. More specifically: * PredictionService will only return product IDs from branch {newBranch}. * SearchService will only return product IDs from branch {newBranch} (if branch is not explicitly set). * UserEventService will only join events with products from branch {newBranch}. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.
+
+Args:
+  catalog: string, Full resource name of the catalog, such as `projects/*/locations/global/catalogs/default_catalog`. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Request message to set a specified branch as new default_branch.
+  &quot;branchId&quot;: &quot;A String&quot;, # The final component of the resource name of a branch. This field must be one of &quot;0&quot;, &quot;1&quot; or &quot;2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;note&quot;: &quot;A String&quot;, # Some note on this request, this can be retrieved by CatalogService.GetDefaultBranch before next valid default branch set occurs. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned.
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for `Empty` is empty JSON object `{}`.
+}</pre>
+</div>
+
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/retail_v2.projects.locations.catalogs.placements.html b/docs/dyn/retail_v2.projects.locations.catalogs.placements.html
index c5cf29e..d9258cd 100644
--- a/docs/dyn/retail_v2.projects.locations.catalogs.placements.html
+++ b/docs/dyn/retail_v2.projects.locations.catalogs.placements.html
@@ -80,6 +80,12 @@
 <p class="toc_element">
   <code><a href="#predict">predict(placement, body=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Makes a recommendation prediction.</p>
+<p class="toc_element">
+  <code><a href="#search">search(placement, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Performs a search. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.</p>
+<p class="toc_element">
+  <code><a href="#search_next">search_next(previous_request, previous_response)</a></code></p>
+<p class="firstline">Retrieves the next page of results.</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="close">close()</code>
@@ -108,21 +114,31 @@
   &quot;userEvent&quot;: { # UserEvent captures all metadata information Retail API needs to know about how end users interact with customers&#x27; website. # Required. Context about the user, what they are looking at and what action they took to trigger the predict request. Note that this user event detail won&#x27;t be ingested to userEvent logs. Thus, a separate userEvent write request is required for event logging.
     &quot;attributes&quot;: { # Extra user event features to include in the recommendation model. The key must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. For product recommendation, an example of extra user information is traffic_channel, i.e. how user arrives at the site. Users can arrive at the site by coming to the site directly, or coming through Google search, and etc.
       &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+        &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
         &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
           3.14,
         ],
+        &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
         &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
           &quot;A String&quot;,
         ],
       },
     },
-    &quot;attributionToken&quot;: &quot;A String&quot;, # Highly recommended for user events that are the result of PredictionService.Predict. This field enables accurate attribution of recommendation model performance. The value must be a valid PredictResponse.attribution_token for user events that are the result of PredictionService.Predict. This token enables us to accurately attribute page view or purchase back to the event and the particular predict response containing this clicked/purchased product. If user clicks on product K in the recommendation results, pass PredictResponse.attribution_token as a URL parameter to product K&#x27;s page. When recording events on product K&#x27;s page, log the PredictResponse.attribution_token to this field.
+    &quot;attributionToken&quot;: &quot;A String&quot;, # Highly recommended for user events that are the result of PredictionService.Predict. This field enables accurate attribution of recommendation model performance. The value must be a valid PredictResponse.attribution_token for user events that are the result of PredictionService.Predict. The value must be a valid SearchResponse.attribution_token for user events that are the result of SearchService.Search. This token enables us to accurately attribute page view or purchase back to the event and the particular predict response containing this clicked/purchased product. If user clicks on product K in the recommendation results, pass PredictResponse.attribution_token as a URL parameter to product K&#x27;s page. When recording events on product K&#x27;s page, log the PredictResponse.attribution_token to this field.
     &quot;cartId&quot;: &quot;A String&quot;, # The id or name of the associated shopping cart. This id is used to associate multiple items added or present in the cart before purchase. This can only be set for `add-to-cart`, `purchase-complete`, or `shopping-cart-page-view` events.
+    &quot;completionDetail&quot;: { # Detailed completion information including completion attribution token and clicked completion info. # The main completion details related to the event. In a `completion` event, this field represents the completions returned to the end user and the clicked completion by the end user. In a `search` event, it represents the search event happens after clicking completion.
+      &quot;completionAttributionToken&quot;: &quot;A String&quot;, # Completion attribution token in CompleteQueryResponse.attribution_token.
+      &quot;selectedPosition&quot;: 42, # End user selected CompleteQueryResponse.CompletionResult.suggestion position, starting from 0.
+      &quot;selectedSuggestion&quot;: &quot;A String&quot;, # End user selected CompleteQueryResponse.CompletionResult.suggestion.
+    },
     &quot;eventTime&quot;: &quot;A String&quot;, # Only required for UserEventService.ImportUserEvents method. Timestamp of when the user event happened.
     &quot;eventType&quot;: &quot;A String&quot;, # Required. User event type. Allowed values are: * `add-to-cart`: Products being added to cart. * `category-page-view`: Special pages such as sale or promotion pages viewed. * `completion`: Completion query result showed/clicked. * `detail-page-view`: Products detail page viewed. * `home-page-view`: Homepage viewed. * `promotion-offered`: Promotion is offered to a user. * `promotion-not-offered`: Promotion is not offered to a user. * `purchase-complete`: User finishing a purchase. * `search`: Product search. * `shopping-cart-page-view`: User viewing a shopping cart.
     &quot;experimentIds&quot;: [ # A list of identifiers for the independent experiment groups this user event belongs to. This is used to distinguish between user events associated with different experiment setups (e.g. using Retail API, using different recommendation models).
       &quot;A String&quot;,
     ],
+    &quot;filter&quot;: &quot;A String&quot;, # The filter syntax consists of an expression language for constructing a predicate from one or more fields of the products being filtered. See SearchRequest.filter for definition and syntax. The value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;offset&quot;: 42, # An integer that specifies the current offset for pagination (the 0-indexed starting location, amongst the products deemed by the API as relevant). See SearchRequest.offset for definition. If this field is negative, an INVALID_ARGUMENT is returned. This can only be set for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;orderBy&quot;: &quot;A String&quot;, # The order in which products are returned. See SearchRequest.order_by for definition and syntax. The value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This can only be set for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
     &quot;pageCategories&quot;: [ # The categories associated with a category page. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). Category pages include special pages such as sales or promotions. For instance, a special sale page may have the category hierarchy: &quot;pageCategories&quot; : [&quot;Sales &gt; 2017 Black Friday Deals&quot;]. Required for `category-page-view` events. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
       &quot;A String&quot;,
     ],
@@ -130,23 +146,60 @@
     &quot;productDetails&quot;: [ # The main product details related to the event. This field is required for the following event types: * `add-to-cart` * `detail-page-view` * `purchase-complete` In a `search` event, this field represents the products returned to the end user on the current page (the end user may have not finished broswing the whole page yet). When a new page is returned to the end user, after pagination/filtering/ordering even for the same query, a new `search` event with different product_details is desired. The end user may have not finished broswing the whole page yet.
       { # Detailed product information associated with a user event.
         &quot;product&quot;: { # Product captures all metadata information of items to be recommended or searched. # Required. Product information. Only Product.id field is used when ingesting an event, all other product fields are ignored as we will look them up from the catalog.
-          &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters.
+          &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
             &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+              &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
               &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
                 3.14,
               ],
+              &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
               &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
                 &quot;A String&quot;,
               ],
             },
           },
+          &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+            &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+              &quot;A String&quot;,
+            ],
+            &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+              &quot;A String&quot;,
+            ],
+          },
           &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
           &quot;availableQuantity&quot;: 42, # The available quantity of the item.
-          &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for recommendation.
+          &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+          &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+            &quot;A String&quot;,
+          ],
           &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
             &quot;A String&quot;,
           ],
+          &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+            &quot;A String&quot;,
+          ],
+          &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+            &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+              &quot;A String&quot;,
+            ],
+            &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+              &quot;A String&quot;,
+            ],
+          },
+          &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+            &quot;A String&quot;,
+          ],
           &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+          &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+          &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+            { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+              &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+                &quot;A String&quot;,
+              ],
+              &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+            },
+          ],
+          &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
           &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
           &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
             { # Product thumbnail/detail image.
@@ -155,20 +208,64 @@
               &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
             },
           ],
+          &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+          &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+            &quot;A String&quot;,
+          ],
           &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+          &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+            &quot;A String&quot;,
+          ],
           &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
             &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
-            &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned.
+            &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
             &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
             &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+            &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+            &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+            &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+              &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+                &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+                &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+                &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+                &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+              },
+              &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+                &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+                &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+                &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+                &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+              },
+            },
           },
           &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+          &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+            { # Promotion information.
+              &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+            },
+          ],
+          &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+          &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+            &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+            &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+            &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+              42,
+            ],
+          },
+          &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+            &quot;A String&quot;,
+          ],
           &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
             &quot;A String&quot;,
           ],
           &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+          &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
           &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
           &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+          &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+            # Object with schema name: GoogleCloudRetailV2Product
+          ],
         },
         &quot;quantity&quot;: 42, # Quantity of the product associated with the user event. For example, this field will be 2 if two products are added to the shopping cart for `purchase-complete` event. Required for `add-to-cart` and `purchase-complete` event types.
       },
@@ -181,12 +278,13 @@
       &quot;tax&quot;: 3.14, # All the taxes associated with the transaction.
     },
     &quot;referrerUri&quot;: &quot;A String&quot;, # The referrer URL of the current page. When using the client side event reporting with JavaScript pixel and Google Tag Manager, this value is filled in automatically.
-    &quot;searchQuery&quot;: &quot;A String&quot;, # The user&#x27;s search query. The value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;searchQuery&quot;: &quot;A String&quot;, # The user&#x27;s search query. See SearchRequest.query for definition. The value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;sessionId&quot;: &quot;A String&quot;, # A unique identifier for tracking a visitor session with a length limit of 128 bytes. A session is an aggregation of an end user behavior in a time span. A general guideline to populate the sesion_id: 1. If user has no activity for 30 min, a new session_id should be assigned. 2. The session_id should be unique across users, suggest use uuid or add visitor_id as prefix.
     &quot;uri&quot;: &quot;A String&quot;, # Complete URL (window.location.href) of the user&#x27;s current page. When using the client side event reporting with JavaScript pixel and Google Tag Manager, this value is filled in automatically. Maximum length 5,000 characters.
     &quot;userInfo&quot;: { # Information of an end user. # User information.
       &quot;directUserRequest&quot;: True or False, # True if the request is made directly from the end user, in which case the ip_address and user_agent can be populated from the HTTP request. This flag should be set only if the API request is made directly from the end user such as a mobile app (and not if a gateway or a server is processing and pushing the user events). This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent.
-      &quot;ipAddress&quot;: &quot;A String&quot;, # The end user&#x27;s IP address. Required for getting SearchRespons.sponsored_results. This field is used to extract location information for personalization. This field must be either an IPv4 address (e.g. &quot;104.133.9.80&quot;) or an IPv6 address (e.g. &quot;2001:0db8:85a3:0000:0000:8a2e:0370:7334&quot;). Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
-      &quot;userAgent&quot;: &quot;A String&quot;, # User agent as included in the HTTP header. Required for getting SearchRespons.sponsored_results. The field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the client side event reporting with GTM or JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
+      &quot;ipAddress&quot;: &quot;A String&quot;, # The end user&#x27;s IP address. Required for getting SearchResponse.sponsored_results. This field is used to extract location information for personalization. This field must be either an IPv4 address (e.g. &quot;104.133.9.80&quot;) or an IPv6 address (e.g. &quot;2001:0db8:85a3:0000:0000:8a2e:0370:7334&quot;). Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
+      &quot;userAgent&quot;: &quot;A String&quot;, # User agent as included in the HTTP header. Required for getting SearchResponse.sponsored_results. The field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the client side event reporting with GTM or JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
       &quot;userId&quot;: &quot;A String&quot;, # Highly recommended for logged-in users. Unique identifier for logged-in user, such as a user name. The field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.
     },
     &quot;visitorId&quot;: &quot;A String&quot;, # Required. A unique identifier for tracking visitors. For example, this could be implemented with an HTTP cookie, which should be able to uniquely identify a visitor on a single device. This unique identifier should not change if the visitor log in/out of the website. The field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. The field should not contain PII or user-data. We recommend to use Google Analystics [Client ID](https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#clientId) for this field.
@@ -219,4 +317,268 @@
 }</pre>
 </div>
 
+<div class="method">
+    <code class="details" id="search">search(placement, body=None, x__xgafv=None)</code>
+  <pre>Performs a search. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.
+
+Args:
+  placement: string, Required. The resource name of the search engine placement, such as `projects/*/locations/global/catalogs/default_catalog/placements/default_search`. This field is used to identify the set of models that will be used to make the search. We currently support one placement with the following ID: * `default_search`. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Request message for SearchService.Search method.
+  &quot;boostSpec&quot;: { # Boost specification to boost certain items. # Boost specification to boost certain products. See more details at this [user guide](/retail/private/docs/boosting).
+    &quot;conditionBoostSpecs&quot;: [ # Condition boost specifications. If a product matches multiple conditions in the specifictions, boost scores from these specifications are all applied and combined in a non-linear way. Maximum number of specifications is 10.
+      { # Boost applies to products which match a condition.
+        &quot;boost&quot;: 3.14, # Strength of the condition boost, which should be in [-1, 1]. Negative boost means demotion. Default is 0.0. Setting to 1.0 gives the item a big promotion. However, it does not necessarily mean that the boosted item will be the top result at all times, nor that other items will be excluded. Results could still be shown even when none of them matches the condition. And results that are significantly more relevant to the search query can still trump your heavily favored but irrelevant items. Setting to -1.0 gives the item a big demotion. However, results that are deeply relevant might still be shown. The item will have an upstream battle to get a fairly high ranking, but it is not blocked out completely. Setting to 0.0 means no boost applied. The boosting condition is ignored.
+        &quot;condition&quot;: &quot;A String&quot;, # An expression which specifies a boost condition. The syntax and supported fields are the same as a filter expression. See SearchRequest.filter for detail syntax and limitations. Examples: * To boost products with product ID &quot;product_1&quot; or &quot;product_2&quot;, and color &quot;Red&quot; or &quot;Blue&quot;: *(id: ANY(&quot;product_1&quot;, &quot;product_2&quot;)) * *AND * *(colorFamilies: ANY(&quot;Red&quot;, &quot;Blue&quot;)) *
+      },
+    ],
+  },
+  &quot;branch&quot;: &quot;A String&quot;, # The branch resource name, such as `projects/*/locations/global/catalogs/default_catalog/branches/0`. Use &quot;default_branch&quot; as the branch ID or leave this field empty, to search products under the default branch.
+  &quot;canonicalFilter&quot;: &quot;A String&quot;, # The filter applied to every search request when quality improvement such as query expansion is needed. For example, if a query does not have enough results, an expanded query with SearchRequest.canonical_filter will be returned as a supplement of the original query. This field is strongly recommended to achieve high search quality. See SearchRequest.filter for more details about filter syntax.
+  &quot;dynamicFacetSpec&quot;: { # The specifications of dynamically generated facets. # The specification for dynamically generated facets. Notice that only textual facets can be dynamically generated. This feature requires additional allowlisting. Contact Retail Support (retail-search-support@google.com) if you are interested in using dynamic facet feature.
+    &quot;mode&quot;: &quot;A String&quot;, # Mode of the DynamicFacet feature. Defaults to Mode.DISABLED if it&#x27;s unset.
+  },
+  &quot;facetSpecs&quot;: [ # Facet specifications for faceted search. If empty, no facets are returned. A maximum of 100 values are allowed. Otherwise, an INVALID_ARGUMENT error is returned.
+    { # A facet specification to perform faceted search.
+      &quot;enableDynamicPosition&quot;: True or False, # Enables dynamic position for this facet. If set to true, the position of this facet among all facets in the response is determined by Google Retail Search. It will be ordered together with dynamic facets if dynamic facets is enabled. If set to false, the position of this facet in the response will be the same as in the request, and it will be ranked before the facets with dynamic position enable and all dynamic facets. For example, you may always want to have rating facet returned in the response, but it&#x27;s not necessarily to always display the rating facet at the top. In that case, you can set enable_dynamic_position to true so that the position of rating facet in response will be determined by Google Retail Search. Another example, assuming you have the following facets in the request: * &quot;rating&quot;, enable_dynamic_position = true * &quot;price&quot;, enable_dynamic_position = false * &quot;brands&quot;, enable_dynamic_position = false And also you have a dynamic facets enable, which will generate a facet &#x27;gender&#x27;. Then the final order of the facets in the response can be (&quot;price&quot;, &quot;brands&quot;, &quot;rating&quot;, &quot;gender&quot;) or (&quot;price&quot;, &quot;brands&quot;, &quot;gender&quot;, &quot;rating&quot;) depends on how Google Retail Search orders &quot;gender&quot; and &quot;rating&quot; facets. However, notice that &quot;price&quot; and &quot;brands&quot; will always be ranked at 1st and 2nd position since their enable_dynamic_position are false.
+      &quot;excludedFilterKeys&quot;: [ # List of keys to exclude when faceting. By default, FacetKey.key is not excluded from the filter unless it is listed in this field. For example, suppose there are 100 products with color facet &quot;Red&quot; and 200 products with color facet &quot;Blue&quot;. A query containing the filter &quot;colorFamilies:ANY(&quot;Red&quot;)&quot; and have &quot;colorFamilies&quot; as FacetKey.key will by default return the &quot;Red&quot; with count 100. If this field contains &quot;colorFamilies&quot;, then the query returns both the &quot;Red&quot; with count 100 and &quot;Blue&quot; with count 200, because the &quot;colorFamilies&quot; key is now excluded from the filter. A maximum of 100 values are allowed. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;A String&quot;,
+      ],
+      &quot;facetKey&quot;: { # Specifies how a facet is computed. # Required. The facet key specification.
+        &quot;contains&quot;: [ # Only get facet values that contains the given strings. For example, suppose &quot;categories&quot; has three values &quot;Women &gt; Shoe&quot;, &quot;Women &gt; Dress&quot; and &quot;Men &gt; Shoe&quot;. If set &quot;contains&quot; to &quot;Shoe&quot;, the &quot;categories&quot; facet will give only &quot;Women &gt; Shoe&quot; and &quot;Men &gt; Shoe&quot;. Only supported on textual fields. Maximum is 10.
+          &quot;A String&quot;,
+        ],
+        &quot;intervals&quot;: [ # Set only if values should be bucketized into intervals. Must be set for facets with numerical values. Must not be set for facet with text values. Maximum number of intervals is 30.
+          { # A floating point interval.
+            &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+            &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+            &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+            &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+          },
+        ],
+        &quot;key&quot;: &quot;A String&quot;, # Required. Supported textual and numerical facet keys in Product object, over which the facet values are computed. Facet key is case-sensitive. Allowed facet keys when FacetKey.query is not specified: * textual_field = *# The Product.brands. * &quot;brands&quot;; *# The Product.categories. * &quot;categories&quot;; *# The Audience.genders. * | &quot;genders&quot;; *# The Audience.age_groups. * | &quot;ageGroups&quot;; *# The Product.availability. Value is one of * *# &quot;IN_STOCK&quot;, &quot;OUT_OF_STOCK&quot;, PREORDER&quot;, &quot;BACKORDER&quot;. * | &quot;availability&quot;; *# The ColorInfo.color_families. * | &quot;colorFamilies&quot;; *# The ColorInfo.colors. * | &quot;colors&quot;; *# The Product.sizes. * | &quot;sizes&quot;; *# The Product.materials. * | &quot;materials&quot;; *# The Product.patterns. * | &quot;patterns&quot;; *# The Product.conditions. * | &quot;conditions&quot;; *# The textual custom attribute in Product object. Key can * *# be any key in the Product.attributes map * *# if the attribute values are textual. * *# map. * | &quot;attributes.key&quot;; *# The FulfillmentInfo.ids for type *# FulfillmentInfo.Type.PICKUP_IN_STORE. * | &quot;pickupInStore&quot;; *# The FulfillmentInfo.ids for type *# FulfillmentInfo.Type.SHIP_TO_STORE. * | &quot;shipToStore&quot;; *# The FulfillmentInfo.ids for type *# FulfillmentInfo.Type.SAME_DAY_DELIVERY. * | &quot;sameDayDelivery&quot;; *# The FulfillmentInfo.ids for type *# FulfillmentInfo.Type.NEXT_DAY_DELIVERY. * | &quot;nextDayDelivery&quot;; *# The FulfillmentInfo.ids for type *# FulfillmentInfo.Type.CUSTOM_TYPE_1. * | &quot;customFulfillment1&quot;; *# The FulfillmentInfo.ids for type *# FulfillmentInfo.Type.CUSTOM_TYPE_2. * | &quot;customFulfillment2&quot;; *# The FulfillmentInfo.ids for type *# FulfillmentInfo.Type.CUSTOM_TYPE_3. * | &quot;customFulfillment3&quot;; *# The FulfillmentInfo.ids for type *# FulfillmentInfo.Type.CUSTOM_TYPE_4. * | &quot;customFulfillment4&quot;; *# The FulfillmentInfo.ids for type *# FulfillmentInfo.Type.CUSTOM_TYPE_5. * | &quot;customFulfillment5&quot;; * numerical_field = *# The PriceInfo.price. * &quot;price&quot;; *# The discount. Computed by (original_price-price)/price * &quot;discount&quot;; *# The Rating.average_rating. * &quot;rating&quot;; *# The Rating.rating_count. * &quot;ratingCount&quot;; *# The numerical custom attribute in Product object. Key can * *# be any key in the Product.attributes map * *# if the attribute values are numerical. * | &quot;attributes.key&quot;;
+        &quot;orderBy&quot;: &quot;A String&quot;, # The order in which Facet.values are returned. Allowed values are: * &quot;count desc&quot;, which means order by Facet.FacetValue.count descending. * &quot;value desc&quot;, which means order by Facet.FacetValue.value descending. Only applies to textual facets. If not set, textual values are sorted in [natural order](https://en.wikipedia.org/wiki/Natural_sort_order); numerical intervals are sorted in the order given by FacetSpec.FacetKey.intervals; FulfillmentInfo.ids are sorted in the order given by FacetSpec.FacetKey.restricted_values.
+        &quot;prefixes&quot;: [ # Only get facet values that start with the given string prefix. For example, suppose &quot;categories&quot; has three values &quot;Women &gt; Shoe&quot;, &quot;Women &gt; Dress&quot; and &quot;Men &gt; Shoe&quot;. If set &quot;prefixes&quot; to &quot;Women&quot;, the &quot;categories&quot; facet will give only &quot;Women &gt; Shoe&quot; and &quot;Women &gt; Dress&quot;. Only supported on textual fields. Maximum is 10.
+          &quot;A String&quot;,
+        ],
+        &quot;query&quot;: &quot;A String&quot;, # The query that is used to compute facet for the given facet key. When provided, it will override the default behavior of facet computation. The query syntax is the same as a filter expression. See SearchRequest.filter for detail syntax and limitations. Notice that there is no limitation on FacetKey.key when query is specified. In the response, FacetValue.value will be always &quot;1&quot; and FacetValue.count will be the number of results that matches the query. For example, you can set a customized facet for &quot;shipToStore&quot;, where FacetKey.key is &quot;customizedShipToStore&quot;, and FacetKey.query is &quot;availability: ANY(\&quot;IN_STOCK\&quot;) AND shipToStore: ANY(\&quot;123\&quot;)&quot;. Then the facet will count the products that are both in stock and ship to store &quot;123&quot;.
+        &quot;restrictedValues&quot;: [ # Only get facet for the given restricted values. For example, when using &quot;pickupInStore&quot; as key and set restricted values to [&quot;store123&quot;, &quot;store456&quot;], only facets for &quot;store123&quot; and &quot;store456&quot; are returned. Only supported on textual fields and fulfillments. Maximum is 20. Must be set for the fulfillment facet keys: * pickupInStore * shipToStore * sameDayDelivery * nextDayDelivery * customFulfillment1 * customFulfillment2 * customFulfillment3 * customFulfillment4 * customFulfillment5
+          &quot;A String&quot;,
+        ],
+      },
+      &quot;limit&quot;: 42, # Maximum of facet values that should be returned for this facet. If unspecified, defaults to 20. The maximum allowed value is 300. Values above 300 will be coerced to 300. If this field is negative, an INVALID_ARGUMENT is returned.
+    },
+  ],
+  &quot;filter&quot;: &quot;A String&quot;, # The filter syntax consists of an expression language for constructing a predicate from one or more fields of the products being filtered. Filter expression is case-sensitive. See more details at this [user guide](/retail/private/docs/filter-and-order#filter). If this field is unrecognizable, an INVALID_ARGUMENT is returned.
+  &quot;offset&quot;: 42, # A 0-indexed integer that specifies the current offset (that is, starting result location, amongst the Products deemed by the API as relevant) in search results. This field is only considered if page_token is unset. If this field is negative, an INVALID_ARGUMENT is returned.
+  &quot;orderBy&quot;: &quot;A String&quot;, # The order in which products are returned. Products can be ordered by a field in an Product object. Leave it unset if ordered by relevance. OrderBy expression is case-sensitive. See more details at this [user guide](/retail/private/docs/filter-and-order#order). If this field is unrecognizable, an INVALID_ARGUMENT is returned.
+  &quot;pageCategories&quot;: [ # The categories associated with a category page. Required for category navigation queries to achieve good search quality. The format should be the same as UserEvent.page_categories; To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). Category pages include special pages such as sales or promotions. For instance, a special sale page may have the category hierarchy: &quot;pageCategories&quot; : [&quot;Sales &gt; 2017 Black Friday Deals&quot;].
+    &quot;A String&quot;,
+  ],
+  &quot;pageSize&quot;: 42, # Maximum number of Products to return. If unspecified, defaults to a reasonable value. The maximum allowed value is 120. Values above 120 will be coerced to 120. If this field is negative, an INVALID_ARGUMENT is returned.
+  &quot;pageToken&quot;: &quot;A String&quot;, # A page token SearchResponse.next_page_token, received from a previous SearchService.Search call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to SearchService.Search must match the call that provided the page token. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;query&quot;: &quot;A String&quot;, # Raw search query.
+  &quot;queryExpansionSpec&quot;: { # Specification to determine under which conditions query expansion should occur. # The query expansion specification that specifies the conditions under which query expansion will occur. See more details at this [user guide](/retail/private/docs/result-size#query_expansion).
+    &quot;condition&quot;: &quot;A String&quot;, # The condition under which query expansion should occur. Default to Condition.DISABLED.
+  },
+  &quot;userInfo&quot;: { # Information of an end user. # User information.
+    &quot;directUserRequest&quot;: True or False, # True if the request is made directly from the end user, in which case the ip_address and user_agent can be populated from the HTTP request. This flag should be set only if the API request is made directly from the end user such as a mobile app (and not if a gateway or a server is processing and pushing the user events). This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent.
+    &quot;ipAddress&quot;: &quot;A String&quot;, # The end user&#x27;s IP address. Required for getting SearchResponse.sponsored_results. This field is used to extract location information for personalization. This field must be either an IPv4 address (e.g. &quot;104.133.9.80&quot;) or an IPv6 address (e.g. &quot;2001:0db8:85a3:0000:0000:8a2e:0370:7334&quot;). Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
+    &quot;userAgent&quot;: &quot;A String&quot;, # User agent as included in the HTTP header. Required for getting SearchResponse.sponsored_results. The field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the client side event reporting with GTM or JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
+    &quot;userId&quot;: &quot;A String&quot;, # Highly recommended for logged-in users. Unique identifier for logged-in user, such as a user name. The field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.
+  },
+  &quot;variantRollupKeys&quot;: [ # The keys to fetch and rollup the matching variant Products attributes. The attributes from all the matching variant Products are merged and de-duplicated. Notice that rollup variant Products attributes will lead to extra query latency. Maximum number of keys is 10. For Product.fulfillment_info, a fulfillment type and a fulfillment ID must be provided in the format of &quot;fulfillmentType.filfillmentId&quot;. E.g., in &quot;pickupInStore.store123&quot;, &quot;pickupInStore&quot; is fulfillment type and &quot;store123&quot; is the store ID. Supported keys are: * colorFamilies * price * originalPrice * discount * attributes.key, where key is any key in the Product.attributes map. * pickupInStore.id, where id is any FulfillmentInfo.ids for type FulfillmentInfo.Type.PICKUP_IN_STORE. * shipToStore.id, where id is any FulfillmentInfo.ids for type FulfillmentInfo.Type.SHIP_TO_STORE. * sameDayDelivery.id, where id is any FulfillmentInfo.ids for type FulfillmentInfo.Type.SAME_DAY_DELIVERY. * nextDayDelivery.id, where id is any FulfillmentInfo.ids for type FulfillmentInfo.Type.NEXT_DAY_DELIVERY. * customFulfillment1.id, where id is any FulfillmentInfo.ids for type FulfillmentInfo.Type.CUSTOM_TYPE_1. * customFulfillment2.id, where id is any FulfillmentInfo.ids for type FulfillmentInfo.Type.CUSTOM_TYPE_2. * customFulfillment3.id, where id is any FulfillmentInfo.ids for type FulfillmentInfo.Type.CUSTOM_TYPE_3. * customFulfillment4.id, where id is any FulfillmentInfo.ids for type FulfillmentInfo.Type.CUSTOM_TYPE_4. * customFulfillment5.id, where id is any FulfillmentInfo.ids for type FulfillmentInfo.Type.CUSTOM_TYPE_5. If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+    &quot;A String&quot;,
+  ],
+  &quot;visitorId&quot;: &quot;A String&quot;, # Required. A unique identifier for tracking visitors. For example, this could be implemented with an HTTP cookie, which should be able to uniquely identify a visitor on a single device. This unique identifier should not change if the visitor logs in or out of the website. The field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Response message for SearchService.Search method.
+  &quot;attributionToken&quot;: &quot;A String&quot;, # A unique search token. This should be included in the UserEvent logs resulting from this search, which enables accurate attribution of search model performance.
+  &quot;correctedQuery&quot;: &quot;A String&quot;, # If spell correction applies, the corrected query. Otherwise, empty.
+  &quot;facets&quot;: [ # Results of facets requested by user.
+    { # A facet result.
+      &quot;dynamicFacet&quot;: True or False, # Whether the facet is dynamically generated.
+      &quot;key&quot;: &quot;A String&quot;, # The key for this facet. E.g., &quot;colorFamilies&quot; or &quot;price&quot; or &quot;attributes.attr1&quot;.
+      &quot;values&quot;: [ # The facet values for this field.
+        { # A facet value which contains value names and their count.
+          &quot;count&quot;: &quot;A String&quot;, # Number of items that have this facet value.
+          &quot;interval&quot;: { # A floating point interval. # Interval value for a facet, such as [10, 20) for facet &quot;price&quot;.
+            &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+            &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+            &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+            &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+          },
+          &quot;value&quot;: &quot;A String&quot;, # Text value of a facet, such as &quot;Black&quot; for facet &quot;colorFamilies&quot;.
+        },
+      ],
+    },
+  ],
+  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token that can be sent as SearchRequest.page_token to retrieve the next page. If this field is omitted, there are no subsequent pages.
+  &quot;queryExpansionInfo&quot;: { # Information describing query expansion including whether expansion has occurred. # Query expansion information for the returned results.
+    &quot;expandedQuery&quot;: True or False, # Bool describing whether query expansion has occurred.
+  },
+  &quot;redirectUri&quot;: &quot;A String&quot;, # The URI of a customer-defined redirect page. If redirect action is triggered, no search will be performed, and only redirect_uri and attribution_token will be set in the response.
+  &quot;results&quot;: [ # A list of matched items. The order represents the ranking.
+    { # Represents the search results.
+      &quot;id&quot;: &quot;A String&quot;, # Product.id of the searched Product.
+      &quot;matchingVariantCount&quot;: 42, # The count of matched variant Products.
+      &quot;matchingVariantFields&quot;: { # If a variant Product matches the search query, this map indicates which Product fields are matched. The key is the Product.name, the value is a field mask of the matched Product fields. If matched attributes cannot be determined, this map will be empty. For example, a key &quot;sku1&quot; with field mask &quot;products.color_info&quot; indicates there is a match between &quot;sku1&quot; ColorInfo and the query.
+        &quot;a_key&quot;: &quot;A String&quot;,
+      },
+      &quot;product&quot;: { # Product captures all metadata information of items to be recommended or searched. # The product data snippet in the search response. Only Product.name is guaranteed to be populated. Product.variants contains the product variants that match the search query. If there are multiple product variants matching the query, top 5 most relevant product variants are returned and ordered by relevancy. If relevancy can be deternmined, use matching_variant_fields to look up matched product variants fields. If relevancy cannot be determined, e.g. when searching &quot;shoe&quot; all products in a shoe product can be a match, 5 product variants are returned but order is meaningless.
+        &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
+          &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+            &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
+            &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
+              3.14,
+            ],
+            &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
+            &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
+              &quot;A String&quot;,
+            ],
+          },
+        },
+        &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+          &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+            &quot;A String&quot;,
+          ],
+          &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+            &quot;A String&quot;,
+          ],
+        },
+        &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
+        &quot;availableQuantity&quot;: 42, # The available quantity of the item.
+        &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+        &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+          &quot;A String&quot;,
+        ],
+        &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
+          &quot;A String&quot;,
+        ],
+        &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+          &quot;A String&quot;,
+        ],
+        &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+          &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+            &quot;A String&quot;,
+          ],
+          &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+            &quot;A String&quot;,
+          ],
+        },
+        &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+          &quot;A String&quot;,
+        ],
+        &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+        &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+        &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+          { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+            &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+              &quot;A String&quot;,
+            ],
+            &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+          },
+        ],
+        &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
+        &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
+        &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
+          { # Product thumbnail/detail image.
+            &quot;height&quot;: 42, # Height of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+            &quot;uri&quot;: &quot;A String&quot;, # Required. URI of the image. This field must be a valid UTF-8 encoded URI with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
+            &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+          },
+        ],
+        &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+        &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+          &quot;A String&quot;,
+        ],
+        &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+        &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+          &quot;A String&quot;,
+        ],
+        &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
+          &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
+          &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
+          &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
+          &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+          &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+          &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+          &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+            &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+              &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+              &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+              &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+              &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+            },
+            &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+              &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+              &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+              &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+              &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+            },
+          },
+        },
+        &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+        &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+          { # Promotion information.
+            &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+          },
+        ],
+        &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+        &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+          &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+            42,
+          ],
+        },
+        &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+          &quot;A String&quot;,
+        ],
+        &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
+          &quot;A String&quot;,
+        ],
+        &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+        &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
+        &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
+        &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+        &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+          # Object with schema name: GoogleCloudRetailV2Product
+        ],
+      },
+      &quot;variantRollupValues&quot;: { # The rollup matching variant Product attributes. The key is one of the SearchRequest.variant_rollup_keys. The values are the merged and de-duplicated Product attributes. Notice that the rollup values are respect filter. For example, when filtering by &quot;colorFamilies:ANY(\&quot;red\&quot;)&quot; and rollup &quot;colorFamilies&quot;, only &quot;red&quot; is returned. For textual and numerical attributes, the rollup values is a list of string or double values with type google.protobuf.ListValue. For example, if there are two variants with colors &quot;red&quot; and &quot;blue&quot;, the rollup values are { key: &quot;colorFamilies&quot; value { list_value { values { string_value: &quot;red&quot; } values { string_value: &quot;blue&quot; } } } } For Product.fulfillment_info, the rollup values is a double value with type google.protobuf.Value. For example, {key: &quot;pickupInStore.store1&quot; value { number_value: 10 }} means a there are 10 variants in this product are available in the store &quot;store1&quot;.
+        &quot;a_key&quot;: &quot;&quot;,
+      },
+    },
+  ],
+  &quot;totalSize&quot;: 42, # The estimated total count of matched items irrespective of pagination. The count of results returned by pagination may be less than the total_size that matches.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="search_next">search_next(previous_request, previous_response)</code>
+  <pre>Retrieves the next page of results.
+
+Args:
+  previous_request: The request for the previous page. (required)
+  previous_response: The response from the request for the previous page. (required)
+
+Returns:
+  A request object that you can call &#x27;execute()&#x27; on to request the next
+  page. Returns None if there are no more items in the collection.
+    </pre>
+</div>
+
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/retail_v2.projects.locations.catalogs.userEvents.html b/docs/dyn/retail_v2.projects.locations.catalogs.userEvents.html
index 7590a18..7322345 100644
--- a/docs/dyn/retail_v2.projects.locations.catalogs.userEvents.html
+++ b/docs/dyn/retail_v2.projects.locations.catalogs.userEvents.html
@@ -141,14 +141,19 @@
   },
   &quot;inputConfig&quot;: { # The input config source for user events. # Required. The desired input location of the data.
     &quot;bigQuerySource&quot;: { # BigQuery source import data from. # Required. BigQuery input source.
-      &quot;dataSchema&quot;: &quot;A String&quot;, # The schema to use when parsing the data from the source. Supported values for product imports: * `product` (default): One JSON Product per line. Each product must have a valid Product.id. * `product_merchant_center`: See [Importing catalog data from Merchant Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc). Supported values for user events imports: * `user_event` (default): One JSON UserEvent per line. * `user_event_ga360`: Using https://support.google.com/analytics/answer/3437719?hl=en.
+      &quot;dataSchema&quot;: &quot;A String&quot;, # The schema to use when parsing the data from the source. Supported values for product imports: * `product` (default): One JSON Product per line. Each product must have a valid Product.id. * `product_merchant_center`: See [Importing catalog data from Merchant Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc). Supported values for user events imports: * `user_event` (default): One JSON UserEvent per line. * `user_event_ga360`: Using https://support.google.com/analytics/answer/3437719.
       &quot;datasetId&quot;: &quot;A String&quot;, # Required. The BigQuery data set to copy the data from with a length limit of 1,024 characters.
       &quot;gcsStagingDir&quot;: &quot;A String&quot;, # Intermediate Cloud Storage directory used for the import with a length limit of 2,000 characters. Can be specified if one wants to have the BigQuery export to a specific Cloud Storage directory.
+      &quot;partitionDate&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # BigQuery time partitioned table&#x27;s _PARTITIONDATE in YYYY-MM-DD format. Only supported when ImportProductsRequest.reconciliation_mode is set to `FULL`.
+        &quot;day&quot;: 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn&#x27;t significant.
+        &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
+        &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
+      },
       &quot;projectId&quot;: &quot;A String&quot;, # The project ID (can be project # or ID) that the BigQuery source is in with a length limit of 128 characters. If not specified, inherits the project ID from the parent request.
       &quot;tableId&quot;: &quot;A String&quot;, # Required. The BigQuery table to copy the data from with a length limit of 1,024 characters.
     },
     &quot;gcsSource&quot;: { # Google Cloud Storage location for input content. format. # Required. Google Cloud Storage location for the input content.
-      &quot;dataSchema&quot;: &quot;A String&quot;, # The schema to use when parsing the data from the source. Supported values for product imports: * `product` (default): One JSON Product per line. Each product must have a valid Product.id. * `product_merchant_center`: See [Importing catalog data from Merchant Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc). Supported values for user events imports: * `user_event` (default): One JSON UserEvent per line. * `user_event_ga360`: Using https://support.google.com/analytics/answer/3437719?hl=en.
+      &quot;dataSchema&quot;: &quot;A String&quot;, # The schema to use when parsing the data from the source. Supported values for product imports: * `product` (default): One JSON Product per line. Each product must have a valid Product.id. * `product_merchant_center`: See [Importing catalog data from Merchant Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc). Supported values for user events imports: * `user_event` (default): One JSON UserEvent per line. * `user_event_ga360`: Using https://support.google.com/analytics/answer/3437719.
       &quot;inputUris&quot;: [ # Required. Google Cloud Storage URIs to input files. URI can be up to 2000 characters long. URIs can match the full object path (for example, `gs://bucket/directory/object.json`) or a pattern matching one or more files, such as `gs://bucket/directory/*.json`. A request can contain at most 100 files, and each file can be up to 2 GB. See [Importing product information](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog) for the expected file format and setup instructions.
         &quot;A String&quot;,
       ],
@@ -158,21 +163,31 @@
         { # UserEvent captures all metadata information Retail API needs to know about how end users interact with customers&#x27; website.
           &quot;attributes&quot;: { # Extra user event features to include in the recommendation model. The key must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. For product recommendation, an example of extra user information is traffic_channel, i.e. how user arrives at the site. Users can arrive at the site by coming to the site directly, or coming through Google search, and etc.
             &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+              &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
               &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
                 3.14,
               ],
+              &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
               &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
                 &quot;A String&quot;,
               ],
             },
           },
-          &quot;attributionToken&quot;: &quot;A String&quot;, # Highly recommended for user events that are the result of PredictionService.Predict. This field enables accurate attribution of recommendation model performance. The value must be a valid PredictResponse.attribution_token for user events that are the result of PredictionService.Predict. This token enables us to accurately attribute page view or purchase back to the event and the particular predict response containing this clicked/purchased product. If user clicks on product K in the recommendation results, pass PredictResponse.attribution_token as a URL parameter to product K&#x27;s page. When recording events on product K&#x27;s page, log the PredictResponse.attribution_token to this field.
+          &quot;attributionToken&quot;: &quot;A String&quot;, # Highly recommended for user events that are the result of PredictionService.Predict. This field enables accurate attribution of recommendation model performance. The value must be a valid PredictResponse.attribution_token for user events that are the result of PredictionService.Predict. The value must be a valid SearchResponse.attribution_token for user events that are the result of SearchService.Search. This token enables us to accurately attribute page view or purchase back to the event and the particular predict response containing this clicked/purchased product. If user clicks on product K in the recommendation results, pass PredictResponse.attribution_token as a URL parameter to product K&#x27;s page. When recording events on product K&#x27;s page, log the PredictResponse.attribution_token to this field.
           &quot;cartId&quot;: &quot;A String&quot;, # The id or name of the associated shopping cart. This id is used to associate multiple items added or present in the cart before purchase. This can only be set for `add-to-cart`, `purchase-complete`, or `shopping-cart-page-view` events.
+          &quot;completionDetail&quot;: { # Detailed completion information including completion attribution token and clicked completion info. # The main completion details related to the event. In a `completion` event, this field represents the completions returned to the end user and the clicked completion by the end user. In a `search` event, it represents the search event happens after clicking completion.
+            &quot;completionAttributionToken&quot;: &quot;A String&quot;, # Completion attribution token in CompleteQueryResponse.attribution_token.
+            &quot;selectedPosition&quot;: 42, # End user selected CompleteQueryResponse.CompletionResult.suggestion position, starting from 0.
+            &quot;selectedSuggestion&quot;: &quot;A String&quot;, # End user selected CompleteQueryResponse.CompletionResult.suggestion.
+          },
           &quot;eventTime&quot;: &quot;A String&quot;, # Only required for UserEventService.ImportUserEvents method. Timestamp of when the user event happened.
           &quot;eventType&quot;: &quot;A String&quot;, # Required. User event type. Allowed values are: * `add-to-cart`: Products being added to cart. * `category-page-view`: Special pages such as sale or promotion pages viewed. * `completion`: Completion query result showed/clicked. * `detail-page-view`: Products detail page viewed. * `home-page-view`: Homepage viewed. * `promotion-offered`: Promotion is offered to a user. * `promotion-not-offered`: Promotion is not offered to a user. * `purchase-complete`: User finishing a purchase. * `search`: Product search. * `shopping-cart-page-view`: User viewing a shopping cart.
           &quot;experimentIds&quot;: [ # A list of identifiers for the independent experiment groups this user event belongs to. This is used to distinguish between user events associated with different experiment setups (e.g. using Retail API, using different recommendation models).
             &quot;A String&quot;,
           ],
+          &quot;filter&quot;: &quot;A String&quot;, # The filter syntax consists of an expression language for constructing a predicate from one or more fields of the products being filtered. See SearchRequest.filter for definition and syntax. The value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;offset&quot;: 42, # An integer that specifies the current offset for pagination (the 0-indexed starting location, amongst the products deemed by the API as relevant). See SearchRequest.offset for definition. If this field is negative, an INVALID_ARGUMENT is returned. This can only be set for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;orderBy&quot;: &quot;A String&quot;, # The order in which products are returned. See SearchRequest.order_by for definition and syntax. The value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This can only be set for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
           &quot;pageCategories&quot;: [ # The categories associated with a category page. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). Category pages include special pages such as sales or promotions. For instance, a special sale page may have the category hierarchy: &quot;pageCategories&quot; : [&quot;Sales &gt; 2017 Black Friday Deals&quot;]. Required for `category-page-view` events. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
             &quot;A String&quot;,
           ],
@@ -180,23 +195,60 @@
           &quot;productDetails&quot;: [ # The main product details related to the event. This field is required for the following event types: * `add-to-cart` * `detail-page-view` * `purchase-complete` In a `search` event, this field represents the products returned to the end user on the current page (the end user may have not finished broswing the whole page yet). When a new page is returned to the end user, after pagination/filtering/ordering even for the same query, a new `search` event with different product_details is desired. The end user may have not finished broswing the whole page yet.
             { # Detailed product information associated with a user event.
               &quot;product&quot;: { # Product captures all metadata information of items to be recommended or searched. # Required. Product information. Only Product.id field is used when ingesting an event, all other product fields are ignored as we will look them up from the catalog.
-                &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters.
+                &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
                   &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+                    &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
                     &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
                       3.14,
                     ],
+                    &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
                     &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
                       &quot;A String&quot;,
                     ],
                   },
                 },
+                &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+                  &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+                    &quot;A String&quot;,
+                  ],
+                  &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+                    &quot;A String&quot;,
+                  ],
+                },
                 &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
                 &quot;availableQuantity&quot;: 42, # The available quantity of the item.
-                &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for recommendation.
+                &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+                &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+                  &quot;A String&quot;,
+                ],
                 &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
                   &quot;A String&quot;,
                 ],
+                &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+                  &quot;A String&quot;,
+                ],
+                &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+                  &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+                    &quot;A String&quot;,
+                  ],
+                  &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+                    &quot;A String&quot;,
+                  ],
+                },
+                &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+                  &quot;A String&quot;,
+                ],
                 &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+                &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+                &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+                  { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+                    &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+                      &quot;A String&quot;,
+                    ],
+                    &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+                  },
+                ],
+                &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
                 &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
                 &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
                   { # Product thumbnail/detail image.
@@ -205,20 +257,64 @@
                     &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
                   },
                 ],
+                &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+                &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+                  &quot;A String&quot;,
+                ],
                 &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+                &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+                  &quot;A String&quot;,
+                ],
                 &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
                   &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
-                  &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned.
+                  &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
                   &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
                   &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+                  &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+                  &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+                  &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+                    &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+                      &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+                      &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+                      &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+                      &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+                    },
+                    &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+                      &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+                      &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+                      &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+                      &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+                    },
+                  },
                 },
                 &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+                &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+                  { # Promotion information.
+                    &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+                  },
+                ],
+                &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+                &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+                  &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+                  &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+                  &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+                    42,
+                  ],
+                },
+                &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+                &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+                  &quot;A String&quot;,
+                ],
                 &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
                   &quot;A String&quot;,
                 ],
                 &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+                &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
                 &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
                 &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+                &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+                  # Object with schema name: GoogleCloudRetailV2Product
+                ],
               },
               &quot;quantity&quot;: 42, # Quantity of the product associated with the user event. For example, this field will be 2 if two products are added to the shopping cart for `purchase-complete` event. Required for `add-to-cart` and `purchase-complete` event types.
             },
@@ -231,12 +327,13 @@
             &quot;tax&quot;: 3.14, # All the taxes associated with the transaction.
           },
           &quot;referrerUri&quot;: &quot;A String&quot;, # The referrer URL of the current page. When using the client side event reporting with JavaScript pixel and Google Tag Manager, this value is filled in automatically.
-          &quot;searchQuery&quot;: &quot;A String&quot;, # The user&#x27;s search query. The value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;searchQuery&quot;: &quot;A String&quot;, # The user&#x27;s search query. See SearchRequest.query for definition. The value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;sessionId&quot;: &quot;A String&quot;, # A unique identifier for tracking a visitor session with a length limit of 128 bytes. A session is an aggregation of an end user behavior in a time span. A general guideline to populate the sesion_id: 1. If user has no activity for 30 min, a new session_id should be assigned. 2. The session_id should be unique across users, suggest use uuid or add visitor_id as prefix.
           &quot;uri&quot;: &quot;A String&quot;, # Complete URL (window.location.href) of the user&#x27;s current page. When using the client side event reporting with JavaScript pixel and Google Tag Manager, this value is filled in automatically. Maximum length 5,000 characters.
           &quot;userInfo&quot;: { # Information of an end user. # User information.
             &quot;directUserRequest&quot;: True or False, # True if the request is made directly from the end user, in which case the ip_address and user_agent can be populated from the HTTP request. This flag should be set only if the API request is made directly from the end user such as a mobile app (and not if a gateway or a server is processing and pushing the user events). This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent.
-            &quot;ipAddress&quot;: &quot;A String&quot;, # The end user&#x27;s IP address. Required for getting SearchRespons.sponsored_results. This field is used to extract location information for personalization. This field must be either an IPv4 address (e.g. &quot;104.133.9.80&quot;) or an IPv6 address (e.g. &quot;2001:0db8:85a3:0000:0000:8a2e:0370:7334&quot;). Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
-            &quot;userAgent&quot;: &quot;A String&quot;, # User agent as included in the HTTP header. Required for getting SearchRespons.sponsored_results. The field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the client side event reporting with GTM or JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
+            &quot;ipAddress&quot;: &quot;A String&quot;, # The end user&#x27;s IP address. Required for getting SearchResponse.sponsored_results. This field is used to extract location information for personalization. This field must be either an IPv4 address (e.g. &quot;104.133.9.80&quot;) or an IPv6 address (e.g. &quot;2001:0db8:85a3:0000:0000:8a2e:0370:7334&quot;). Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
+            &quot;userAgent&quot;: &quot;A String&quot;, # User agent as included in the HTTP header. Required for getting SearchResponse.sponsored_results. The field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the client side event reporting with GTM or JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
             &quot;userId&quot;: &quot;A String&quot;, # Highly recommended for logged-in users. Unique identifier for logged-in user, such as a user name. The field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.
           },
           &quot;visitorId&quot;: &quot;A String&quot;, # Required. A unique identifier for tracking visitors. For example, this could be implemented with an HTTP cookie, which should be able to uniquely identify a visitor on a single device. This unique identifier should not change if the visitor log in/out of the website. The field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. The field should not contain PII or user-data. We recommend to use Google Analystics [Client ID](https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#clientId) for this field.
@@ -372,21 +469,31 @@
 { # UserEvent captures all metadata information Retail API needs to know about how end users interact with customers&#x27; website.
   &quot;attributes&quot;: { # Extra user event features to include in the recommendation model. The key must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. For product recommendation, an example of extra user information is traffic_channel, i.e. how user arrives at the site. Users can arrive at the site by coming to the site directly, or coming through Google search, and etc.
     &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+      &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
       &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         3.14,
       ],
+      &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
       &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         &quot;A String&quot;,
       ],
     },
   },
-  &quot;attributionToken&quot;: &quot;A String&quot;, # Highly recommended for user events that are the result of PredictionService.Predict. This field enables accurate attribution of recommendation model performance. The value must be a valid PredictResponse.attribution_token for user events that are the result of PredictionService.Predict. This token enables us to accurately attribute page view or purchase back to the event and the particular predict response containing this clicked/purchased product. If user clicks on product K in the recommendation results, pass PredictResponse.attribution_token as a URL parameter to product K&#x27;s page. When recording events on product K&#x27;s page, log the PredictResponse.attribution_token to this field.
+  &quot;attributionToken&quot;: &quot;A String&quot;, # Highly recommended for user events that are the result of PredictionService.Predict. This field enables accurate attribution of recommendation model performance. The value must be a valid PredictResponse.attribution_token for user events that are the result of PredictionService.Predict. The value must be a valid SearchResponse.attribution_token for user events that are the result of SearchService.Search. This token enables us to accurately attribute page view or purchase back to the event and the particular predict response containing this clicked/purchased product. If user clicks on product K in the recommendation results, pass PredictResponse.attribution_token as a URL parameter to product K&#x27;s page. When recording events on product K&#x27;s page, log the PredictResponse.attribution_token to this field.
   &quot;cartId&quot;: &quot;A String&quot;, # The id or name of the associated shopping cart. This id is used to associate multiple items added or present in the cart before purchase. This can only be set for `add-to-cart`, `purchase-complete`, or `shopping-cart-page-view` events.
+  &quot;completionDetail&quot;: { # Detailed completion information including completion attribution token and clicked completion info. # The main completion details related to the event. In a `completion` event, this field represents the completions returned to the end user and the clicked completion by the end user. In a `search` event, it represents the search event happens after clicking completion.
+    &quot;completionAttributionToken&quot;: &quot;A String&quot;, # Completion attribution token in CompleteQueryResponse.attribution_token.
+    &quot;selectedPosition&quot;: 42, # End user selected CompleteQueryResponse.CompletionResult.suggestion position, starting from 0.
+    &quot;selectedSuggestion&quot;: &quot;A String&quot;, # End user selected CompleteQueryResponse.CompletionResult.suggestion.
+  },
   &quot;eventTime&quot;: &quot;A String&quot;, # Only required for UserEventService.ImportUserEvents method. Timestamp of when the user event happened.
   &quot;eventType&quot;: &quot;A String&quot;, # Required. User event type. Allowed values are: * `add-to-cart`: Products being added to cart. * `category-page-view`: Special pages such as sale or promotion pages viewed. * `completion`: Completion query result showed/clicked. * `detail-page-view`: Products detail page viewed. * `home-page-view`: Homepage viewed. * `promotion-offered`: Promotion is offered to a user. * `promotion-not-offered`: Promotion is not offered to a user. * `purchase-complete`: User finishing a purchase. * `search`: Product search. * `shopping-cart-page-view`: User viewing a shopping cart.
   &quot;experimentIds&quot;: [ # A list of identifiers for the independent experiment groups this user event belongs to. This is used to distinguish between user events associated with different experiment setups (e.g. using Retail API, using different recommendation models).
     &quot;A String&quot;,
   ],
+  &quot;filter&quot;: &quot;A String&quot;, # The filter syntax consists of an expression language for constructing a predicate from one or more fields of the products being filtered. See SearchRequest.filter for definition and syntax. The value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;offset&quot;: 42, # An integer that specifies the current offset for pagination (the 0-indexed starting location, amongst the products deemed by the API as relevant). See SearchRequest.offset for definition. If this field is negative, an INVALID_ARGUMENT is returned. This can only be set for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;orderBy&quot;: &quot;A String&quot;, # The order in which products are returned. See SearchRequest.order_by for definition and syntax. The value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This can only be set for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
   &quot;pageCategories&quot;: [ # The categories associated with a category page. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). Category pages include special pages such as sales or promotions. For instance, a special sale page may have the category hierarchy: &quot;pageCategories&quot; : [&quot;Sales &gt; 2017 Black Friday Deals&quot;]. Required for `category-page-view` events. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
     &quot;A String&quot;,
   ],
@@ -394,23 +501,60 @@
   &quot;productDetails&quot;: [ # The main product details related to the event. This field is required for the following event types: * `add-to-cart` * `detail-page-view` * `purchase-complete` In a `search` event, this field represents the products returned to the end user on the current page (the end user may have not finished broswing the whole page yet). When a new page is returned to the end user, after pagination/filtering/ordering even for the same query, a new `search` event with different product_details is desired. The end user may have not finished broswing the whole page yet.
     { # Detailed product information associated with a user event.
       &quot;product&quot;: { # Product captures all metadata information of items to be recommended or searched. # Required. Product information. Only Product.id field is used when ingesting an event, all other product fields are ignored as we will look them up from the catalog.
-        &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters.
+        &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
           &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+            &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
             &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
               3.14,
             ],
+            &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
             &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
               &quot;A String&quot;,
             ],
           },
         },
+        &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+          &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+            &quot;A String&quot;,
+          ],
+          &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+            &quot;A String&quot;,
+          ],
+        },
         &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
         &quot;availableQuantity&quot;: 42, # The available quantity of the item.
-        &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for recommendation.
+        &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+        &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+          &quot;A String&quot;,
+        ],
         &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
           &quot;A String&quot;,
         ],
+        &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+          &quot;A String&quot;,
+        ],
+        &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+          &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+            &quot;A String&quot;,
+          ],
+          &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+            &quot;A String&quot;,
+          ],
+        },
+        &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+          &quot;A String&quot;,
+        ],
         &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+        &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+        &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+          { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+            &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+              &quot;A String&quot;,
+            ],
+            &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+          },
+        ],
+        &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
         &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
         &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
           { # Product thumbnail/detail image.
@@ -419,20 +563,64 @@
             &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
           },
         ],
+        &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+        &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+          &quot;A String&quot;,
+        ],
         &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+        &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+          &quot;A String&quot;,
+        ],
         &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
           &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
-          &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned.
+          &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
           &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
           &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+          &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+          &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+          &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+            &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+              &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+              &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+              &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+              &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+            },
+            &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+              &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+              &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+              &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+              &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+            },
+          },
         },
         &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+        &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+          { # Promotion information.
+            &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+          },
+        ],
+        &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+        &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+          &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+            42,
+          ],
+        },
+        &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+          &quot;A String&quot;,
+        ],
         &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
           &quot;A String&quot;,
         ],
         &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+        &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
         &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
         &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+        &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+          # Object with schema name: GoogleCloudRetailV2Product
+        ],
       },
       &quot;quantity&quot;: 42, # Quantity of the product associated with the user event. For example, this field will be 2 if two products are added to the shopping cart for `purchase-complete` event. Required for `add-to-cart` and `purchase-complete` event types.
     },
@@ -445,12 +633,13 @@
     &quot;tax&quot;: 3.14, # All the taxes associated with the transaction.
   },
   &quot;referrerUri&quot;: &quot;A String&quot;, # The referrer URL of the current page. When using the client side event reporting with JavaScript pixel and Google Tag Manager, this value is filled in automatically.
-  &quot;searchQuery&quot;: &quot;A String&quot;, # The user&#x27;s search query. The value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;searchQuery&quot;: &quot;A String&quot;, # The user&#x27;s search query. See SearchRequest.query for definition. The value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;sessionId&quot;: &quot;A String&quot;, # A unique identifier for tracking a visitor session with a length limit of 128 bytes. A session is an aggregation of an end user behavior in a time span. A general guideline to populate the sesion_id: 1. If user has no activity for 30 min, a new session_id should be assigned. 2. The session_id should be unique across users, suggest use uuid or add visitor_id as prefix.
   &quot;uri&quot;: &quot;A String&quot;, # Complete URL (window.location.href) of the user&#x27;s current page. When using the client side event reporting with JavaScript pixel and Google Tag Manager, this value is filled in automatically. Maximum length 5,000 characters.
   &quot;userInfo&quot;: { # Information of an end user. # User information.
     &quot;directUserRequest&quot;: True or False, # True if the request is made directly from the end user, in which case the ip_address and user_agent can be populated from the HTTP request. This flag should be set only if the API request is made directly from the end user such as a mobile app (and not if a gateway or a server is processing and pushing the user events). This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent.
-    &quot;ipAddress&quot;: &quot;A String&quot;, # The end user&#x27;s IP address. Required for getting SearchRespons.sponsored_results. This field is used to extract location information for personalization. This field must be either an IPv4 address (e.g. &quot;104.133.9.80&quot;) or an IPv6 address (e.g. &quot;2001:0db8:85a3:0000:0000:8a2e:0370:7334&quot;). Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
-    &quot;userAgent&quot;: &quot;A String&quot;, # User agent as included in the HTTP header. Required for getting SearchRespons.sponsored_results. The field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the client side event reporting with GTM or JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
+    &quot;ipAddress&quot;: &quot;A String&quot;, # The end user&#x27;s IP address. Required for getting SearchResponse.sponsored_results. This field is used to extract location information for personalization. This field must be either an IPv4 address (e.g. &quot;104.133.9.80&quot;) or an IPv6 address (e.g. &quot;2001:0db8:85a3:0000:0000:8a2e:0370:7334&quot;). Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
+    &quot;userAgent&quot;: &quot;A String&quot;, # User agent as included in the HTTP header. Required for getting SearchResponse.sponsored_results. The field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the client side event reporting with GTM or JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
     &quot;userId&quot;: &quot;A String&quot;, # Highly recommended for logged-in users. Unique identifier for logged-in user, such as a user name. The field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.
   },
   &quot;visitorId&quot;: &quot;A String&quot;, # Required. A unique identifier for tracking visitors. For example, this could be implemented with an HTTP cookie, which should be able to uniquely identify a visitor on a single device. This unique identifier should not change if the visitor log in/out of the website. The field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. The field should not contain PII or user-data. We recommend to use Google Analystics [Client ID](https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#clientId) for this field.
@@ -467,21 +656,31 @@
     { # UserEvent captures all metadata information Retail API needs to know about how end users interact with customers&#x27; website.
   &quot;attributes&quot;: { # Extra user event features to include in the recommendation model. The key must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. For product recommendation, an example of extra user information is traffic_channel, i.e. how user arrives at the site. Users can arrive at the site by coming to the site directly, or coming through Google search, and etc.
     &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+      &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
       &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         3.14,
       ],
+      &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
       &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         &quot;A String&quot;,
       ],
     },
   },
-  &quot;attributionToken&quot;: &quot;A String&quot;, # Highly recommended for user events that are the result of PredictionService.Predict. This field enables accurate attribution of recommendation model performance. The value must be a valid PredictResponse.attribution_token for user events that are the result of PredictionService.Predict. This token enables us to accurately attribute page view or purchase back to the event and the particular predict response containing this clicked/purchased product. If user clicks on product K in the recommendation results, pass PredictResponse.attribution_token as a URL parameter to product K&#x27;s page. When recording events on product K&#x27;s page, log the PredictResponse.attribution_token to this field.
+  &quot;attributionToken&quot;: &quot;A String&quot;, # Highly recommended for user events that are the result of PredictionService.Predict. This field enables accurate attribution of recommendation model performance. The value must be a valid PredictResponse.attribution_token for user events that are the result of PredictionService.Predict. The value must be a valid SearchResponse.attribution_token for user events that are the result of SearchService.Search. This token enables us to accurately attribute page view or purchase back to the event and the particular predict response containing this clicked/purchased product. If user clicks on product K in the recommendation results, pass PredictResponse.attribution_token as a URL parameter to product K&#x27;s page. When recording events on product K&#x27;s page, log the PredictResponse.attribution_token to this field.
   &quot;cartId&quot;: &quot;A String&quot;, # The id or name of the associated shopping cart. This id is used to associate multiple items added or present in the cart before purchase. This can only be set for `add-to-cart`, `purchase-complete`, or `shopping-cart-page-view` events.
+  &quot;completionDetail&quot;: { # Detailed completion information including completion attribution token and clicked completion info. # The main completion details related to the event. In a `completion` event, this field represents the completions returned to the end user and the clicked completion by the end user. In a `search` event, it represents the search event happens after clicking completion.
+    &quot;completionAttributionToken&quot;: &quot;A String&quot;, # Completion attribution token in CompleteQueryResponse.attribution_token.
+    &quot;selectedPosition&quot;: 42, # End user selected CompleteQueryResponse.CompletionResult.suggestion position, starting from 0.
+    &quot;selectedSuggestion&quot;: &quot;A String&quot;, # End user selected CompleteQueryResponse.CompletionResult.suggestion.
+  },
   &quot;eventTime&quot;: &quot;A String&quot;, # Only required for UserEventService.ImportUserEvents method. Timestamp of when the user event happened.
   &quot;eventType&quot;: &quot;A String&quot;, # Required. User event type. Allowed values are: * `add-to-cart`: Products being added to cart. * `category-page-view`: Special pages such as sale or promotion pages viewed. * `completion`: Completion query result showed/clicked. * `detail-page-view`: Products detail page viewed. * `home-page-view`: Homepage viewed. * `promotion-offered`: Promotion is offered to a user. * `promotion-not-offered`: Promotion is not offered to a user. * `purchase-complete`: User finishing a purchase. * `search`: Product search. * `shopping-cart-page-view`: User viewing a shopping cart.
   &quot;experimentIds&quot;: [ # A list of identifiers for the independent experiment groups this user event belongs to. This is used to distinguish between user events associated with different experiment setups (e.g. using Retail API, using different recommendation models).
     &quot;A String&quot;,
   ],
+  &quot;filter&quot;: &quot;A String&quot;, # The filter syntax consists of an expression language for constructing a predicate from one or more fields of the products being filtered. See SearchRequest.filter for definition and syntax. The value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;offset&quot;: 42, # An integer that specifies the current offset for pagination (the 0-indexed starting location, amongst the products deemed by the API as relevant). See SearchRequest.offset for definition. If this field is negative, an INVALID_ARGUMENT is returned. This can only be set for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;orderBy&quot;: &quot;A String&quot;, # The order in which products are returned. See SearchRequest.order_by for definition and syntax. The value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This can only be set for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
   &quot;pageCategories&quot;: [ # The categories associated with a category page. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). Category pages include special pages such as sales or promotions. For instance, a special sale page may have the category hierarchy: &quot;pageCategories&quot; : [&quot;Sales &gt; 2017 Black Friday Deals&quot;]. Required for `category-page-view` events. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
     &quot;A String&quot;,
   ],
@@ -489,23 +688,60 @@
   &quot;productDetails&quot;: [ # The main product details related to the event. This field is required for the following event types: * `add-to-cart` * `detail-page-view` * `purchase-complete` In a `search` event, this field represents the products returned to the end user on the current page (the end user may have not finished broswing the whole page yet). When a new page is returned to the end user, after pagination/filtering/ordering even for the same query, a new `search` event with different product_details is desired. The end user may have not finished broswing the whole page yet.
     { # Detailed product information associated with a user event.
       &quot;product&quot;: { # Product captures all metadata information of items to be recommended or searched. # Required. Product information. Only Product.id field is used when ingesting an event, all other product fields are ignored as we will look them up from the catalog.
-        &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters.
+        &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
           &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+            &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
             &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
               3.14,
             ],
+            &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
             &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
               &quot;A String&quot;,
             ],
           },
         },
+        &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+          &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+            &quot;A String&quot;,
+          ],
+          &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+            &quot;A String&quot;,
+          ],
+        },
         &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
         &quot;availableQuantity&quot;: 42, # The available quantity of the item.
-        &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for recommendation.
+        &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+        &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+          &quot;A String&quot;,
+        ],
         &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
           &quot;A String&quot;,
         ],
+        &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+          &quot;A String&quot;,
+        ],
+        &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+          &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+            &quot;A String&quot;,
+          ],
+          &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+            &quot;A String&quot;,
+          ],
+        },
+        &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+          &quot;A String&quot;,
+        ],
         &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+        &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+        &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+          { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+            &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+              &quot;A String&quot;,
+            ],
+            &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+          },
+        ],
+        &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
         &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
         &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
           { # Product thumbnail/detail image.
@@ -514,20 +750,64 @@
             &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
           },
         ],
+        &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+        &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+          &quot;A String&quot;,
+        ],
         &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+        &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+          &quot;A String&quot;,
+        ],
         &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
           &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
-          &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned.
+          &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
           &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
           &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+          &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+          &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+          &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+            &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+              &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+              &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+              &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+              &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+            },
+            &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+              &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+              &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+              &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+              &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+            },
+          },
         },
         &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+        &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+          { # Promotion information.
+            &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+          },
+        ],
+        &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+        &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+          &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+            42,
+          ],
+        },
+        &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+          &quot;A String&quot;,
+        ],
         &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
           &quot;A String&quot;,
         ],
         &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+        &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
         &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
         &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+        &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+          # Object with schema name: GoogleCloudRetailV2Product
+        ],
       },
       &quot;quantity&quot;: 42, # Quantity of the product associated with the user event. For example, this field will be 2 if two products are added to the shopping cart for `purchase-complete` event. Required for `add-to-cart` and `purchase-complete` event types.
     },
@@ -540,12 +820,13 @@
     &quot;tax&quot;: 3.14, # All the taxes associated with the transaction.
   },
   &quot;referrerUri&quot;: &quot;A String&quot;, # The referrer URL of the current page. When using the client side event reporting with JavaScript pixel and Google Tag Manager, this value is filled in automatically.
-  &quot;searchQuery&quot;: &quot;A String&quot;, # The user&#x27;s search query. The value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;searchQuery&quot;: &quot;A String&quot;, # The user&#x27;s search query. See SearchRequest.query for definition. The value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;sessionId&quot;: &quot;A String&quot;, # A unique identifier for tracking a visitor session with a length limit of 128 bytes. A session is an aggregation of an end user behavior in a time span. A general guideline to populate the sesion_id: 1. If user has no activity for 30 min, a new session_id should be assigned. 2. The session_id should be unique across users, suggest use uuid or add visitor_id as prefix.
   &quot;uri&quot;: &quot;A String&quot;, # Complete URL (window.location.href) of the user&#x27;s current page. When using the client side event reporting with JavaScript pixel and Google Tag Manager, this value is filled in automatically. Maximum length 5,000 characters.
   &quot;userInfo&quot;: { # Information of an end user. # User information.
     &quot;directUserRequest&quot;: True or False, # True if the request is made directly from the end user, in which case the ip_address and user_agent can be populated from the HTTP request. This flag should be set only if the API request is made directly from the end user such as a mobile app (and not if a gateway or a server is processing and pushing the user events). This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent.
-    &quot;ipAddress&quot;: &quot;A String&quot;, # The end user&#x27;s IP address. Required for getting SearchRespons.sponsored_results. This field is used to extract location information for personalization. This field must be either an IPv4 address (e.g. &quot;104.133.9.80&quot;) or an IPv6 address (e.g. &quot;2001:0db8:85a3:0000:0000:8a2e:0370:7334&quot;). Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
-    &quot;userAgent&quot;: &quot;A String&quot;, # User agent as included in the HTTP header. Required for getting SearchRespons.sponsored_results. The field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the client side event reporting with GTM or JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
+    &quot;ipAddress&quot;: &quot;A String&quot;, # The end user&#x27;s IP address. Required for getting SearchResponse.sponsored_results. This field is used to extract location information for personalization. This field must be either an IPv4 address (e.g. &quot;104.133.9.80&quot;) or an IPv6 address (e.g. &quot;2001:0db8:85a3:0000:0000:8a2e:0370:7334&quot;). Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
+    &quot;userAgent&quot;: &quot;A String&quot;, # User agent as included in the HTTP header. Required for getting SearchResponse.sponsored_results. The field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the client side event reporting with GTM or JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
     &quot;userId&quot;: &quot;A String&quot;, # Highly recommended for logged-in users. Unique identifier for logged-in user, such as a user name. The field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.
   },
   &quot;visitorId&quot;: &quot;A String&quot;, # Required. A unique identifier for tracking visitors. For example, this could be implemented with an HTTP cookie, which should be able to uniquely identify a visitor on a single device. This unique identifier should not change if the visitor log in/out of the website. The field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. The field should not contain PII or user-data. We recommend to use Google Analystics [Client ID](https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#clientId) for this field.
diff --git a/docs/dyn/retail_v2alpha.projects.locations.catalogs.branches.products.html b/docs/dyn/retail_v2alpha.projects.locations.catalogs.branches.products.html
index 92a5f86..8729e1c 100644
--- a/docs/dyn/retail_v2alpha.projects.locations.catalogs.branches.products.html
+++ b/docs/dyn/retail_v2alpha.projects.locations.catalogs.branches.products.html
@@ -75,6 +75,9 @@
 <h1><a href="retail_v2alpha.html">Retail API</a> . <a href="retail_v2alpha.projects.html">projects</a> . <a href="retail_v2alpha.projects.locations.html">locations</a> . <a href="retail_v2alpha.projects.locations.catalogs.html">catalogs</a> . <a href="retail_v2alpha.projects.locations.catalogs.branches.html">branches</a> . <a href="retail_v2alpha.projects.locations.catalogs.branches.products.html">products</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
+  <code><a href="#addFulfillmentPlaces">addFulfillmentPlaces(product, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Incrementally adds place IDs to Product.fulfillment_info.place_ids. This process is asynchronous and does not require the Product to exist before updating fulfillment information. If the request is valid, the update will be enqueued and processed downstream. As a consequence, when a response is returned, the added place IDs are not immediately manifested in the Product queried by GetProduct or ListProducts. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.</p>
+<p class="toc_element">
   <code><a href="#close">close()</a></code></p>
 <p class="firstline">Close httplib2 connections.</p>
 <p class="toc_element">
@@ -90,10 +93,69 @@
   <code><a href="#import_">import_(parent, body=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Bulk import of multiple Products. Request processing may be synchronous. No partial updating is supported. Non-existing items are created. Note that it is possible for a subset of the Products to be successfully updated.</p>
 <p class="toc_element">
+  <code><a href="#list">list(parent, filter=None, pageSize=None, pageToken=None, readMask=None, requireTotalSize=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Gets a list of Products.</p>
+<p class="toc_element">
+  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
+<p class="firstline">Retrieves the next page of results.</p>
+<p class="toc_element">
   <code><a href="#patch">patch(name, allowMissing=None, body=None, updateMask=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Updates a Product.</p>
+<p class="toc_element">
+  <code><a href="#removeFulfillmentPlaces">removeFulfillmentPlaces(product, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Incrementally removes place IDs from a Product.fulfillment_info.place_ids. This process is asynchronous and does not require the Product to exist before updating fulfillment information. If the request is valid, the update will be enqueued and processed downstream. As a consequence, when a response is returned, the removed place IDs are not immediately manifested in the Product queried by GetProduct or ListProducts. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.</p>
+<p class="toc_element">
+  <code><a href="#setInventory">setInventory(name, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Updates inventory information for a Product while respecting the last update timestamps of each inventory field. This process is asynchronous and does not require the Product to exist before updating fulfillment information. If the request is valid, the update will be enqueued and processed downstream. As a consequence, when a response is returned, updates are not immediately manifested in the Product queried by GetProduct or ListProducts. When inventory is updated with CreateProduct and UpdateProduct, the specified inventory field value(s) will overwrite any existing value(s) while ignoring the last update time for this field. Furthermore, the last update time for the specified inventory fields will be overwritten to the time of the CreateProduct or UpdateProduct request. If no inventory fields are set in CreateProductRequest.product, then any pre-existing inventory information for this product will be used. If no inventory fields are set in UpdateProductRequest.set_mask, then any existing inventory information will be preserved. Pre-existing inventory information can only be updated with SetInventory, AddFulfillmentPlaces, and RemoveFulfillmentPlaces. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.</p>
 <h3>Method Details</h3>
 <div class="method">
+    <code class="details" id="addFulfillmentPlaces">addFulfillmentPlaces(product, body=None, x__xgafv=None)</code>
+  <pre>Incrementally adds place IDs to Product.fulfillment_info.place_ids. This process is asynchronous and does not require the Product to exist before updating fulfillment information. If the request is valid, the update will be enqueued and processed downstream. As a consequence, when a response is returned, the added place IDs are not immediately manifested in the Product queried by GetProduct or ListProducts. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.
+
+Args:
+  product: string, Required. Full resource name of Product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/some_product_id`. If the caller does not have permission to access the Product, regardless of whether or not it exists, a PERMISSION_DENIED error is returned. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Request message for AddFulfillmentPlaces method.
+  &quot;addTime&quot;: &quot;A String&quot;, # The time when the fulfillment updates are issued, used to prevent out-of-order updates on fulfillment information. If not provided, the internal system time will be used.
+  &quot;allowMissing&quot;: True or False, # If set to true, and the Product is not found, the fulfillment information will still be processed and retained for at most 1 day and processed once the Product is created. If set to false, an INVALID_ARGUMENT error is returned if the Product is not found.
+  &quot;placeIds&quot;: [ # Required. The IDs for this type, such as the store IDs for &quot;pickup-in-store&quot; or the region IDs for &quot;same-day-delivery&quot; to be added for this type. Duplicate IDs will be automatically ignored. At least 1 value is required, and a maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned. If the total number of place IDs exceeds 2000 for this type after adding, then the update will be rejected.
+    &quot;A String&quot;,
+  ],
+  &quot;type&quot;: &quot;A String&quot;, # Required. The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned. This field directly corresponds to Product.fulfillment_info.type.
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # This resource represents a long-running operation that is the result of a network API call.
+  &quot;done&quot;: True or False, # 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.
+  &quot;error&quot;: { # 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). # The error result of the operation in case of failure or cancellation.
+    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
+    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
+      {
+        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+      },
+    ],
+    &quot;message&quot;: &quot;A String&quot;, # 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.
+  },
+  &quot;metadata&quot;: { # 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.
+    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+  },
+  &quot;name&quot;: &quot;A String&quot;, # 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}`.
+  &quot;response&quot;: { # 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`.
+    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+  },
+}</pre>
+</div>
+
+<div class="method">
     <code class="details" id="close">close()</code>
   <pre>Close httplib2 connections.</pre>
 </div>
@@ -108,23 +170,60 @@
     The object takes the form of:
 
 { # Product captures all metadata information of items to be recommended or searched.
-  &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters.
+  &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
     &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+      &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
       &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         3.14,
       ],
+      &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
       &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         &quot;A String&quot;,
       ],
     },
   },
+  &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+    &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+      &quot;A String&quot;,
+    ],
+    &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+      &quot;A String&quot;,
+    ],
+  },
   &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
   &quot;availableQuantity&quot;: 42, # The available quantity of the item.
-  &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for recommendation.
+  &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+  &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+    &quot;A String&quot;,
+  ],
   &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
     &quot;A String&quot;,
   ],
+  &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+    &quot;A String&quot;,
+  ],
+  &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+    &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+      &quot;A String&quot;,
+    ],
+    &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+      &quot;A String&quot;,
+    ],
+  },
+  &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+    &quot;A String&quot;,
+  ],
   &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+  &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+  &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+    { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+      &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;A String&quot;,
+      ],
+      &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+    },
+  ],
+  &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
   &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
   &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
     { # Product thumbnail/detail image.
@@ -133,20 +232,64 @@
       &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
     },
   ],
+  &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+  &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+    &quot;A String&quot;,
+  ],
   &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+  &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+    &quot;A String&quot;,
+  ],
   &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
     &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
-    &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned.
+    &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
     &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
     &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+    &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+    &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+    &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+      &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+        &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+        &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+        &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+        &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+      },
+      &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+        &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+        &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+        &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+        &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+      },
+    },
   },
   &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+  &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+    { # Promotion information.
+      &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+    },
+  ],
+  &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+  &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+    &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+      42,
+    ],
+  },
+  &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+    &quot;A String&quot;,
+  ],
   &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
     &quot;A String&quot;,
   ],
   &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+  &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
   &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
   &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+  &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+    # Object with schema name: GoogleCloudRetailV2alphaProduct
+  ],
 }
 
   productId: string, Required. The ID to use for the Product, which will become the final component of the Product.name. If the caller does not have permission to create the Product, regardless of whether or not it exists, a PERMISSION_DENIED error is returned. This field must be unique among all Products with the same parent. Otherwise, an ALREADY_EXISTS error is returned. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.
@@ -159,23 +302,60 @@
   An object of the form:
 
     { # Product captures all metadata information of items to be recommended or searched.
-  &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters.
+  &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
     &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+      &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
       &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         3.14,
       ],
+      &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
       &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         &quot;A String&quot;,
       ],
     },
   },
+  &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+    &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+      &quot;A String&quot;,
+    ],
+    &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+      &quot;A String&quot;,
+    ],
+  },
   &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
   &quot;availableQuantity&quot;: 42, # The available quantity of the item.
-  &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for recommendation.
+  &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+  &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+    &quot;A String&quot;,
+  ],
   &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
     &quot;A String&quot;,
   ],
+  &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+    &quot;A String&quot;,
+  ],
+  &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+    &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+      &quot;A String&quot;,
+    ],
+    &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+      &quot;A String&quot;,
+    ],
+  },
+  &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+    &quot;A String&quot;,
+  ],
   &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+  &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+  &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+    { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+      &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;A String&quot;,
+      ],
+      &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+    },
+  ],
+  &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
   &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
   &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
     { # Product thumbnail/detail image.
@@ -184,20 +364,64 @@
       &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
     },
   ],
+  &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+  &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+    &quot;A String&quot;,
+  ],
   &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+  &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+    &quot;A String&quot;,
+  ],
   &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
     &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
-    &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned.
+    &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
     &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
     &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+    &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+    &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+    &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+      &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+        &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+        &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+        &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+        &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+      },
+      &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+        &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+        &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+        &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+        &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+      },
+    },
   },
   &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+  &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+    { # Promotion information.
+      &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+    },
+  ],
+  &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+  &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+    &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+      42,
+    ],
+  },
+  &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+    &quot;A String&quot;,
+  ],
   &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
     &quot;A String&quot;,
   ],
   &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+  &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
   &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
   &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+  &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+    # Object with schema name: GoogleCloudRetailV2alphaProduct
+  ],
 }</pre>
 </div>
 
@@ -234,23 +458,60 @@
   An object of the form:
 
     { # Product captures all metadata information of items to be recommended or searched.
-  &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters.
+  &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
     &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+      &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
       &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         3.14,
       ],
+      &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
       &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         &quot;A String&quot;,
       ],
     },
   },
+  &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+    &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+      &quot;A String&quot;,
+    ],
+    &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+      &quot;A String&quot;,
+    ],
+  },
   &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
   &quot;availableQuantity&quot;: 42, # The available quantity of the item.
-  &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for recommendation.
+  &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+  &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+    &quot;A String&quot;,
+  ],
   &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
     &quot;A String&quot;,
   ],
+  &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+    &quot;A String&quot;,
+  ],
+  &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+    &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+      &quot;A String&quot;,
+    ],
+    &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+      &quot;A String&quot;,
+    ],
+  },
+  &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+    &quot;A String&quot;,
+  ],
   &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+  &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+  &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+    { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+      &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;A String&quot;,
+      ],
+      &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+    },
+  ],
+  &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
   &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
   &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
     { # Product thumbnail/detail image.
@@ -259,20 +520,64 @@
       &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
     },
   ],
+  &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+  &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+    &quot;A String&quot;,
+  ],
   &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+  &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+    &quot;A String&quot;,
+  ],
   &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
     &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
-    &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned.
+    &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
     &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
     &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+    &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+    &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+    &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+      &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+        &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+        &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+        &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+        &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+      },
+      &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+        &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+        &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+        &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+        &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+      },
+    },
   },
   &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+  &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+    { # Promotion information.
+      &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+    },
+  ],
+  &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+  &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+    &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+      42,
+    ],
+  },
+  &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+    &quot;A String&quot;,
+  ],
   &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
     &quot;A String&quot;,
   ],
   &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+  &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
   &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
   &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+  &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+    # Object with schema name: GoogleCloudRetailV2alphaProduct
+  ],
 }</pre>
 </div>
 
@@ -291,14 +596,19 @@
   },
   &quot;inputConfig&quot;: { # The input config source for products. # Required. The desired input location of the data.
     &quot;bigQuerySource&quot;: { # BigQuery source import data from. # BigQuery input source.
-      &quot;dataSchema&quot;: &quot;A String&quot;, # The schema to use when parsing the data from the source. Supported values for product imports: * `product` (default): One JSON Product per line. Each product must have a valid Product.id. * `product_merchant_center`: See [Importing catalog data from Merchant Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc). Supported values for user events imports: * `user_event` (default): One JSON UserEvent per line. * `user_event_ga360`: Using https://support.google.com/analytics/answer/3437719?hl=en.
+      &quot;dataSchema&quot;: &quot;A String&quot;, # The schema to use when parsing the data from the source. Supported values for product imports: * `product` (default): One JSON Product per line. Each product must have a valid Product.id. * `product_merchant_center`: See [Importing catalog data from Merchant Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc). Supported values for user events imports: * `user_event` (default): One JSON UserEvent per line. * `user_event_ga360`: Using https://support.google.com/analytics/answer/3437719.
       &quot;datasetId&quot;: &quot;A String&quot;, # Required. The BigQuery data set to copy the data from with a length limit of 1,024 characters.
       &quot;gcsStagingDir&quot;: &quot;A String&quot;, # Intermediate Cloud Storage directory used for the import with a length limit of 2,000 characters. Can be specified if one wants to have the BigQuery export to a specific Cloud Storage directory.
+      &quot;partitionDate&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # BigQuery time partitioned table&#x27;s _PARTITIONDATE in YYYY-MM-DD format. Only supported when ImportProductsRequest.reconciliation_mode is set to `FULL`.
+        &quot;day&quot;: 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn&#x27;t significant.
+        &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
+        &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
+      },
       &quot;projectId&quot;: &quot;A String&quot;, # The project ID (can be project # or ID) that the BigQuery source is in with a length limit of 128 characters. If not specified, inherits the project ID from the parent request.
       &quot;tableId&quot;: &quot;A String&quot;, # Required. The BigQuery table to copy the data from with a length limit of 1,024 characters.
     },
     &quot;gcsSource&quot;: { # Google Cloud Storage location for input content. format. # Google Cloud Storage location for the input content.
-      &quot;dataSchema&quot;: &quot;A String&quot;, # The schema to use when parsing the data from the source. Supported values for product imports: * `product` (default): One JSON Product per line. Each product must have a valid Product.id. * `product_merchant_center`: See [Importing catalog data from Merchant Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc). Supported values for user events imports: * `user_event` (default): One JSON UserEvent per line. * `user_event_ga360`: Using https://support.google.com/analytics/answer/3437719?hl=en.
+      &quot;dataSchema&quot;: &quot;A String&quot;, # The schema to use when parsing the data from the source. Supported values for product imports: * `product` (default): One JSON Product per line. Each product must have a valid Product.id. * `product_merchant_center`: See [Importing catalog data from Merchant Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc). Supported values for user events imports: * `user_event` (default): One JSON UserEvent per line. * `user_event_ga360`: Using https://support.google.com/analytics/answer/3437719.
       &quot;inputUris&quot;: [ # Required. Google Cloud Storage URIs to input files. URI can be up to 2000 characters long. URIs can match the full object path (for example, `gs://bucket/directory/object.json`) or a pattern matching one or more files, such as `gs://bucket/directory/*.json`. A request can contain at most 100 files, and each file can be up to 2 GB. See [Importing product information](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog) for the expected file format and setup instructions.
         &quot;A String&quot;,
       ],
@@ -306,23 +616,60 @@
     &quot;productInlineSource&quot;: { # The inline source for the input config for ImportProducts method. # The Inline source for the input content for products.
       &quot;products&quot;: [ # Required. A list of products to update/create. Each product must have a valid Product.id. Recommended max of 100 items.
         { # Product captures all metadata information of items to be recommended or searched.
-          &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters.
+          &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
             &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+              &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
               &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
                 3.14,
               ],
+              &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
               &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
                 &quot;A String&quot;,
               ],
             },
           },
+          &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+            &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+              &quot;A String&quot;,
+            ],
+            &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+              &quot;A String&quot;,
+            ],
+          },
           &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
           &quot;availableQuantity&quot;: 42, # The available quantity of the item.
-          &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for recommendation.
+          &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+          &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+            &quot;A String&quot;,
+          ],
           &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
             &quot;A String&quot;,
           ],
+          &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+            &quot;A String&quot;,
+          ],
+          &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+            &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+              &quot;A String&quot;,
+            ],
+            &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+              &quot;A String&quot;,
+            ],
+          },
+          &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+            &quot;A String&quot;,
+          ],
           &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+          &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+          &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+            { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+              &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+                &quot;A String&quot;,
+              ],
+              &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+            },
+          ],
+          &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
           &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
           &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
             { # Product thumbnail/detail image.
@@ -331,24 +678,71 @@
               &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
             },
           ],
+          &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+          &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+            &quot;A String&quot;,
+          ],
           &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+          &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+            &quot;A String&quot;,
+          ],
           &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
             &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
-            &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned.
+            &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
             &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
             &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+            &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+            &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+            &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+              &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+                &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+                &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+                &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+                &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+              },
+              &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+                &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+                &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+                &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+                &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+              },
+            },
           },
           &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+          &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+            { # Promotion information.
+              &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+            },
+          ],
+          &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+          &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+            &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+            &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+            &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+              42,
+            ],
+          },
+          &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+            &quot;A String&quot;,
+          ],
           &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
             &quot;A String&quot;,
           ],
           &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+          &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
           &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
           &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+          &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+            # Object with schema name: GoogleCloudRetailV2alphaProduct
+          ],
         },
       ],
     },
   },
+  &quot;notificationPubsubTopic&quot;: &quot;A String&quot;, # Pub/Sub topic for receiving notification. If this field is set, when the import is finished, a notification will be sent to specified Pub/Sub topic. The message data will be JSON string of a Operation. Format of the Pub/Sub topic is `projects/{project}/topics/{topic}`. Only supported when ImportProductsRequest.reconciliation_mode is set to `FULL`.
+  &quot;reconciliationMode&quot;: &quot;A String&quot;, # The mode of reconciliation between existing products and the products to be imported. Defaults to ReconciliationMode.INCREMENTAL.
+  &quot;requestId&quot;: &quot;A String&quot;, # Unique identifier provided by client, within the ancestor dataset scope. Ensures idempotency and used for request deduplication. Server-generated if unspecified. Up to 128 characters long and must match the pattern: &quot;[a-zA-Z0-9_]+&quot;. This is returned as Operation.name in ImportMetadata. Only supported when ImportProductsRequest.reconciliation_mode is set to `FULL`.
   &quot;updateMask&quot;: &quot;A String&quot;, # Indicates which fields in the provided imported &#x27;products&#x27; to update. If not set, will by default update all fields.
 }
 
@@ -382,6 +776,169 @@
 </div>
 
 <div class="method">
+    <code class="details" id="list">list(parent, filter=None, pageSize=None, pageToken=None, readMask=None, requireTotalSize=None, x__xgafv=None)</code>
+  <pre>Gets a list of Products.
+
+Args:
+  parent: string, Required. The parent branch resource name, such as `projects/*/locations/global/catalogs/default_catalog/branches/0`. Use `default_branch` as the branch ID, to list products under the default branch. If the caller does not have permission to list Products under this branch, regardless of whether or not this branch exists, a PERMISSION_DENIED error is returned. (required)
+  filter: string, A filter to apply on the list results. Supported features: * List all the products under the parent branch if filter is unset. * List Product.Type.VARIANT Products sharing the same Product.Type.PRIMARY Product. For example: `primary_product_id = &quot;some_product_id&quot;` * List Products bundled in a Product.Type.COLLECTION Product. For example: `collection_product_id = &quot;some_product_id&quot;` * List Products with a partibular type. For example: `type = &quot;PRIMARY&quot;` `type = &quot;VARIANT&quot;` `type = &quot;COLLECTION&quot;` If the field is unrecognizable, an INVALID_ARGUMENT error is returned. If the specified Product.Type.PRIMARY Product or Product.Type.COLLECTION Product does not exist, a NOT_FOUND error is returned.
+  pageSize: integer, Maximum number of Products to return. If unspecified, defaults to 100. The maximum allowed value is 1000. Values above 1000 will be coerced to 1000. If this field is negative, an INVALID_ARGUMENT error is returned.
+  pageToken: string, A page token ListProductsResponse.next_page_token, received from a previous ProductService.ListProducts call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to ProductService.ListProducts must match the call that provided the page token. Otherwise, an INVALID_ARGUMENT error is returned.
+  readMask: string, The fields of Product to return in the responses. If not set or empty, the following fields are returned: * Product.name * Product.id * Product.title * Product.uri * Product.images * Product.price_info * Product.brands If &quot;*&quot; is provided, all fields are returned. Product.name is always returned no matter what mask is set. If an unsupported or unknown field is provided, an INVALID_ARGUMENT error is returned.
+  requireTotalSize: boolean, If true and page_token is empty, ListProductsResponse.total_size is set to the total count of matched items irrespective of pagination. Notice that setting this field to true affects the performance.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Response message for ProductService.ListProducts method.
+  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token that can be sent as ListProductsRequest.page_token to retrieve the next page. If this field is omitted, there are no subsequent pages.
+  &quot;products&quot;: [ # The Products.
+    { # Product captures all metadata information of items to be recommended or searched.
+      &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
+        &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+          &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
+          &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
+            3.14,
+          ],
+          &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
+          &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
+            &quot;A String&quot;,
+          ],
+        },
+      },
+      &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+        &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+          &quot;A String&quot;,
+        ],
+        &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+          &quot;A String&quot;,
+        ],
+      },
+      &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
+      &quot;availableQuantity&quot;: 42, # The available quantity of the item.
+      &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+      &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+        &quot;A String&quot;,
+      ],
+      &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
+        &quot;A String&quot;,
+      ],
+      &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+        &quot;A String&quot;,
+      ],
+      &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+        &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+          &quot;A String&quot;,
+        ],
+        &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+          &quot;A String&quot;,
+        ],
+      },
+      &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+        &quot;A String&quot;,
+      ],
+      &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+      &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+      &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+        { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+          &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+            &quot;A String&quot;,
+          ],
+          &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+        },
+      ],
+      &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
+      &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
+      &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
+        { # Product thumbnail/detail image.
+          &quot;height&quot;: 42, # Height of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;uri&quot;: &quot;A String&quot;, # Required. URI of the image. This field must be a valid UTF-8 encoded URI with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
+          &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+        },
+      ],
+      &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+      &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+        &quot;A String&quot;,
+      ],
+      &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+      &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+        &quot;A String&quot;,
+      ],
+      &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
+        &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
+        &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
+        &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
+        &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+        &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+        &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+        &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+          &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+            &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+            &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+            &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+            &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+          },
+          &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+            &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+            &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+            &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+            &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+          },
+        },
+      },
+      &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+      &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+        { # Promotion information.
+          &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+        },
+      ],
+      &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+      &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+        &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+          42,
+        ],
+      },
+      &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+      &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+        &quot;A String&quot;,
+      ],
+      &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
+        &quot;A String&quot;,
+      ],
+      &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+      &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
+      &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
+      &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+      &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+        # Object with schema name: GoogleCloudRetailV2alphaProduct
+      ],
+    },
+  ],
+  &quot;totalSize&quot;: 42, # The total count of matched Products irrespective of pagination. The total number of Products returned by pagination may be less than the total_size that matches. This field is ignored if ListProductsRequest.require_total_size is not set or ListProductsRequest.page_token is not empty.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
+  <pre>Retrieves the next page of results.
+
+Args:
+  previous_request: The request for the previous page. (required)
+  previous_response: The response from the request for the previous page. (required)
+
+Returns:
+  A request object that you can call &#x27;execute()&#x27; on to request the next
+  page. Returns None if there are no more items in the collection.
+    </pre>
+</div>
+
+<div class="method">
     <code class="details" id="patch">patch(name, allowMissing=None, body=None, updateMask=None, x__xgafv=None)</code>
   <pre>Updates a Product.
 
@@ -391,23 +948,60 @@
     The object takes the form of:
 
 { # Product captures all metadata information of items to be recommended or searched.
-  &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters.
+  &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
     &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+      &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
       &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         3.14,
       ],
+      &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
       &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         &quot;A String&quot;,
       ],
     },
   },
+  &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+    &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+      &quot;A String&quot;,
+    ],
+    &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+      &quot;A String&quot;,
+    ],
+  },
   &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
   &quot;availableQuantity&quot;: 42, # The available quantity of the item.
-  &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for recommendation.
+  &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+  &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+    &quot;A String&quot;,
+  ],
   &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
     &quot;A String&quot;,
   ],
+  &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+    &quot;A String&quot;,
+  ],
+  &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+    &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+      &quot;A String&quot;,
+    ],
+    &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+      &quot;A String&quot;,
+    ],
+  },
+  &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+    &quot;A String&quot;,
+  ],
   &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+  &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+  &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+    { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+      &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;A String&quot;,
+      ],
+      &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+    },
+  ],
+  &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
   &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
   &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
     { # Product thumbnail/detail image.
@@ -416,20 +1010,64 @@
       &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
     },
   ],
+  &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+  &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+    &quot;A String&quot;,
+  ],
   &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+  &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+    &quot;A String&quot;,
+  ],
   &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
     &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
-    &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned.
+    &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
     &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
     &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+    &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+    &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+    &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+      &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+        &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+        &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+        &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+        &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+      },
+      &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+        &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+        &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+        &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+        &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+      },
+    },
   },
   &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+  &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+    { # Promotion information.
+      &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+    },
+  ],
+  &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+  &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+    &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+      42,
+    ],
+  },
+  &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+    &quot;A String&quot;,
+  ],
   &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
     &quot;A String&quot;,
   ],
   &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+  &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
   &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
   &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+  &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+    # Object with schema name: GoogleCloudRetailV2alphaProduct
+  ],
 }
 
   allowMissing: boolean, If set to true, and the Product is not found, a new Product will be created. In this situation, `update_mask` is ignored.
@@ -443,23 +1081,60 @@
   An object of the form:
 
     { # Product captures all metadata information of items to be recommended or searched.
-  &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters.
+  &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
     &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+      &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
       &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         3.14,
       ],
+      &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
       &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         &quot;A String&quot;,
       ],
     },
   },
+  &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+    &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+      &quot;A String&quot;,
+    ],
+    &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+      &quot;A String&quot;,
+    ],
+  },
   &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
   &quot;availableQuantity&quot;: 42, # The available quantity of the item.
-  &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for recommendation.
+  &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+  &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+    &quot;A String&quot;,
+  ],
   &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
     &quot;A String&quot;,
   ],
+  &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+    &quot;A String&quot;,
+  ],
+  &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+    &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+      &quot;A String&quot;,
+    ],
+    &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+      &quot;A String&quot;,
+    ],
+  },
+  &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+    &quot;A String&quot;,
+  ],
   &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+  &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+  &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+    { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+      &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;A String&quot;,
+      ],
+      &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+    },
+  ],
+  &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
   &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
   &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
     { # Product thumbnail/detail image.
@@ -468,20 +1143,277 @@
       &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
     },
   ],
+  &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+  &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+    &quot;A String&quot;,
+  ],
   &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+  &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+    &quot;A String&quot;,
+  ],
   &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
     &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
-    &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned.
+    &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
     &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
     &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+    &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+    &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+    &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+      &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+        &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+        &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+        &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+        &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+      },
+      &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+        &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+        &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+        &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+        &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+      },
+    },
   },
   &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+  &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+    { # Promotion information.
+      &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+    },
+  ],
+  &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+  &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+    &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+      42,
+    ],
+  },
+  &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+    &quot;A String&quot;,
+  ],
   &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
     &quot;A String&quot;,
   ],
   &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+  &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
   &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
   &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+  &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+    # Object with schema name: GoogleCloudRetailV2alphaProduct
+  ],
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="removeFulfillmentPlaces">removeFulfillmentPlaces(product, body=None, x__xgafv=None)</code>
+  <pre>Incrementally removes place IDs from a Product.fulfillment_info.place_ids. This process is asynchronous and does not require the Product to exist before updating fulfillment information. If the request is valid, the update will be enqueued and processed downstream. As a consequence, when a response is returned, the removed place IDs are not immediately manifested in the Product queried by GetProduct or ListProducts. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.
+
+Args:
+  product: string, Required. Full resource name of Product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/some_product_id`. If the caller does not have permission to access the Product, regardless of whether or not it exists, a PERMISSION_DENIED error is returned. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Request message for RemoveFulfillmentPlaces method.
+  &quot;allowMissing&quot;: True or False, # If set to true, and the Product is not found, the fulfillment information will still be processed and retained for at most 1 day and processed once the Product is created. If set to false, an INVALID_ARGUMENT error is returned if the Product is not found.
+  &quot;placeIds&quot;: [ # Required. The IDs for this type, such as the store IDs for &quot;pickup-in-store&quot; or the region IDs for &quot;same-day-delivery&quot;, to be removed for this type. At least 1 value is required, and a maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;A String&quot;,
+  ],
+  &quot;removeTime&quot;: &quot;A String&quot;, # The time when the fulfillment updates are issued, used to prevent out-of-order updates on fulfillment information. If not provided, the internal system time will be used.
+  &quot;type&quot;: &quot;A String&quot;, # Required. The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned. This field directly corresponds to Product.fulfillment_info.type.
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # This resource represents a long-running operation that is the result of a network API call.
+  &quot;done&quot;: True or False, # 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.
+  &quot;error&quot;: { # 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). # The error result of the operation in case of failure or cancellation.
+    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
+    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
+      {
+        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+      },
+    ],
+    &quot;message&quot;: &quot;A String&quot;, # 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.
+  },
+  &quot;metadata&quot;: { # 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.
+    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+  },
+  &quot;name&quot;: &quot;A String&quot;, # 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}`.
+  &quot;response&quot;: { # 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`.
+    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+  },
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="setInventory">setInventory(name, body=None, x__xgafv=None)</code>
+  <pre>Updates inventory information for a Product while respecting the last update timestamps of each inventory field. This process is asynchronous and does not require the Product to exist before updating fulfillment information. If the request is valid, the update will be enqueued and processed downstream. As a consequence, when a response is returned, updates are not immediately manifested in the Product queried by GetProduct or ListProducts. When inventory is updated with CreateProduct and UpdateProduct, the specified inventory field value(s) will overwrite any existing value(s) while ignoring the last update time for this field. Furthermore, the last update time for the specified inventory fields will be overwritten to the time of the CreateProduct or UpdateProduct request. If no inventory fields are set in CreateProductRequest.product, then any pre-existing inventory information for this product will be used. If no inventory fields are set in UpdateProductRequest.set_mask, then any existing inventory information will be preserved. Pre-existing inventory information can only be updated with SetInventory, AddFulfillmentPlaces, and RemoveFulfillmentPlaces. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.
+
+Args:
+  name: string, Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Request message for SetInventory method.
+  &quot;allowMissing&quot;: True or False, # If set to true, and the Product with name Product.name is not found, the inventory update will still be processed and retained for at most 1 day until the Product is created. If set to false, an INVALID_ARGUMENT error is returned if the Product is not found.
+  &quot;inventory&quot;: { # Product captures all metadata information of items to be recommended or searched. # Required. The inventory information to update. The allowable fields to update are: * Product.price_info * Product.availability * Product.available_quantity * Product.fulfillment_info The updated inventory fields must be specified in SetInventoryRequest.set_mask. If SetInventoryRequest.inventory.name is empty or invalid, an INVALID_ARGUMENT error is returned. If the caller does not have permission to update the Product named in Product.name, regardless of whether or not it exists, a PERMISSION_DENIED error is returned. If the Product to update does not have existing inventory information, the provided inventory information will be inserted. If the Product to update has existing inventory information, the provided inventory information will be merged while respecting the last update time for each inventory field, using the provided or default value for SetInventoryRequest.set_time. The last update time is recorded for the following inventory fields: * Product.price_info * Product.availability * Product.available_quantity * Product.fulfillment_info If a full overwrite of inventory information while ignoring timestamps is needed, UpdateProduct should be invoked instead.
+    &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
+      &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+        &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
+        &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
+          3.14,
+        ],
+        &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
+        &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;A String&quot;,
+        ],
+      },
+    },
+    &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+      &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+        &quot;A String&quot;,
+      ],
+      &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
+    &quot;availableQuantity&quot;: 42, # The available quantity of the item.
+    &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+    &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+      &quot;A String&quot;,
+    ],
+    &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
+      &quot;A String&quot;,
+    ],
+    &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+      &quot;A String&quot;,
+    ],
+    &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+      &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+        &quot;A String&quot;,
+      ],
+      &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+      &quot;A String&quot;,
+    ],
+    &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+    &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+    &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+      { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+        &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;A String&quot;,
+        ],
+        &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+      },
+    ],
+    &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
+    &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
+    &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
+      { # Product thumbnail/detail image.
+        &quot;height&quot;: 42, # Height of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;uri&quot;: &quot;A String&quot;, # Required. URI of the image. This field must be a valid UTF-8 encoded URI with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
+        &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+      },
+    ],
+    &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+    &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+      &quot;A String&quot;,
+    ],
+    &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+    &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+      &quot;A String&quot;,
+    ],
+    &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
+      &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
+      &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
+      &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
+      &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+      &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+      &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+      &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+        &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+          &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+          &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+          &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+          &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+        },
+        &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+          &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+          &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+          &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+          &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+        },
+      },
+    },
+    &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+    &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+      { # Promotion information.
+        &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+      },
+    ],
+    &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+    &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+      &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+      &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+      &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+        42,
+      ],
+    },
+    &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+      &quot;A String&quot;,
+    ],
+    &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
+      &quot;A String&quot;,
+    ],
+    &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+    &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
+    &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
+    &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+    &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+      # Object with schema name: GoogleCloudRetailV2alphaProduct
+    ],
+  },
+  &quot;setMask&quot;: &quot;A String&quot;, # Indicates which inventory fields in the provided Product to update. If not set or set with empty paths, all inventory fields will be updated. If an unsupported or unknown field is provided, an INVALID_ARGUMENT error is returned and the entire update will be ignored.
+  &quot;setTime&quot;: &quot;A String&quot;, # The time when the request is issued, used to prevent out-of-order updates on inventory fields with the last update time recorded. If not provided, the internal system time will be used.
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # This resource represents a long-running operation that is the result of a network API call.
+  &quot;done&quot;: True or False, # 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.
+  &quot;error&quot;: { # 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). # The error result of the operation in case of failure or cancellation.
+    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
+    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
+      {
+        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+      },
+    ],
+    &quot;message&quot;: &quot;A String&quot;, # 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.
+  },
+  &quot;metadata&quot;: { # 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.
+    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+  },
+  &quot;name&quot;: &quot;A String&quot;, # 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}`.
+  &quot;response&quot;: { # 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`.
+    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+  },
 }</pre>
 </div>
 
diff --git a/docs/dyn/retail_v2alpha.projects.locations.catalogs.completionData.html b/docs/dyn/retail_v2alpha.projects.locations.catalogs.completionData.html
new file mode 100644
index 0000000..0ddac69
--- /dev/null
+++ b/docs/dyn/retail_v2alpha.projects.locations.catalogs.completionData.html
@@ -0,0 +1,145 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="retail_v2alpha.html">Retail API</a> . <a href="retail_v2alpha.projects.html">projects</a> . <a href="retail_v2alpha.projects.locations.html">locations</a> . <a href="retail_v2alpha.projects.locations.catalogs.html">catalogs</a> . <a href="retail_v2alpha.projects.locations.catalogs.completionData.html">completionData</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#close">close()</a></code></p>
+<p class="firstline">Close httplib2 connections.</p>
+<p class="toc_element">
+  <code><a href="#import_">import_(parent, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Bulk import of processed completion dataset. Request processing may be synchronous. Partial updating is not supported. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="close">close()</code>
+  <pre>Close httplib2 connections.</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="import_">import_(parent, body=None, x__xgafv=None)</code>
+  <pre>Bulk import of processed completion dataset. Request processing may be synchronous. Partial updating is not supported. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.
+
+Args:
+  parent: string, Required. The catalog which the suggestions dataset belongs to. Format: `projects/1234/locations/global/catalogs/default_catalog`. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Request message for ImportCompletionData methods.
+  &quot;inputConfig&quot;: { # The input config source for completion data. # Required. The desired input location of the data.
+    &quot;bigQuerySource&quot;: { # BigQuery source import data from. # Required. BigQuery input source. Add the IAM permission “BigQuery Data Viewer” for cloud-retail-customer-data-access@system.gserviceaccount.com before using this feature otherwise an error is thrown.
+      &quot;dataSchema&quot;: &quot;A String&quot;, # The schema to use when parsing the data from the source. Supported values for product imports: * `product` (default): One JSON Product per line. Each product must have a valid Product.id. * `product_merchant_center`: See [Importing catalog data from Merchant Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc). Supported values for user events imports: * `user_event` (default): One JSON UserEvent per line. * `user_event_ga360`: Using https://support.google.com/analytics/answer/3437719.
+      &quot;datasetId&quot;: &quot;A String&quot;, # Required. The BigQuery data set to copy the data from with a length limit of 1,024 characters.
+      &quot;gcsStagingDir&quot;: &quot;A String&quot;, # Intermediate Cloud Storage directory used for the import with a length limit of 2,000 characters. Can be specified if one wants to have the BigQuery export to a specific Cloud Storage directory.
+      &quot;partitionDate&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # BigQuery time partitioned table&#x27;s _PARTITIONDATE in YYYY-MM-DD format. Only supported when ImportProductsRequest.reconciliation_mode is set to `FULL`.
+        &quot;day&quot;: 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn&#x27;t significant.
+        &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
+        &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
+      },
+      &quot;projectId&quot;: &quot;A String&quot;, # The project ID (can be project # or ID) that the BigQuery source is in with a length limit of 128 characters. If not specified, inherits the project ID from the parent request.
+      &quot;tableId&quot;: &quot;A String&quot;, # Required. The BigQuery table to copy the data from with a length limit of 1,024 characters.
+    },
+  },
+  &quot;notificationPubsubTopic&quot;: &quot;A String&quot;, # Pub/Sub topic for receiving notification. If this field is set, when the import is finished, a notification will be sent to specified Pub/Sub topic. The message data will be JSON string of a Operation. Format of the Pub/Sub topic is `projects/{project}/topics/{topic}`.
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # This resource represents a long-running operation that is the result of a network API call.
+  &quot;done&quot;: True or False, # 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.
+  &quot;error&quot;: { # 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). # The error result of the operation in case of failure or cancellation.
+    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
+    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
+      {
+        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+      },
+    ],
+    &quot;message&quot;: &quot;A String&quot;, # 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.
+  },
+  &quot;metadata&quot;: { # 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.
+    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+  },
+  &quot;name&quot;: &quot;A String&quot;, # 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}`.
+  &quot;response&quot;: { # 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`.
+    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+  },
+}</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/retail_v2alpha.projects.locations.catalogs.html b/docs/dyn/retail_v2alpha.projects.locations.catalogs.html
index c16bf40..26245e3 100644
--- a/docs/dyn/retail_v2alpha.projects.locations.catalogs.html
+++ b/docs/dyn/retail_v2alpha.projects.locations.catalogs.html
@@ -80,6 +80,11 @@
 <p class="firstline">Returns the branches Resource.</p>
 
 <p class="toc_element">
+  <code><a href="retail_v2alpha.projects.locations.catalogs.completionData.html">completionData()</a></code>
+</p>
+<p class="firstline">Returns the completionData Resource.</p>
+
+<p class="toc_element">
   <code><a href="retail_v2alpha.projects.locations.catalogs.operations.html">operations()</a></code>
 </p>
 <p class="firstline">Returns the operations Resource.</p>
@@ -98,6 +103,12 @@
   <code><a href="#close">close()</a></code></p>
 <p class="firstline">Close httplib2 connections.</p>
 <p class="toc_element">
+  <code><a href="#completeQuery">completeQuery(catalog, dataset=None, deviceType=None, languageCodes=None, maxSuggestions=None, query=None, visitorId=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Completes the specified prefix with keyword suggestions. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.</p>
+<p class="toc_element">
+  <code><a href="#getDefaultBranch">getDefaultBranch(catalog, x__xgafv=None)</a></code></p>
+<p class="firstline">Get which branch is currently default branch set by CatalogService.SetDefaultBranch method under a specified parent catalog. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.</p>
+<p class="toc_element">
   <code><a href="#list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Lists all the Catalogs associated with the project.</p>
 <p class="toc_element">
@@ -106,6 +117,9 @@
 <p class="toc_element">
   <code><a href="#patch">patch(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Updates the Catalogs.</p>
+<p class="toc_element">
+  <code><a href="#setDefaultBranch">setDefaultBranch(catalog, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Set a specified branch id as default branch. API methods such as SearchService.Search, ProductService.GetProduct, ProductService.ListProducts will treat requests using "default_branch" to the actual branch id set as default. For example, if `projects/*/locations/*/catalogs/*/branches/1` is set as default, setting SearchRequest.branch to `projects/*/locations/*/catalogs/*/branches/default_branch` is equivalent to setting SearchRequest.branch to `projects/*/locations/*/catalogs/*/branches/1`. Using multiple branches can be useful when developers would like to have a staging branch to test and verify for future usage. When it becomes ready, developers switch on the staging branch using this API while keeping using `projects/*/locations/*/catalogs/*/branches/default_branch` as SearchRequest.branch to route the traffic to this staging branch. CAUTION: If you have live predict/search traffic, switching the default branch could potentially cause outages if the ID space of the new branch is very different from the old one. More specifically: * PredictionService will only return product IDs from branch {newBranch}. * SearchService will only return product IDs from branch {newBranch} (if branch is not explicitly set). * UserEventService will only join events with products from branch {newBranch}. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="close">close()</code>
@@ -113,6 +127,74 @@
 </div>
 
 <div class="method">
+    <code class="details" id="completeQuery">completeQuery(catalog, dataset=None, deviceType=None, languageCodes=None, maxSuggestions=None, query=None, visitorId=None, x__xgafv=None)</code>
+  <pre>Completes the specified prefix with keyword suggestions. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.
+
+Args:
+  catalog: string, Required. Catalog for which the completion is performed. Full resource name of catalog, such as `projects/*/locations/global/catalogs/default_catalog`. (required)
+  dataset: string, Determines which dataset to use for fetching completion. &quot;user-data&quot; will use the imported dataset through ImportCompletionData. &quot;cloud-retail&quot; will use the dataset generated by cloud retail based on user events. If leave empty, it will use the &quot;user-data&quot;. Current supported values: * user-data * cloud-retail This option is not automatically enabled. Before using cloud-retail, contact retail-search-support@google.com first.
+  deviceType: string, The device type context for completion suggestions. It is useful to apply different suggestions on different device types, e.g. DESKTOP, MOBILE. If it is empty, the suggestions are across all device types. Supported formats: * UNKNOWN_DEVICE_TYPE * DESKTOP * MOBILE * A customized string starts with OTHER_, e.g. OTHER_IPHONE.
+  languageCodes: string, The list of languages of the query. This is the BCP-47 language code, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see [Tags for Identifying Languages](https://tools.ietf.org/html/bcp47). The maximum number of allowed characters is 255. Only &quot;en-US&quot; is currently supported. (repeated)
+  maxSuggestions: integer, Completion max suggestions. The maximum allowed max suggestions is 20. The default value is 20.
+  query: string, Required. The query used to generate suggestions. The maximum number of allowed characters is 255.
+  visitorId: string, A unique identifier for tracking visitors. For example, this could be implemented with an HTTP cookie, which should be able to uniquely identify a visitor on a single device. This unique identifier should not change if the visitor logs in or out of the website. The field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Response of the auto-complete query.
+  &quot;attributionToken&quot;: &quot;A String&quot;, # A unique complete token. This should be included in the SearchRequest resulting from this completion, which enables accurate attribution of complete model performance.
+  &quot;completionResults&quot;: [ # Results of the matching suggestions. The result list is ordered and the first result is top suggestion.
+    { # Resource that represents completion results.
+      &quot;attributes&quot;: { # Additional custom attributes ingested through BigQuery.
+        &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+          &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
+          &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
+            3.14,
+          ],
+          &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
+          &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
+            &quot;A String&quot;,
+          ],
+        },
+      },
+      &quot;suggestion&quot;: &quot;A String&quot;, # The suggestion for the query.
+    },
+  ],
+  &quot;recentSearchResults&quot;: [ # Matched recent searches of this user. This field is a restricted feature. Contact Retail Support (retail-search-support@google.com) if you are interested in enabling it. This feature is only available when CompleteQueryRequest.visitor_id field is set and UserEvent is imported. The recent searches satisfy the follow rules: * They are ordered from latest to oldest. * They are matched with CompleteQueryRequest.query case insensitively. * They are transformed to lower cases. * They are UTF-8 safe. Recent searches are deduplicated. More recent searches will be reserved when duplication happens.
+    { # Recent search of this user.
+      &quot;recentSearch&quot;: &quot;A String&quot;, # The recent search query.
+    },
+  ],
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="getDefaultBranch">getDefaultBranch(catalog, x__xgafv=None)</code>
+  <pre>Get which branch is currently default branch set by CatalogService.SetDefaultBranch method under a specified parent catalog. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.
+
+Args:
+  catalog: string, The parent catalog resource name, such as `projects/*/locations/global/catalogs/default_catalog`. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Response message of CatalogService.GetDefaultBranch.
+  &quot;branch&quot;: &quot;A String&quot;, # Full resource name of the branch id currently set as default branch.
+  &quot;note&quot;: &quot;A String&quot;, # This corresponds to SetDefaultBranchRequest.note field, when this branch was set as default.
+  &quot;setTime&quot;: &quot;A String&quot;, # The time when this branch is set to default.
+}</pre>
+</div>
+
+<div class="method">
     <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
   <pre>Lists all the Catalogs associated with the project.
 
@@ -132,6 +214,17 @@
   &quot;catalogs&quot;: [ # All the customer&#x27;s Catalogs.
     { # The catalog configuration.
       &quot;displayName&quot;: &quot;A String&quot;, # Required. Immutable. The catalog display name. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.
+      &quot;merchantCenterLinkingConfig&quot;: { # Configures Merchant Center linking. Links contained in the config will be used to sync data from a Merchant Center account to a Cloud Retail branch. # The Merchant Center linking configuration. Once a link is added, the data stream from Merchant Center to Cloud Retail will be enabled automatically. The requester must have access to the merchant center account in order to make changes to this field.
+        &quot;links&quot;: [ # Links between Merchant Center accounts and branches.
+          { # Represents a link between a Merchant Center account and a branch. Once a link is established, products from the linked merchant center account will be streamed to the linked branch.
+            &quot;branchId&quot;: &quot;A String&quot;, # The branch id (e.g. 0/1/2) within this catalog that products from merchant_center_account_id are streamed to. When updating this field, an empty value will use the currently configured default branch. However, changing the default branch later on won&#x27;t change the linked branch here. A single branch id can only have one linked merchant center account id.
+            &quot;destinations&quot;: [ # String representing the destination to import for, all if left empty. List of possible values can be found here. [https://support.google.com/merchants/answer/7501026?hl=en] List of allowed string values: &quot;shopping-ads&quot;, &quot;buy-on-google-listings&quot;, &quot;display-ads&quot;, &quot;local-inventory -ads&quot;, &quot;free-listings&quot;, &quot;free-local-listings&quot; NOTE: The string values are case sensitive.
+              &quot;A String&quot;,
+            ],
+            &quot;merchantCenterAccountId&quot;: &quot;A String&quot;, # Required. The linked [Merchant center account id](https://developers.google.com/shopping-content/guides/accountstatuses). The account must be a standalone account or a sub-account of a MCA.
+          },
+        ],
+      },
       &quot;name&quot;: &quot;A String&quot;, # Required. Immutable. The fully qualified resource name of the catalog.
       &quot;productLevelConfig&quot;: { # Configures what level the product should be uploaded with regards to how users will be send events and how predictions will be made. # Required. The product level configuration.
         &quot;ingestionProductType&quot;: &quot;A String&quot;, # The type of Products allowed to be ingested into the catalog. Acceptable values are: * `primary` (default): You can only ingest Product.Type.PRIMARY Products. This means Product.primary_product_id can only be empty or set to the same value as Product.id. * `variant`: You can only ingest Product.Type.VARIANT Products. This means Product.primary_product_id cannot be empty. If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned. If this field is `variant` and merchant_center_product_id_field is `itemGroupId`, an INVALID_ARGUMENT error is returned. See [Using product levels](https://cloud.google.com/retail/recommendations-ai/docs/catalog#product-levels) for more details.
@@ -168,6 +261,17 @@
 
 { # The catalog configuration.
   &quot;displayName&quot;: &quot;A String&quot;, # Required. Immutable. The catalog display name. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;merchantCenterLinkingConfig&quot;: { # Configures Merchant Center linking. Links contained in the config will be used to sync data from a Merchant Center account to a Cloud Retail branch. # The Merchant Center linking configuration. Once a link is added, the data stream from Merchant Center to Cloud Retail will be enabled automatically. The requester must have access to the merchant center account in order to make changes to this field.
+    &quot;links&quot;: [ # Links between Merchant Center accounts and branches.
+      { # Represents a link between a Merchant Center account and a branch. Once a link is established, products from the linked merchant center account will be streamed to the linked branch.
+        &quot;branchId&quot;: &quot;A String&quot;, # The branch id (e.g. 0/1/2) within this catalog that products from merchant_center_account_id are streamed to. When updating this field, an empty value will use the currently configured default branch. However, changing the default branch later on won&#x27;t change the linked branch here. A single branch id can only have one linked merchant center account id.
+        &quot;destinations&quot;: [ # String representing the destination to import for, all if left empty. List of possible values can be found here. [https://support.google.com/merchants/answer/7501026?hl=en] List of allowed string values: &quot;shopping-ads&quot;, &quot;buy-on-google-listings&quot;, &quot;display-ads&quot;, &quot;local-inventory -ads&quot;, &quot;free-listings&quot;, &quot;free-local-listings&quot; NOTE: The string values are case sensitive.
+          &quot;A String&quot;,
+        ],
+        &quot;merchantCenterAccountId&quot;: &quot;A String&quot;, # Required. The linked [Merchant center account id](https://developers.google.com/shopping-content/guides/accountstatuses). The account must be a standalone account or a sub-account of a MCA.
+      },
+    ],
+  },
   &quot;name&quot;: &quot;A String&quot;, # Required. Immutable. The fully qualified resource name of the catalog.
   &quot;productLevelConfig&quot;: { # Configures what level the product should be uploaded with regards to how users will be send events and how predictions will be made. # Required. The product level configuration.
     &quot;ingestionProductType&quot;: &quot;A String&quot;, # The type of Products allowed to be ingested into the catalog. Acceptable values are: * `primary` (default): You can only ingest Product.Type.PRIMARY Products. This means Product.primary_product_id can only be empty or set to the same value as Product.id. * `variant`: You can only ingest Product.Type.VARIANT Products. This means Product.primary_product_id cannot be empty. If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned. If this field is `variant` and merchant_center_product_id_field is `itemGroupId`, an INVALID_ARGUMENT error is returned. See [Using product levels](https://cloud.google.com/retail/recommendations-ai/docs/catalog#product-levels) for more details.
@@ -186,6 +290,17 @@
 
     { # The catalog configuration.
   &quot;displayName&quot;: &quot;A String&quot;, # Required. Immutable. The catalog display name. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;merchantCenterLinkingConfig&quot;: { # Configures Merchant Center linking. Links contained in the config will be used to sync data from a Merchant Center account to a Cloud Retail branch. # The Merchant Center linking configuration. Once a link is added, the data stream from Merchant Center to Cloud Retail will be enabled automatically. The requester must have access to the merchant center account in order to make changes to this field.
+    &quot;links&quot;: [ # Links between Merchant Center accounts and branches.
+      { # Represents a link between a Merchant Center account and a branch. Once a link is established, products from the linked merchant center account will be streamed to the linked branch.
+        &quot;branchId&quot;: &quot;A String&quot;, # The branch id (e.g. 0/1/2) within this catalog that products from merchant_center_account_id are streamed to. When updating this field, an empty value will use the currently configured default branch. However, changing the default branch later on won&#x27;t change the linked branch here. A single branch id can only have one linked merchant center account id.
+        &quot;destinations&quot;: [ # String representing the destination to import for, all if left empty. List of possible values can be found here. [https://support.google.com/merchants/answer/7501026?hl=en] List of allowed string values: &quot;shopping-ads&quot;, &quot;buy-on-google-listings&quot;, &quot;display-ads&quot;, &quot;local-inventory -ads&quot;, &quot;free-listings&quot;, &quot;free-local-listings&quot; NOTE: The string values are case sensitive.
+          &quot;A String&quot;,
+        ],
+        &quot;merchantCenterAccountId&quot;: &quot;A String&quot;, # Required. The linked [Merchant center account id](https://developers.google.com/shopping-content/guides/accountstatuses). The account must be a standalone account or a sub-account of a MCA.
+      },
+    ],
+  },
   &quot;name&quot;: &quot;A String&quot;, # Required. Immutable. The fully qualified resource name of the catalog.
   &quot;productLevelConfig&quot;: { # Configures what level the product should be uploaded with regards to how users will be send events and how predictions will be made. # Required. The product level configuration.
     &quot;ingestionProductType&quot;: &quot;A String&quot;, # The type of Products allowed to be ingested into the catalog. Acceptable values are: * `primary` (default): You can only ingest Product.Type.PRIMARY Products. This means Product.primary_product_id can only be empty or set to the same value as Product.id. * `variant`: You can only ingest Product.Type.VARIANT Products. This means Product.primary_product_id cannot be empty. If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned. If this field is `variant` and merchant_center_product_id_field is `itemGroupId`, an INVALID_ARGUMENT error is returned. See [Using product levels](https://cloud.google.com/retail/recommendations-ai/docs/catalog#product-levels) for more details.
@@ -194,4 +309,30 @@
 }</pre>
 </div>
 
+<div class="method">
+    <code class="details" id="setDefaultBranch">setDefaultBranch(catalog, body=None, x__xgafv=None)</code>
+  <pre>Set a specified branch id as default branch. API methods such as SearchService.Search, ProductService.GetProduct, ProductService.ListProducts will treat requests using &quot;default_branch&quot; to the actual branch id set as default. For example, if `projects/*/locations/*/catalogs/*/branches/1` is set as default, setting SearchRequest.branch to `projects/*/locations/*/catalogs/*/branches/default_branch` is equivalent to setting SearchRequest.branch to `projects/*/locations/*/catalogs/*/branches/1`. Using multiple branches can be useful when developers would like to have a staging branch to test and verify for future usage. When it becomes ready, developers switch on the staging branch using this API while keeping using `projects/*/locations/*/catalogs/*/branches/default_branch` as SearchRequest.branch to route the traffic to this staging branch. CAUTION: If you have live predict/search traffic, switching the default branch could potentially cause outages if the ID space of the new branch is very different from the old one. More specifically: * PredictionService will only return product IDs from branch {newBranch}. * SearchService will only return product IDs from branch {newBranch} (if branch is not explicitly set). * UserEventService will only join events with products from branch {newBranch}. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.
+
+Args:
+  catalog: string, Full resource name of the catalog, such as `projects/*/locations/global/catalogs/default_catalog`. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Request message to set a specified branch as new default_branch.
+  &quot;branchId&quot;: &quot;A String&quot;, # The final component of the resource name of a branch. This field must be one of &quot;0&quot;, &quot;1&quot; or &quot;2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;note&quot;: &quot;A String&quot;, # Some note on this request, this can be retrieved by CatalogService.GetDefaultBranch before next valid default branch set occurs. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned.
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for `Empty` is empty JSON object `{}`.
+}</pre>
+</div>
+
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/retail_v2alpha.projects.locations.catalogs.placements.html b/docs/dyn/retail_v2alpha.projects.locations.catalogs.placements.html
index 554c03f..2ad160d 100644
--- a/docs/dyn/retail_v2alpha.projects.locations.catalogs.placements.html
+++ b/docs/dyn/retail_v2alpha.projects.locations.catalogs.placements.html
@@ -80,6 +80,12 @@
 <p class="toc_element">
   <code><a href="#predict">predict(placement, body=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Makes a recommendation prediction.</p>
+<p class="toc_element">
+  <code><a href="#search">search(placement, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Performs a search. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.</p>
+<p class="toc_element">
+  <code><a href="#search_next">search_next(previous_request, previous_response)</a></code></p>
+<p class="firstline">Retrieves the next page of results.</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="close">close()</code>
@@ -108,21 +114,31 @@
   &quot;userEvent&quot;: { # UserEvent captures all metadata information Retail API needs to know about how end users interact with customers&#x27; website. # Required. Context about the user, what they are looking at and what action they took to trigger the predict request. Note that this user event detail won&#x27;t be ingested to userEvent logs. Thus, a separate userEvent write request is required for event logging.
     &quot;attributes&quot;: { # Extra user event features to include in the recommendation model. The key must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. For product recommendation, an example of extra user information is traffic_channel, i.e. how user arrives at the site. Users can arrive at the site by coming to the site directly, or coming through Google search, and etc.
       &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+        &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
         &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
           3.14,
         ],
+        &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
         &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
           &quot;A String&quot;,
         ],
       },
     },
-    &quot;attributionToken&quot;: &quot;A String&quot;, # Highly recommended for user events that are the result of PredictionService.Predict. This field enables accurate attribution of recommendation model performance. The value must be a valid PredictResponse.attribution_token for user events that are the result of PredictionService.Predict. This token enables us to accurately attribute page view or purchase back to the event and the particular predict response containing this clicked/purchased product. If user clicks on product K in the recommendation results, pass PredictResponse.attribution_token as a URL parameter to product K&#x27;s page. When recording events on product K&#x27;s page, log the PredictResponse.attribution_token to this field.
+    &quot;attributionToken&quot;: &quot;A String&quot;, # Highly recommended for user events that are the result of PredictionService.Predict. This field enables accurate attribution of recommendation model performance. The value must be a valid PredictResponse.attribution_token for user events that are the result of PredictionService.Predict. The value must be a valid SearchResponse.attribution_token for user events that are the result of SearchService.Search. This token enables us to accurately attribute page view or purchase back to the event and the particular predict response containing this clicked/purchased product. If user clicks on product K in the recommendation results, pass PredictResponse.attribution_token as a URL parameter to product K&#x27;s page. When recording events on product K&#x27;s page, log the PredictResponse.attribution_token to this field.
     &quot;cartId&quot;: &quot;A String&quot;, # The id or name of the associated shopping cart. This id is used to associate multiple items added or present in the cart before purchase. This can only be set for `add-to-cart`, `purchase-complete`, or `shopping-cart-page-view` events.
+    &quot;completionDetail&quot;: { # Detailed completion information including completion attribution token and clicked completion info. # The main completion details related to the event. In a `completion` event, this field represents the completions returned to the end user and the clicked completion by the end user. In a `search` event, it represents the search event happens after clicking completion.
+      &quot;completionAttributionToken&quot;: &quot;A String&quot;, # Completion attribution token in CompleteQueryResponse.attribution_token.
+      &quot;selectedPosition&quot;: 42, # End user selected CompleteQueryResponse.CompletionResult.suggestion position, starting from 0.
+      &quot;selectedSuggestion&quot;: &quot;A String&quot;, # End user selected CompleteQueryResponse.CompletionResult.suggestion.
+    },
     &quot;eventTime&quot;: &quot;A String&quot;, # Only required for UserEventService.ImportUserEvents method. Timestamp of when the user event happened.
     &quot;eventType&quot;: &quot;A String&quot;, # Required. User event type. Allowed values are: * `add-to-cart`: Products being added to cart. * `category-page-view`: Special pages such as sale or promotion pages viewed. * `completion`: Completion query result showed/clicked. * `detail-page-view`: Products detail page viewed. * `home-page-view`: Homepage viewed. * `promotion-offered`: Promotion is offered to a user. * `promotion-not-offered`: Promotion is not offered to a user. * `purchase-complete`: User finishing a purchase. * `search`: Product search. * `shopping-cart-page-view`: User viewing a shopping cart.
     &quot;experimentIds&quot;: [ # A list of identifiers for the independent experiment groups this user event belongs to. This is used to distinguish between user events associated with different experiment setups (e.g. using Retail API, using different recommendation models).
       &quot;A String&quot;,
     ],
+    &quot;filter&quot;: &quot;A String&quot;, # The filter syntax consists of an expression language for constructing a predicate from one or more fields of the products being filtered. See SearchRequest.filter for definition and syntax. The value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;offset&quot;: 42, # An integer that specifies the current offset for pagination (the 0-indexed starting location, amongst the products deemed by the API as relevant). See SearchRequest.offset for definition. If this field is negative, an INVALID_ARGUMENT is returned. This can only be set for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;orderBy&quot;: &quot;A String&quot;, # The order in which products are returned. See SearchRequest.order_by for definition and syntax. The value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This can only be set for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
     &quot;pageCategories&quot;: [ # The categories associated with a category page. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). Category pages include special pages such as sales or promotions. For instance, a special sale page may have the category hierarchy: &quot;pageCategories&quot; : [&quot;Sales &gt; 2017 Black Friday Deals&quot;]. Required for `category-page-view` events. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
       &quot;A String&quot;,
     ],
@@ -130,23 +146,60 @@
     &quot;productDetails&quot;: [ # The main product details related to the event. This field is required for the following event types: * `add-to-cart` * `detail-page-view` * `purchase-complete` In a `search` event, this field represents the products returned to the end user on the current page (the end user may have not finished broswing the whole page yet). When a new page is returned to the end user, after pagination/filtering/ordering even for the same query, a new `search` event with different product_details is desired. The end user may have not finished broswing the whole page yet.
       { # Detailed product information associated with a user event.
         &quot;product&quot;: { # Product captures all metadata information of items to be recommended or searched. # Required. Product information. Only Product.id field is used when ingesting an event, all other product fields are ignored as we will look them up from the catalog.
-          &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters.
+          &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
             &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+              &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
               &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
                 3.14,
               ],
+              &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
               &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
                 &quot;A String&quot;,
               ],
             },
           },
+          &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+            &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+              &quot;A String&quot;,
+            ],
+            &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+              &quot;A String&quot;,
+            ],
+          },
           &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
           &quot;availableQuantity&quot;: 42, # The available quantity of the item.
-          &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for recommendation.
+          &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+          &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+            &quot;A String&quot;,
+          ],
           &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
             &quot;A String&quot;,
           ],
+          &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+            &quot;A String&quot;,
+          ],
+          &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+            &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+              &quot;A String&quot;,
+            ],
+            &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+              &quot;A String&quot;,
+            ],
+          },
+          &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+            &quot;A String&quot;,
+          ],
           &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+          &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+          &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+            { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+              &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+                &quot;A String&quot;,
+              ],
+              &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+            },
+          ],
+          &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
           &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
           &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
             { # Product thumbnail/detail image.
@@ -155,20 +208,64 @@
               &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
             },
           ],
+          &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+          &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+            &quot;A String&quot;,
+          ],
           &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+          &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+            &quot;A String&quot;,
+          ],
           &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
             &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
-            &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned.
+            &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
             &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
             &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+            &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+            &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+            &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+              &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+                &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+                &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+                &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+                &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+              },
+              &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+                &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+                &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+                &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+                &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+              },
+            },
           },
           &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+          &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+            { # Promotion information.
+              &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+            },
+          ],
+          &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+          &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+            &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+            &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+            &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+              42,
+            ],
+          },
+          &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+            &quot;A String&quot;,
+          ],
           &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
             &quot;A String&quot;,
           ],
           &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+          &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
           &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
           &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+          &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+            # Object with schema name: GoogleCloudRetailV2alphaProduct
+          ],
         },
         &quot;quantity&quot;: 42, # Quantity of the product associated with the user event. For example, this field will be 2 if two products are added to the shopping cart for `purchase-complete` event. Required for `add-to-cart` and `purchase-complete` event types.
       },
@@ -181,12 +278,13 @@
       &quot;tax&quot;: 3.14, # All the taxes associated with the transaction.
     },
     &quot;referrerUri&quot;: &quot;A String&quot;, # The referrer URL of the current page. When using the client side event reporting with JavaScript pixel and Google Tag Manager, this value is filled in automatically.
-    &quot;searchQuery&quot;: &quot;A String&quot;, # The user&#x27;s search query. The value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;searchQuery&quot;: &quot;A String&quot;, # The user&#x27;s search query. See SearchRequest.query for definition. The value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;sessionId&quot;: &quot;A String&quot;, # A unique identifier for tracking a visitor session with a length limit of 128 bytes. A session is an aggregation of an end user behavior in a time span. A general guideline to populate the sesion_id: 1. If user has no activity for 30 min, a new session_id should be assigned. 2. The session_id should be unique across users, suggest use uuid or add visitor_id as prefix.
     &quot;uri&quot;: &quot;A String&quot;, # Complete URL (window.location.href) of the user&#x27;s current page. When using the client side event reporting with JavaScript pixel and Google Tag Manager, this value is filled in automatically. Maximum length 5,000 characters.
     &quot;userInfo&quot;: { # Information of an end user. # User information.
       &quot;directUserRequest&quot;: True or False, # True if the request is made directly from the end user, in which case the ip_address and user_agent can be populated from the HTTP request. This flag should be set only if the API request is made directly from the end user such as a mobile app (and not if a gateway or a server is processing and pushing the user events). This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent.
-      &quot;ipAddress&quot;: &quot;A String&quot;, # The end user&#x27;s IP address. Required for getting SearchRespons.sponsored_results. This field is used to extract location information for personalization. This field must be either an IPv4 address (e.g. &quot;104.133.9.80&quot;) or an IPv6 address (e.g. &quot;2001:0db8:85a3:0000:0000:8a2e:0370:7334&quot;). Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
-      &quot;userAgent&quot;: &quot;A String&quot;, # User agent as included in the HTTP header. Required for getting SearchRespons.sponsored_results. The field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the client side event reporting with GTM or JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
+      &quot;ipAddress&quot;: &quot;A String&quot;, # The end user&#x27;s IP address. Required for getting SearchResponse.sponsored_results. This field is used to extract location information for personalization. This field must be either an IPv4 address (e.g. &quot;104.133.9.80&quot;) or an IPv6 address (e.g. &quot;2001:0db8:85a3:0000:0000:8a2e:0370:7334&quot;). Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
+      &quot;userAgent&quot;: &quot;A String&quot;, # User agent as included in the HTTP header. Required for getting SearchResponse.sponsored_results. The field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the client side event reporting with GTM or JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
       &quot;userId&quot;: &quot;A String&quot;, # Highly recommended for logged-in users. Unique identifier for logged-in user, such as a user name. The field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.
     },
     &quot;visitorId&quot;: &quot;A String&quot;, # Required. A unique identifier for tracking visitors. For example, this could be implemented with an HTTP cookie, which should be able to uniquely identify a visitor on a single device. This unique identifier should not change if the visitor log in/out of the website. The field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. The field should not contain PII or user-data. We recommend to use Google Analystics [Client ID](https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#clientId) for this field.
@@ -219,4 +317,269 @@
 }</pre>
 </div>
 
+<div class="method">
+    <code class="details" id="search">search(placement, body=None, x__xgafv=None)</code>
+  <pre>Performs a search. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.
+
+Args:
+  placement: string, Required. The resource name of the search engine placement, such as `projects/*/locations/global/catalogs/default_catalog/placements/default_search`. This field is used to identify the set of models that will be used to make the search. We currently support one placement with the following ID: * `default_search`. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Request message for SearchService.Search method.
+  &quot;boostSpec&quot;: { # Boost specification to boost certain items. # Boost specification to boost certain products. See more details at this [user guide](/retail/private/docs/boosting).
+    &quot;conditionBoostSpecs&quot;: [ # Condition boost specifications. If a product matches multiple conditions in the specifictions, boost scores from these specifications are all applied and combined in a non-linear way. Maximum number of specifications is 10.
+      { # Boost applies to products which match a condition.
+        &quot;boost&quot;: 3.14, # Strength of the condition boost, which should be in [-1, 1]. Negative boost means demotion. Default is 0.0. Setting to 1.0 gives the item a big promotion. However, it does not necessarily mean that the boosted item will be the top result at all times, nor that other items will be excluded. Results could still be shown even when none of them matches the condition. And results that are significantly more relevant to the search query can still trump your heavily favored but irrelevant items. Setting to -1.0 gives the item a big demotion. However, results that are deeply relevant might still be shown. The item will have an upstream battle to get a fairly high ranking, but it is not blocked out completely. Setting to 0.0 means no boost applied. The boosting condition is ignored.
+        &quot;condition&quot;: &quot;A String&quot;, # An expression which specifies a boost condition. The syntax and supported fields are the same as a filter expression. See SearchRequest.filter for detail syntax and limitations. Examples: * To boost products with product ID &quot;product_1&quot; or &quot;product_2&quot;, and color &quot;Red&quot; or &quot;Blue&quot;: *(id: ANY(&quot;product_1&quot;, &quot;product_2&quot;)) * *AND * *(colorFamilies: ANY(&quot;Red&quot;, &quot;Blue&quot;)) *
+      },
+    ],
+  },
+  &quot;branch&quot;: &quot;A String&quot;, # The branch resource name, such as `projects/*/locations/global/catalogs/default_catalog/branches/0`. Use &quot;default_branch&quot; as the branch ID or leave this field empty, to search products under the default branch.
+  &quot;canonicalFilter&quot;: &quot;A String&quot;, # The filter applied to every search request when quality improvement such as query expansion is needed. For example, if a query does not have enough results, an expanded query with SearchRequest.canonical_filter will be returned as a supplement of the original query. This field is strongly recommended to achieve high search quality. See SearchRequest.filter for more details about filter syntax.
+  &quot;dynamicFacetSpec&quot;: { # The specifications of dynamically generated facets. # The specification for dynamically generated facets. Notice that only textual facets can be dynamically generated. This feature requires additional allowlisting. Contact Retail Support (retail-search-support@google.com) if you are interested in using dynamic facet feature.
+    &quot;mode&quot;: &quot;A String&quot;, # Mode of the DynamicFacet feature. Defaults to Mode.DISABLED if it&#x27;s unset.
+  },
+  &quot;facetSpecs&quot;: [ # Facet specifications for faceted search. If empty, no facets are returned. A maximum of 100 values are allowed. Otherwise, an INVALID_ARGUMENT error is returned.
+    { # A facet specification to perform faceted search.
+      &quot;enableDynamicPosition&quot;: True or False, # Enables dynamic position for this facet. If set to true, the position of this facet among all facets in the response is determined by Google Retail Search. It will be ordered together with dynamic facets if dynamic facets is enabled. If set to false, the position of this facet in the response will be the same as in the request, and it will be ranked before the facets with dynamic position enable and all dynamic facets. For example, you may always want to have rating facet returned in the response, but it&#x27;s not necessarily to always display the rating facet at the top. In that case, you can set enable_dynamic_position to true so that the position of rating facet in response will be determined by Google Retail Search. Another example, assuming you have the following facets in the request: * &quot;rating&quot;, enable_dynamic_position = true * &quot;price&quot;, enable_dynamic_position = false * &quot;brands&quot;, enable_dynamic_position = false And also you have a dynamic facets enable, which will generate a facet &#x27;gender&#x27;. Then the final order of the facets in the response can be (&quot;price&quot;, &quot;brands&quot;, &quot;rating&quot;, &quot;gender&quot;) or (&quot;price&quot;, &quot;brands&quot;, &quot;gender&quot;, &quot;rating&quot;) depends on how Google Retail Search orders &quot;gender&quot; and &quot;rating&quot; facets. However, notice that &quot;price&quot; and &quot;brands&quot; will always be ranked at 1st and 2nd position since their enable_dynamic_position are false.
+      &quot;excludedFilterKeys&quot;: [ # List of keys to exclude when faceting. By default, FacetKey.key is not excluded from the filter unless it is listed in this field. For example, suppose there are 100 products with color facet &quot;Red&quot; and 200 products with color facet &quot;Blue&quot;. A query containing the filter &quot;colorFamilies:ANY(&quot;Red&quot;)&quot; and have &quot;colorFamilies&quot; as FacetKey.key will by default return the &quot;Red&quot; with count 100. If this field contains &quot;colorFamilies&quot;, then the query returns both the &quot;Red&quot; with count 100 and &quot;Blue&quot; with count 200, because the &quot;colorFamilies&quot; key is now excluded from the filter. A maximum of 100 values are allowed. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;A String&quot;,
+      ],
+      &quot;facetKey&quot;: { # Specifies how a facet is computed. # Required. The facet key specification.
+        &quot;contains&quot;: [ # Only get facet values that contains the given strings. For example, suppose &quot;categories&quot; has three values &quot;Women &gt; Shoe&quot;, &quot;Women &gt; Dress&quot; and &quot;Men &gt; Shoe&quot;. If set &quot;contains&quot; to &quot;Shoe&quot;, the &quot;categories&quot; facet will give only &quot;Women &gt; Shoe&quot; and &quot;Men &gt; Shoe&quot;. Only supported on textual fields. Maximum is 10.
+          &quot;A String&quot;,
+        ],
+        &quot;intervals&quot;: [ # Set only if values should be bucketized into intervals. Must be set for facets with numerical values. Must not be set for facet with text values. Maximum number of intervals is 30.
+          { # A floating point interval.
+            &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+            &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+            &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+            &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+          },
+        ],
+        &quot;key&quot;: &quot;A String&quot;, # Required. Supported textual and numerical facet keys in Product object, over which the facet values are computed. Facet key is case-sensitive. Allowed facet keys when FacetKey.query is not specified: * textual_field = *# The Product.brands. * &quot;brands&quot;; *# The Product.categories. * &quot;categories&quot;; *# The Audience.genders. * | &quot;genders&quot;; *# The Audience.age_groups. * | &quot;ageGroups&quot;; *# The Product.availability. Value is one of * *# &quot;IN_STOCK&quot;, &quot;OUT_OF_STOCK&quot;, PREORDER&quot;, &quot;BACKORDER&quot;. * | &quot;availability&quot;; *# The ColorInfo.color_families. * | &quot;colorFamilies&quot;; *# The ColorInfo.colors. * | &quot;colors&quot;; *# The Product.sizes. * | &quot;sizes&quot;; *# The Product.materials. * | &quot;materials&quot;; *# The Product.patterns. * | &quot;patterns&quot;; *# The Product.conditions. * | &quot;conditions&quot;; *# The textual custom attribute in Product object. Key can * *# be any key in the Product.attributes map * *# if the attribute values are textual. * *# map. * | &quot;attributes.key&quot;; *# The FulfillmentInfo.ids for type *# FulfillmentInfo.Type.PICKUP_IN_STORE. * | &quot;pickupInStore&quot;; *# The FulfillmentInfo.ids for type *# FulfillmentInfo.Type.SHIP_TO_STORE. * | &quot;shipToStore&quot;; *# The FulfillmentInfo.ids for type *# FulfillmentInfo.Type.SAME_DAY_DELIVERY. * | &quot;sameDayDelivery&quot;; *# The FulfillmentInfo.ids for type *# FulfillmentInfo.Type.NEXT_DAY_DELIVERY. * | &quot;nextDayDelivery&quot;; *# The FulfillmentInfo.ids for type *# FulfillmentInfo.Type.CUSTOM_TYPE_1. * | &quot;customFulfillment1&quot;; *# The FulfillmentInfo.ids for type *# FulfillmentInfo.Type.CUSTOM_TYPE_2. * | &quot;customFulfillment2&quot;; *# The FulfillmentInfo.ids for type *# FulfillmentInfo.Type.CUSTOM_TYPE_3. * | &quot;customFulfillment3&quot;; *# The FulfillmentInfo.ids for type *# FulfillmentInfo.Type.CUSTOM_TYPE_4. * | &quot;customFulfillment4&quot;; *# The FulfillmentInfo.ids for type *# FulfillmentInfo.Type.CUSTOM_TYPE_5. * | &quot;customFulfillment5&quot;; * numerical_field = *# The PriceInfo.price. * &quot;price&quot;; *# The discount. Computed by (original_price-price)/price * &quot;discount&quot;; *# The Rating.average_rating. * &quot;rating&quot;; *# The Rating.rating_count. * &quot;ratingCount&quot;; *# The numerical custom attribute in Product object. Key can * *# be any key in the Product.attributes map * *# if the attribute values are numerical. * | &quot;attributes.key&quot;;
+        &quot;orderBy&quot;: &quot;A String&quot;, # The order in which Facet.values are returned. Allowed values are: * &quot;count desc&quot;, which means order by Facet.FacetValue.count descending. * &quot;value desc&quot;, which means order by Facet.FacetValue.value descending. Only applies to textual facets. If not set, textual values are sorted in [natural order](https://en.wikipedia.org/wiki/Natural_sort_order); numerical intervals are sorted in the order given by FacetSpec.FacetKey.intervals; FulfillmentInfo.ids are sorted in the order given by FacetSpec.FacetKey.restricted_values.
+        &quot;prefixes&quot;: [ # Only get facet values that start with the given string prefix. For example, suppose &quot;categories&quot; has three values &quot;Women &gt; Shoe&quot;, &quot;Women &gt; Dress&quot; and &quot;Men &gt; Shoe&quot;. If set &quot;prefixes&quot; to &quot;Women&quot;, the &quot;categories&quot; facet will give only &quot;Women &gt; Shoe&quot; and &quot;Women &gt; Dress&quot;. Only supported on textual fields. Maximum is 10.
+          &quot;A String&quot;,
+        ],
+        &quot;query&quot;: &quot;A String&quot;, # The query that is used to compute facet for the given facet key. When provided, it will override the default behavior of facet computation. The query syntax is the same as a filter expression. See SearchRequest.filter for detail syntax and limitations. Notice that there is no limitation on FacetKey.key when query is specified. In the response, FacetValue.value will be always &quot;1&quot; and FacetValue.count will be the number of results that matches the query. For example, you can set a customized facet for &quot;shipToStore&quot;, where FacetKey.key is &quot;customizedShipToStore&quot;, and FacetKey.query is &quot;availability: ANY(\&quot;IN_STOCK\&quot;) AND shipToStore: ANY(\&quot;123\&quot;)&quot;. Then the facet will count the products that are both in stock and ship to store &quot;123&quot;.
+        &quot;restrictedValues&quot;: [ # Only get facet for the given restricted values. For example, when using &quot;pickupInStore&quot; as key and set restricted values to [&quot;store123&quot;, &quot;store456&quot;], only facets for &quot;store123&quot; and &quot;store456&quot; are returned. Only supported on textual fields and fulfillments. Maximum is 20. Must be set for the fulfillment facet keys: * pickupInStore * shipToStore * sameDayDelivery * nextDayDelivery * customFulfillment1 * customFulfillment2 * customFulfillment3 * customFulfillment4 * customFulfillment5
+          &quot;A String&quot;,
+        ],
+      },
+      &quot;limit&quot;: 42, # Maximum of facet values that should be returned for this facet. If unspecified, defaults to 20. The maximum allowed value is 300. Values above 300 will be coerced to 300. If this field is negative, an INVALID_ARGUMENT is returned.
+    },
+  ],
+  &quot;filter&quot;: &quot;A String&quot;, # The filter syntax consists of an expression language for constructing a predicate from one or more fields of the products being filtered. Filter expression is case-sensitive. See more details at this [user guide](/retail/private/docs/filter-and-order#filter). If this field is unrecognizable, an INVALID_ARGUMENT is returned.
+  &quot;offset&quot;: 42, # A 0-indexed integer that specifies the current offset (that is, starting result location, amongst the Products deemed by the API as relevant) in search results. This field is only considered if page_token is unset. If this field is negative, an INVALID_ARGUMENT is returned.
+  &quot;orderBy&quot;: &quot;A String&quot;, # The order in which products are returned. Products can be ordered by a field in an Product object. Leave it unset if ordered by relevance. OrderBy expression is case-sensitive. See more details at this [user guide](/retail/private/docs/filter-and-order#order). If this field is unrecognizable, an INVALID_ARGUMENT is returned.
+  &quot;pageCategories&quot;: [ # The categories associated with a category page. Required for category navigation queries to achieve good search quality. The format should be the same as UserEvent.page_categories; To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). Category pages include special pages such as sales or promotions. For instance, a special sale page may have the category hierarchy: &quot;pageCategories&quot; : [&quot;Sales &gt; 2017 Black Friday Deals&quot;].
+    &quot;A String&quot;,
+  ],
+  &quot;pageSize&quot;: 42, # Maximum number of Products to return. If unspecified, defaults to a reasonable value. The maximum allowed value is 120. Values above 120 will be coerced to 120. If this field is negative, an INVALID_ARGUMENT is returned.
+  &quot;pageToken&quot;: &quot;A String&quot;, # A page token SearchResponse.next_page_token, received from a previous SearchService.Search call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to SearchService.Search must match the call that provided the page token. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;query&quot;: &quot;A String&quot;, # Raw search query.
+  &quot;queryExpansionSpec&quot;: { # Specification to determine under which conditions query expansion should occur. # The query expansion specification that specifies the conditions under which query expansion will occur. See more details at this [user guide](/retail/private/docs/result-size#query_expansion).
+    &quot;condition&quot;: &quot;A String&quot;, # The condition under which query expansion should occur. Default to Condition.DISABLED.
+  },
+  &quot;relevanceThreshold&quot;: &quot;A String&quot;, # The relevance threshold of the search results. Defaults to RelevanceThreshold.HIGH, which means only the most relevant results are shown, and the least number of results are returned. See more details at this [user guide](/retail/private/docs/result-size#relevance_thresholding).
+  &quot;userInfo&quot;: { # Information of an end user. # User information.
+    &quot;directUserRequest&quot;: True or False, # True if the request is made directly from the end user, in which case the ip_address and user_agent can be populated from the HTTP request. This flag should be set only if the API request is made directly from the end user such as a mobile app (and not if a gateway or a server is processing and pushing the user events). This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent.
+    &quot;ipAddress&quot;: &quot;A String&quot;, # The end user&#x27;s IP address. Required for getting SearchResponse.sponsored_results. This field is used to extract location information for personalization. This field must be either an IPv4 address (e.g. &quot;104.133.9.80&quot;) or an IPv6 address (e.g. &quot;2001:0db8:85a3:0000:0000:8a2e:0370:7334&quot;). Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
+    &quot;userAgent&quot;: &quot;A String&quot;, # User agent as included in the HTTP header. Required for getting SearchResponse.sponsored_results. The field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the client side event reporting with GTM or JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
+    &quot;userId&quot;: &quot;A String&quot;, # Highly recommended for logged-in users. Unique identifier for logged-in user, such as a user name. The field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.
+  },
+  &quot;variantRollupKeys&quot;: [ # The keys to fetch and rollup the matching variant Products attributes. The attributes from all the matching variant Products are merged and de-duplicated. Notice that rollup variant Products attributes will lead to extra query latency. Maximum number of keys is 10. For Product.fulfillment_info, a fulfillment type and a fulfillment ID must be provided in the format of &quot;fulfillmentType.filfillmentId&quot;. E.g., in &quot;pickupInStore.store123&quot;, &quot;pickupInStore&quot; is fulfillment type and &quot;store123&quot; is the store ID. Supported keys are: * colorFamilies * price * originalPrice * discount * attributes.key, where key is any key in the Product.attributes map. * pickupInStore.id, where id is any FulfillmentInfo.ids for type FulfillmentInfo.Type.PICKUP_IN_STORE. * shipToStore.id, where id is any FulfillmentInfo.ids for type FulfillmentInfo.Type.SHIP_TO_STORE. * sameDayDelivery.id, where id is any FulfillmentInfo.ids for type FulfillmentInfo.Type.SAME_DAY_DELIVERY. * nextDayDelivery.id, where id is any FulfillmentInfo.ids for type FulfillmentInfo.Type.NEXT_DAY_DELIVERY. * customFulfillment1.id, where id is any FulfillmentInfo.ids for type FulfillmentInfo.Type.CUSTOM_TYPE_1. * customFulfillment2.id, where id is any FulfillmentInfo.ids for type FulfillmentInfo.Type.CUSTOM_TYPE_2. * customFulfillment3.id, where id is any FulfillmentInfo.ids for type FulfillmentInfo.Type.CUSTOM_TYPE_3. * customFulfillment4.id, where id is any FulfillmentInfo.ids for type FulfillmentInfo.Type.CUSTOM_TYPE_4. * customFulfillment5.id, where id is any FulfillmentInfo.ids for type FulfillmentInfo.Type.CUSTOM_TYPE_5. If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+    &quot;A String&quot;,
+  ],
+  &quot;visitorId&quot;: &quot;A String&quot;, # Required. A unique identifier for tracking visitors. For example, this could be implemented with an HTTP cookie, which should be able to uniquely identify a visitor on a single device. This unique identifier should not change if the visitor logs in or out of the website. The field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Response message for SearchService.Search method.
+  &quot;attributionToken&quot;: &quot;A String&quot;, # A unique search token. This should be included in the UserEvent logs resulting from this search, which enables accurate attribution of search model performance.
+  &quot;correctedQuery&quot;: &quot;A String&quot;, # If spell correction applies, the corrected query. Otherwise, empty.
+  &quot;facets&quot;: [ # Results of facets requested by user.
+    { # A facet result.
+      &quot;dynamicFacet&quot;: True or False, # Whether the facet is dynamically generated.
+      &quot;key&quot;: &quot;A String&quot;, # The key for this facet. E.g., &quot;colorFamilies&quot; or &quot;price&quot; or &quot;attributes.attr1&quot;.
+      &quot;values&quot;: [ # The facet values for this field.
+        { # A facet value which contains value names and their count.
+          &quot;count&quot;: &quot;A String&quot;, # Number of items that have this facet value.
+          &quot;interval&quot;: { # A floating point interval. # Interval value for a facet, such as [10, 20) for facet &quot;price&quot;.
+            &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+            &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+            &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+            &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+          },
+          &quot;value&quot;: &quot;A String&quot;, # Text value of a facet, such as &quot;Black&quot; for facet &quot;colorFamilies&quot;.
+        },
+      ],
+    },
+  ],
+  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token that can be sent as SearchRequest.page_token to retrieve the next page. If this field is omitted, there are no subsequent pages.
+  &quot;queryExpansionInfo&quot;: { # Information describing query expansion including whether expansion has occurred. # Query expansion information for the returned results.
+    &quot;expandedQuery&quot;: True or False, # Bool describing whether query expansion has occurred.
+  },
+  &quot;redirectUri&quot;: &quot;A String&quot;, # The URI of a customer-defined redirect page. If redirect action is triggered, no search will be performed, and only redirect_uri and attribution_token will be set in the response.
+  &quot;results&quot;: [ # A list of matched items. The order represents the ranking.
+    { # Represents the search results.
+      &quot;id&quot;: &quot;A String&quot;, # Product.id of the searched Product.
+      &quot;matchingVariantCount&quot;: 42, # The count of matched variant Products.
+      &quot;matchingVariantFields&quot;: { # If a variant Product matches the search query, this map indicates which Product fields are matched. The key is the Product.name, the value is a field mask of the matched Product fields. If matched attributes cannot be determined, this map will be empty. For example, a key &quot;sku1&quot; with field mask &quot;products.color_info&quot; indicates there is a match between &quot;sku1&quot; ColorInfo and the query.
+        &quot;a_key&quot;: &quot;A String&quot;,
+      },
+      &quot;product&quot;: { # Product captures all metadata information of items to be recommended or searched. # The product data snippet in the search response. Only Product.name is guaranteed to be populated. Product.variants contains the product variants that match the search query. If there are multiple product variants matching the query, top 5 most relevant product variants are returned and ordered by relevancy. If relevancy can be deternmined, use matching_variant_fields to look up matched product variants fields. If relevancy cannot be determined, e.g. when searching &quot;shoe&quot; all products in a shoe product can be a match, 5 product variants are returned but order is meaningless.
+        &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
+          &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+            &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
+            &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
+              3.14,
+            ],
+            &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
+            &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
+              &quot;A String&quot;,
+            ],
+          },
+        },
+        &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+          &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+            &quot;A String&quot;,
+          ],
+          &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+            &quot;A String&quot;,
+          ],
+        },
+        &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
+        &quot;availableQuantity&quot;: 42, # The available quantity of the item.
+        &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+        &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+          &quot;A String&quot;,
+        ],
+        &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
+          &quot;A String&quot;,
+        ],
+        &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+          &quot;A String&quot;,
+        ],
+        &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+          &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+            &quot;A String&quot;,
+          ],
+          &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+            &quot;A String&quot;,
+          ],
+        },
+        &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+          &quot;A String&quot;,
+        ],
+        &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+        &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+        &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+          { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+            &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+              &quot;A String&quot;,
+            ],
+            &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+          },
+        ],
+        &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
+        &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
+        &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
+          { # Product thumbnail/detail image.
+            &quot;height&quot;: 42, # Height of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+            &quot;uri&quot;: &quot;A String&quot;, # Required. URI of the image. This field must be a valid UTF-8 encoded URI with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
+            &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+          },
+        ],
+        &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+        &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+          &quot;A String&quot;,
+        ],
+        &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+        &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+          &quot;A String&quot;,
+        ],
+        &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
+          &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
+          &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
+          &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
+          &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+          &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+          &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+          &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+            &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+              &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+              &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+              &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+              &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+            },
+            &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+              &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+              &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+              &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+              &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+            },
+          },
+        },
+        &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+        &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+          { # Promotion information.
+            &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+          },
+        ],
+        &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+        &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+          &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+            42,
+          ],
+        },
+        &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+          &quot;A String&quot;,
+        ],
+        &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
+          &quot;A String&quot;,
+        ],
+        &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+        &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
+        &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
+        &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+        &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+          # Object with schema name: GoogleCloudRetailV2alphaProduct
+        ],
+      },
+      &quot;variantRollupValues&quot;: { # The rollup matching variant Product attributes. The key is one of the SearchRequest.variant_rollup_keys. The values are the merged and de-duplicated Product attributes. Notice that the rollup values are respect filter. For example, when filtering by &quot;colorFamilies:ANY(\&quot;red\&quot;)&quot; and rollup &quot;colorFamilies&quot;, only &quot;red&quot; is returned. For textual and numerical attributes, the rollup values is a list of string or double values with type google.protobuf.ListValue. For example, if there are two variants with colors &quot;red&quot; and &quot;blue&quot;, the rollup values are { key: &quot;colorFamilies&quot; value { list_value { values { string_value: &quot;red&quot; } values { string_value: &quot;blue&quot; } } } } For Product.fulfillment_info, the rollup values is a double value with type google.protobuf.Value. For example, {key: &quot;pickupInStore.store1&quot; value { number_value: 10 }} means a there are 10 variants in this product are available in the store &quot;store1&quot;.
+        &quot;a_key&quot;: &quot;&quot;,
+      },
+    },
+  ],
+  &quot;totalSize&quot;: 42, # The estimated total count of matched items irrespective of pagination. The count of results returned by pagination may be less than the total_size that matches.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="search_next">search_next(previous_request, previous_response)</code>
+  <pre>Retrieves the next page of results.
+
+Args:
+  previous_request: The request for the previous page. (required)
+  previous_response: The response from the request for the previous page. (required)
+
+Returns:
+  A request object that you can call &#x27;execute()&#x27; on to request the next
+  page. Returns None if there are no more items in the collection.
+    </pre>
+</div>
+
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/retail_v2alpha.projects.locations.catalogs.userEvents.html b/docs/dyn/retail_v2alpha.projects.locations.catalogs.userEvents.html
index 9021879..9114003 100644
--- a/docs/dyn/retail_v2alpha.projects.locations.catalogs.userEvents.html
+++ b/docs/dyn/retail_v2alpha.projects.locations.catalogs.userEvents.html
@@ -141,14 +141,19 @@
   },
   &quot;inputConfig&quot;: { # The input config source for user events. # Required. The desired input location of the data.
     &quot;bigQuerySource&quot;: { # BigQuery source import data from. # Required. BigQuery input source.
-      &quot;dataSchema&quot;: &quot;A String&quot;, # The schema to use when parsing the data from the source. Supported values for product imports: * `product` (default): One JSON Product per line. Each product must have a valid Product.id. * `product_merchant_center`: See [Importing catalog data from Merchant Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc). Supported values for user events imports: * `user_event` (default): One JSON UserEvent per line. * `user_event_ga360`: Using https://support.google.com/analytics/answer/3437719?hl=en.
+      &quot;dataSchema&quot;: &quot;A String&quot;, # The schema to use when parsing the data from the source. Supported values for product imports: * `product` (default): One JSON Product per line. Each product must have a valid Product.id. * `product_merchant_center`: See [Importing catalog data from Merchant Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc). Supported values for user events imports: * `user_event` (default): One JSON UserEvent per line. * `user_event_ga360`: Using https://support.google.com/analytics/answer/3437719.
       &quot;datasetId&quot;: &quot;A String&quot;, # Required. The BigQuery data set to copy the data from with a length limit of 1,024 characters.
       &quot;gcsStagingDir&quot;: &quot;A String&quot;, # Intermediate Cloud Storage directory used for the import with a length limit of 2,000 characters. Can be specified if one wants to have the BigQuery export to a specific Cloud Storage directory.
+      &quot;partitionDate&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # BigQuery time partitioned table&#x27;s _PARTITIONDATE in YYYY-MM-DD format. Only supported when ImportProductsRequest.reconciliation_mode is set to `FULL`.
+        &quot;day&quot;: 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn&#x27;t significant.
+        &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
+        &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
+      },
       &quot;projectId&quot;: &quot;A String&quot;, # The project ID (can be project # or ID) that the BigQuery source is in with a length limit of 128 characters. If not specified, inherits the project ID from the parent request.
       &quot;tableId&quot;: &quot;A String&quot;, # Required. The BigQuery table to copy the data from with a length limit of 1,024 characters.
     },
     &quot;gcsSource&quot;: { # Google Cloud Storage location for input content. format. # Required. Google Cloud Storage location for the input content.
-      &quot;dataSchema&quot;: &quot;A String&quot;, # The schema to use when parsing the data from the source. Supported values for product imports: * `product` (default): One JSON Product per line. Each product must have a valid Product.id. * `product_merchant_center`: See [Importing catalog data from Merchant Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc). Supported values for user events imports: * `user_event` (default): One JSON UserEvent per line. * `user_event_ga360`: Using https://support.google.com/analytics/answer/3437719?hl=en.
+      &quot;dataSchema&quot;: &quot;A String&quot;, # The schema to use when parsing the data from the source. Supported values for product imports: * `product` (default): One JSON Product per line. Each product must have a valid Product.id. * `product_merchant_center`: See [Importing catalog data from Merchant Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc). Supported values for user events imports: * `user_event` (default): One JSON UserEvent per line. * `user_event_ga360`: Using https://support.google.com/analytics/answer/3437719.
       &quot;inputUris&quot;: [ # Required. Google Cloud Storage URIs to input files. URI can be up to 2000 characters long. URIs can match the full object path (for example, `gs://bucket/directory/object.json`) or a pattern matching one or more files, such as `gs://bucket/directory/*.json`. A request can contain at most 100 files, and each file can be up to 2 GB. See [Importing product information](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog) for the expected file format and setup instructions.
         &quot;A String&quot;,
       ],
@@ -158,21 +163,31 @@
         { # UserEvent captures all metadata information Retail API needs to know about how end users interact with customers&#x27; website.
           &quot;attributes&quot;: { # Extra user event features to include in the recommendation model. The key must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. For product recommendation, an example of extra user information is traffic_channel, i.e. how user arrives at the site. Users can arrive at the site by coming to the site directly, or coming through Google search, and etc.
             &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+              &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
               &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
                 3.14,
               ],
+              &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
               &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
                 &quot;A String&quot;,
               ],
             },
           },
-          &quot;attributionToken&quot;: &quot;A String&quot;, # Highly recommended for user events that are the result of PredictionService.Predict. This field enables accurate attribution of recommendation model performance. The value must be a valid PredictResponse.attribution_token for user events that are the result of PredictionService.Predict. This token enables us to accurately attribute page view or purchase back to the event and the particular predict response containing this clicked/purchased product. If user clicks on product K in the recommendation results, pass PredictResponse.attribution_token as a URL parameter to product K&#x27;s page. When recording events on product K&#x27;s page, log the PredictResponse.attribution_token to this field.
+          &quot;attributionToken&quot;: &quot;A String&quot;, # Highly recommended for user events that are the result of PredictionService.Predict. This field enables accurate attribution of recommendation model performance. The value must be a valid PredictResponse.attribution_token for user events that are the result of PredictionService.Predict. The value must be a valid SearchResponse.attribution_token for user events that are the result of SearchService.Search. This token enables us to accurately attribute page view or purchase back to the event and the particular predict response containing this clicked/purchased product. If user clicks on product K in the recommendation results, pass PredictResponse.attribution_token as a URL parameter to product K&#x27;s page. When recording events on product K&#x27;s page, log the PredictResponse.attribution_token to this field.
           &quot;cartId&quot;: &quot;A String&quot;, # The id or name of the associated shopping cart. This id is used to associate multiple items added or present in the cart before purchase. This can only be set for `add-to-cart`, `purchase-complete`, or `shopping-cart-page-view` events.
+          &quot;completionDetail&quot;: { # Detailed completion information including completion attribution token and clicked completion info. # The main completion details related to the event. In a `completion` event, this field represents the completions returned to the end user and the clicked completion by the end user. In a `search` event, it represents the search event happens after clicking completion.
+            &quot;completionAttributionToken&quot;: &quot;A String&quot;, # Completion attribution token in CompleteQueryResponse.attribution_token.
+            &quot;selectedPosition&quot;: 42, # End user selected CompleteQueryResponse.CompletionResult.suggestion position, starting from 0.
+            &quot;selectedSuggestion&quot;: &quot;A String&quot;, # End user selected CompleteQueryResponse.CompletionResult.suggestion.
+          },
           &quot;eventTime&quot;: &quot;A String&quot;, # Only required for UserEventService.ImportUserEvents method. Timestamp of when the user event happened.
           &quot;eventType&quot;: &quot;A String&quot;, # Required. User event type. Allowed values are: * `add-to-cart`: Products being added to cart. * `category-page-view`: Special pages such as sale or promotion pages viewed. * `completion`: Completion query result showed/clicked. * `detail-page-view`: Products detail page viewed. * `home-page-view`: Homepage viewed. * `promotion-offered`: Promotion is offered to a user. * `promotion-not-offered`: Promotion is not offered to a user. * `purchase-complete`: User finishing a purchase. * `search`: Product search. * `shopping-cart-page-view`: User viewing a shopping cart.
           &quot;experimentIds&quot;: [ # A list of identifiers for the independent experiment groups this user event belongs to. This is used to distinguish between user events associated with different experiment setups (e.g. using Retail API, using different recommendation models).
             &quot;A String&quot;,
           ],
+          &quot;filter&quot;: &quot;A String&quot;, # The filter syntax consists of an expression language for constructing a predicate from one or more fields of the products being filtered. See SearchRequest.filter for definition and syntax. The value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;offset&quot;: 42, # An integer that specifies the current offset for pagination (the 0-indexed starting location, amongst the products deemed by the API as relevant). See SearchRequest.offset for definition. If this field is negative, an INVALID_ARGUMENT is returned. This can only be set for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;orderBy&quot;: &quot;A String&quot;, # The order in which products are returned. See SearchRequest.order_by for definition and syntax. The value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This can only be set for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
           &quot;pageCategories&quot;: [ # The categories associated with a category page. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). Category pages include special pages such as sales or promotions. For instance, a special sale page may have the category hierarchy: &quot;pageCategories&quot; : [&quot;Sales &gt; 2017 Black Friday Deals&quot;]. Required for `category-page-view` events. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
             &quot;A String&quot;,
           ],
@@ -180,23 +195,60 @@
           &quot;productDetails&quot;: [ # The main product details related to the event. This field is required for the following event types: * `add-to-cart` * `detail-page-view` * `purchase-complete` In a `search` event, this field represents the products returned to the end user on the current page (the end user may have not finished broswing the whole page yet). When a new page is returned to the end user, after pagination/filtering/ordering even for the same query, a new `search` event with different product_details is desired. The end user may have not finished broswing the whole page yet.
             { # Detailed product information associated with a user event.
               &quot;product&quot;: { # Product captures all metadata information of items to be recommended or searched. # Required. Product information. Only Product.id field is used when ingesting an event, all other product fields are ignored as we will look them up from the catalog.
-                &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters.
+                &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
                   &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+                    &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
                     &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
                       3.14,
                     ],
+                    &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
                     &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
                       &quot;A String&quot;,
                     ],
                   },
                 },
+                &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+                  &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+                    &quot;A String&quot;,
+                  ],
+                  &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+                    &quot;A String&quot;,
+                  ],
+                },
                 &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
                 &quot;availableQuantity&quot;: 42, # The available quantity of the item.
-                &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for recommendation.
+                &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+                &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+                  &quot;A String&quot;,
+                ],
                 &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
                   &quot;A String&quot;,
                 ],
+                &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+                  &quot;A String&quot;,
+                ],
+                &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+                  &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+                    &quot;A String&quot;,
+                  ],
+                  &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+                    &quot;A String&quot;,
+                  ],
+                },
+                &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+                  &quot;A String&quot;,
+                ],
                 &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+                &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+                &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+                  { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+                    &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+                      &quot;A String&quot;,
+                    ],
+                    &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+                  },
+                ],
+                &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
                 &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
                 &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
                   { # Product thumbnail/detail image.
@@ -205,20 +257,64 @@
                     &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
                   },
                 ],
+                &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+                &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+                  &quot;A String&quot;,
+                ],
                 &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+                &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+                  &quot;A String&quot;,
+                ],
                 &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
                   &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
-                  &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned.
+                  &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
                   &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
                   &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+                  &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+                  &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+                  &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+                    &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+                      &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+                      &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+                      &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+                      &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+                    },
+                    &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+                      &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+                      &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+                      &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+                      &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+                    },
+                  },
                 },
                 &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+                &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+                  { # Promotion information.
+                    &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+                  },
+                ],
+                &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+                &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+                  &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+                  &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+                  &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+                    42,
+                  ],
+                },
+                &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+                &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+                  &quot;A String&quot;,
+                ],
                 &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
                   &quot;A String&quot;,
                 ],
                 &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+                &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
                 &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
                 &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+                &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+                  # Object with schema name: GoogleCloudRetailV2alphaProduct
+                ],
               },
               &quot;quantity&quot;: 42, # Quantity of the product associated with the user event. For example, this field will be 2 if two products are added to the shopping cart for `purchase-complete` event. Required for `add-to-cart` and `purchase-complete` event types.
             },
@@ -231,12 +327,13 @@
             &quot;tax&quot;: 3.14, # All the taxes associated with the transaction.
           },
           &quot;referrerUri&quot;: &quot;A String&quot;, # The referrer URL of the current page. When using the client side event reporting with JavaScript pixel and Google Tag Manager, this value is filled in automatically.
-          &quot;searchQuery&quot;: &quot;A String&quot;, # The user&#x27;s search query. The value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;searchQuery&quot;: &quot;A String&quot;, # The user&#x27;s search query. See SearchRequest.query for definition. The value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;sessionId&quot;: &quot;A String&quot;, # A unique identifier for tracking a visitor session with a length limit of 128 bytes. A session is an aggregation of an end user behavior in a time span. A general guideline to populate the sesion_id: 1. If user has no activity for 30 min, a new session_id should be assigned. 2. The session_id should be unique across users, suggest use uuid or add visitor_id as prefix.
           &quot;uri&quot;: &quot;A String&quot;, # Complete URL (window.location.href) of the user&#x27;s current page. When using the client side event reporting with JavaScript pixel and Google Tag Manager, this value is filled in automatically. Maximum length 5,000 characters.
           &quot;userInfo&quot;: { # Information of an end user. # User information.
             &quot;directUserRequest&quot;: True or False, # True if the request is made directly from the end user, in which case the ip_address and user_agent can be populated from the HTTP request. This flag should be set only if the API request is made directly from the end user such as a mobile app (and not if a gateway or a server is processing and pushing the user events). This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent.
-            &quot;ipAddress&quot;: &quot;A String&quot;, # The end user&#x27;s IP address. Required for getting SearchRespons.sponsored_results. This field is used to extract location information for personalization. This field must be either an IPv4 address (e.g. &quot;104.133.9.80&quot;) or an IPv6 address (e.g. &quot;2001:0db8:85a3:0000:0000:8a2e:0370:7334&quot;). Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
-            &quot;userAgent&quot;: &quot;A String&quot;, # User agent as included in the HTTP header. Required for getting SearchRespons.sponsored_results. The field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the client side event reporting with GTM or JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
+            &quot;ipAddress&quot;: &quot;A String&quot;, # The end user&#x27;s IP address. Required for getting SearchResponse.sponsored_results. This field is used to extract location information for personalization. This field must be either an IPv4 address (e.g. &quot;104.133.9.80&quot;) or an IPv6 address (e.g. &quot;2001:0db8:85a3:0000:0000:8a2e:0370:7334&quot;). Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
+            &quot;userAgent&quot;: &quot;A String&quot;, # User agent as included in the HTTP header. Required for getting SearchResponse.sponsored_results. The field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the client side event reporting with GTM or JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
             &quot;userId&quot;: &quot;A String&quot;, # Highly recommended for logged-in users. Unique identifier for logged-in user, such as a user name. The field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.
           },
           &quot;visitorId&quot;: &quot;A String&quot;, # Required. A unique identifier for tracking visitors. For example, this could be implemented with an HTTP cookie, which should be able to uniquely identify a visitor on a single device. This unique identifier should not change if the visitor log in/out of the website. The field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. The field should not contain PII or user-data. We recommend to use Google Analystics [Client ID](https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#clientId) for this field.
@@ -372,21 +469,31 @@
 { # UserEvent captures all metadata information Retail API needs to know about how end users interact with customers&#x27; website.
   &quot;attributes&quot;: { # Extra user event features to include in the recommendation model. The key must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. For product recommendation, an example of extra user information is traffic_channel, i.e. how user arrives at the site. Users can arrive at the site by coming to the site directly, or coming through Google search, and etc.
     &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+      &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
       &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         3.14,
       ],
+      &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
       &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         &quot;A String&quot;,
       ],
     },
   },
-  &quot;attributionToken&quot;: &quot;A String&quot;, # Highly recommended for user events that are the result of PredictionService.Predict. This field enables accurate attribution of recommendation model performance. The value must be a valid PredictResponse.attribution_token for user events that are the result of PredictionService.Predict. This token enables us to accurately attribute page view or purchase back to the event and the particular predict response containing this clicked/purchased product. If user clicks on product K in the recommendation results, pass PredictResponse.attribution_token as a URL parameter to product K&#x27;s page. When recording events on product K&#x27;s page, log the PredictResponse.attribution_token to this field.
+  &quot;attributionToken&quot;: &quot;A String&quot;, # Highly recommended for user events that are the result of PredictionService.Predict. This field enables accurate attribution of recommendation model performance. The value must be a valid PredictResponse.attribution_token for user events that are the result of PredictionService.Predict. The value must be a valid SearchResponse.attribution_token for user events that are the result of SearchService.Search. This token enables us to accurately attribute page view or purchase back to the event and the particular predict response containing this clicked/purchased product. If user clicks on product K in the recommendation results, pass PredictResponse.attribution_token as a URL parameter to product K&#x27;s page. When recording events on product K&#x27;s page, log the PredictResponse.attribution_token to this field.
   &quot;cartId&quot;: &quot;A String&quot;, # The id or name of the associated shopping cart. This id is used to associate multiple items added or present in the cart before purchase. This can only be set for `add-to-cart`, `purchase-complete`, or `shopping-cart-page-view` events.
+  &quot;completionDetail&quot;: { # Detailed completion information including completion attribution token and clicked completion info. # The main completion details related to the event. In a `completion` event, this field represents the completions returned to the end user and the clicked completion by the end user. In a `search` event, it represents the search event happens after clicking completion.
+    &quot;completionAttributionToken&quot;: &quot;A String&quot;, # Completion attribution token in CompleteQueryResponse.attribution_token.
+    &quot;selectedPosition&quot;: 42, # End user selected CompleteQueryResponse.CompletionResult.suggestion position, starting from 0.
+    &quot;selectedSuggestion&quot;: &quot;A String&quot;, # End user selected CompleteQueryResponse.CompletionResult.suggestion.
+  },
   &quot;eventTime&quot;: &quot;A String&quot;, # Only required for UserEventService.ImportUserEvents method. Timestamp of when the user event happened.
   &quot;eventType&quot;: &quot;A String&quot;, # Required. User event type. Allowed values are: * `add-to-cart`: Products being added to cart. * `category-page-view`: Special pages such as sale or promotion pages viewed. * `completion`: Completion query result showed/clicked. * `detail-page-view`: Products detail page viewed. * `home-page-view`: Homepage viewed. * `promotion-offered`: Promotion is offered to a user. * `promotion-not-offered`: Promotion is not offered to a user. * `purchase-complete`: User finishing a purchase. * `search`: Product search. * `shopping-cart-page-view`: User viewing a shopping cart.
   &quot;experimentIds&quot;: [ # A list of identifiers for the independent experiment groups this user event belongs to. This is used to distinguish between user events associated with different experiment setups (e.g. using Retail API, using different recommendation models).
     &quot;A String&quot;,
   ],
+  &quot;filter&quot;: &quot;A String&quot;, # The filter syntax consists of an expression language for constructing a predicate from one or more fields of the products being filtered. See SearchRequest.filter for definition and syntax. The value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;offset&quot;: 42, # An integer that specifies the current offset for pagination (the 0-indexed starting location, amongst the products deemed by the API as relevant). See SearchRequest.offset for definition. If this field is negative, an INVALID_ARGUMENT is returned. This can only be set for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;orderBy&quot;: &quot;A String&quot;, # The order in which products are returned. See SearchRequest.order_by for definition and syntax. The value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This can only be set for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
   &quot;pageCategories&quot;: [ # The categories associated with a category page. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). Category pages include special pages such as sales or promotions. For instance, a special sale page may have the category hierarchy: &quot;pageCategories&quot; : [&quot;Sales &gt; 2017 Black Friday Deals&quot;]. Required for `category-page-view` events. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
     &quot;A String&quot;,
   ],
@@ -394,23 +501,60 @@
   &quot;productDetails&quot;: [ # The main product details related to the event. This field is required for the following event types: * `add-to-cart` * `detail-page-view` * `purchase-complete` In a `search` event, this field represents the products returned to the end user on the current page (the end user may have not finished broswing the whole page yet). When a new page is returned to the end user, after pagination/filtering/ordering even for the same query, a new `search` event with different product_details is desired. The end user may have not finished broswing the whole page yet.
     { # Detailed product information associated with a user event.
       &quot;product&quot;: { # Product captures all metadata information of items to be recommended or searched. # Required. Product information. Only Product.id field is used when ingesting an event, all other product fields are ignored as we will look them up from the catalog.
-        &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters.
+        &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
           &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+            &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
             &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
               3.14,
             ],
+            &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
             &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
               &quot;A String&quot;,
             ],
           },
         },
+        &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+          &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+            &quot;A String&quot;,
+          ],
+          &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+            &quot;A String&quot;,
+          ],
+        },
         &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
         &quot;availableQuantity&quot;: 42, # The available quantity of the item.
-        &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for recommendation.
+        &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+        &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+          &quot;A String&quot;,
+        ],
         &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
           &quot;A String&quot;,
         ],
+        &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+          &quot;A String&quot;,
+        ],
+        &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+          &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+            &quot;A String&quot;,
+          ],
+          &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+            &quot;A String&quot;,
+          ],
+        },
+        &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+          &quot;A String&quot;,
+        ],
         &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+        &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+        &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+          { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+            &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+              &quot;A String&quot;,
+            ],
+            &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+          },
+        ],
+        &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
         &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
         &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
           { # Product thumbnail/detail image.
@@ -419,20 +563,64 @@
             &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
           },
         ],
+        &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+        &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+          &quot;A String&quot;,
+        ],
         &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+        &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+          &quot;A String&quot;,
+        ],
         &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
           &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
-          &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned.
+          &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
           &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
           &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+          &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+          &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+          &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+            &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+              &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+              &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+              &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+              &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+            },
+            &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+              &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+              &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+              &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+              &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+            },
+          },
         },
         &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+        &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+          { # Promotion information.
+            &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+          },
+        ],
+        &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+        &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+          &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+            42,
+          ],
+        },
+        &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+          &quot;A String&quot;,
+        ],
         &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
           &quot;A String&quot;,
         ],
         &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+        &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
         &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
         &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+        &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+          # Object with schema name: GoogleCloudRetailV2alphaProduct
+        ],
       },
       &quot;quantity&quot;: 42, # Quantity of the product associated with the user event. For example, this field will be 2 if two products are added to the shopping cart for `purchase-complete` event. Required for `add-to-cart` and `purchase-complete` event types.
     },
@@ -445,12 +633,13 @@
     &quot;tax&quot;: 3.14, # All the taxes associated with the transaction.
   },
   &quot;referrerUri&quot;: &quot;A String&quot;, # The referrer URL of the current page. When using the client side event reporting with JavaScript pixel and Google Tag Manager, this value is filled in automatically.
-  &quot;searchQuery&quot;: &quot;A String&quot;, # The user&#x27;s search query. The value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;searchQuery&quot;: &quot;A String&quot;, # The user&#x27;s search query. See SearchRequest.query for definition. The value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;sessionId&quot;: &quot;A String&quot;, # A unique identifier for tracking a visitor session with a length limit of 128 bytes. A session is an aggregation of an end user behavior in a time span. A general guideline to populate the sesion_id: 1. If user has no activity for 30 min, a new session_id should be assigned. 2. The session_id should be unique across users, suggest use uuid or add visitor_id as prefix.
   &quot;uri&quot;: &quot;A String&quot;, # Complete URL (window.location.href) of the user&#x27;s current page. When using the client side event reporting with JavaScript pixel and Google Tag Manager, this value is filled in automatically. Maximum length 5,000 characters.
   &quot;userInfo&quot;: { # Information of an end user. # User information.
     &quot;directUserRequest&quot;: True or False, # True if the request is made directly from the end user, in which case the ip_address and user_agent can be populated from the HTTP request. This flag should be set only if the API request is made directly from the end user such as a mobile app (and not if a gateway or a server is processing and pushing the user events). This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent.
-    &quot;ipAddress&quot;: &quot;A String&quot;, # The end user&#x27;s IP address. Required for getting SearchRespons.sponsored_results. This field is used to extract location information for personalization. This field must be either an IPv4 address (e.g. &quot;104.133.9.80&quot;) or an IPv6 address (e.g. &quot;2001:0db8:85a3:0000:0000:8a2e:0370:7334&quot;). Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
-    &quot;userAgent&quot;: &quot;A String&quot;, # User agent as included in the HTTP header. Required for getting SearchRespons.sponsored_results. The field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the client side event reporting with GTM or JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
+    &quot;ipAddress&quot;: &quot;A String&quot;, # The end user&#x27;s IP address. Required for getting SearchResponse.sponsored_results. This field is used to extract location information for personalization. This field must be either an IPv4 address (e.g. &quot;104.133.9.80&quot;) or an IPv6 address (e.g. &quot;2001:0db8:85a3:0000:0000:8a2e:0370:7334&quot;). Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
+    &quot;userAgent&quot;: &quot;A String&quot;, # User agent as included in the HTTP header. Required for getting SearchResponse.sponsored_results. The field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the client side event reporting with GTM or JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
     &quot;userId&quot;: &quot;A String&quot;, # Highly recommended for logged-in users. Unique identifier for logged-in user, such as a user name. The field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.
   },
   &quot;visitorId&quot;: &quot;A String&quot;, # Required. A unique identifier for tracking visitors. For example, this could be implemented with an HTTP cookie, which should be able to uniquely identify a visitor on a single device. This unique identifier should not change if the visitor log in/out of the website. The field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. The field should not contain PII or user-data. We recommend to use Google Analystics [Client ID](https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#clientId) for this field.
@@ -467,21 +656,31 @@
     { # UserEvent captures all metadata information Retail API needs to know about how end users interact with customers&#x27; website.
   &quot;attributes&quot;: { # Extra user event features to include in the recommendation model. The key must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. For product recommendation, an example of extra user information is traffic_channel, i.e. how user arrives at the site. Users can arrive at the site by coming to the site directly, or coming through Google search, and etc.
     &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+      &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
       &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         3.14,
       ],
+      &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
       &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         &quot;A String&quot;,
       ],
     },
   },
-  &quot;attributionToken&quot;: &quot;A String&quot;, # Highly recommended for user events that are the result of PredictionService.Predict. This field enables accurate attribution of recommendation model performance. The value must be a valid PredictResponse.attribution_token for user events that are the result of PredictionService.Predict. This token enables us to accurately attribute page view or purchase back to the event and the particular predict response containing this clicked/purchased product. If user clicks on product K in the recommendation results, pass PredictResponse.attribution_token as a URL parameter to product K&#x27;s page. When recording events on product K&#x27;s page, log the PredictResponse.attribution_token to this field.
+  &quot;attributionToken&quot;: &quot;A String&quot;, # Highly recommended for user events that are the result of PredictionService.Predict. This field enables accurate attribution of recommendation model performance. The value must be a valid PredictResponse.attribution_token for user events that are the result of PredictionService.Predict. The value must be a valid SearchResponse.attribution_token for user events that are the result of SearchService.Search. This token enables us to accurately attribute page view or purchase back to the event and the particular predict response containing this clicked/purchased product. If user clicks on product K in the recommendation results, pass PredictResponse.attribution_token as a URL parameter to product K&#x27;s page. When recording events on product K&#x27;s page, log the PredictResponse.attribution_token to this field.
   &quot;cartId&quot;: &quot;A String&quot;, # The id or name of the associated shopping cart. This id is used to associate multiple items added or present in the cart before purchase. This can only be set for `add-to-cart`, `purchase-complete`, or `shopping-cart-page-view` events.
+  &quot;completionDetail&quot;: { # Detailed completion information including completion attribution token and clicked completion info. # The main completion details related to the event. In a `completion` event, this field represents the completions returned to the end user and the clicked completion by the end user. In a `search` event, it represents the search event happens after clicking completion.
+    &quot;completionAttributionToken&quot;: &quot;A String&quot;, # Completion attribution token in CompleteQueryResponse.attribution_token.
+    &quot;selectedPosition&quot;: 42, # End user selected CompleteQueryResponse.CompletionResult.suggestion position, starting from 0.
+    &quot;selectedSuggestion&quot;: &quot;A String&quot;, # End user selected CompleteQueryResponse.CompletionResult.suggestion.
+  },
   &quot;eventTime&quot;: &quot;A String&quot;, # Only required for UserEventService.ImportUserEvents method. Timestamp of when the user event happened.
   &quot;eventType&quot;: &quot;A String&quot;, # Required. User event type. Allowed values are: * `add-to-cart`: Products being added to cart. * `category-page-view`: Special pages such as sale or promotion pages viewed. * `completion`: Completion query result showed/clicked. * `detail-page-view`: Products detail page viewed. * `home-page-view`: Homepage viewed. * `promotion-offered`: Promotion is offered to a user. * `promotion-not-offered`: Promotion is not offered to a user. * `purchase-complete`: User finishing a purchase. * `search`: Product search. * `shopping-cart-page-view`: User viewing a shopping cart.
   &quot;experimentIds&quot;: [ # A list of identifiers for the independent experiment groups this user event belongs to. This is used to distinguish between user events associated with different experiment setups (e.g. using Retail API, using different recommendation models).
     &quot;A String&quot;,
   ],
+  &quot;filter&quot;: &quot;A String&quot;, # The filter syntax consists of an expression language for constructing a predicate from one or more fields of the products being filtered. See SearchRequest.filter for definition and syntax. The value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;offset&quot;: 42, # An integer that specifies the current offset for pagination (the 0-indexed starting location, amongst the products deemed by the API as relevant). See SearchRequest.offset for definition. If this field is negative, an INVALID_ARGUMENT is returned. This can only be set for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;orderBy&quot;: &quot;A String&quot;, # The order in which products are returned. See SearchRequest.order_by for definition and syntax. The value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This can only be set for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
   &quot;pageCategories&quot;: [ # The categories associated with a category page. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). Category pages include special pages such as sales or promotions. For instance, a special sale page may have the category hierarchy: &quot;pageCategories&quot; : [&quot;Sales &gt; 2017 Black Friday Deals&quot;]. Required for `category-page-view` events. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
     &quot;A String&quot;,
   ],
@@ -489,23 +688,60 @@
   &quot;productDetails&quot;: [ # The main product details related to the event. This field is required for the following event types: * `add-to-cart` * `detail-page-view` * `purchase-complete` In a `search` event, this field represents the products returned to the end user on the current page (the end user may have not finished broswing the whole page yet). When a new page is returned to the end user, after pagination/filtering/ordering even for the same query, a new `search` event with different product_details is desired. The end user may have not finished broswing the whole page yet.
     { # Detailed product information associated with a user event.
       &quot;product&quot;: { # Product captures all metadata information of items to be recommended or searched. # Required. Product information. Only Product.id field is used when ingesting an event, all other product fields are ignored as we will look them up from the catalog.
-        &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters.
+        &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
           &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+            &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
             &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
               3.14,
             ],
+            &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
             &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
               &quot;A String&quot;,
             ],
           },
         },
+        &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+          &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+            &quot;A String&quot;,
+          ],
+          &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+            &quot;A String&quot;,
+          ],
+        },
         &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
         &quot;availableQuantity&quot;: 42, # The available quantity of the item.
-        &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for recommendation.
+        &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+        &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+          &quot;A String&quot;,
+        ],
         &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
           &quot;A String&quot;,
         ],
+        &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+          &quot;A String&quot;,
+        ],
+        &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+          &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+            &quot;A String&quot;,
+          ],
+          &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+            &quot;A String&quot;,
+          ],
+        },
+        &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+          &quot;A String&quot;,
+        ],
         &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+        &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+        &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+          { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+            &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+              &quot;A String&quot;,
+            ],
+            &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+          },
+        ],
+        &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
         &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
         &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
           { # Product thumbnail/detail image.
@@ -514,20 +750,64 @@
             &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
           },
         ],
+        &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+        &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+          &quot;A String&quot;,
+        ],
         &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+        &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+          &quot;A String&quot;,
+        ],
         &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
           &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
-          &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned.
+          &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
           &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
           &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+          &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+          &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+          &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+            &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+              &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+              &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+              &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+              &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+            },
+            &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+              &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+              &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+              &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+              &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+            },
+          },
         },
         &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+        &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+          { # Promotion information.
+            &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+          },
+        ],
+        &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+        &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+          &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+            42,
+          ],
+        },
+        &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+          &quot;A String&quot;,
+        ],
         &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
           &quot;A String&quot;,
         ],
         &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+        &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
         &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
         &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+        &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+          # Object with schema name: GoogleCloudRetailV2alphaProduct
+        ],
       },
       &quot;quantity&quot;: 42, # Quantity of the product associated with the user event. For example, this field will be 2 if two products are added to the shopping cart for `purchase-complete` event. Required for `add-to-cart` and `purchase-complete` event types.
     },
@@ -540,12 +820,13 @@
     &quot;tax&quot;: 3.14, # All the taxes associated with the transaction.
   },
   &quot;referrerUri&quot;: &quot;A String&quot;, # The referrer URL of the current page. When using the client side event reporting with JavaScript pixel and Google Tag Manager, this value is filled in automatically.
-  &quot;searchQuery&quot;: &quot;A String&quot;, # The user&#x27;s search query. The value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;searchQuery&quot;: &quot;A String&quot;, # The user&#x27;s search query. See SearchRequest.query for definition. The value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;sessionId&quot;: &quot;A String&quot;, # A unique identifier for tracking a visitor session with a length limit of 128 bytes. A session is an aggregation of an end user behavior in a time span. A general guideline to populate the sesion_id: 1. If user has no activity for 30 min, a new session_id should be assigned. 2. The session_id should be unique across users, suggest use uuid or add visitor_id as prefix.
   &quot;uri&quot;: &quot;A String&quot;, # Complete URL (window.location.href) of the user&#x27;s current page. When using the client side event reporting with JavaScript pixel and Google Tag Manager, this value is filled in automatically. Maximum length 5,000 characters.
   &quot;userInfo&quot;: { # Information of an end user. # User information.
     &quot;directUserRequest&quot;: True or False, # True if the request is made directly from the end user, in which case the ip_address and user_agent can be populated from the HTTP request. This flag should be set only if the API request is made directly from the end user such as a mobile app (and not if a gateway or a server is processing and pushing the user events). This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent.
-    &quot;ipAddress&quot;: &quot;A String&quot;, # The end user&#x27;s IP address. Required for getting SearchRespons.sponsored_results. This field is used to extract location information for personalization. This field must be either an IPv4 address (e.g. &quot;104.133.9.80&quot;) or an IPv6 address (e.g. &quot;2001:0db8:85a3:0000:0000:8a2e:0370:7334&quot;). Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
-    &quot;userAgent&quot;: &quot;A String&quot;, # User agent as included in the HTTP header. Required for getting SearchRespons.sponsored_results. The field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the client side event reporting with GTM or JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
+    &quot;ipAddress&quot;: &quot;A String&quot;, # The end user&#x27;s IP address. Required for getting SearchResponse.sponsored_results. This field is used to extract location information for personalization. This field must be either an IPv4 address (e.g. &quot;104.133.9.80&quot;) or an IPv6 address (e.g. &quot;2001:0db8:85a3:0000:0000:8a2e:0370:7334&quot;). Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
+    &quot;userAgent&quot;: &quot;A String&quot;, # User agent as included in the HTTP header. Required for getting SearchResponse.sponsored_results. The field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the client side event reporting with GTM or JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
     &quot;userId&quot;: &quot;A String&quot;, # Highly recommended for logged-in users. Unique identifier for logged-in user, such as a user name. The field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.
   },
   &quot;visitorId&quot;: &quot;A String&quot;, # Required. A unique identifier for tracking visitors. For example, this could be implemented with an HTTP cookie, which should be able to uniquely identify a visitor on a single device. This unique identifier should not change if the visitor log in/out of the website. The field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. The field should not contain PII or user-data. We recommend to use Google Analystics [Client ID](https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#clientId) for this field.
diff --git a/docs/dyn/retail_v2beta.projects.locations.catalogs.branches.products.html b/docs/dyn/retail_v2beta.projects.locations.catalogs.branches.products.html
index 08d8f5c..07554c5 100644
--- a/docs/dyn/retail_v2beta.projects.locations.catalogs.branches.products.html
+++ b/docs/dyn/retail_v2beta.projects.locations.catalogs.branches.products.html
@@ -75,6 +75,9 @@
 <h1><a href="retail_v2beta.html">Retail API</a> . <a href="retail_v2beta.projects.html">projects</a> . <a href="retail_v2beta.projects.locations.html">locations</a> . <a href="retail_v2beta.projects.locations.catalogs.html">catalogs</a> . <a href="retail_v2beta.projects.locations.catalogs.branches.html">branches</a> . <a href="retail_v2beta.projects.locations.catalogs.branches.products.html">products</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
+  <code><a href="#addFulfillmentPlaces">addFulfillmentPlaces(product, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Incrementally adds place IDs to Product.fulfillment_info.place_ids. This process is asynchronous and does not require the Product to exist before updating fulfillment information. If the request is valid, the update will be enqueued and processed downstream. As a consequence, when a response is returned, the added place IDs are not immediately manifested in the Product queried by GetProduct or ListProducts. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.</p>
+<p class="toc_element">
   <code><a href="#close">close()</a></code></p>
 <p class="firstline">Close httplib2 connections.</p>
 <p class="toc_element">
@@ -90,10 +93,69 @@
   <code><a href="#import_">import_(parent, body=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Bulk import of multiple Products. Request processing may be synchronous. No partial updating is supported. Non-existing items are created. Note that it is possible for a subset of the Products to be successfully updated.</p>
 <p class="toc_element">
+  <code><a href="#list">list(parent, filter=None, pageSize=None, pageToken=None, readMask=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Gets a list of Products.</p>
+<p class="toc_element">
+  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
+<p class="firstline">Retrieves the next page of results.</p>
+<p class="toc_element">
   <code><a href="#patch">patch(name, allowMissing=None, body=None, updateMask=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Updates a Product.</p>
+<p class="toc_element">
+  <code><a href="#removeFulfillmentPlaces">removeFulfillmentPlaces(product, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Incrementally removes place IDs from a Product.fulfillment_info.place_ids. This process is asynchronous and does not require the Product to exist before updating fulfillment information. If the request is valid, the update will be enqueued and processed downstream. As a consequence, when a response is returned, the removed place IDs are not immediately manifested in the Product queried by GetProduct or ListProducts. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.</p>
+<p class="toc_element">
+  <code><a href="#setInventory">setInventory(name, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Updates inventory information for a Product while respecting the last update timestamps of each inventory field. This process is asynchronous and does not require the Product to exist before updating fulfillment information. If the request is valid, the update will be enqueued and processed downstream. As a consequence, when a response is returned, updates are not immediately manifested in the Product queried by GetProduct or ListProducts. When inventory is updated with CreateProduct and UpdateProduct, the specified inventory field value(s) will overwrite any existing value(s) while ignoring the last update time for this field. Furthermore, the last update time for the specified inventory fields will be overwritten to the time of the CreateProduct or UpdateProduct request. If no inventory fields are set in CreateProductRequest.product, then any pre-existing inventory information for this product will be used. If no inventory fields are set in UpdateProductRequest.set_mask, then any existing inventory information will be preserved. Pre-existing inventory information can only be updated with SetInventory, AddFulfillmentPlaces, and RemoveFulfillmentPlaces. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.</p>
 <h3>Method Details</h3>
 <div class="method">
+    <code class="details" id="addFulfillmentPlaces">addFulfillmentPlaces(product, body=None, x__xgafv=None)</code>
+  <pre>Incrementally adds place IDs to Product.fulfillment_info.place_ids. This process is asynchronous and does not require the Product to exist before updating fulfillment information. If the request is valid, the update will be enqueued and processed downstream. As a consequence, when a response is returned, the added place IDs are not immediately manifested in the Product queried by GetProduct or ListProducts. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.
+
+Args:
+  product: string, Required. Full resource name of Product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/some_product_id`. If the caller does not have permission to access the Product, regardless of whether or not it exists, a PERMISSION_DENIED error is returned. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Request message for AddFulfillmentPlaces method.
+  &quot;addTime&quot;: &quot;A String&quot;, # The time when the fulfillment updates are issued, used to prevent out-of-order updates on fulfillment information. If not provided, the internal system time will be used.
+  &quot;allowMissing&quot;: True or False, # If set to true, and the Product is not found, the fulfillment information will still be processed and retained for at most 1 day and processed once the Product is created. If set to false, an INVALID_ARGUMENT error is returned if the Product is not found.
+  &quot;placeIds&quot;: [ # Required. The IDs for this type, such as the store IDs for &quot;pickup-in-store&quot; or the region IDs for &quot;same-day-delivery&quot; to be added for this type. Duplicate IDs will be automatically ignored. At least 1 value is required, and a maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned. If the total number of place IDs exceeds 2000 for this type after adding, then the update will be rejected.
+    &quot;A String&quot;,
+  ],
+  &quot;type&quot;: &quot;A String&quot;, # Required. The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned. This field directly corresponds to Product.fulfillment_info.type.
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # This resource represents a long-running operation that is the result of a network API call.
+  &quot;done&quot;: True or False, # 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.
+  &quot;error&quot;: { # 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). # The error result of the operation in case of failure or cancellation.
+    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
+    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
+      {
+        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+      },
+    ],
+    &quot;message&quot;: &quot;A String&quot;, # 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.
+  },
+  &quot;metadata&quot;: { # 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.
+    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+  },
+  &quot;name&quot;: &quot;A String&quot;, # 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}`.
+  &quot;response&quot;: { # 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`.
+    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+  },
+}</pre>
+</div>
+
+<div class="method">
     <code class="details" id="close">close()</code>
   <pre>Close httplib2 connections.</pre>
 </div>
@@ -108,23 +170,60 @@
     The object takes the form of:
 
 { # Product captures all metadata information of items to be recommended or searched.
-  &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters.
+  &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
     &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+      &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
       &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         3.14,
       ],
+      &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
       &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         &quot;A String&quot;,
       ],
     },
   },
+  &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+    &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+      &quot;A String&quot;,
+    ],
+    &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+      &quot;A String&quot;,
+    ],
+  },
   &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
   &quot;availableQuantity&quot;: 42, # The available quantity of the item.
-  &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for recommendation.
+  &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+  &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+    &quot;A String&quot;,
+  ],
   &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
     &quot;A String&quot;,
   ],
+  &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+    &quot;A String&quot;,
+  ],
+  &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+    &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+      &quot;A String&quot;,
+    ],
+    &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+      &quot;A String&quot;,
+    ],
+  },
+  &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+    &quot;A String&quot;,
+  ],
   &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+  &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+  &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+    { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+      &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;A String&quot;,
+      ],
+      &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+    },
+  ],
+  &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
   &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
   &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
     { # Product thumbnail/detail image.
@@ -133,20 +232,64 @@
       &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
     },
   ],
+  &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+  &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+    &quot;A String&quot;,
+  ],
   &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+  &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+    &quot;A String&quot;,
+  ],
   &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
     &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
-    &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned.
+    &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
     &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
     &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+    &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+    &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+    &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+      &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+        &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+        &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+        &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+        &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+      },
+      &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+        &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+        &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+        &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+        &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+      },
+    },
   },
   &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+  &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+    { # Promotion information.
+      &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+    },
+  ],
+  &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+  &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+    &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+      42,
+    ],
+  },
+  &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+    &quot;A String&quot;,
+  ],
   &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
     &quot;A String&quot;,
   ],
   &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+  &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
   &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
   &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+  &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+    # Object with schema name: GoogleCloudRetailV2betaProduct
+  ],
 }
 
   productId: string, Required. The ID to use for the Product, which will become the final component of the Product.name. If the caller does not have permission to create the Product, regardless of whether or not it exists, a PERMISSION_DENIED error is returned. This field must be unique among all Products with the same parent. Otherwise, an ALREADY_EXISTS error is returned. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.
@@ -159,23 +302,60 @@
   An object of the form:
 
     { # Product captures all metadata information of items to be recommended or searched.
-  &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters.
+  &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
     &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+      &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
       &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         3.14,
       ],
+      &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
       &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         &quot;A String&quot;,
       ],
     },
   },
+  &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+    &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+      &quot;A String&quot;,
+    ],
+    &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+      &quot;A String&quot;,
+    ],
+  },
   &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
   &quot;availableQuantity&quot;: 42, # The available quantity of the item.
-  &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for recommendation.
+  &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+  &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+    &quot;A String&quot;,
+  ],
   &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
     &quot;A String&quot;,
   ],
+  &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+    &quot;A String&quot;,
+  ],
+  &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+    &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+      &quot;A String&quot;,
+    ],
+    &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+      &quot;A String&quot;,
+    ],
+  },
+  &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+    &quot;A String&quot;,
+  ],
   &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+  &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+  &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+    { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+      &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;A String&quot;,
+      ],
+      &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+    },
+  ],
+  &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
   &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
   &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
     { # Product thumbnail/detail image.
@@ -184,20 +364,64 @@
       &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
     },
   ],
+  &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+  &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+    &quot;A String&quot;,
+  ],
   &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+  &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+    &quot;A String&quot;,
+  ],
   &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
     &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
-    &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned.
+    &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
     &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
     &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+    &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+    &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+    &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+      &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+        &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+        &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+        &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+        &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+      },
+      &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+        &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+        &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+        &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+        &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+      },
+    },
   },
   &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+  &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+    { # Promotion information.
+      &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+    },
+  ],
+  &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+  &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+    &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+      42,
+    ],
+  },
+  &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+    &quot;A String&quot;,
+  ],
   &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
     &quot;A String&quot;,
   ],
   &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+  &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
   &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
   &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+  &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+    # Object with schema name: GoogleCloudRetailV2betaProduct
+  ],
 }</pre>
 </div>
 
@@ -234,23 +458,60 @@
   An object of the form:
 
     { # Product captures all metadata information of items to be recommended or searched.
-  &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters.
+  &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
     &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+      &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
       &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         3.14,
       ],
+      &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
       &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         &quot;A String&quot;,
       ],
     },
   },
+  &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+    &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+      &quot;A String&quot;,
+    ],
+    &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+      &quot;A String&quot;,
+    ],
+  },
   &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
   &quot;availableQuantity&quot;: 42, # The available quantity of the item.
-  &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for recommendation.
+  &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+  &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+    &quot;A String&quot;,
+  ],
   &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
     &quot;A String&quot;,
   ],
+  &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+    &quot;A String&quot;,
+  ],
+  &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+    &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+      &quot;A String&quot;,
+    ],
+    &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+      &quot;A String&quot;,
+    ],
+  },
+  &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+    &quot;A String&quot;,
+  ],
   &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+  &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+  &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+    { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+      &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;A String&quot;,
+      ],
+      &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+    },
+  ],
+  &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
   &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
   &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
     { # Product thumbnail/detail image.
@@ -259,20 +520,64 @@
       &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
     },
   ],
+  &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+  &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+    &quot;A String&quot;,
+  ],
   &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+  &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+    &quot;A String&quot;,
+  ],
   &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
     &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
-    &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned.
+    &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
     &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
     &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+    &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+    &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+    &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+      &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+        &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+        &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+        &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+        &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+      },
+      &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+        &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+        &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+        &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+        &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+      },
+    },
   },
   &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+  &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+    { # Promotion information.
+      &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+    },
+  ],
+  &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+  &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+    &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+      42,
+    ],
+  },
+  &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+    &quot;A String&quot;,
+  ],
   &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
     &quot;A String&quot;,
   ],
   &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+  &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
   &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
   &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+  &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+    # Object with schema name: GoogleCloudRetailV2betaProduct
+  ],
 }</pre>
 </div>
 
@@ -291,14 +596,19 @@
   },
   &quot;inputConfig&quot;: { # The input config source for products. # Required. The desired input location of the data.
     &quot;bigQuerySource&quot;: { # BigQuery source import data from. # BigQuery input source.
-      &quot;dataSchema&quot;: &quot;A String&quot;, # The schema to use when parsing the data from the source. Supported values for product imports: * `product` (default): One JSON Product per line. Each product must have a valid Product.id. * `product_merchant_center`: See [Importing catalog data from Merchant Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc). Supported values for user events imports: * `user_event` (default): One JSON UserEvent per line. * `user_event_ga360`: Using https://support.google.com/analytics/answer/3437719?hl=en.
+      &quot;dataSchema&quot;: &quot;A String&quot;, # The schema to use when parsing the data from the source. Supported values for product imports: * `product` (default): One JSON Product per line. Each product must have a valid Product.id. * `product_merchant_center`: See [Importing catalog data from Merchant Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc). Supported values for user events imports: * `user_event` (default): One JSON UserEvent per line. * `user_event_ga360`: Using https://support.google.com/analytics/answer/3437719.
       &quot;datasetId&quot;: &quot;A String&quot;, # Required. The BigQuery data set to copy the data from with a length limit of 1,024 characters.
       &quot;gcsStagingDir&quot;: &quot;A String&quot;, # Intermediate Cloud Storage directory used for the import with a length limit of 2,000 characters. Can be specified if one wants to have the BigQuery export to a specific Cloud Storage directory.
+      &quot;partitionDate&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # BigQuery time partitioned table&#x27;s _PARTITIONDATE in YYYY-MM-DD format. Only supported when ImportProductsRequest.reconciliation_mode is set to `FULL`.
+        &quot;day&quot;: 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn&#x27;t significant.
+        &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
+        &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
+      },
       &quot;projectId&quot;: &quot;A String&quot;, # The project ID (can be project # or ID) that the BigQuery source is in with a length limit of 128 characters. If not specified, inherits the project ID from the parent request.
       &quot;tableId&quot;: &quot;A String&quot;, # Required. The BigQuery table to copy the data from with a length limit of 1,024 characters.
     },
     &quot;gcsSource&quot;: { # Google Cloud Storage location for input content. format. # Google Cloud Storage location for the input content.
-      &quot;dataSchema&quot;: &quot;A String&quot;, # The schema to use when parsing the data from the source. Supported values for product imports: * `product` (default): One JSON Product per line. Each product must have a valid Product.id. * `product_merchant_center`: See [Importing catalog data from Merchant Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc). Supported values for user events imports: * `user_event` (default): One JSON UserEvent per line. * `user_event_ga360`: Using https://support.google.com/analytics/answer/3437719?hl=en.
+      &quot;dataSchema&quot;: &quot;A String&quot;, # The schema to use when parsing the data from the source. Supported values for product imports: * `product` (default): One JSON Product per line. Each product must have a valid Product.id. * `product_merchant_center`: See [Importing catalog data from Merchant Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc). Supported values for user events imports: * `user_event` (default): One JSON UserEvent per line. * `user_event_ga360`: Using https://support.google.com/analytics/answer/3437719.
       &quot;inputUris&quot;: [ # Required. Google Cloud Storage URIs to input files. URI can be up to 2000 characters long. URIs can match the full object path (for example, `gs://bucket/directory/object.json`) or a pattern matching one or more files, such as `gs://bucket/directory/*.json`. A request can contain at most 100 files, and each file can be up to 2 GB. See [Importing product information](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog) for the expected file format and setup instructions.
         &quot;A String&quot;,
       ],
@@ -306,23 +616,60 @@
     &quot;productInlineSource&quot;: { # The inline source for the input config for ImportProducts method. # The Inline source for the input content for products.
       &quot;products&quot;: [ # Required. A list of products to update/create. Each product must have a valid Product.id. Recommended max of 100 items.
         { # Product captures all metadata information of items to be recommended or searched.
-          &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters.
+          &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
             &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+              &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
               &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
                 3.14,
               ],
+              &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
               &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
                 &quot;A String&quot;,
               ],
             },
           },
+          &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+            &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+              &quot;A String&quot;,
+            ],
+            &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+              &quot;A String&quot;,
+            ],
+          },
           &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
           &quot;availableQuantity&quot;: 42, # The available quantity of the item.
-          &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for recommendation.
+          &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+          &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+            &quot;A String&quot;,
+          ],
           &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
             &quot;A String&quot;,
           ],
+          &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+            &quot;A String&quot;,
+          ],
+          &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+            &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+              &quot;A String&quot;,
+            ],
+            &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+              &quot;A String&quot;,
+            ],
+          },
+          &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+            &quot;A String&quot;,
+          ],
           &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+          &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+          &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+            { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+              &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+                &quot;A String&quot;,
+              ],
+              &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+            },
+          ],
+          &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
           &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
           &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
             { # Product thumbnail/detail image.
@@ -331,24 +678,71 @@
               &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
             },
           ],
+          &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+          &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+            &quot;A String&quot;,
+          ],
           &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+          &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+            &quot;A String&quot;,
+          ],
           &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
             &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
-            &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned.
+            &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
             &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
             &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+            &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+            &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+            &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+              &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+                &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+                &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+                &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+                &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+              },
+              &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+                &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+                &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+                &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+                &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+              },
+            },
           },
           &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+          &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+            { # Promotion information.
+              &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+            },
+          ],
+          &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+          &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+            &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+            &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+            &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+              42,
+            ],
+          },
+          &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+            &quot;A String&quot;,
+          ],
           &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
             &quot;A String&quot;,
           ],
           &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+          &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
           &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
           &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+          &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+            # Object with schema name: GoogleCloudRetailV2betaProduct
+          ],
         },
       ],
     },
   },
+  &quot;notificationPubsubTopic&quot;: &quot;A String&quot;, # Pub/Sub topic for receiving notification. If this field is set, when the import is finished, a notification will be sent to specified Pub/Sub topic. The message data will be JSON string of a Operation. Format of the Pub/Sub topic is `projects/{project}/topics/{topic}`. Only supported when ImportProductsRequest.reconciliation_mode is set to `FULL`.
+  &quot;reconciliationMode&quot;: &quot;A String&quot;, # The mode of reconciliation between existing products and the products to be imported. Defaults to ReconciliationMode.INCREMENTAL.
+  &quot;requestId&quot;: &quot;A String&quot;, # Unique identifier provided by client, within the ancestor dataset scope. Ensures idempotency and used for request deduplication. Server-generated if unspecified. Up to 128 characters long and must match the pattern: &quot;[a-zA-Z0-9_]+&quot;. This is returned as Operation.name in ImportMetadata. Only supported when ImportProductsRequest.reconciliation_mode is set to `FULL`.
   &quot;updateMask&quot;: &quot;A String&quot;, # Indicates which fields in the provided imported &#x27;products&#x27; to update. If not set, will by default update all fields.
 }
 
@@ -382,6 +776,167 @@
 </div>
 
 <div class="method">
+    <code class="details" id="list">list(parent, filter=None, pageSize=None, pageToken=None, readMask=None, x__xgafv=None)</code>
+  <pre>Gets a list of Products.
+
+Args:
+  parent: string, Required. The parent branch resource name, such as `projects/*/locations/global/catalogs/default_catalog/branches/0`. Use `default_branch` as the branch ID, to list products under the default branch. If the caller does not have permission to list Products under this branch, regardless of whether or not this branch exists, a PERMISSION_DENIED error is returned. (required)
+  filter: string, A filter to apply on the list results. Supported features: * List all the products under the parent branch if filter is unset. * List Product.Type.VARIANT Products sharing the same Product.Type.PRIMARY Product. For example: `primary_product_id = &quot;some_product_id&quot;` * List Products bundled in a Product.Type.COLLECTION Product. For example: `collection_product_id = &quot;some_product_id&quot;` * List Products with a partibular type. For example: `type = &quot;PRIMARY&quot;` `type = &quot;VARIANT&quot;` `type = &quot;COLLECTION&quot;` If the field is unrecognizable, an INVALID_ARGUMENT error is returned. If the specified Product.Type.PRIMARY Product or Product.Type.COLLECTION Product does not exist, a NOT_FOUND error is returned.
+  pageSize: integer, Maximum number of Products to return. If unspecified, defaults to 100. The maximum allowed value is 1000. Values above 1000 will be coerced to 1000. If this field is negative, an INVALID_ARGUMENT error is returned.
+  pageToken: string, A page token ListProductsResponse.next_page_token, received from a previous ProductService.ListProducts call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to ProductService.ListProducts must match the call that provided the page token. Otherwise, an INVALID_ARGUMENT error is returned.
+  readMask: string, The fields of Product to return in the responses. If not set or empty, the following fields are returned: * Product.name * Product.id * Product.title * Product.uri * Product.images * Product.price_info * Product.brands If &quot;*&quot; is provided, all fields are returned. Product.name is always returned no matter what mask is set. If an unsupported or unknown field is provided, an INVALID_ARGUMENT error is returned.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Response message for ProductService.ListProducts method.
+  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token that can be sent as ListProductsRequest.page_token to retrieve the next page. If this field is omitted, there are no subsequent pages.
+  &quot;products&quot;: [ # The Products.
+    { # Product captures all metadata information of items to be recommended or searched.
+      &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
+        &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+          &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
+          &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
+            3.14,
+          ],
+          &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
+          &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
+            &quot;A String&quot;,
+          ],
+        },
+      },
+      &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+        &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+          &quot;A String&quot;,
+        ],
+        &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+          &quot;A String&quot;,
+        ],
+      },
+      &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
+      &quot;availableQuantity&quot;: 42, # The available quantity of the item.
+      &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+      &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+        &quot;A String&quot;,
+      ],
+      &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
+        &quot;A String&quot;,
+      ],
+      &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+        &quot;A String&quot;,
+      ],
+      &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+        &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+          &quot;A String&quot;,
+        ],
+        &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+          &quot;A String&quot;,
+        ],
+      },
+      &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+        &quot;A String&quot;,
+      ],
+      &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+      &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+      &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+        { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+          &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+            &quot;A String&quot;,
+          ],
+          &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+        },
+      ],
+      &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
+      &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
+      &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
+        { # Product thumbnail/detail image.
+          &quot;height&quot;: 42, # Height of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;uri&quot;: &quot;A String&quot;, # Required. URI of the image. This field must be a valid UTF-8 encoded URI with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
+          &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+        },
+      ],
+      &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+      &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+        &quot;A String&quot;,
+      ],
+      &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+      &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+        &quot;A String&quot;,
+      ],
+      &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
+        &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
+        &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
+        &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
+        &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+        &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+        &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+        &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+          &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+            &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+            &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+            &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+            &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+          },
+          &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+            &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+            &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+            &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+            &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+          },
+        },
+      },
+      &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+      &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+        { # Promotion information.
+          &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+        },
+      ],
+      &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+      &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+        &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+          42,
+        ],
+      },
+      &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+      &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+        &quot;A String&quot;,
+      ],
+      &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
+        &quot;A String&quot;,
+      ],
+      &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+      &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
+      &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
+      &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+      &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+        # Object with schema name: GoogleCloudRetailV2betaProduct
+      ],
+    },
+  ],
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
+  <pre>Retrieves the next page of results.
+
+Args:
+  previous_request: The request for the previous page. (required)
+  previous_response: The response from the request for the previous page. (required)
+
+Returns:
+  A request object that you can call &#x27;execute()&#x27; on to request the next
+  page. Returns None if there are no more items in the collection.
+    </pre>
+</div>
+
+<div class="method">
     <code class="details" id="patch">patch(name, allowMissing=None, body=None, updateMask=None, x__xgafv=None)</code>
   <pre>Updates a Product.
 
@@ -391,23 +946,60 @@
     The object takes the form of:
 
 { # Product captures all metadata information of items to be recommended or searched.
-  &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters.
+  &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
     &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+      &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
       &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         3.14,
       ],
+      &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
       &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         &quot;A String&quot;,
       ],
     },
   },
+  &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+    &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+      &quot;A String&quot;,
+    ],
+    &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+      &quot;A String&quot;,
+    ],
+  },
   &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
   &quot;availableQuantity&quot;: 42, # The available quantity of the item.
-  &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for recommendation.
+  &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+  &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+    &quot;A String&quot;,
+  ],
   &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
     &quot;A String&quot;,
   ],
+  &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+    &quot;A String&quot;,
+  ],
+  &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+    &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+      &quot;A String&quot;,
+    ],
+    &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+      &quot;A String&quot;,
+    ],
+  },
+  &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+    &quot;A String&quot;,
+  ],
   &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+  &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+  &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+    { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+      &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;A String&quot;,
+      ],
+      &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+    },
+  ],
+  &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
   &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
   &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
     { # Product thumbnail/detail image.
@@ -416,20 +1008,64 @@
       &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
     },
   ],
+  &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+  &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+    &quot;A String&quot;,
+  ],
   &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+  &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+    &quot;A String&quot;,
+  ],
   &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
     &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
-    &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned.
+    &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
     &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
     &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+    &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+    &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+    &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+      &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+        &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+        &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+        &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+        &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+      },
+      &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+        &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+        &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+        &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+        &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+      },
+    },
   },
   &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+  &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+    { # Promotion information.
+      &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+    },
+  ],
+  &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+  &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+    &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+      42,
+    ],
+  },
+  &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+    &quot;A String&quot;,
+  ],
   &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
     &quot;A String&quot;,
   ],
   &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+  &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
   &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
   &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+  &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+    # Object with schema name: GoogleCloudRetailV2betaProduct
+  ],
 }
 
   allowMissing: boolean, If set to true, and the Product is not found, a new Product will be created. In this situation, `update_mask` is ignored.
@@ -443,23 +1079,60 @@
   An object of the form:
 
     { # Product captures all metadata information of items to be recommended or searched.
-  &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters.
+  &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
     &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+      &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
       &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         3.14,
       ],
+      &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
       &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         &quot;A String&quot;,
       ],
     },
   },
+  &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+    &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+      &quot;A String&quot;,
+    ],
+    &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+      &quot;A String&quot;,
+    ],
+  },
   &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
   &quot;availableQuantity&quot;: 42, # The available quantity of the item.
-  &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for recommendation.
+  &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+  &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+    &quot;A String&quot;,
+  ],
   &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
     &quot;A String&quot;,
   ],
+  &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+    &quot;A String&quot;,
+  ],
+  &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+    &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+      &quot;A String&quot;,
+    ],
+    &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+      &quot;A String&quot;,
+    ],
+  },
+  &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+    &quot;A String&quot;,
+  ],
   &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+  &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+  &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+    { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+      &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;A String&quot;,
+      ],
+      &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+    },
+  ],
+  &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
   &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
   &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
     { # Product thumbnail/detail image.
@@ -468,20 +1141,277 @@
       &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
     },
   ],
+  &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+  &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+    &quot;A String&quot;,
+  ],
   &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+  &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+    &quot;A String&quot;,
+  ],
   &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
     &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
-    &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned.
+    &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
     &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
     &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+    &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+    &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+    &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+      &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+        &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+        &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+        &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+        &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+      },
+      &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+        &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+        &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+        &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+        &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+      },
+    },
   },
   &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+  &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+    { # Promotion information.
+      &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+    },
+  ],
+  &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+  &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+    &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+      42,
+    ],
+  },
+  &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+    &quot;A String&quot;,
+  ],
   &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
     &quot;A String&quot;,
   ],
   &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+  &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
   &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
   &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+  &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+    # Object with schema name: GoogleCloudRetailV2betaProduct
+  ],
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="removeFulfillmentPlaces">removeFulfillmentPlaces(product, body=None, x__xgafv=None)</code>
+  <pre>Incrementally removes place IDs from a Product.fulfillment_info.place_ids. This process is asynchronous and does not require the Product to exist before updating fulfillment information. If the request is valid, the update will be enqueued and processed downstream. As a consequence, when a response is returned, the removed place IDs are not immediately manifested in the Product queried by GetProduct or ListProducts. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.
+
+Args:
+  product: string, Required. Full resource name of Product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/some_product_id`. If the caller does not have permission to access the Product, regardless of whether or not it exists, a PERMISSION_DENIED error is returned. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Request message for RemoveFulfillmentPlaces method.
+  &quot;allowMissing&quot;: True or False, # If set to true, and the Product is not found, the fulfillment information will still be processed and retained for at most 1 day and processed once the Product is created. If set to false, an INVALID_ARGUMENT error is returned if the Product is not found.
+  &quot;placeIds&quot;: [ # Required. The IDs for this type, such as the store IDs for &quot;pickup-in-store&quot; or the region IDs for &quot;same-day-delivery&quot;, to be removed for this type. At least 1 value is required, and a maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;A String&quot;,
+  ],
+  &quot;removeTime&quot;: &quot;A String&quot;, # The time when the fulfillment updates are issued, used to prevent out-of-order updates on fulfillment information. If not provided, the internal system time will be used.
+  &quot;type&quot;: &quot;A String&quot;, # Required. The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned. This field directly corresponds to Product.fulfillment_info.type.
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # This resource represents a long-running operation that is the result of a network API call.
+  &quot;done&quot;: True or False, # 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.
+  &quot;error&quot;: { # 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). # The error result of the operation in case of failure or cancellation.
+    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
+    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
+      {
+        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+      },
+    ],
+    &quot;message&quot;: &quot;A String&quot;, # 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.
+  },
+  &quot;metadata&quot;: { # 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.
+    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+  },
+  &quot;name&quot;: &quot;A String&quot;, # 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}`.
+  &quot;response&quot;: { # 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`.
+    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+  },
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="setInventory">setInventory(name, body=None, x__xgafv=None)</code>
+  <pre>Updates inventory information for a Product while respecting the last update timestamps of each inventory field. This process is asynchronous and does not require the Product to exist before updating fulfillment information. If the request is valid, the update will be enqueued and processed downstream. As a consequence, when a response is returned, updates are not immediately manifested in the Product queried by GetProduct or ListProducts. When inventory is updated with CreateProduct and UpdateProduct, the specified inventory field value(s) will overwrite any existing value(s) while ignoring the last update time for this field. Furthermore, the last update time for the specified inventory fields will be overwritten to the time of the CreateProduct or UpdateProduct request. If no inventory fields are set in CreateProductRequest.product, then any pre-existing inventory information for this product will be used. If no inventory fields are set in UpdateProductRequest.set_mask, then any existing inventory information will be preserved. Pre-existing inventory information can only be updated with SetInventory, AddFulfillmentPlaces, and RemoveFulfillmentPlaces. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.
+
+Args:
+  name: string, Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Request message for SetInventory method.
+  &quot;allowMissing&quot;: True or False, # If set to true, and the Product with name Product.name is not found, the inventory update will still be processed and retained for at most 1 day until the Product is created. If set to false, an INVALID_ARGUMENT error is returned if the Product is not found.
+  &quot;inventory&quot;: { # Product captures all metadata information of items to be recommended or searched. # Required. The inventory information to update. The allowable fields to update are: * Product.price_info * Product.availability * Product.available_quantity * Product.fulfillment_info The updated inventory fields must be specified in SetInventoryRequest.set_mask. If SetInventoryRequest.inventory.name is empty or invalid, an INVALID_ARGUMENT error is returned. If the caller does not have permission to update the Product named in Product.name, regardless of whether or not it exists, a PERMISSION_DENIED error is returned. If the Product to update does not have existing inventory information, the provided inventory information will be inserted. If the Product to update has existing inventory information, the provided inventory information will be merged while respecting the last update time for each inventory field, using the provided or default value for SetInventoryRequest.set_time. The last update time is recorded for the following inventory fields: * Product.price_info * Product.availability * Product.available_quantity * Product.fulfillment_info If a full overwrite of inventory information while ignoring timestamps is needed, UpdateProduct should be invoked instead.
+    &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
+      &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+        &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
+        &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
+          3.14,
+        ],
+        &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
+        &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;A String&quot;,
+        ],
+      },
+    },
+    &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+      &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+        &quot;A String&quot;,
+      ],
+      &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
+    &quot;availableQuantity&quot;: 42, # The available quantity of the item.
+    &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+    &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+      &quot;A String&quot;,
+    ],
+    &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
+      &quot;A String&quot;,
+    ],
+    &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+      &quot;A String&quot;,
+    ],
+    &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+      &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+        &quot;A String&quot;,
+      ],
+      &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+      &quot;A String&quot;,
+    ],
+    &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+    &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+    &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+      { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+        &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;A String&quot;,
+        ],
+        &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+      },
+    ],
+    &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
+    &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
+    &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
+      { # Product thumbnail/detail image.
+        &quot;height&quot;: 42, # Height of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;uri&quot;: &quot;A String&quot;, # Required. URI of the image. This field must be a valid UTF-8 encoded URI with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
+        &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+      },
+    ],
+    &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+    &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+      &quot;A String&quot;,
+    ],
+    &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+    &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+      &quot;A String&quot;,
+    ],
+    &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
+      &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
+      &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
+      &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
+      &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+      &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+      &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+      &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+        &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+          &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+          &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+          &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+          &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+        },
+        &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+          &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+          &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+          &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+          &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+        },
+      },
+    },
+    &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+    &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+      { # Promotion information.
+        &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+      },
+    ],
+    &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+    &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+      &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+      &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+      &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+        42,
+      ],
+    },
+    &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+      &quot;A String&quot;,
+    ],
+    &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
+      &quot;A String&quot;,
+    ],
+    &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+    &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
+    &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
+    &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+    &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+      # Object with schema name: GoogleCloudRetailV2betaProduct
+    ],
+  },
+  &quot;setMask&quot;: &quot;A String&quot;, # Indicates which inventory fields in the provided Product to update. If not set or set with empty paths, all inventory fields will be updated. If an unsupported or unknown field is provided, an INVALID_ARGUMENT error is returned and the entire update will be ignored.
+  &quot;setTime&quot;: &quot;A String&quot;, # The time when the request is issued, used to prevent out-of-order updates on inventory fields with the last update time recorded. If not provided, the internal system time will be used.
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # This resource represents a long-running operation that is the result of a network API call.
+  &quot;done&quot;: True or False, # 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.
+  &quot;error&quot;: { # 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). # The error result of the operation in case of failure or cancellation.
+    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
+    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
+      {
+        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+      },
+    ],
+    &quot;message&quot;: &quot;A String&quot;, # 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.
+  },
+  &quot;metadata&quot;: { # 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.
+    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+  },
+  &quot;name&quot;: &quot;A String&quot;, # 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}`.
+  &quot;response&quot;: { # 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`.
+    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+  },
 }</pre>
 </div>
 
diff --git a/docs/dyn/retail_v2beta.projects.locations.catalogs.completionData.html b/docs/dyn/retail_v2beta.projects.locations.catalogs.completionData.html
new file mode 100644
index 0000000..c1341ed
--- /dev/null
+++ b/docs/dyn/retail_v2beta.projects.locations.catalogs.completionData.html
@@ -0,0 +1,145 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="retail_v2beta.html">Retail API</a> . <a href="retail_v2beta.projects.html">projects</a> . <a href="retail_v2beta.projects.locations.html">locations</a> . <a href="retail_v2beta.projects.locations.catalogs.html">catalogs</a> . <a href="retail_v2beta.projects.locations.catalogs.completionData.html">completionData</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#close">close()</a></code></p>
+<p class="firstline">Close httplib2 connections.</p>
+<p class="toc_element">
+  <code><a href="#import_">import_(parent, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Bulk import of processed completion dataset. Request processing may be synchronous. Partial updating is not supported. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="close">close()</code>
+  <pre>Close httplib2 connections.</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="import_">import_(parent, body=None, x__xgafv=None)</code>
+  <pre>Bulk import of processed completion dataset. Request processing may be synchronous. Partial updating is not supported. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.
+
+Args:
+  parent: string, Required. The catalog which the suggestions dataset belongs to. Format: `projects/1234/locations/global/catalogs/default_catalog`. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Request message for ImportCompletionData methods.
+  &quot;inputConfig&quot;: { # The input config source for completion data. # Required. The desired input location of the data.
+    &quot;bigQuerySource&quot;: { # BigQuery source import data from. # Required. BigQuery input source. Add the IAM permission “BigQuery Data Viewer” for cloud-retail-customer-data-access@system.gserviceaccount.com before using this feature otherwise an error is thrown.
+      &quot;dataSchema&quot;: &quot;A String&quot;, # The schema to use when parsing the data from the source. Supported values for product imports: * `product` (default): One JSON Product per line. Each product must have a valid Product.id. * `product_merchant_center`: See [Importing catalog data from Merchant Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc). Supported values for user events imports: * `user_event` (default): One JSON UserEvent per line. * `user_event_ga360`: Using https://support.google.com/analytics/answer/3437719.
+      &quot;datasetId&quot;: &quot;A String&quot;, # Required. The BigQuery data set to copy the data from with a length limit of 1,024 characters.
+      &quot;gcsStagingDir&quot;: &quot;A String&quot;, # Intermediate Cloud Storage directory used for the import with a length limit of 2,000 characters. Can be specified if one wants to have the BigQuery export to a specific Cloud Storage directory.
+      &quot;partitionDate&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # BigQuery time partitioned table&#x27;s _PARTITIONDATE in YYYY-MM-DD format. Only supported when ImportProductsRequest.reconciliation_mode is set to `FULL`.
+        &quot;day&quot;: 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn&#x27;t significant.
+        &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
+        &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
+      },
+      &quot;projectId&quot;: &quot;A String&quot;, # The project ID (can be project # or ID) that the BigQuery source is in with a length limit of 128 characters. If not specified, inherits the project ID from the parent request.
+      &quot;tableId&quot;: &quot;A String&quot;, # Required. The BigQuery table to copy the data from with a length limit of 1,024 characters.
+    },
+  },
+  &quot;notificationPubsubTopic&quot;: &quot;A String&quot;, # Pub/Sub topic for receiving notification. If this field is set, when the import is finished, a notification will be sent to specified Pub/Sub topic. The message data will be JSON string of a Operation. Format of the Pub/Sub topic is `projects/{project}/topics/{topic}`.
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # This resource represents a long-running operation that is the result of a network API call.
+  &quot;done&quot;: True or False, # 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.
+  &quot;error&quot;: { # 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). # The error result of the operation in case of failure or cancellation.
+    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
+    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
+      {
+        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+      },
+    ],
+    &quot;message&quot;: &quot;A String&quot;, # 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.
+  },
+  &quot;metadata&quot;: { # 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.
+    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+  },
+  &quot;name&quot;: &quot;A String&quot;, # 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}`.
+  &quot;response&quot;: { # 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`.
+    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
+  },
+}</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/retail_v2beta.projects.locations.catalogs.html b/docs/dyn/retail_v2beta.projects.locations.catalogs.html
index ddf57c6..b060f4f 100644
--- a/docs/dyn/retail_v2beta.projects.locations.catalogs.html
+++ b/docs/dyn/retail_v2beta.projects.locations.catalogs.html
@@ -80,6 +80,11 @@
 <p class="firstline">Returns the branches Resource.</p>
 
 <p class="toc_element">
+  <code><a href="retail_v2beta.projects.locations.catalogs.completionData.html">completionData()</a></code>
+</p>
+<p class="firstline">Returns the completionData Resource.</p>
+
+<p class="toc_element">
   <code><a href="retail_v2beta.projects.locations.catalogs.operations.html">operations()</a></code>
 </p>
 <p class="firstline">Returns the operations Resource.</p>
@@ -98,6 +103,12 @@
   <code><a href="#close">close()</a></code></p>
 <p class="firstline">Close httplib2 connections.</p>
 <p class="toc_element">
+  <code><a href="#completeQuery">completeQuery(catalog, dataset=None, deviceType=None, languageCodes=None, maxSuggestions=None, query=None, visitorId=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Completes the specified prefix with keyword suggestions. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.</p>
+<p class="toc_element">
+  <code><a href="#getDefaultBranch">getDefaultBranch(catalog, x__xgafv=None)</a></code></p>
+<p class="firstline">Get which branch is currently default branch set by CatalogService.SetDefaultBranch method under a specified parent catalog. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.</p>
+<p class="toc_element">
   <code><a href="#list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Lists all the Catalogs associated with the project.</p>
 <p class="toc_element">
@@ -106,6 +117,9 @@
 <p class="toc_element">
   <code><a href="#patch">patch(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Updates the Catalogs.</p>
+<p class="toc_element">
+  <code><a href="#setDefaultBranch">setDefaultBranch(catalog, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Set a specified branch id as default branch. API methods such as SearchService.Search, ProductService.GetProduct, ProductService.ListProducts will treat requests using "default_branch" to the actual branch id set as default. For example, if `projects/*/locations/*/catalogs/*/branches/1` is set as default, setting SearchRequest.branch to `projects/*/locations/*/catalogs/*/branches/default_branch` is equivalent to setting SearchRequest.branch to `projects/*/locations/*/catalogs/*/branches/1`. Using multiple branches can be useful when developers would like to have a staging branch to test and verify for future usage. When it becomes ready, developers switch on the staging branch using this API while keeping using `projects/*/locations/*/catalogs/*/branches/default_branch` as SearchRequest.branch to route the traffic to this staging branch. CAUTION: If you have live predict/search traffic, switching the default branch could potentially cause outages if the ID space of the new branch is very different from the old one. More specifically: * PredictionService will only return product IDs from branch {newBranch}. * SearchService will only return product IDs from branch {newBranch} (if branch is not explicitly set). * UserEventService will only join events with products from branch {newBranch}. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="close">close()</code>
@@ -113,6 +127,74 @@
 </div>
 
 <div class="method">
+    <code class="details" id="completeQuery">completeQuery(catalog, dataset=None, deviceType=None, languageCodes=None, maxSuggestions=None, query=None, visitorId=None, x__xgafv=None)</code>
+  <pre>Completes the specified prefix with keyword suggestions. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.
+
+Args:
+  catalog: string, Required. Catalog for which the completion is performed. Full resource name of catalog, such as `projects/*/locations/global/catalogs/default_catalog`. (required)
+  dataset: string, Determines which dataset to use for fetching completion. &quot;user-data&quot; will use the imported dataset through ImportCompletionData. &quot;cloud-retail&quot; will use the dataset generated by cloud retail based on user events. If leave empty, it will use the &quot;user-data&quot;. Current supported values: * user-data * cloud-retail This option is not automatically enabled. Before using cloud-retail, contact retail-search-support@google.com first.
+  deviceType: string, The device type context for completion suggestions. It is useful to apply different suggestions on different device types, e.g. DESKTOP, MOBILE. If it is empty, the suggestions are across all device types. Supported formats: * UNKNOWN_DEVICE_TYPE * DESKTOP * MOBILE * A customized string starts with OTHER_, e.g. OTHER_IPHONE.
+  languageCodes: string, The list of languages of the query. This is the BCP-47 language code, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see [Tags for Identifying Languages](https://tools.ietf.org/html/bcp47). The maximum number of allowed characters is 255. Only &quot;en-US&quot; is currently supported. (repeated)
+  maxSuggestions: integer, Completion max suggestions. The maximum allowed max suggestions is 20. The default value is 20.
+  query: string, Required. The query used to generate suggestions. The maximum number of allowed characters is 255.
+  visitorId: string, A unique identifier for tracking visitors. For example, this could be implemented with an HTTP cookie, which should be able to uniquely identify a visitor on a single device. This unique identifier should not change if the visitor logs in or out of the website. The field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Response of the auto-complete query.
+  &quot;attributionToken&quot;: &quot;A String&quot;, # A unique complete token. This should be included in the SearchRequest resulting from this completion, which enables accurate attribution of complete model performance.
+  &quot;completionResults&quot;: [ # Results of the matching suggestions. The result list is ordered and the first result is top suggestion.
+    { # Resource that represents completion results.
+      &quot;attributes&quot;: { # Additional custom attributes ingested through BigQuery.
+        &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+          &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
+          &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
+            3.14,
+          ],
+          &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
+          &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
+            &quot;A String&quot;,
+          ],
+        },
+      },
+      &quot;suggestion&quot;: &quot;A String&quot;, # The suggestion for the query.
+    },
+  ],
+  &quot;recentSearchResults&quot;: [ # Matched recent searches of this user. This field is a restricted feature. Contact Retail Support (retail-search-support@google.com) if you are interested in enabling it. This feature is only available when CompleteQueryRequest.visitor_id field is set and UserEvent is imported. The recent searches satisfy the follow rules: * They are ordered from latest to oldest. * They are matched with CompleteQueryRequest.query case insensitively. * They are transformed to lower cases. * They are UTF-8 safe. Recent searches are deduplicated. More recent searches will be reserved when duplication happens.
+    { # Recent search of this user.
+      &quot;recentSearch&quot;: &quot;A String&quot;, # The recent search query.
+    },
+  ],
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="getDefaultBranch">getDefaultBranch(catalog, x__xgafv=None)</code>
+  <pre>Get which branch is currently default branch set by CatalogService.SetDefaultBranch method under a specified parent catalog. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.
+
+Args:
+  catalog: string, The parent catalog resource name, such as `projects/*/locations/global/catalogs/default_catalog`. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Response message of CatalogService.GetDefaultBranch.
+  &quot;branch&quot;: &quot;A String&quot;, # Full resource name of the branch id currently set as default branch.
+  &quot;note&quot;: &quot;A String&quot;, # This corresponds to SetDefaultBranchRequest.note field, when this branch was set as default.
+  &quot;setTime&quot;: &quot;A String&quot;, # The time when this branch is set to default.
+}</pre>
+</div>
+
+<div class="method">
     <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
   <pre>Lists all the Catalogs associated with the project.
 
@@ -194,4 +276,30 @@
 }</pre>
 </div>
 
+<div class="method">
+    <code class="details" id="setDefaultBranch">setDefaultBranch(catalog, body=None, x__xgafv=None)</code>
+  <pre>Set a specified branch id as default branch. API methods such as SearchService.Search, ProductService.GetProduct, ProductService.ListProducts will treat requests using &quot;default_branch&quot; to the actual branch id set as default. For example, if `projects/*/locations/*/catalogs/*/branches/1` is set as default, setting SearchRequest.branch to `projects/*/locations/*/catalogs/*/branches/default_branch` is equivalent to setting SearchRequest.branch to `projects/*/locations/*/catalogs/*/branches/1`. Using multiple branches can be useful when developers would like to have a staging branch to test and verify for future usage. When it becomes ready, developers switch on the staging branch using this API while keeping using `projects/*/locations/*/catalogs/*/branches/default_branch` as SearchRequest.branch to route the traffic to this staging branch. CAUTION: If you have live predict/search traffic, switching the default branch could potentially cause outages if the ID space of the new branch is very different from the old one. More specifically: * PredictionService will only return product IDs from branch {newBranch}. * SearchService will only return product IDs from branch {newBranch} (if branch is not explicitly set). * UserEventService will only join events with products from branch {newBranch}. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.
+
+Args:
+  catalog: string, Full resource name of the catalog, such as `projects/*/locations/global/catalogs/default_catalog`. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Request message to set a specified branch as new default_branch.
+  &quot;branchId&quot;: &quot;A String&quot;, # The final component of the resource name of a branch. This field must be one of &quot;0&quot;, &quot;1&quot; or &quot;2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;note&quot;: &quot;A String&quot;, # Some note on this request, this can be retrieved by CatalogService.GetDefaultBranch before next valid default branch set occurs. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned.
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for `Empty` is empty JSON object `{}`.
+}</pre>
+</div>
+
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/retail_v2beta.projects.locations.catalogs.placements.html b/docs/dyn/retail_v2beta.projects.locations.catalogs.placements.html
index 446f9c1..af31af4 100644
--- a/docs/dyn/retail_v2beta.projects.locations.catalogs.placements.html
+++ b/docs/dyn/retail_v2beta.projects.locations.catalogs.placements.html
@@ -80,6 +80,12 @@
 <p class="toc_element">
   <code><a href="#predict">predict(placement, body=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Makes a recommendation prediction.</p>
+<p class="toc_element">
+  <code><a href="#search">search(placement, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Performs a search. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.</p>
+<p class="toc_element">
+  <code><a href="#search_next">search_next(previous_request, previous_response)</a></code></p>
+<p class="firstline">Retrieves the next page of results.</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="close">close()</code>
@@ -108,21 +114,31 @@
   &quot;userEvent&quot;: { # UserEvent captures all metadata information Retail API needs to know about how end users interact with customers&#x27; website. # Required. Context about the user, what they are looking at and what action they took to trigger the predict request. Note that this user event detail won&#x27;t be ingested to userEvent logs. Thus, a separate userEvent write request is required for event logging.
     &quot;attributes&quot;: { # Extra user event features to include in the recommendation model. The key must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. For product recommendation, an example of extra user information is traffic_channel, i.e. how user arrives at the site. Users can arrive at the site by coming to the site directly, or coming through Google search, and etc.
       &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+        &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
         &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
           3.14,
         ],
+        &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
         &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
           &quot;A String&quot;,
         ],
       },
     },
-    &quot;attributionToken&quot;: &quot;A String&quot;, # Highly recommended for user events that are the result of PredictionService.Predict. This field enables accurate attribution of recommendation model performance. The value must be a valid PredictResponse.attribution_token for user events that are the result of PredictionService.Predict. This token enables us to accurately attribute page view or purchase back to the event and the particular predict response containing this clicked/purchased product. If user clicks on product K in the recommendation results, pass PredictResponse.attribution_token as a URL parameter to product K&#x27;s page. When recording events on product K&#x27;s page, log the PredictResponse.attribution_token to this field.
+    &quot;attributionToken&quot;: &quot;A String&quot;, # Highly recommended for user events that are the result of PredictionService.Predict. This field enables accurate attribution of recommendation model performance. The value must be a valid PredictResponse.attribution_token for user events that are the result of PredictionService.Predict. The value must be a valid SearchResponse.attribution_token for user events that are the result of SearchService.Search. This token enables us to accurately attribute page view or purchase back to the event and the particular predict response containing this clicked/purchased product. If user clicks on product K in the recommendation results, pass PredictResponse.attribution_token as a URL parameter to product K&#x27;s page. When recording events on product K&#x27;s page, log the PredictResponse.attribution_token to this field.
     &quot;cartId&quot;: &quot;A String&quot;, # The id or name of the associated shopping cart. This id is used to associate multiple items added or present in the cart before purchase. This can only be set for `add-to-cart`, `purchase-complete`, or `shopping-cart-page-view` events.
+    &quot;completionDetail&quot;: { # Detailed completion information including completion attribution token and clicked completion info. # The main completion details related to the event. In a `completion` event, this field represents the completions returned to the end user and the clicked completion by the end user. In a `search` event, it represents the search event happens after clicking completion.
+      &quot;completionAttributionToken&quot;: &quot;A String&quot;, # Completion attribution token in CompleteQueryResponse.attribution_token.
+      &quot;selectedPosition&quot;: 42, # End user selected CompleteQueryResponse.CompletionResult.suggestion position, starting from 0.
+      &quot;selectedSuggestion&quot;: &quot;A String&quot;, # End user selected CompleteQueryResponse.CompletionResult.suggestion.
+    },
     &quot;eventTime&quot;: &quot;A String&quot;, # Only required for UserEventService.ImportUserEvents method. Timestamp of when the user event happened.
     &quot;eventType&quot;: &quot;A String&quot;, # Required. User event type. Allowed values are: * `add-to-cart`: Products being added to cart. * `category-page-view`: Special pages such as sale or promotion pages viewed. * `completion`: Completion query result showed/clicked. * `detail-page-view`: Products detail page viewed. * `home-page-view`: Homepage viewed. * `promotion-offered`: Promotion is offered to a user. * `promotion-not-offered`: Promotion is not offered to a user. * `purchase-complete`: User finishing a purchase. * `search`: Product search. * `shopping-cart-page-view`: User viewing a shopping cart.
     &quot;experimentIds&quot;: [ # A list of identifiers for the independent experiment groups this user event belongs to. This is used to distinguish between user events associated with different experiment setups (e.g. using Retail API, using different recommendation models).
       &quot;A String&quot;,
     ],
+    &quot;filter&quot;: &quot;A String&quot;, # The filter syntax consists of an expression language for constructing a predicate from one or more fields of the products being filtered. See SearchRequest.filter for definition and syntax. The value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;offset&quot;: 42, # An integer that specifies the current offset for pagination (the 0-indexed starting location, amongst the products deemed by the API as relevant). See SearchRequest.offset for definition. If this field is negative, an INVALID_ARGUMENT is returned. This can only be set for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;orderBy&quot;: &quot;A String&quot;, # The order in which products are returned. See SearchRequest.order_by for definition and syntax. The value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This can only be set for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
     &quot;pageCategories&quot;: [ # The categories associated with a category page. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). Category pages include special pages such as sales or promotions. For instance, a special sale page may have the category hierarchy: &quot;pageCategories&quot; : [&quot;Sales &gt; 2017 Black Friday Deals&quot;]. Required for `category-page-view` events. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
       &quot;A String&quot;,
     ],
@@ -130,23 +146,60 @@
     &quot;productDetails&quot;: [ # The main product details related to the event. This field is required for the following event types: * `add-to-cart` * `detail-page-view` * `purchase-complete` In a `search` event, this field represents the products returned to the end user on the current page (the end user may have not finished broswing the whole page yet). When a new page is returned to the end user, after pagination/filtering/ordering even for the same query, a new `search` event with different product_details is desired. The end user may have not finished broswing the whole page yet.
       { # Detailed product information associated with a user event.
         &quot;product&quot;: { # Product captures all metadata information of items to be recommended or searched. # Required. Product information. Only Product.id field is used when ingesting an event, all other product fields are ignored as we will look them up from the catalog.
-          &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters.
+          &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
             &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+              &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
               &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
                 3.14,
               ],
+              &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
               &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
                 &quot;A String&quot;,
               ],
             },
           },
+          &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+            &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+              &quot;A String&quot;,
+            ],
+            &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+              &quot;A String&quot;,
+            ],
+          },
           &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
           &quot;availableQuantity&quot;: 42, # The available quantity of the item.
-          &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for recommendation.
+          &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+          &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+            &quot;A String&quot;,
+          ],
           &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
             &quot;A String&quot;,
           ],
+          &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+            &quot;A String&quot;,
+          ],
+          &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+            &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+              &quot;A String&quot;,
+            ],
+            &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+              &quot;A String&quot;,
+            ],
+          },
+          &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+            &quot;A String&quot;,
+          ],
           &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+          &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+          &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+            { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+              &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+                &quot;A String&quot;,
+              ],
+              &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+            },
+          ],
+          &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
           &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
           &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
             { # Product thumbnail/detail image.
@@ -155,20 +208,64 @@
               &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
             },
           ],
+          &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+          &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+            &quot;A String&quot;,
+          ],
           &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+          &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+            &quot;A String&quot;,
+          ],
           &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
             &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
-            &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned.
+            &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
             &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
             &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+            &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+            &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+            &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+              &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+                &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+                &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+                &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+                &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+              },
+              &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+                &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+                &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+                &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+                &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+              },
+            },
           },
           &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+          &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+            { # Promotion information.
+              &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+            },
+          ],
+          &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+          &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+            &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+            &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+            &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+              42,
+            ],
+          },
+          &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+            &quot;A String&quot;,
+          ],
           &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
             &quot;A String&quot;,
           ],
           &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+          &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
           &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
           &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+          &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+            # Object with schema name: GoogleCloudRetailV2betaProduct
+          ],
         },
         &quot;quantity&quot;: 42, # Quantity of the product associated with the user event. For example, this field will be 2 if two products are added to the shopping cart for `purchase-complete` event. Required for `add-to-cart` and `purchase-complete` event types.
       },
@@ -181,12 +278,13 @@
       &quot;tax&quot;: 3.14, # All the taxes associated with the transaction.
     },
     &quot;referrerUri&quot;: &quot;A String&quot;, # The referrer URL of the current page. When using the client side event reporting with JavaScript pixel and Google Tag Manager, this value is filled in automatically.
-    &quot;searchQuery&quot;: &quot;A String&quot;, # The user&#x27;s search query. The value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;searchQuery&quot;: &quot;A String&quot;, # The user&#x27;s search query. See SearchRequest.query for definition. The value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+    &quot;sessionId&quot;: &quot;A String&quot;, # A unique identifier for tracking a visitor session with a length limit of 128 bytes. A session is an aggregation of an end user behavior in a time span. A general guideline to populate the sesion_id: 1. If user has no activity for 30 min, a new session_id should be assigned. 2. The session_id should be unique across users, suggest use uuid or add visitor_id as prefix.
     &quot;uri&quot;: &quot;A String&quot;, # Complete URL (window.location.href) of the user&#x27;s current page. When using the client side event reporting with JavaScript pixel and Google Tag Manager, this value is filled in automatically. Maximum length 5,000 characters.
     &quot;userInfo&quot;: { # Information of an end user. # User information.
       &quot;directUserRequest&quot;: True or False, # True if the request is made directly from the end user, in which case the ip_address and user_agent can be populated from the HTTP request. This flag should be set only if the API request is made directly from the end user such as a mobile app (and not if a gateway or a server is processing and pushing the user events). This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent.
-      &quot;ipAddress&quot;: &quot;A String&quot;, # The end user&#x27;s IP address. Required for getting SearchRespons.sponsored_results. This field is used to extract location information for personalization. This field must be either an IPv4 address (e.g. &quot;104.133.9.80&quot;) or an IPv6 address (e.g. &quot;2001:0db8:85a3:0000:0000:8a2e:0370:7334&quot;). Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
-      &quot;userAgent&quot;: &quot;A String&quot;, # User agent as included in the HTTP header. Required for getting SearchRespons.sponsored_results. The field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the client side event reporting with GTM or JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
+      &quot;ipAddress&quot;: &quot;A String&quot;, # The end user&#x27;s IP address. Required for getting SearchResponse.sponsored_results. This field is used to extract location information for personalization. This field must be either an IPv4 address (e.g. &quot;104.133.9.80&quot;) or an IPv6 address (e.g. &quot;2001:0db8:85a3:0000:0000:8a2e:0370:7334&quot;). Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
+      &quot;userAgent&quot;: &quot;A String&quot;, # User agent as included in the HTTP header. Required for getting SearchResponse.sponsored_results. The field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the client side event reporting with GTM or JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
       &quot;userId&quot;: &quot;A String&quot;, # Highly recommended for logged-in users. Unique identifier for logged-in user, such as a user name. The field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.
     },
     &quot;visitorId&quot;: &quot;A String&quot;, # Required. A unique identifier for tracking visitors. For example, this could be implemented with an HTTP cookie, which should be able to uniquely identify a visitor on a single device. This unique identifier should not change if the visitor log in/out of the website. The field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. The field should not contain PII or user-data. We recommend to use Google Analystics [Client ID](https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#clientId) for this field.
@@ -219,4 +317,268 @@
 }</pre>
 </div>
 
+<div class="method">
+    <code class="details" id="search">search(placement, body=None, x__xgafv=None)</code>
+  <pre>Performs a search. This feature is only available for users who have Retail Search enabled. Contact Retail Support (retail-search-support@google.com) if you are interested in using Retail Search.
+
+Args:
+  placement: string, Required. The resource name of the search engine placement, such as `projects/*/locations/global/catalogs/default_catalog/placements/default_search`. This field is used to identify the set of models that will be used to make the search. We currently support one placement with the following ID: * `default_search`. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Request message for SearchService.Search method.
+  &quot;boostSpec&quot;: { # Boost specification to boost certain items. # Boost specification to boost certain products. See more details at this [user guide](/retail/private/docs/boosting).
+    &quot;conditionBoostSpecs&quot;: [ # Condition boost specifications. If a product matches multiple conditions in the specifictions, boost scores from these specifications are all applied and combined in a non-linear way. Maximum number of specifications is 10.
+      { # Boost applies to products which match a condition.
+        &quot;boost&quot;: 3.14, # Strength of the condition boost, which should be in [-1, 1]. Negative boost means demotion. Default is 0.0. Setting to 1.0 gives the item a big promotion. However, it does not necessarily mean that the boosted item will be the top result at all times, nor that other items will be excluded. Results could still be shown even when none of them matches the condition. And results that are significantly more relevant to the search query can still trump your heavily favored but irrelevant items. Setting to -1.0 gives the item a big demotion. However, results that are deeply relevant might still be shown. The item will have an upstream battle to get a fairly high ranking, but it is not blocked out completely. Setting to 0.0 means no boost applied. The boosting condition is ignored.
+        &quot;condition&quot;: &quot;A String&quot;, # An expression which specifies a boost condition. The syntax and supported fields are the same as a filter expression. See SearchRequest.filter for detail syntax and limitations. Examples: * To boost products with product ID &quot;product_1&quot; or &quot;product_2&quot;, and color &quot;Red&quot; or &quot;Blue&quot;: *(id: ANY(&quot;product_1&quot;, &quot;product_2&quot;)) * *AND * *(colorFamilies: ANY(&quot;Red&quot;, &quot;Blue&quot;)) *
+      },
+    ],
+  },
+  &quot;branch&quot;: &quot;A String&quot;, # The branch resource name, such as `projects/*/locations/global/catalogs/default_catalog/branches/0`. Use &quot;default_branch&quot; as the branch ID or leave this field empty, to search products under the default branch.
+  &quot;canonicalFilter&quot;: &quot;A String&quot;, # The filter applied to every search request when quality improvement such as query expansion is needed. For example, if a query does not have enough results, an expanded query with SearchRequest.canonical_filter will be returned as a supplement of the original query. This field is strongly recommended to achieve high search quality. See SearchRequest.filter for more details about filter syntax.
+  &quot;dynamicFacetSpec&quot;: { # The specifications of dynamically generated facets. # The specification for dynamically generated facets. Notice that only textual facets can be dynamically generated. This feature requires additional allowlisting. Contact Retail Support (retail-search-support@google.com) if you are interested in using dynamic facet feature.
+    &quot;mode&quot;: &quot;A String&quot;, # Mode of the DynamicFacet feature. Defaults to Mode.DISABLED if it&#x27;s unset.
+  },
+  &quot;facetSpecs&quot;: [ # Facet specifications for faceted search. If empty, no facets are returned. A maximum of 100 values are allowed. Otherwise, an INVALID_ARGUMENT error is returned.
+    { # A facet specification to perform faceted search.
+      &quot;enableDynamicPosition&quot;: True or False, # Enables dynamic position for this facet. If set to true, the position of this facet among all facets in the response is determined by Google Retail Search. It will be ordered together with dynamic facets if dynamic facets is enabled. If set to false, the position of this facet in the response will be the same as in the request, and it will be ranked before the facets with dynamic position enable and all dynamic facets. For example, you may always want to have rating facet returned in the response, but it&#x27;s not necessarily to always display the rating facet at the top. In that case, you can set enable_dynamic_position to true so that the position of rating facet in response will be determined by Google Retail Search. Another example, assuming you have the following facets in the request: * &quot;rating&quot;, enable_dynamic_position = true * &quot;price&quot;, enable_dynamic_position = false * &quot;brands&quot;, enable_dynamic_position = false And also you have a dynamic facets enable, which will generate a facet &#x27;gender&#x27;. Then the final order of the facets in the response can be (&quot;price&quot;, &quot;brands&quot;, &quot;rating&quot;, &quot;gender&quot;) or (&quot;price&quot;, &quot;brands&quot;, &quot;gender&quot;, &quot;rating&quot;) depends on how Google Retail Search orders &quot;gender&quot; and &quot;rating&quot; facets. However, notice that &quot;price&quot; and &quot;brands&quot; will always be ranked at 1st and 2nd position since their enable_dynamic_position are false.
+      &quot;excludedFilterKeys&quot;: [ # List of keys to exclude when faceting. By default, FacetKey.key is not excluded from the filter unless it is listed in this field. For example, suppose there are 100 products with color facet &quot;Red&quot; and 200 products with color facet &quot;Blue&quot;. A query containing the filter &quot;colorFamilies:ANY(&quot;Red&quot;)&quot; and have &quot;colorFamilies&quot; as FacetKey.key will by default return the &quot;Red&quot; with count 100. If this field contains &quot;colorFamilies&quot;, then the query returns both the &quot;Red&quot; with count 100 and &quot;Blue&quot; with count 200, because the &quot;colorFamilies&quot; key is now excluded from the filter. A maximum of 100 values are allowed. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;A String&quot;,
+      ],
+      &quot;facetKey&quot;: { # Specifies how a facet is computed. # Required. The facet key specification.
+        &quot;contains&quot;: [ # Only get facet values that contains the given strings. For example, suppose &quot;categories&quot; has three values &quot;Women &gt; Shoe&quot;, &quot;Women &gt; Dress&quot; and &quot;Men &gt; Shoe&quot;. If set &quot;contains&quot; to &quot;Shoe&quot;, the &quot;categories&quot; facet will give only &quot;Women &gt; Shoe&quot; and &quot;Men &gt; Shoe&quot;. Only supported on textual fields. Maximum is 10.
+          &quot;A String&quot;,
+        ],
+        &quot;intervals&quot;: [ # Set only if values should be bucketized into intervals. Must be set for facets with numerical values. Must not be set for facet with text values. Maximum number of intervals is 30.
+          { # A floating point interval.
+            &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+            &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+            &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+            &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+          },
+        ],
+        &quot;key&quot;: &quot;A String&quot;, # Required. Supported textual and numerical facet keys in Product object, over which the facet values are computed. Facet key is case-sensitive. Allowed facet keys when FacetKey.query is not specified: * textual_field = *# The Product.brands. * &quot;brands&quot;; *# The Product.categories. * &quot;categories&quot;; *# The Audience.genders. * | &quot;genders&quot;; *# The Audience.age_groups. * | &quot;ageGroups&quot;; *# The Product.availability. Value is one of * *# &quot;IN_STOCK&quot;, &quot;OUT_OF_STOCK&quot;, PREORDER&quot;, &quot;BACKORDER&quot;. * | &quot;availability&quot;; *# The ColorInfo.color_families. * | &quot;colorFamilies&quot;; *# The ColorInfo.colors. * | &quot;colors&quot;; *# The Product.sizes. * | &quot;sizes&quot;; *# The Product.materials. * | &quot;materials&quot;; *# The Product.patterns. * | &quot;patterns&quot;; *# The Product.conditions. * | &quot;conditions&quot;; *# The textual custom attribute in Product object. Key can * *# be any key in the Product.attributes map * *# if the attribute values are textual. * *# map. * | &quot;attributes.key&quot;; *# The FulfillmentInfo.ids for type *# FulfillmentInfo.Type.PICKUP_IN_STORE. * | &quot;pickupInStore&quot;; *# The FulfillmentInfo.ids for type *# FulfillmentInfo.Type.SHIP_TO_STORE. * | &quot;shipToStore&quot;; *# The FulfillmentInfo.ids for type *# FulfillmentInfo.Type.SAME_DAY_DELIVERY. * | &quot;sameDayDelivery&quot;; *# The FulfillmentInfo.ids for type *# FulfillmentInfo.Type.NEXT_DAY_DELIVERY. * | &quot;nextDayDelivery&quot;; *# The FulfillmentInfo.ids for type *# FulfillmentInfo.Type.CUSTOM_TYPE_1. * | &quot;customFulfillment1&quot;; *# The FulfillmentInfo.ids for type *# FulfillmentInfo.Type.CUSTOM_TYPE_2. * | &quot;customFulfillment2&quot;; *# The FulfillmentInfo.ids for type *# FulfillmentInfo.Type.CUSTOM_TYPE_3. * | &quot;customFulfillment3&quot;; *# The FulfillmentInfo.ids for type *# FulfillmentInfo.Type.CUSTOM_TYPE_4. * | &quot;customFulfillment4&quot;; *# The FulfillmentInfo.ids for type *# FulfillmentInfo.Type.CUSTOM_TYPE_5. * | &quot;customFulfillment5&quot;; * numerical_field = *# The PriceInfo.price. * &quot;price&quot;; *# The discount. Computed by (original_price-price)/price * &quot;discount&quot;; *# The Rating.average_rating. * &quot;rating&quot;; *# The Rating.rating_count. * &quot;ratingCount&quot;; *# The numerical custom attribute in Product object. Key can * *# be any key in the Product.attributes map * *# if the attribute values are numerical. * | &quot;attributes.key&quot;;
+        &quot;orderBy&quot;: &quot;A String&quot;, # The order in which Facet.values are returned. Allowed values are: * &quot;count desc&quot;, which means order by Facet.FacetValue.count descending. * &quot;value desc&quot;, which means order by Facet.FacetValue.value descending. Only applies to textual facets. If not set, textual values are sorted in [natural order](https://en.wikipedia.org/wiki/Natural_sort_order); numerical intervals are sorted in the order given by FacetSpec.FacetKey.intervals; FulfillmentInfo.ids are sorted in the order given by FacetSpec.FacetKey.restricted_values.
+        &quot;prefixes&quot;: [ # Only get facet values that start with the given string prefix. For example, suppose &quot;categories&quot; has three values &quot;Women &gt; Shoe&quot;, &quot;Women &gt; Dress&quot; and &quot;Men &gt; Shoe&quot;. If set &quot;prefixes&quot; to &quot;Women&quot;, the &quot;categories&quot; facet will give only &quot;Women &gt; Shoe&quot; and &quot;Women &gt; Dress&quot;. Only supported on textual fields. Maximum is 10.
+          &quot;A String&quot;,
+        ],
+        &quot;query&quot;: &quot;A String&quot;, # The query that is used to compute facet for the given facet key. When provided, it will override the default behavior of facet computation. The query syntax is the same as a filter expression. See SearchRequest.filter for detail syntax and limitations. Notice that there is no limitation on FacetKey.key when query is specified. In the response, FacetValue.value will be always &quot;1&quot; and FacetValue.count will be the number of results that matches the query. For example, you can set a customized facet for &quot;shipToStore&quot;, where FacetKey.key is &quot;customizedShipToStore&quot;, and FacetKey.query is &quot;availability: ANY(\&quot;IN_STOCK\&quot;) AND shipToStore: ANY(\&quot;123\&quot;)&quot;. Then the facet will count the products that are both in stock and ship to store &quot;123&quot;.
+        &quot;restrictedValues&quot;: [ # Only get facet for the given restricted values. For example, when using &quot;pickupInStore&quot; as key and set restricted values to [&quot;store123&quot;, &quot;store456&quot;], only facets for &quot;store123&quot; and &quot;store456&quot; are returned. Only supported on textual fields and fulfillments. Maximum is 20. Must be set for the fulfillment facet keys: * pickupInStore * shipToStore * sameDayDelivery * nextDayDelivery * customFulfillment1 * customFulfillment2 * customFulfillment3 * customFulfillment4 * customFulfillment5
+          &quot;A String&quot;,
+        ],
+      },
+      &quot;limit&quot;: 42, # Maximum of facet values that should be returned for this facet. If unspecified, defaults to 20. The maximum allowed value is 300. Values above 300 will be coerced to 300. If this field is negative, an INVALID_ARGUMENT is returned.
+    },
+  ],
+  &quot;filter&quot;: &quot;A String&quot;, # The filter syntax consists of an expression language for constructing a predicate from one or more fields of the products being filtered. Filter expression is case-sensitive. See more details at this [user guide](/retail/private/docs/filter-and-order#filter). If this field is unrecognizable, an INVALID_ARGUMENT is returned.
+  &quot;offset&quot;: 42, # A 0-indexed integer that specifies the current offset (that is, starting result location, amongst the Products deemed by the API as relevant) in search results. This field is only considered if page_token is unset. If this field is negative, an INVALID_ARGUMENT is returned.
+  &quot;orderBy&quot;: &quot;A String&quot;, # The order in which products are returned. Products can be ordered by a field in an Product object. Leave it unset if ordered by relevance. OrderBy expression is case-sensitive. See more details at this [user guide](/retail/private/docs/filter-and-order#order). If this field is unrecognizable, an INVALID_ARGUMENT is returned.
+  &quot;pageCategories&quot;: [ # The categories associated with a category page. Required for category navigation queries to achieve good search quality. The format should be the same as UserEvent.page_categories; To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). Category pages include special pages such as sales or promotions. For instance, a special sale page may have the category hierarchy: &quot;pageCategories&quot; : [&quot;Sales &gt; 2017 Black Friday Deals&quot;].
+    &quot;A String&quot;,
+  ],
+  &quot;pageSize&quot;: 42, # Maximum number of Products to return. If unspecified, defaults to a reasonable value. The maximum allowed value is 120. Values above 120 will be coerced to 120. If this field is negative, an INVALID_ARGUMENT is returned.
+  &quot;pageToken&quot;: &quot;A String&quot;, # A page token SearchResponse.next_page_token, received from a previous SearchService.Search call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to SearchService.Search must match the call that provided the page token. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;query&quot;: &quot;A String&quot;, # Raw search query.
+  &quot;queryExpansionSpec&quot;: { # Specification to determine under which conditions query expansion should occur. # The query expansion specification that specifies the conditions under which query expansion will occur. See more details at this [user guide](/retail/private/docs/result-size#query_expansion).
+    &quot;condition&quot;: &quot;A String&quot;, # The condition under which query expansion should occur. Default to Condition.DISABLED.
+  },
+  &quot;userInfo&quot;: { # Information of an end user. # User information.
+    &quot;directUserRequest&quot;: True or False, # True if the request is made directly from the end user, in which case the ip_address and user_agent can be populated from the HTTP request. This flag should be set only if the API request is made directly from the end user such as a mobile app (and not if a gateway or a server is processing and pushing the user events). This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent.
+    &quot;ipAddress&quot;: &quot;A String&quot;, # The end user&#x27;s IP address. Required for getting SearchResponse.sponsored_results. This field is used to extract location information for personalization. This field must be either an IPv4 address (e.g. &quot;104.133.9.80&quot;) or an IPv6 address (e.g. &quot;2001:0db8:85a3:0000:0000:8a2e:0370:7334&quot;). Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
+    &quot;userAgent&quot;: &quot;A String&quot;, # User agent as included in the HTTP header. Required for getting SearchResponse.sponsored_results. The field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the client side event reporting with GTM or JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
+    &quot;userId&quot;: &quot;A String&quot;, # Highly recommended for logged-in users. Unique identifier for logged-in user, such as a user name. The field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.
+  },
+  &quot;variantRollupKeys&quot;: [ # The keys to fetch and rollup the matching variant Products attributes. The attributes from all the matching variant Products are merged and de-duplicated. Notice that rollup variant Products attributes will lead to extra query latency. Maximum number of keys is 10. For Product.fulfillment_info, a fulfillment type and a fulfillment ID must be provided in the format of &quot;fulfillmentType.filfillmentId&quot;. E.g., in &quot;pickupInStore.store123&quot;, &quot;pickupInStore&quot; is fulfillment type and &quot;store123&quot; is the store ID. Supported keys are: * colorFamilies * price * originalPrice * discount * attributes.key, where key is any key in the Product.attributes map. * pickupInStore.id, where id is any FulfillmentInfo.ids for type FulfillmentInfo.Type.PICKUP_IN_STORE. * shipToStore.id, where id is any FulfillmentInfo.ids for type FulfillmentInfo.Type.SHIP_TO_STORE. * sameDayDelivery.id, where id is any FulfillmentInfo.ids for type FulfillmentInfo.Type.SAME_DAY_DELIVERY. * nextDayDelivery.id, where id is any FulfillmentInfo.ids for type FulfillmentInfo.Type.NEXT_DAY_DELIVERY. * customFulfillment1.id, where id is any FulfillmentInfo.ids for type FulfillmentInfo.Type.CUSTOM_TYPE_1. * customFulfillment2.id, where id is any FulfillmentInfo.ids for type FulfillmentInfo.Type.CUSTOM_TYPE_2. * customFulfillment3.id, where id is any FulfillmentInfo.ids for type FulfillmentInfo.Type.CUSTOM_TYPE_3. * customFulfillment4.id, where id is any FulfillmentInfo.ids for type FulfillmentInfo.Type.CUSTOM_TYPE_4. * customFulfillment5.id, where id is any FulfillmentInfo.ids for type FulfillmentInfo.Type.CUSTOM_TYPE_5. If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+    &quot;A String&quot;,
+  ],
+  &quot;visitorId&quot;: &quot;A String&quot;, # Required. A unique identifier for tracking visitors. For example, this could be implemented with an HTTP cookie, which should be able to uniquely identify a visitor on a single device. This unique identifier should not change if the visitor logs in or out of the website. The field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Response message for SearchService.Search method.
+  &quot;attributionToken&quot;: &quot;A String&quot;, # A unique search token. This should be included in the UserEvent logs resulting from this search, which enables accurate attribution of search model performance.
+  &quot;correctedQuery&quot;: &quot;A String&quot;, # If spell correction applies, the corrected query. Otherwise, empty.
+  &quot;facets&quot;: [ # Results of facets requested by user.
+    { # A facet result.
+      &quot;dynamicFacet&quot;: True or False, # Whether the facet is dynamically generated.
+      &quot;key&quot;: &quot;A String&quot;, # The key for this facet. E.g., &quot;colorFamilies&quot; or &quot;price&quot; or &quot;attributes.attr1&quot;.
+      &quot;values&quot;: [ # The facet values for this field.
+        { # A facet value which contains value names and their count.
+          &quot;count&quot;: &quot;A String&quot;, # Number of items that have this facet value.
+          &quot;interval&quot;: { # A floating point interval. # Interval value for a facet, such as [10, 20) for facet &quot;price&quot;.
+            &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+            &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+            &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+            &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+          },
+          &quot;value&quot;: &quot;A String&quot;, # Text value of a facet, such as &quot;Black&quot; for facet &quot;colorFamilies&quot;.
+        },
+      ],
+    },
+  ],
+  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token that can be sent as SearchRequest.page_token to retrieve the next page. If this field is omitted, there are no subsequent pages.
+  &quot;queryExpansionInfo&quot;: { # Information describing query expansion including whether expansion has occurred. # Query expansion information for the returned results.
+    &quot;expandedQuery&quot;: True or False, # Bool describing whether query expansion has occurred.
+  },
+  &quot;redirectUri&quot;: &quot;A String&quot;, # The URI of a customer-defined redirect page. If redirect action is triggered, no search will be performed, and only redirect_uri and attribution_token will be set in the response.
+  &quot;results&quot;: [ # A list of matched items. The order represents the ranking.
+    { # Represents the search results.
+      &quot;id&quot;: &quot;A String&quot;, # Product.id of the searched Product.
+      &quot;matchingVariantCount&quot;: 42, # The count of matched variant Products.
+      &quot;matchingVariantFields&quot;: { # If a variant Product matches the search query, this map indicates which Product fields are matched. The key is the Product.name, the value is a field mask of the matched Product fields. If matched attributes cannot be determined, this map will be empty. For example, a key &quot;sku1&quot; with field mask &quot;products.color_info&quot; indicates there is a match between &quot;sku1&quot; ColorInfo and the query.
+        &quot;a_key&quot;: &quot;A String&quot;,
+      },
+      &quot;product&quot;: { # Product captures all metadata information of items to be recommended or searched. # The product data snippet in the search response. Only Product.name is guaranteed to be populated. Product.variants contains the product variants that match the search query. If there are multiple product variants matching the query, top 5 most relevant product variants are returned and ordered by relevancy. If relevancy can be deternmined, use matching_variant_fields to look up matched product variants fields. If relevancy cannot be determined, e.g. when searching &quot;shoe&quot; all products in a shoe product can be a match, 5 product variants are returned but order is meaningless.
+        &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
+          &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+            &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
+            &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
+              3.14,
+            ],
+            &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
+            &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
+              &quot;A String&quot;,
+            ],
+          },
+        },
+        &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+          &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+            &quot;A String&quot;,
+          ],
+          &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+            &quot;A String&quot;,
+          ],
+        },
+        &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
+        &quot;availableQuantity&quot;: 42, # The available quantity of the item.
+        &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+        &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+          &quot;A String&quot;,
+        ],
+        &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
+          &quot;A String&quot;,
+        ],
+        &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+          &quot;A String&quot;,
+        ],
+        &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+          &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+            &quot;A String&quot;,
+          ],
+          &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+            &quot;A String&quot;,
+          ],
+        },
+        &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+          &quot;A String&quot;,
+        ],
+        &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+        &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+        &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+          { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+            &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+              &quot;A String&quot;,
+            ],
+            &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+          },
+        ],
+        &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
+        &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
+        &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
+          { # Product thumbnail/detail image.
+            &quot;height&quot;: 42, # Height of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+            &quot;uri&quot;: &quot;A String&quot;, # Required. URI of the image. This field must be a valid UTF-8 encoded URI with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
+            &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+          },
+        ],
+        &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+        &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+          &quot;A String&quot;,
+        ],
+        &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+        &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+          &quot;A String&quot;,
+        ],
+        &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
+          &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
+          &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
+          &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
+          &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+          &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+          &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+          &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+            &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+              &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+              &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+              &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+              &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+            },
+            &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+              &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+              &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+              &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+              &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+            },
+          },
+        },
+        &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+        &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+          { # Promotion information.
+            &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+          },
+        ],
+        &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+        &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+          &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+            42,
+          ],
+        },
+        &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+          &quot;A String&quot;,
+        ],
+        &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
+          &quot;A String&quot;,
+        ],
+        &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+        &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
+        &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
+        &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+        &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+          # Object with schema name: GoogleCloudRetailV2betaProduct
+        ],
+      },
+      &quot;variantRollupValues&quot;: { # The rollup matching variant Product attributes. The key is one of the SearchRequest.variant_rollup_keys. The values are the merged and de-duplicated Product attributes. Notice that the rollup values are respect filter. For example, when filtering by &quot;colorFamilies:ANY(\&quot;red\&quot;)&quot; and rollup &quot;colorFamilies&quot;, only &quot;red&quot; is returned. For textual and numerical attributes, the rollup values is a list of string or double values with type google.protobuf.ListValue. For example, if there are two variants with colors &quot;red&quot; and &quot;blue&quot;, the rollup values are { key: &quot;colorFamilies&quot; value { list_value { values { string_value: &quot;red&quot; } values { string_value: &quot;blue&quot; } } } } For Product.fulfillment_info, the rollup values is a double value with type google.protobuf.Value. For example, {key: &quot;pickupInStore.store1&quot; value { number_value: 10 }} means a there are 10 variants in this product are available in the store &quot;store1&quot;.
+        &quot;a_key&quot;: &quot;&quot;,
+      },
+    },
+  ],
+  &quot;totalSize&quot;: 42, # The estimated total count of matched items irrespective of pagination. The count of results returned by pagination may be less than the total_size that matches.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="search_next">search_next(previous_request, previous_response)</code>
+  <pre>Retrieves the next page of results.
+
+Args:
+  previous_request: The request for the previous page. (required)
+  previous_response: The response from the request for the previous page. (required)
+
+Returns:
+  A request object that you can call &#x27;execute()&#x27; on to request the next
+  page. Returns None if there are no more items in the collection.
+    </pre>
+</div>
+
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/retail_v2beta.projects.locations.catalogs.userEvents.html b/docs/dyn/retail_v2beta.projects.locations.catalogs.userEvents.html
index f6dd7d8..9374ea6 100644
--- a/docs/dyn/retail_v2beta.projects.locations.catalogs.userEvents.html
+++ b/docs/dyn/retail_v2beta.projects.locations.catalogs.userEvents.html
@@ -141,14 +141,19 @@
   },
   &quot;inputConfig&quot;: { # The input config source for user events. # Required. The desired input location of the data.
     &quot;bigQuerySource&quot;: { # BigQuery source import data from. # Required. BigQuery input source.
-      &quot;dataSchema&quot;: &quot;A String&quot;, # The schema to use when parsing the data from the source. Supported values for product imports: * `product` (default): One JSON Product per line. Each product must have a valid Product.id. * `product_merchant_center`: See [Importing catalog data from Merchant Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc). Supported values for user events imports: * `user_event` (default): One JSON UserEvent per line. * `user_event_ga360`: Using https://support.google.com/analytics/answer/3437719?hl=en.
+      &quot;dataSchema&quot;: &quot;A String&quot;, # The schema to use when parsing the data from the source. Supported values for product imports: * `product` (default): One JSON Product per line. Each product must have a valid Product.id. * `product_merchant_center`: See [Importing catalog data from Merchant Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc). Supported values for user events imports: * `user_event` (default): One JSON UserEvent per line. * `user_event_ga360`: Using https://support.google.com/analytics/answer/3437719.
       &quot;datasetId&quot;: &quot;A String&quot;, # Required. The BigQuery data set to copy the data from with a length limit of 1,024 characters.
       &quot;gcsStagingDir&quot;: &quot;A String&quot;, # Intermediate Cloud Storage directory used for the import with a length limit of 2,000 characters. Can be specified if one wants to have the BigQuery export to a specific Cloud Storage directory.
+      &quot;partitionDate&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # BigQuery time partitioned table&#x27;s _PARTITIONDATE in YYYY-MM-DD format. Only supported when ImportProductsRequest.reconciliation_mode is set to `FULL`.
+        &quot;day&quot;: 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn&#x27;t significant.
+        &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
+        &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
+      },
       &quot;projectId&quot;: &quot;A String&quot;, # The project ID (can be project # or ID) that the BigQuery source is in with a length limit of 128 characters. If not specified, inherits the project ID from the parent request.
       &quot;tableId&quot;: &quot;A String&quot;, # Required. The BigQuery table to copy the data from with a length limit of 1,024 characters.
     },
     &quot;gcsSource&quot;: { # Google Cloud Storage location for input content. format. # Required. Google Cloud Storage location for the input content.
-      &quot;dataSchema&quot;: &quot;A String&quot;, # The schema to use when parsing the data from the source. Supported values for product imports: * `product` (default): One JSON Product per line. Each product must have a valid Product.id. * `product_merchant_center`: See [Importing catalog data from Merchant Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc). Supported values for user events imports: * `user_event` (default): One JSON UserEvent per line. * `user_event_ga360`: Using https://support.google.com/analytics/answer/3437719?hl=en.
+      &quot;dataSchema&quot;: &quot;A String&quot;, # The schema to use when parsing the data from the source. Supported values for product imports: * `product` (default): One JSON Product per line. Each product must have a valid Product.id. * `product_merchant_center`: See [Importing catalog data from Merchant Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc). Supported values for user events imports: * `user_event` (default): One JSON UserEvent per line. * `user_event_ga360`: Using https://support.google.com/analytics/answer/3437719.
       &quot;inputUris&quot;: [ # Required. Google Cloud Storage URIs to input files. URI can be up to 2000 characters long. URIs can match the full object path (for example, `gs://bucket/directory/object.json`) or a pattern matching one or more files, such as `gs://bucket/directory/*.json`. A request can contain at most 100 files, and each file can be up to 2 GB. See [Importing product information](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog) for the expected file format and setup instructions.
         &quot;A String&quot;,
       ],
@@ -158,21 +163,31 @@
         { # UserEvent captures all metadata information Retail API needs to know about how end users interact with customers&#x27; website.
           &quot;attributes&quot;: { # Extra user event features to include in the recommendation model. The key must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. For product recommendation, an example of extra user information is traffic_channel, i.e. how user arrives at the site. Users can arrive at the site by coming to the site directly, or coming through Google search, and etc.
             &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+              &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
               &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
                 3.14,
               ],
+              &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
               &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
                 &quot;A String&quot;,
               ],
             },
           },
-          &quot;attributionToken&quot;: &quot;A String&quot;, # Highly recommended for user events that are the result of PredictionService.Predict. This field enables accurate attribution of recommendation model performance. The value must be a valid PredictResponse.attribution_token for user events that are the result of PredictionService.Predict. This token enables us to accurately attribute page view or purchase back to the event and the particular predict response containing this clicked/purchased product. If user clicks on product K in the recommendation results, pass PredictResponse.attribution_token as a URL parameter to product K&#x27;s page. When recording events on product K&#x27;s page, log the PredictResponse.attribution_token to this field.
+          &quot;attributionToken&quot;: &quot;A String&quot;, # Highly recommended for user events that are the result of PredictionService.Predict. This field enables accurate attribution of recommendation model performance. The value must be a valid PredictResponse.attribution_token for user events that are the result of PredictionService.Predict. The value must be a valid SearchResponse.attribution_token for user events that are the result of SearchService.Search. This token enables us to accurately attribute page view or purchase back to the event and the particular predict response containing this clicked/purchased product. If user clicks on product K in the recommendation results, pass PredictResponse.attribution_token as a URL parameter to product K&#x27;s page. When recording events on product K&#x27;s page, log the PredictResponse.attribution_token to this field.
           &quot;cartId&quot;: &quot;A String&quot;, # The id or name of the associated shopping cart. This id is used to associate multiple items added or present in the cart before purchase. This can only be set for `add-to-cart`, `purchase-complete`, or `shopping-cart-page-view` events.
+          &quot;completionDetail&quot;: { # Detailed completion information including completion attribution token and clicked completion info. # The main completion details related to the event. In a `completion` event, this field represents the completions returned to the end user and the clicked completion by the end user. In a `search` event, it represents the search event happens after clicking completion.
+            &quot;completionAttributionToken&quot;: &quot;A String&quot;, # Completion attribution token in CompleteQueryResponse.attribution_token.
+            &quot;selectedPosition&quot;: 42, # End user selected CompleteQueryResponse.CompletionResult.suggestion position, starting from 0.
+            &quot;selectedSuggestion&quot;: &quot;A String&quot;, # End user selected CompleteQueryResponse.CompletionResult.suggestion.
+          },
           &quot;eventTime&quot;: &quot;A String&quot;, # Only required for UserEventService.ImportUserEvents method. Timestamp of when the user event happened.
           &quot;eventType&quot;: &quot;A String&quot;, # Required. User event type. Allowed values are: * `add-to-cart`: Products being added to cart. * `category-page-view`: Special pages such as sale or promotion pages viewed. * `completion`: Completion query result showed/clicked. * `detail-page-view`: Products detail page viewed. * `home-page-view`: Homepage viewed. * `promotion-offered`: Promotion is offered to a user. * `promotion-not-offered`: Promotion is not offered to a user. * `purchase-complete`: User finishing a purchase. * `search`: Product search. * `shopping-cart-page-view`: User viewing a shopping cart.
           &quot;experimentIds&quot;: [ # A list of identifiers for the independent experiment groups this user event belongs to. This is used to distinguish between user events associated with different experiment setups (e.g. using Retail API, using different recommendation models).
             &quot;A String&quot;,
           ],
+          &quot;filter&quot;: &quot;A String&quot;, # The filter syntax consists of an expression language for constructing a predicate from one or more fields of the products being filtered. See SearchRequest.filter for definition and syntax. The value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;offset&quot;: 42, # An integer that specifies the current offset for pagination (the 0-indexed starting location, amongst the products deemed by the API as relevant). See SearchRequest.offset for definition. If this field is negative, an INVALID_ARGUMENT is returned. This can only be set for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;orderBy&quot;: &quot;A String&quot;, # The order in which products are returned. See SearchRequest.order_by for definition and syntax. The value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This can only be set for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
           &quot;pageCategories&quot;: [ # The categories associated with a category page. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). Category pages include special pages such as sales or promotions. For instance, a special sale page may have the category hierarchy: &quot;pageCategories&quot; : [&quot;Sales &gt; 2017 Black Friday Deals&quot;]. Required for `category-page-view` events. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
             &quot;A String&quot;,
           ],
@@ -180,23 +195,60 @@
           &quot;productDetails&quot;: [ # The main product details related to the event. This field is required for the following event types: * `add-to-cart` * `detail-page-view` * `purchase-complete` In a `search` event, this field represents the products returned to the end user on the current page (the end user may have not finished broswing the whole page yet). When a new page is returned to the end user, after pagination/filtering/ordering even for the same query, a new `search` event with different product_details is desired. The end user may have not finished broswing the whole page yet.
             { # Detailed product information associated with a user event.
               &quot;product&quot;: { # Product captures all metadata information of items to be recommended or searched. # Required. Product information. Only Product.id field is used when ingesting an event, all other product fields are ignored as we will look them up from the catalog.
-                &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters.
+                &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
                   &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+                    &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
                     &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
                       3.14,
                     ],
+                    &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
                     &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
                       &quot;A String&quot;,
                     ],
                   },
                 },
+                &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+                  &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+                    &quot;A String&quot;,
+                  ],
+                  &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+                    &quot;A String&quot;,
+                  ],
+                },
                 &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
                 &quot;availableQuantity&quot;: 42, # The available quantity of the item.
-                &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for recommendation.
+                &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+                &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+                  &quot;A String&quot;,
+                ],
                 &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
                   &quot;A String&quot;,
                 ],
+                &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+                  &quot;A String&quot;,
+                ],
+                &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+                  &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+                    &quot;A String&quot;,
+                  ],
+                  &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+                    &quot;A String&quot;,
+                  ],
+                },
+                &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+                  &quot;A String&quot;,
+                ],
                 &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+                &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+                &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+                  { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+                    &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+                      &quot;A String&quot;,
+                    ],
+                    &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+                  },
+                ],
+                &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
                 &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
                 &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
                   { # Product thumbnail/detail image.
@@ -205,20 +257,64 @@
                     &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
                   },
                 ],
+                &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+                &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+                  &quot;A String&quot;,
+                ],
                 &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+                &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+                  &quot;A String&quot;,
+                ],
                 &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
                   &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
-                  &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned.
+                  &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
                   &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
                   &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+                  &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+                  &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+                  &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+                    &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+                      &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+                      &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+                      &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+                      &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+                    },
+                    &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+                      &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+                      &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+                      &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+                      &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+                    },
+                  },
                 },
                 &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+                &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+                  { # Promotion information.
+                    &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+                  },
+                ],
+                &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+                &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+                  &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+                  &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+                  &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+                    42,
+                  ],
+                },
+                &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+                &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+                  &quot;A String&quot;,
+                ],
                 &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
                   &quot;A String&quot;,
                 ],
                 &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+                &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
                 &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
                 &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+                &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+                  # Object with schema name: GoogleCloudRetailV2betaProduct
+                ],
               },
               &quot;quantity&quot;: 42, # Quantity of the product associated with the user event. For example, this field will be 2 if two products are added to the shopping cart for `purchase-complete` event. Required for `add-to-cart` and `purchase-complete` event types.
             },
@@ -231,12 +327,13 @@
             &quot;tax&quot;: 3.14, # All the taxes associated with the transaction.
           },
           &quot;referrerUri&quot;: &quot;A String&quot;, # The referrer URL of the current page. When using the client side event reporting with JavaScript pixel and Google Tag Manager, this value is filled in automatically.
-          &quot;searchQuery&quot;: &quot;A String&quot;, # The user&#x27;s search query. The value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;searchQuery&quot;: &quot;A String&quot;, # The user&#x27;s search query. See SearchRequest.query for definition. The value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;sessionId&quot;: &quot;A String&quot;, # A unique identifier for tracking a visitor session with a length limit of 128 bytes. A session is an aggregation of an end user behavior in a time span. A general guideline to populate the sesion_id: 1. If user has no activity for 30 min, a new session_id should be assigned. 2. The session_id should be unique across users, suggest use uuid or add visitor_id as prefix.
           &quot;uri&quot;: &quot;A String&quot;, # Complete URL (window.location.href) of the user&#x27;s current page. When using the client side event reporting with JavaScript pixel and Google Tag Manager, this value is filled in automatically. Maximum length 5,000 characters.
           &quot;userInfo&quot;: { # Information of an end user. # User information.
             &quot;directUserRequest&quot;: True or False, # True if the request is made directly from the end user, in which case the ip_address and user_agent can be populated from the HTTP request. This flag should be set only if the API request is made directly from the end user such as a mobile app (and not if a gateway or a server is processing and pushing the user events). This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent.
-            &quot;ipAddress&quot;: &quot;A String&quot;, # The end user&#x27;s IP address. Required for getting SearchRespons.sponsored_results. This field is used to extract location information for personalization. This field must be either an IPv4 address (e.g. &quot;104.133.9.80&quot;) or an IPv6 address (e.g. &quot;2001:0db8:85a3:0000:0000:8a2e:0370:7334&quot;). Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
-            &quot;userAgent&quot;: &quot;A String&quot;, # User agent as included in the HTTP header. Required for getting SearchRespons.sponsored_results. The field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the client side event reporting with GTM or JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
+            &quot;ipAddress&quot;: &quot;A String&quot;, # The end user&#x27;s IP address. Required for getting SearchResponse.sponsored_results. This field is used to extract location information for personalization. This field must be either an IPv4 address (e.g. &quot;104.133.9.80&quot;) or an IPv6 address (e.g. &quot;2001:0db8:85a3:0000:0000:8a2e:0370:7334&quot;). Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
+            &quot;userAgent&quot;: &quot;A String&quot;, # User agent as included in the HTTP header. Required for getting SearchResponse.sponsored_results. The field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the client side event reporting with GTM or JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
             &quot;userId&quot;: &quot;A String&quot;, # Highly recommended for logged-in users. Unique identifier for logged-in user, such as a user name. The field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.
           },
           &quot;visitorId&quot;: &quot;A String&quot;, # Required. A unique identifier for tracking visitors. For example, this could be implemented with an HTTP cookie, which should be able to uniquely identify a visitor on a single device. This unique identifier should not change if the visitor log in/out of the website. The field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. The field should not contain PII or user-data. We recommend to use Google Analystics [Client ID](https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#clientId) for this field.
@@ -372,21 +469,31 @@
 { # UserEvent captures all metadata information Retail API needs to know about how end users interact with customers&#x27; website.
   &quot;attributes&quot;: { # Extra user event features to include in the recommendation model. The key must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. For product recommendation, an example of extra user information is traffic_channel, i.e. how user arrives at the site. Users can arrive at the site by coming to the site directly, or coming through Google search, and etc.
     &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+      &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
       &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         3.14,
       ],
+      &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
       &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         &quot;A String&quot;,
       ],
     },
   },
-  &quot;attributionToken&quot;: &quot;A String&quot;, # Highly recommended for user events that are the result of PredictionService.Predict. This field enables accurate attribution of recommendation model performance. The value must be a valid PredictResponse.attribution_token for user events that are the result of PredictionService.Predict. This token enables us to accurately attribute page view or purchase back to the event and the particular predict response containing this clicked/purchased product. If user clicks on product K in the recommendation results, pass PredictResponse.attribution_token as a URL parameter to product K&#x27;s page. When recording events on product K&#x27;s page, log the PredictResponse.attribution_token to this field.
+  &quot;attributionToken&quot;: &quot;A String&quot;, # Highly recommended for user events that are the result of PredictionService.Predict. This field enables accurate attribution of recommendation model performance. The value must be a valid PredictResponse.attribution_token for user events that are the result of PredictionService.Predict. The value must be a valid SearchResponse.attribution_token for user events that are the result of SearchService.Search. This token enables us to accurately attribute page view or purchase back to the event and the particular predict response containing this clicked/purchased product. If user clicks on product K in the recommendation results, pass PredictResponse.attribution_token as a URL parameter to product K&#x27;s page. When recording events on product K&#x27;s page, log the PredictResponse.attribution_token to this field.
   &quot;cartId&quot;: &quot;A String&quot;, # The id or name of the associated shopping cart. This id is used to associate multiple items added or present in the cart before purchase. This can only be set for `add-to-cart`, `purchase-complete`, or `shopping-cart-page-view` events.
+  &quot;completionDetail&quot;: { # Detailed completion information including completion attribution token and clicked completion info. # The main completion details related to the event. In a `completion` event, this field represents the completions returned to the end user and the clicked completion by the end user. In a `search` event, it represents the search event happens after clicking completion.
+    &quot;completionAttributionToken&quot;: &quot;A String&quot;, # Completion attribution token in CompleteQueryResponse.attribution_token.
+    &quot;selectedPosition&quot;: 42, # End user selected CompleteQueryResponse.CompletionResult.suggestion position, starting from 0.
+    &quot;selectedSuggestion&quot;: &quot;A String&quot;, # End user selected CompleteQueryResponse.CompletionResult.suggestion.
+  },
   &quot;eventTime&quot;: &quot;A String&quot;, # Only required for UserEventService.ImportUserEvents method. Timestamp of when the user event happened.
   &quot;eventType&quot;: &quot;A String&quot;, # Required. User event type. Allowed values are: * `add-to-cart`: Products being added to cart. * `category-page-view`: Special pages such as sale or promotion pages viewed. * `completion`: Completion query result showed/clicked. * `detail-page-view`: Products detail page viewed. * `home-page-view`: Homepage viewed. * `promotion-offered`: Promotion is offered to a user. * `promotion-not-offered`: Promotion is not offered to a user. * `purchase-complete`: User finishing a purchase. * `search`: Product search. * `shopping-cart-page-view`: User viewing a shopping cart.
   &quot;experimentIds&quot;: [ # A list of identifiers for the independent experiment groups this user event belongs to. This is used to distinguish between user events associated with different experiment setups (e.g. using Retail API, using different recommendation models).
     &quot;A String&quot;,
   ],
+  &quot;filter&quot;: &quot;A String&quot;, # The filter syntax consists of an expression language for constructing a predicate from one or more fields of the products being filtered. See SearchRequest.filter for definition and syntax. The value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;offset&quot;: 42, # An integer that specifies the current offset for pagination (the 0-indexed starting location, amongst the products deemed by the API as relevant). See SearchRequest.offset for definition. If this field is negative, an INVALID_ARGUMENT is returned. This can only be set for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;orderBy&quot;: &quot;A String&quot;, # The order in which products are returned. See SearchRequest.order_by for definition and syntax. The value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This can only be set for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
   &quot;pageCategories&quot;: [ # The categories associated with a category page. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). Category pages include special pages such as sales or promotions. For instance, a special sale page may have the category hierarchy: &quot;pageCategories&quot; : [&quot;Sales &gt; 2017 Black Friday Deals&quot;]. Required for `category-page-view` events. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
     &quot;A String&quot;,
   ],
@@ -394,23 +501,60 @@
   &quot;productDetails&quot;: [ # The main product details related to the event. This field is required for the following event types: * `add-to-cart` * `detail-page-view` * `purchase-complete` In a `search` event, this field represents the products returned to the end user on the current page (the end user may have not finished broswing the whole page yet). When a new page is returned to the end user, after pagination/filtering/ordering even for the same query, a new `search` event with different product_details is desired. The end user may have not finished broswing the whole page yet.
     { # Detailed product information associated with a user event.
       &quot;product&quot;: { # Product captures all metadata information of items to be recommended or searched. # Required. Product information. Only Product.id field is used when ingesting an event, all other product fields are ignored as we will look them up from the catalog.
-        &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters.
+        &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
           &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+            &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
             &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
               3.14,
             ],
+            &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
             &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
               &quot;A String&quot;,
             ],
           },
         },
+        &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+          &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+            &quot;A String&quot;,
+          ],
+          &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+            &quot;A String&quot;,
+          ],
+        },
         &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
         &quot;availableQuantity&quot;: 42, # The available quantity of the item.
-        &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for recommendation.
+        &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+        &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+          &quot;A String&quot;,
+        ],
         &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
           &quot;A String&quot;,
         ],
+        &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+          &quot;A String&quot;,
+        ],
+        &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+          &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+            &quot;A String&quot;,
+          ],
+          &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+            &quot;A String&quot;,
+          ],
+        },
+        &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+          &quot;A String&quot;,
+        ],
         &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+        &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+        &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+          { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+            &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+              &quot;A String&quot;,
+            ],
+            &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+          },
+        ],
+        &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
         &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
         &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
           { # Product thumbnail/detail image.
@@ -419,20 +563,64 @@
             &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
           },
         ],
+        &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+        &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+          &quot;A String&quot;,
+        ],
         &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+        &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+          &quot;A String&quot;,
+        ],
         &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
           &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
-          &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned.
+          &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
           &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
           &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+          &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+          &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+          &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+            &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+              &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+              &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+              &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+              &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+            },
+            &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+              &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+              &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+              &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+              &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+            },
+          },
         },
         &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+        &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+          { # Promotion information.
+            &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+          },
+        ],
+        &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+        &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+          &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+            42,
+          ],
+        },
+        &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+          &quot;A String&quot;,
+        ],
         &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
           &quot;A String&quot;,
         ],
         &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+        &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
         &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
         &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+        &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+          # Object with schema name: GoogleCloudRetailV2betaProduct
+        ],
       },
       &quot;quantity&quot;: 42, # Quantity of the product associated with the user event. For example, this field will be 2 if two products are added to the shopping cart for `purchase-complete` event. Required for `add-to-cart` and `purchase-complete` event types.
     },
@@ -445,12 +633,13 @@
     &quot;tax&quot;: 3.14, # All the taxes associated with the transaction.
   },
   &quot;referrerUri&quot;: &quot;A String&quot;, # The referrer URL of the current page. When using the client side event reporting with JavaScript pixel and Google Tag Manager, this value is filled in automatically.
-  &quot;searchQuery&quot;: &quot;A String&quot;, # The user&#x27;s search query. The value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;searchQuery&quot;: &quot;A String&quot;, # The user&#x27;s search query. See SearchRequest.query for definition. The value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;sessionId&quot;: &quot;A String&quot;, # A unique identifier for tracking a visitor session with a length limit of 128 bytes. A session is an aggregation of an end user behavior in a time span. A general guideline to populate the sesion_id: 1. If user has no activity for 30 min, a new session_id should be assigned. 2. The session_id should be unique across users, suggest use uuid or add visitor_id as prefix.
   &quot;uri&quot;: &quot;A String&quot;, # Complete URL (window.location.href) of the user&#x27;s current page. When using the client side event reporting with JavaScript pixel and Google Tag Manager, this value is filled in automatically. Maximum length 5,000 characters.
   &quot;userInfo&quot;: { # Information of an end user. # User information.
     &quot;directUserRequest&quot;: True or False, # True if the request is made directly from the end user, in which case the ip_address and user_agent can be populated from the HTTP request. This flag should be set only if the API request is made directly from the end user such as a mobile app (and not if a gateway or a server is processing and pushing the user events). This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent.
-    &quot;ipAddress&quot;: &quot;A String&quot;, # The end user&#x27;s IP address. Required for getting SearchRespons.sponsored_results. This field is used to extract location information for personalization. This field must be either an IPv4 address (e.g. &quot;104.133.9.80&quot;) or an IPv6 address (e.g. &quot;2001:0db8:85a3:0000:0000:8a2e:0370:7334&quot;). Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
-    &quot;userAgent&quot;: &quot;A String&quot;, # User agent as included in the HTTP header. Required for getting SearchRespons.sponsored_results. The field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the client side event reporting with GTM or JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
+    &quot;ipAddress&quot;: &quot;A String&quot;, # The end user&#x27;s IP address. Required for getting SearchResponse.sponsored_results. This field is used to extract location information for personalization. This field must be either an IPv4 address (e.g. &quot;104.133.9.80&quot;) or an IPv6 address (e.g. &quot;2001:0db8:85a3:0000:0000:8a2e:0370:7334&quot;). Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
+    &quot;userAgent&quot;: &quot;A String&quot;, # User agent as included in the HTTP header. Required for getting SearchResponse.sponsored_results. The field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the client side event reporting with GTM or JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
     &quot;userId&quot;: &quot;A String&quot;, # Highly recommended for logged-in users. Unique identifier for logged-in user, such as a user name. The field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.
   },
   &quot;visitorId&quot;: &quot;A String&quot;, # Required. A unique identifier for tracking visitors. For example, this could be implemented with an HTTP cookie, which should be able to uniquely identify a visitor on a single device. This unique identifier should not change if the visitor log in/out of the website. The field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. The field should not contain PII or user-data. We recommend to use Google Analystics [Client ID](https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#clientId) for this field.
@@ -467,21 +656,31 @@
     { # UserEvent captures all metadata information Retail API needs to know about how end users interact with customers&#x27; website.
   &quot;attributes&quot;: { # Extra user event features to include in the recommendation model. The key must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. For product recommendation, an example of extra user information is traffic_channel, i.e. how user arrives at the site. Users can arrive at the site by coming to the site directly, or coming through Google search, and etc.
     &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+      &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
       &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         3.14,
       ],
+      &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
       &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
         &quot;A String&quot;,
       ],
     },
   },
-  &quot;attributionToken&quot;: &quot;A String&quot;, # Highly recommended for user events that are the result of PredictionService.Predict. This field enables accurate attribution of recommendation model performance. The value must be a valid PredictResponse.attribution_token for user events that are the result of PredictionService.Predict. This token enables us to accurately attribute page view or purchase back to the event and the particular predict response containing this clicked/purchased product. If user clicks on product K in the recommendation results, pass PredictResponse.attribution_token as a URL parameter to product K&#x27;s page. When recording events on product K&#x27;s page, log the PredictResponse.attribution_token to this field.
+  &quot;attributionToken&quot;: &quot;A String&quot;, # Highly recommended for user events that are the result of PredictionService.Predict. This field enables accurate attribution of recommendation model performance. The value must be a valid PredictResponse.attribution_token for user events that are the result of PredictionService.Predict. The value must be a valid SearchResponse.attribution_token for user events that are the result of SearchService.Search. This token enables us to accurately attribute page view or purchase back to the event and the particular predict response containing this clicked/purchased product. If user clicks on product K in the recommendation results, pass PredictResponse.attribution_token as a URL parameter to product K&#x27;s page. When recording events on product K&#x27;s page, log the PredictResponse.attribution_token to this field.
   &quot;cartId&quot;: &quot;A String&quot;, # The id or name of the associated shopping cart. This id is used to associate multiple items added or present in the cart before purchase. This can only be set for `add-to-cart`, `purchase-complete`, or `shopping-cart-page-view` events.
+  &quot;completionDetail&quot;: { # Detailed completion information including completion attribution token and clicked completion info. # The main completion details related to the event. In a `completion` event, this field represents the completions returned to the end user and the clicked completion by the end user. In a `search` event, it represents the search event happens after clicking completion.
+    &quot;completionAttributionToken&quot;: &quot;A String&quot;, # Completion attribution token in CompleteQueryResponse.attribution_token.
+    &quot;selectedPosition&quot;: 42, # End user selected CompleteQueryResponse.CompletionResult.suggestion position, starting from 0.
+    &quot;selectedSuggestion&quot;: &quot;A String&quot;, # End user selected CompleteQueryResponse.CompletionResult.suggestion.
+  },
   &quot;eventTime&quot;: &quot;A String&quot;, # Only required for UserEventService.ImportUserEvents method. Timestamp of when the user event happened.
   &quot;eventType&quot;: &quot;A String&quot;, # Required. User event type. Allowed values are: * `add-to-cart`: Products being added to cart. * `category-page-view`: Special pages such as sale or promotion pages viewed. * `completion`: Completion query result showed/clicked. * `detail-page-view`: Products detail page viewed. * `home-page-view`: Homepage viewed. * `promotion-offered`: Promotion is offered to a user. * `promotion-not-offered`: Promotion is not offered to a user. * `purchase-complete`: User finishing a purchase. * `search`: Product search. * `shopping-cart-page-view`: User viewing a shopping cart.
   &quot;experimentIds&quot;: [ # A list of identifiers for the independent experiment groups this user event belongs to. This is used to distinguish between user events associated with different experiment setups (e.g. using Retail API, using different recommendation models).
     &quot;A String&quot;,
   ],
+  &quot;filter&quot;: &quot;A String&quot;, # The filter syntax consists of an expression language for constructing a predicate from one or more fields of the products being filtered. See SearchRequest.filter for definition and syntax. The value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;offset&quot;: 42, # An integer that specifies the current offset for pagination (the 0-indexed starting location, amongst the products deemed by the API as relevant). See SearchRequest.offset for definition. If this field is negative, an INVALID_ARGUMENT is returned. This can only be set for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;orderBy&quot;: &quot;A String&quot;, # The order in which products are returned. See SearchRequest.order_by for definition and syntax. The value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This can only be set for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
   &quot;pageCategories&quot;: [ # The categories associated with a category page. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). Category pages include special pages such as sales or promotions. For instance, a special sale page may have the category hierarchy: &quot;pageCategories&quot; : [&quot;Sales &gt; 2017 Black Friday Deals&quot;]. Required for `category-page-view` events. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
     &quot;A String&quot;,
   ],
@@ -489,23 +688,60 @@
   &quot;productDetails&quot;: [ # The main product details related to the event. This field is required for the following event types: * `add-to-cart` * `detail-page-view` * `purchase-complete` In a `search` event, this field represents the products returned to the end user on the current page (the end user may have not finished broswing the whole page yet). When a new page is returned to the end user, after pagination/filtering/ordering even for the same query, a new `search` event with different product_details is desired. The end user may have not finished broswing the whole page yet.
     { # Detailed product information associated with a user event.
       &quot;product&quot;: { # Product captures all metadata information of items to be recommended or searched. # Required. Product information. Only Product.id field is used when ingesting an event, all other product fields are ignored as we will look them up from the catalog.
-        &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters.
+        &quot;attributes&quot;: { # Highly encouraged. Extra product attributes to be included. For example, for products, this could include the store name, vendor, style, color, etc. These are very strong signals for recommendation model, thus we highly recommend providing the attributes here. Features that can take on one of a limited number of possible values. Two types of features can be set are: Textual features. some examples would be the brand/maker of a product, or country of a customer. Numerical features. Some examples would be the height/weight of a product, or age of a customer. For example: `{ &quot;vendor&quot;: {&quot;text&quot;: [&quot;vendor123&quot;, &quot;vendor456&quot;]}, &quot;lengths_cm&quot;: {&quot;numbers&quot;:[2.3, 15.4]}, &quot;heights_cm&quot;: {&quot;numbers&quot;:[8.1, 6.4]} }`. This field needs to pass all below criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries count: 200 by default; 100 for Type.VARIANT. * The key must be a UTF-8 encoded string with a length limit of 128 characters. * Max indexable entries count: 200 by default; 40 for Type.VARIANT. * Max searchable entries count: 30. * For indexable attribute, the key must match the pattern: a-zA-Z0-9*. For example, key0LikeThis or KEY_1_LIKE_THIS.
           &quot;a_key&quot;: { # A custom attribute that is not explicitly modeled in Product.
+            &quot;indexable&quot;: True or False, # If true, custom attribute values are indexed, so that it can be filtered, faceted or boosted in SearchService.Search. This field is ignored in a UserEvent. See SearchRequest.filter, SearchRequest.facet_specs and SearchRequest.boost_spec for more details.
             &quot;numbers&quot;: [ # The numerical values of this custom attribute. For example, `[2.3, 15.4]` when the key is &quot;lengths_cm&quot;. At most 400 values are allowed.Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
               3.14,
             ],
+            &quot;searchable&quot;: True or False, # If true, custom attribute values are searchable by text queries in SearchService.Search. This field is ignored in a UserEvent. Only set if type text is set. Otherwise, a INVALID_ARGUMENT error is returned.
             &quot;text&quot;: [ # The textual values of this custom attribute. For example, `[&quot;yellow&quot;, &quot;green&quot;]` when the key is &quot;color&quot;. At most 400 values are allowed. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be set. Otherwise, an INVALID_ARGUMENT error is returned.
               &quot;A String&quot;,
             ],
           },
         },
+        &quot;audience&quot;: { # An intended audience of the Product for whom it&#x27;s sold. # The target group associated with a given audience (e.g. male, veterans, car owners, musicians, etc.) of the product.
+          &quot;ageGroups&quot;: [ # The age groups of the audience. Strongly encouraged to use the standard values: &quot;newborn&quot; (up to 3 months old), &quot;infant&quot; (3–12 months old), &quot;toddler&quot; (1–5 years old), &quot;kids&quot; (5–13 years old), &quot;adult&quot; (typically teens or older). At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [age_group](https://support.google.com/merchants/answer/6324463). Schema.org property [Product.audience.suggestedMinAge](https://schema.org/suggestedMinAge) and [Product.audience.suggestedMaxAge](https://schema.org/suggestedMaxAge).
+            &quot;A String&quot;,
+          ],
+          &quot;genders&quot;: [ # The genders of the audience. Strongly encouraged to use the standard values: &quot;male&quot;, &quot;female&quot;, &quot;unisex&quot;. At most 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gender](https://support.google.com/merchants/answer/6324479). Schema.org property [Product.audience.suggestedGender](https://schema.org/suggestedGender).
+            &quot;A String&quot;,
+          ],
+        },
         &quot;availability&quot;: &quot;A String&quot;, # The online availability of the Product. Default to Availability.IN_STOCK. Google Merchant Center Property [availability](https://support.google.com/merchants/answer/6324448). Schema.org Property [Offer.availability](https://schema.org/availability).
         &quot;availableQuantity&quot;: 42, # The available quantity of the item.
-        &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for recommendation.
+        &quot;availableTime&quot;: &quot;A String&quot;, # The timestamp when this Product becomes available for SearchService.Search.
+        &quot;brands&quot;: [ # The brands of the product. A maximum of 30 brands are allowed. Each brand must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [brand](https://support.google.com/merchants/answer/6324351). Schema.org property [Product.brand](https://schema.org/brand).
+          &quot;A String&quot;,
+        ],
         &quot;categories&quot;: [ # Product categories. This field is repeated for supporting one product belonging to several parallel categories. Strongly recommended using the full path for better search / recommendation quality. To represent full path of category, use &#x27;&gt;&#x27; sign to separate different hierarchies. If &#x27;&gt;&#x27; is part of the category name, please replace it with other character(s). For example, if a shoes product belongs to both [&quot;Shoes &amp; Accessories&quot; -&gt; &quot;Shoes&quot;] and [&quot;Sports &amp; Fitness&quot; -&gt; &quot;Athletic Clothing&quot; -&gt; &quot;Shoes&quot;], it could be represented as: &quot;categories&quot;: [ &quot;Shoes &amp; Accessories &gt; Shoes&quot;, &quot;Sports &amp; Fitness &gt; Athletic Clothing &gt; Shoes&quot; ] Must be set for Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At most 250 values are allowed per Product. Empty values are not allowed. Each value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property google_product_category. Schema.org property [Product.category] (https://schema.org/category). [mc_google_product_category]: https://support.google.com/merchants/answer/6324436
           &quot;A String&quot;,
         ],
+        &quot;collectionMemberIds&quot;: [ # The id of the collection members when type is Type.COLLECTION. Should not set it for other types. A maximum of 1000 values are allowed. Otherwise, an INVALID_ARGUMENT error is return.
+          &quot;A String&quot;,
+        ],
+        &quot;colorInfo&quot;: { # The color information of a Product. # The color of the product. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+          &quot;colorFamilies&quot;: [ # The standard color families. Strongly recommended to use the following standard color groups: &quot;Red&quot;, &quot;Pink&quot;, &quot;Orange&quot;, &quot;Yellow&quot;, &quot;Purple&quot;, &quot;Green&quot;, &quot;Cyan&quot;, &quot;Blue&quot;, &quot;Brown&quot;, &quot;White&quot;, &quot;Gray&quot;, &quot;Black&quot; and &quot;Mixed&quot;. Normally it is expected to have only 1 color family. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+            &quot;A String&quot;,
+          ],
+          &quot;colors&quot;: [ # The color display names, which may be different from standard color family names, such as the color aliases used in the website frontend. Normally it is expected to have only 1 color. May consider using single &quot;Mixed&quot; instead of multiple values. A maximum of 5 colors are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [color](https://support.google.com/merchants/answer/6324487). Schema.org property [Product.color](https://schema.org/color).
+            &quot;A String&quot;,
+          ],
+        },
+        &quot;conditions&quot;: [ # The condition of the product. Strongly encouraged to use the standard values: &quot;new&quot;, &quot;refurbished&quot;, &quot;used&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [condition](https://support.google.com/merchants/answer/6324469). Schema.org property [Offer.itemCondition](https://schema.org/itemCondition).
+          &quot;A String&quot;,
+        ],
         &quot;description&quot;: &quot;A String&quot;, # Product description. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [description](https://support.google.com/merchants/answer/6324468). schema.org property [Product.description](https://schema.org/description).
+        &quot;expireTime&quot;: &quot;A String&quot;, # The timestamp when this product becomes unavailable for SearchService.Search. If it is set, the Product is not available for SearchService.Search after expire_time. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts. Google Merchant Center property [expiration_date](https://support.google.com/merchants/answer/6324499).
+        &quot;fulfillmentInfo&quot;: [ # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods. All the elements must have distinct FulfillmentInfo.type. Otherwise, an INVALID_ARGUMENT error is returned.
+          { # Fulfillment information, such as the store IDs for in-store pickup or region IDs for different shipping methods.
+            &quot;placeIds&quot;: [ # The IDs for this type, such as the store IDs for FulfillmentInfo.type.pickup-in-store or the region IDs for FulfillmentInfo.type.same-day-delivery. A maximum of 2000 values are allowed. Each value must be a string with a length limit of 10 characters, matching the pattern [a-zA-Z0-9_-]+, such as &quot;store1&quot; or &quot;REGION-2&quot;. Otherwise, an INVALID_ARGUMENT error is returned.
+              &quot;A String&quot;,
+            ],
+            &quot;type&quot;: &quot;A String&quot;, # The fulfillment type, including commonly used types (such as pickup in store and same day delivery), and custom types. Customers have to map custom types to their display names before rendering UI. Supported values: * &quot;pickup-in-store&quot; * &quot;ship-to-store&quot; * &quot;same-day-delivery&quot; * &quot;next-day-delivery&quot; * &quot;custom-type-1&quot; * &quot;custom-type-2&quot; * &quot;custom-type-3&quot; * &quot;custom-type-4&quot; * &quot;custom-type-5&quot; If this field is set to an invalid value other than these, an INVALID_ARGUMENT error is returned.
+          },
+        ],
+        &quot;gtin&quot;: &quot;A String&quot;, # The Global Trade Item Number (GTIN) of the product. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [gtin](https://support.google.com/merchants/answer/6324461). Schema.org property [Product.isbn](https://schema.org/isbn) or [Product.gtin8](https://schema.org/gtin8) or [Product.gtin12](https://schema.org/gtin12) or [Product.gtin13](https://schema.org/gtin13) or [Product.gtin14](https://schema.org/gtin14). If the value is not a valid GTIN, an INVALID_ARGUMENT error is returned.
         &quot;id&quot;: &quot;A String&quot;, # Immutable. Product identifier, which is the final component of name. For example, this field is &quot;id_1&quot;, if name is `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`. This field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [id](https://support.google.com/merchants/answer/6324405). Schema.org Property [Product.sku](https://schema.org/sku).
         &quot;images&quot;: [ # Product images for the product.Highly recommended to put the main image to the first. A maximum of 300 images are allowed. Google Merchant Center property [image_link](https://support.google.com/merchants/answer/6324350). Schema.org property [Product.image](https://schema.org/image).
           { # Product thumbnail/detail image.
@@ -514,20 +750,64 @@
             &quot;width&quot;: 42, # Width of the image in number of pixels. This field must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
           },
         ],
+        &quot;languageCode&quot;: &quot;A String&quot;, # Language of the title/description and other string attributes. Use language tags defined by BCP 47. For product prediction, this field is ignored and the model automatically detects the text language. The Product can include text in different languages, but duplicating Products to provide text in multiple languages can result in degraded model performance. For product search this field is in use. It defaults to &quot;en-US&quot; if unset.
+        &quot;materials&quot;: [ # The material of the product. For example, &quot;leather&quot;, &quot;wooden&quot;. A maximum of 5 values are allowed. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [material](https://support.google.com/merchants/answer/6324410). Schema.org property [Product.material](https://schema.org/material).
+          &quot;A String&quot;,
+        ],
         &quot;name&quot;: &quot;A String&quot;, # Immutable. Full resource name of the product, such as `projects/*/locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`. The branch ID must be &quot;default_branch&quot;.
+        &quot;patterns&quot;: [ # The pattern or graphic print of the product. For example, &quot;striped&quot;, &quot;polka dot&quot;, &quot;paisley&quot;. A maximum of 5 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [pattern](https://support.google.com/merchants/answer/6324483). Schema.org property [Product.pattern](https://schema.org/pattern).
+          &quot;A String&quot;,
+        ],
         &quot;priceInfo&quot;: { # The price information of a Product. # Product price and cost information. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371).
           &quot;cost&quot;: 3.14, # The costs associated with the sale of a particular product. Used for gross profit reporting. * Profit = price - cost Google Merchant Center property [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
-          &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned.
+          &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an unrecognizable currency code, an INVALID_ARGUMENT error is returned. The Product.Type.VARIANT Products with the same Product.primary_product_id must share the same currency_code. Otherwise, a FAILED_PRECONDITION error is returned.
           &quot;originalPrice&quot;: 3.14, # Price of the product without any discount. If zero, by default set to be the price.
           &quot;price&quot;: 3.14, # Price of the product. Google Merchant Center property [price](https://support.google.com/merchants/answer/6324371). Schema.org property [Offer.priceSpecification](https://schema.org/priceSpecification).
+          &quot;priceEffectiveTime&quot;: &quot;A String&quot;, # The timestamp when the price starts to be effective. This can be set as a future timestamp, and the price is only used for search after price_effective_time. If so, the original_price must be set and original_price is used before price_effective_time. Do not set if price is always effective because it will cause additional latency during search.
+          &quot;priceExpireTime&quot;: &quot;A String&quot;, # The timestamp when the price stops to be effective. The price is used for search before price_expire_time. If this field is set, the original_price must be set and original_price is used after price_expire_time. Do not set if price is always effective because it will cause additional latency during search.
+          &quot;priceRange&quot;: { # The price range of all variant Product having the same Product.primary_product_id. # Output only. The price range of all the child Product.Type.VARIANT Products grouped together on the Product.Type.PRIMARY Product. Only populated for Product.Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+            &quot;originalPrice&quot;: { # A floating point interval. # The inclusive Product.pricing_info.original_price internal of all variant Product having the same Product.primary_product_id.
+              &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+              &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+              &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+              &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+            },
+            &quot;price&quot;: { # A floating point interval. # The inclusive Product.pricing_info.price interval of all variant Product having the same Product.primary_product_id.
+              &quot;exclusiveMaximum&quot;: 3.14, # Exclusive upper bound.
+              &quot;exclusiveMinimum&quot;: 3.14, # Exclusive lower bound.
+              &quot;maximum&quot;: 3.14, # Inclusive upper bound.
+              &quot;minimum&quot;: 3.14, # Inclusive lower bound.
+            },
+          },
         },
         &quot;primaryProductId&quot;: &quot;A String&quot;, # Variant group identifier. Must be an id, with the same parent branch with this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this field can only be empty or set to the same value as id. For VARIANT Products, this field cannot be empty. A maximum of 2,000 products are allowed to share the same Type.PRIMARY Product. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center Property [item_group_id](https://support.google.com/merchants/answer/6324507). Schema.org Property [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID). This field must be enabled before it can be used. [Learn more](/recommendations-ai/docs/catalog#item-group-id).
+        &quot;promotions&quot;: [ # The promotions applied to the product. A maximum of 10 values are allowed per Product.
+          { # Promotion information.
+            &quot;promotionId&quot;: &quot;A String&quot;, # ID of the promotion. For example, &quot;free gift&quot;. The value value must be a UTF-8 encoded string with a length limit of 128 characters, and match the pattern: a-zA-Z*. For example, id0LikeThis or ID_1_LIKE_THIS. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [promotion](https://support.google.com/merchants/answer/7050148).
+          },
+        ],
+        &quot;publishTime&quot;: &quot;A String&quot;, # The timestamp when the product is published by the retailer for the first time, which indicates the freshness of the products. Note that this field is different from available_time, given it purely describes product freshness regardless of when it is available on search and recommendation.
+        &quot;rating&quot;: { # The rating of a Product. # The rating of this product.
+          &quot;averageRating&quot;: 3.14, # The average rating of the Product. The rating is scaled at 1-5. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;ratingCount&quot;: 42, # The total number of ratings. This value is independent of the value of rating_histogram. This value must be nonnegative. Otherwise, an INVALID_ARGUMENT error is returned.
+          &quot;ratingHistogram&quot;: [ # List of rating counts per rating value (index = rating - 1). The list is empty if there is no rating. If the list is non-empty, its size is always 5. Otherwise, an INVALID_ARGUMENT error is returned. For example, [41, 14, 13, 47, 303]. It means that the Product got 41 ratings with 1 star, 14 ratings with 2 star, and so on.
+            42,
+          ],
+        },
+        &quot;retrievableFields&quot;: &quot;A String&quot;, # Indicates which fields in the Products are returned in SearchResponse. Supported fields for all types: * audience * availability * brands * color_info * conditions * gtin * materials * name * patterns * price_info * rating * sizes * title * uri Supported fields only for Type.PRIMARY and Type.COLLECTION: * categories * description * images Supported fields only for Type.VARIANT: * Only the first image in images To mark attributes as retrievable, include paths of the form &quot;attributes.key&quot; where &quot;key&quot; is the key of a custom attribute, as specified in attributes. For Type.PRIMARY and Type.COLLECTION, the following fields are always returned in SearchResponse by default: * name For Type.VARIANT, the following fields are always returned in by default: * name * color_info Maximum number of paths is 20. Otherwise, an INVALID_ARGUMENT error is returned.
+        &quot;sizes&quot;: [ # The size of the product. To represent different size systems or size types, consider using this format: [[[size_system:]size_type:]size_value]. For example, in &quot;US:MENS:M&quot;, &quot;US&quot; represents size system; &quot;MENS&quot; represents size type; &quot;M&quot; represents size value. In &quot;GIRLS:27&quot;, size system is empty; &quot;GIRLS&quot; represents size type; &quot;27&quot; represents size value. In &quot;32 inches&quot;, both size system and size type are empty, while size value is &quot;32 inches&quot;. A maximum of 20 values are allowed per Product. Each value must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [size](https://support.google.com/merchants/answer/6324492), [size_type](https://support.google.com/merchants/answer/6324497) and [size_system](https://support.google.com/merchants/answer/6324502). Schema.org property [Product.size](https://schema.org/size).
+          &quot;A String&quot;,
+        ],
         &quot;tags&quot;: [ # Custom tags associated with the product. At most 250 values are allowed per Product. This value must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag can be used for filtering recommendation results by passing the tag as part of the PredictRequest.filter. Google Merchant Center property [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
           &quot;A String&quot;,
         ],
         &quot;title&quot;: &quot;A String&quot;, # Required. Product title. This field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [title](https://support.google.com/merchants/answer/6324415). Schema.org property [Product.name](https://schema.org/name).
+        &quot;ttl&quot;: &quot;A String&quot;, # Input only. The TTL (time to live) of the product. If it is set, expire_time is set as current timestamp plus ttl. The derived expire_time is returned in the output and ttl is left blank when retrieving the Product. If it is set, the product is not available for SearchService.Search after current timestamp plus ttl. However, the product can still be retrieved by ProductService.GetProduct and ProductService.ListProducts.
         &quot;type&quot;: &quot;A String&quot;, # Immutable. The type of the product. Default to Catalog.product_level_config.ingestion_product_type if unset.
         &quot;uri&quot;: &quot;A String&quot;, # Canonical URL directly linking to the product detail page. It is strongly recommended to provide a valid uri for the product, otherwise the service performance could be significantly degraded. This field must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. Google Merchant Center property [link](https://support.google.com/merchants/answer/6324416). Schema.org property [Offer.url](https://schema.org/url).
+        &quot;variants&quot;: [ # Output only. Product variants grouped together on primary product which share similar product attributes. It&#x27;s automatically grouped by primary_product_id for all the product variants. Only populated for Type.PRIMARY Products. Note: This field is OUTPUT_ONLY for ProductService.GetProduct. Do not set this field in API requests.
+          # Object with schema name: GoogleCloudRetailV2betaProduct
+        ],
       },
       &quot;quantity&quot;: 42, # Quantity of the product associated with the user event. For example, this field will be 2 if two products are added to the shopping cart for `purchase-complete` event. Required for `add-to-cart` and `purchase-complete` event types.
     },
@@ -540,12 +820,13 @@
     &quot;tax&quot;: 3.14, # All the taxes associated with the transaction.
   },
   &quot;referrerUri&quot;: &quot;A String&quot;, # The referrer URL of the current page. When using the client side event reporting with JavaScript pixel and Google Tag Manager, this value is filled in automatically.
-  &quot;searchQuery&quot;: &quot;A String&quot;, # The user&#x27;s search query. The value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;searchQuery&quot;: &quot;A String&quot;, # The user&#x27;s search query. See SearchRequest.query for definition. The value must be a UTF-8 encoded string with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. At least one of search_query or page_categories is required for `search` events. Other event types should not set this field. Otherwise, an INVALID_ARGUMENT error is returned.
+  &quot;sessionId&quot;: &quot;A String&quot;, # A unique identifier for tracking a visitor session with a length limit of 128 bytes. A session is an aggregation of an end user behavior in a time span. A general guideline to populate the sesion_id: 1. If user has no activity for 30 min, a new session_id should be assigned. 2. The session_id should be unique across users, suggest use uuid or add visitor_id as prefix.
   &quot;uri&quot;: &quot;A String&quot;, # Complete URL (window.location.href) of the user&#x27;s current page. When using the client side event reporting with JavaScript pixel and Google Tag Manager, this value is filled in automatically. Maximum length 5,000 characters.
   &quot;userInfo&quot;: { # Information of an end user. # User information.
     &quot;directUserRequest&quot;: True or False, # True if the request is made directly from the end user, in which case the ip_address and user_agent can be populated from the HTTP request. This flag should be set only if the API request is made directly from the end user such as a mobile app (and not if a gateway or a server is processing and pushing the user events). This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent.
-    &quot;ipAddress&quot;: &quot;A String&quot;, # The end user&#x27;s IP address. Required for getting SearchRespons.sponsored_results. This field is used to extract location information for personalization. This field must be either an IPv4 address (e.g. &quot;104.133.9.80&quot;) or an IPv6 address (e.g. &quot;2001:0db8:85a3:0000:0000:8a2e:0370:7334&quot;). Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
-    &quot;userAgent&quot;: &quot;A String&quot;, # User agent as included in the HTTP header. Required for getting SearchRespons.sponsored_results. The field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the client side event reporting with GTM or JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
+    &quot;ipAddress&quot;: &quot;A String&quot;, # The end user&#x27;s IP address. Required for getting SearchResponse.sponsored_results. This field is used to extract location information for personalization. This field must be either an IPv4 address (e.g. &quot;104.133.9.80&quot;) or an IPv6 address (e.g. &quot;2001:0db8:85a3:0000:0000:8a2e:0370:7334&quot;). Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
+    &quot;userAgent&quot;: &quot;A String&quot;, # User agent as included in the HTTP header. Required for getting SearchResponse.sponsored_results. The field must be a UTF-8 encoded string with a length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This should not be set when using the client side event reporting with GTM or JavaScript tag in UserEventService.CollectUserEvent or if direct_user_request is set.
     &quot;userId&quot;: &quot;A String&quot;, # Highly recommended for logged-in users. Unique identifier for logged-in user, such as a user name. The field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned.
   },
   &quot;visitorId&quot;: &quot;A String&quot;, # Required. A unique identifier for tracking visitors. For example, this could be implemented with an HTTP cookie, which should be able to uniquely identify a visitor on a single device. This unique identifier should not change if the visitor log in/out of the website. The field must be a UTF-8 encoded string with a length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is returned. The field should not contain PII or user-data. We recommend to use Google Analystics [Client ID](https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#clientId) for this field.
diff --git a/docs/dyn/run_v1.namespaces.configurations.html b/docs/dyn/run_v1.namespaces.configurations.html
index c405905..8604930 100644
--- a/docs/dyn/run_v1.namespaces.configurations.html
+++ b/docs/dyn/run_v1.namespaces.configurations.html
@@ -173,7 +173,7 @@
         &quot;uid&quot;: &quot;A String&quot;, # (Optional) UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
       },
       &quot;spec&quot;: { # RevisionSpec holds the desired state of the Revision (from the client). # RevisionSpec holds the desired state of the Revision (from the client).
-        &quot;containerConcurrency&quot;: 42, # (Optional) ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
+        &quot;containerConcurrency&quot;: 42, # Optional. ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
         &quot;containers&quot;: [ # Containers holds the single container that defines the unit of execution for this Revision. In the context of a Revision, we disallow a number of fields on this Container, including: name and lifecycle. In Cloud Run, only a single container may be provided. The runtime contract is documented here: https://github.com/knative/serving/blob/master/docs/runtime-contract.md
           { # A single application container. This specifies both the container to run, the command to run in the container and the arguments to supply to it. Note that additional arguments may be supplied by the system to the container at runtime.
             &quot;args&quot;: [ # (Optional) Arguments to the entrypoint. The docker image&#x27;s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container&#x27;s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
@@ -398,11 +398,11 @@
 
 Args:
   parent: string, The namespace from which the configurations should be listed. For Cloud Run (fully managed), replace {namespace_id} with the project ID or number. (required)
-  continue: string, Optional encoded string to continue paging.
+  continue: string, Optional. Encoded string to continue paging.
   fieldSelector: string, Allows to filter resources based on a specific value for a field name. Send this in a query string format. i.e. &#x27;metadata.name%3Dlorem&#x27;. Not currently used by Cloud Run.
   includeUninitialized: boolean, Not currently used by Cloud Run.
   labelSelector: string, Allows to filter resources based on a label. Supported operations are =, !=, exists, in, and notIn.
-  limit: integer, The maximum number of records that should be returned.
+  limit: integer, Optional. The maximum number of records that should be returned.
   resourceVersion: string, The baseline resource version from which the list or watch operation should start. Not currently used by Cloud Run.
   watch: boolean, Flag that indicates that the client expects to watch this resource as well. Not currently used by Cloud Run.
   x__xgafv: string, V1 error format.
@@ -486,7 +486,7 @@
             &quot;uid&quot;: &quot;A String&quot;, # (Optional) UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
           },
           &quot;spec&quot;: { # RevisionSpec holds the desired state of the Revision (from the client). # RevisionSpec holds the desired state of the Revision (from the client).
-            &quot;containerConcurrency&quot;: 42, # (Optional) ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
+            &quot;containerConcurrency&quot;: 42, # Optional. ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
             &quot;containers&quot;: [ # Containers holds the single container that defines the unit of execution for this Revision. In the context of a Revision, we disallow a number of fields on this Container, including: name and lifecycle. In Cloud Run, only a single container may be provided. The runtime contract is documented here: https://github.com/knative/serving/blob/master/docs/runtime-contract.md
               { # A single application container. This specifies both the container to run, the command to run in the container and the arguments to supply to it. Note that additional arguments may be supplied by the system to the container at runtime.
                 &quot;args&quot;: [ # (Optional) Arguments to the entrypoint. The docker image&#x27;s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container&#x27;s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
diff --git a/docs/dyn/run_v1.namespaces.domainmappings.html b/docs/dyn/run_v1.namespaces.domainmappings.html
index 85f0c0a..68187a0 100644
--- a/docs/dyn/run_v1.namespaces.domainmappings.html
+++ b/docs/dyn/run_v1.namespaces.domainmappings.html
@@ -164,7 +164,7 @@
         &quot;type&quot;: &quot;A String&quot;, # Resource record type. Example: `AAAA`.
       },
     ],
-    &quot;url&quot;: &quot;A String&quot;, # Cloud Run fully managed: not supported Cloud Run on GKE: supported Holds the URL that will serve the traffic of the DomainMapping. +optional
+    &quot;url&quot;: &quot;A String&quot;, # Optional. Cloud Run fully managed: not supported Cloud Run on GKE: supported Holds the URL that will serve the traffic of the DomainMapping.
   },
 }
 
@@ -237,7 +237,7 @@
         &quot;type&quot;: &quot;A String&quot;, # Resource record type. Example: `AAAA`.
       },
     ],
-    &quot;url&quot;: &quot;A String&quot;, # Cloud Run fully managed: not supported Cloud Run on GKE: supported Holds the URL that will serve the traffic of the DomainMapping. +optional
+    &quot;url&quot;: &quot;A String&quot;, # Optional. Cloud Run fully managed: not supported Cloud Run on GKE: supported Holds the URL that will serve the traffic of the DomainMapping.
   },
 }</pre>
 </div>
@@ -361,7 +361,7 @@
         &quot;type&quot;: &quot;A String&quot;, # Resource record type. Example: `AAAA`.
       },
     ],
-    &quot;url&quot;: &quot;A String&quot;, # Cloud Run fully managed: not supported Cloud Run on GKE: supported Holds the URL that will serve the traffic of the DomainMapping. +optional
+    &quot;url&quot;: &quot;A String&quot;, # Optional. Cloud Run fully managed: not supported Cloud Run on GKE: supported Holds the URL that will serve the traffic of the DomainMapping.
   },
 }</pre>
 </div>
@@ -372,11 +372,11 @@
 
 Args:
   parent: string, The namespace from which the domain mappings should be listed. For Cloud Run (fully managed), replace {namespace_id} with the project ID or number. (required)
-  continue: string, Optional encoded string to continue paging.
+  continue: string, Optional. Encoded string to continue paging.
   fieldSelector: string, Allows to filter resources based on a specific value for a field name. Send this in a query string format. i.e. &#x27;metadata.name%3Dlorem&#x27;. Not currently used by Cloud Run.
   includeUninitialized: boolean, Not currently used by Cloud Run.
   labelSelector: string, Allows to filter resources based on a label. Supported operations are =, !=, exists, in, and notIn.
-  limit: integer, The maximum number of records that should be returned.
+  limit: integer, Optional. The maximum number of records that should be returned.
   resourceVersion: string, The baseline resource version from which the list or watch operation should start. Not currently used by Cloud Run.
   watch: boolean, Flag that indicates that the client expects to watch this resource as well. Not currently used by Cloud Run.
   x__xgafv: string, V1 error format.
@@ -450,7 +450,7 @@
             &quot;type&quot;: &quot;A String&quot;, # Resource record type. Example: `AAAA`.
           },
         ],
-        &quot;url&quot;: &quot;A String&quot;, # Cloud Run fully managed: not supported Cloud Run on GKE: supported Holds the URL that will serve the traffic of the DomainMapping. +optional
+        &quot;url&quot;: &quot;A String&quot;, # Optional. Cloud Run fully managed: not supported Cloud Run on GKE: supported Holds the URL that will serve the traffic of the DomainMapping.
       },
     },
   ],
diff --git a/docs/dyn/run_v1.namespaces.revisions.html b/docs/dyn/run_v1.namespaces.revisions.html
index b551af3..57c6c05 100644
--- a/docs/dyn/run_v1.namespaces.revisions.html
+++ b/docs/dyn/run_v1.namespaces.revisions.html
@@ -187,7 +187,7 @@
     &quot;uid&quot;: &quot;A String&quot;, # (Optional) UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
   },
   &quot;spec&quot;: { # RevisionSpec holds the desired state of the Revision (from the client). # Spec holds the desired state of the Revision (from the client).
-    &quot;containerConcurrency&quot;: 42, # (Optional) ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
+    &quot;containerConcurrency&quot;: 42, # Optional. ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
     &quot;containers&quot;: [ # Containers holds the single container that defines the unit of execution for this Revision. In the context of a Revision, we disallow a number of fields on this Container, including: name and lifecycle. In Cloud Run, only a single container may be provided. The runtime contract is documented here: https://github.com/knative/serving/blob/master/docs/runtime-contract.md
       { # A single application container. This specifies both the container to run, the command to run in the container and the arguments to supply to it. Note that additional arguments may be supplied by the system to the container at runtime.
         &quot;args&quot;: [ # (Optional) Arguments to the entrypoint. The docker image&#x27;s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container&#x27;s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
@@ -398,7 +398,7 @@
       },
     ],
     &quot;imageDigest&quot;: &quot;A String&quot;, # ImageDigest holds the resolved digest for the image specified within .Spec.Container.Image. The digest is resolved during the creation of Revision. This field holds the digest value regardless of whether a tag or digest was originally specified in the Container object.
-    &quot;logUrl&quot;: &quot;A String&quot;, # Specifies the generated logging url for this particular revision based on the revision url template specified in the controller&#x27;s config. +optional
+    &quot;logUrl&quot;: &quot;A String&quot;, # Optional. Specifies the generated logging url for this particular revision based on the revision url template specified in the controller&#x27;s config.
     &quot;observedGeneration&quot;: 42, # ObservedGeneration is the &#x27;Generation&#x27; of the Revision that was last processed by the controller. Clients polling for completed reconciliation should poll until observedGeneration = metadata.generation, and the Ready condition&#x27;s status is True or False.
     &quot;serviceName&quot;: &quot;A String&quot;, # Not currently used by Cloud Run.
   },
@@ -411,11 +411,11 @@
 
 Args:
   parent: string, The namespace from which the revisions should be listed. For Cloud Run (fully managed), replace {namespace_id} with the project ID or number. (required)
-  continue: string, Optional encoded string to continue paging.
+  continue: string, Optional. Encoded string to continue paging.
   fieldSelector: string, Allows to filter resources based on a specific value for a field name. Send this in a query string format. i.e. &#x27;metadata.name%3Dlorem&#x27;. Not currently used by Cloud Run.
   includeUninitialized: boolean, Not currently used by Cloud Run.
   labelSelector: string, Allows to filter resources based on a label. Supported operations are =, !=, exists, in, and notIn.
-  limit: integer, The maximum number of records that should be returned.
+  limit: integer, Optional. The maximum number of records that should be returned.
   resourceVersion: string, The baseline resource version from which the list or watch operation should start. Not currently used by Cloud Run.
   watch: boolean, Flag that indicates that the client expects to watch this resource as well. Not currently used by Cloud Run.
   x__xgafv: string, V1 error format.
@@ -465,7 +465,7 @@
         &quot;uid&quot;: &quot;A String&quot;, # (Optional) UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
       },
       &quot;spec&quot;: { # RevisionSpec holds the desired state of the Revision (from the client). # Spec holds the desired state of the Revision (from the client).
-        &quot;containerConcurrency&quot;: 42, # (Optional) ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
+        &quot;containerConcurrency&quot;: 42, # Optional. ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
         &quot;containers&quot;: [ # Containers holds the single container that defines the unit of execution for this Revision. In the context of a Revision, we disallow a number of fields on this Container, including: name and lifecycle. In Cloud Run, only a single container may be provided. The runtime contract is documented here: https://github.com/knative/serving/blob/master/docs/runtime-contract.md
           { # A single application container. This specifies both the container to run, the command to run in the container and the arguments to supply to it. Note that additional arguments may be supplied by the system to the container at runtime.
             &quot;args&quot;: [ # (Optional) Arguments to the entrypoint. The docker image&#x27;s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container&#x27;s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
@@ -676,7 +676,7 @@
           },
         ],
         &quot;imageDigest&quot;: &quot;A String&quot;, # ImageDigest holds the resolved digest for the image specified within .Spec.Container.Image. The digest is resolved during the creation of Revision. This field holds the digest value regardless of whether a tag or digest was originally specified in the Container object.
-        &quot;logUrl&quot;: &quot;A String&quot;, # Specifies the generated logging url for this particular revision based on the revision url template specified in the controller&#x27;s config. +optional
+        &quot;logUrl&quot;: &quot;A String&quot;, # Optional. Specifies the generated logging url for this particular revision based on the revision url template specified in the controller&#x27;s config.
         &quot;observedGeneration&quot;: 42, # ObservedGeneration is the &#x27;Generation&#x27; of the Revision that was last processed by the controller. Clients polling for completed reconciliation should poll until observedGeneration = metadata.generation, and the Ready condition&#x27;s status is True or False.
         &quot;serviceName&quot;: &quot;A String&quot;, # Not currently used by Cloud Run.
       },
diff --git a/docs/dyn/run_v1.namespaces.routes.html b/docs/dyn/run_v1.namespaces.routes.html
index 4f89da5..2fdb6ad 100644
--- a/docs/dyn/run_v1.namespaces.routes.html
+++ b/docs/dyn/run_v1.namespaces.routes.html
@@ -142,10 +142,10 @@
     &quot;traffic&quot;: [ # Traffic specifies how to distribute traffic over a collection of Knative Revisions and Configurations. Cloud Run currently supports a single configurationName.
       { # TrafficTarget holds a single entry of the routing table for a Route.
         &quot;configurationName&quot;: &quot;A String&quot;, # ConfigurationName of a configuration to whose latest revision we will send this portion of traffic. When the &quot;status.latestReadyRevisionName&quot; of the referenced configuration changes, we will automatically migrate traffic from the prior &quot;latest ready&quot; revision to the new one. This field is never set in Route&#x27;s status, only its spec. This is mutually exclusive with RevisionName. Cloud Run currently supports a single ConfigurationName.
-        &quot;latestRevision&quot;: True or False, # LatestRevision may be optionally provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty. +optional
+        &quot;latestRevision&quot;: True or False, # Optional. LatestRevision may be provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty.
         &quot;percent&quot;: 42, # Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified. Cloud Run currently requires 100 percent for a single ConfigurationName TrafficTarget entry.
         &quot;revisionName&quot;: &quot;A String&quot;, # RevisionName of a specific revision to which to send this portion of traffic. This is mutually exclusive with ConfigurationName. Providing RevisionName in spec is not currently supported by Cloud Run.
-        &quot;tag&quot;: &quot;A String&quot;, # Tag is optionally used to expose a dedicated url for referencing this target exclusively. +optional
+        &quot;tag&quot;: &quot;A String&quot;, # Optional. Tag is used to expose a dedicated url for referencing this target exclusively.
         &quot;url&quot;: &quot;A String&quot;, # Output only. URL displays the URL for accessing tagged traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)
       },
     ],
@@ -168,10 +168,10 @@
     &quot;traffic&quot;: [ # Traffic holds the configured traffic distribution. These entries will always contain RevisionName references. When ConfigurationName appears in the spec, this will hold the LatestReadyRevisionName that we last observed.
       { # TrafficTarget holds a single entry of the routing table for a Route.
         &quot;configurationName&quot;: &quot;A String&quot;, # ConfigurationName of a configuration to whose latest revision we will send this portion of traffic. When the &quot;status.latestReadyRevisionName&quot; of the referenced configuration changes, we will automatically migrate traffic from the prior &quot;latest ready&quot; revision to the new one. This field is never set in Route&#x27;s status, only its spec. This is mutually exclusive with RevisionName. Cloud Run currently supports a single ConfigurationName.
-        &quot;latestRevision&quot;: True or False, # LatestRevision may be optionally provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty. +optional
+        &quot;latestRevision&quot;: True or False, # Optional. LatestRevision may be provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty.
         &quot;percent&quot;: 42, # Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified. Cloud Run currently requires 100 percent for a single ConfigurationName TrafficTarget entry.
         &quot;revisionName&quot;: &quot;A String&quot;, # RevisionName of a specific revision to which to send this portion of traffic. This is mutually exclusive with ConfigurationName. Providing RevisionName in spec is not currently supported by Cloud Run.
-        &quot;tag&quot;: &quot;A String&quot;, # Tag is optionally used to expose a dedicated url for referencing this target exclusively. +optional
+        &quot;tag&quot;: &quot;A String&quot;, # Optional. Tag is used to expose a dedicated url for referencing this target exclusively.
         &quot;url&quot;: &quot;A String&quot;, # Output only. URL displays the URL for accessing tagged traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)
       },
     ],
@@ -186,11 +186,11 @@
 
 Args:
   parent: string, The namespace from which the routes should be listed. For Cloud Run (fully managed), replace {namespace_id} with the project ID or number. (required)
-  continue: string, Optional encoded string to continue paging.
+  continue: string, Optional. Encoded string to continue paging.
   fieldSelector: string, Allows to filter resources based on a specific value for a field name. Send this in a query string format. i.e. &#x27;metadata.name%3Dlorem&#x27;. Not currently used by Cloud Run.
   includeUninitialized: boolean, Not currently used by Cloud Run.
   labelSelector: string, Allows to filter resources based on a label. Supported operations are =, !=, exists, in, and notIn.
-  limit: integer, The maximum number of records that should be returned.
+  limit: integer, Optional. The maximum number of records that should be returned.
   resourceVersion: string, The baseline resource version from which the list or watch operation should start. Not currently used by Cloud Run.
   watch: boolean, Flag that indicates that the client expects to watch this resource as well. Not currently used by Cloud Run.
   x__xgafv: string, V1 error format.
@@ -243,10 +243,10 @@
         &quot;traffic&quot;: [ # Traffic specifies how to distribute traffic over a collection of Knative Revisions and Configurations. Cloud Run currently supports a single configurationName.
           { # TrafficTarget holds a single entry of the routing table for a Route.
             &quot;configurationName&quot;: &quot;A String&quot;, # ConfigurationName of a configuration to whose latest revision we will send this portion of traffic. When the &quot;status.latestReadyRevisionName&quot; of the referenced configuration changes, we will automatically migrate traffic from the prior &quot;latest ready&quot; revision to the new one. This field is never set in Route&#x27;s status, only its spec. This is mutually exclusive with RevisionName. Cloud Run currently supports a single ConfigurationName.
-            &quot;latestRevision&quot;: True or False, # LatestRevision may be optionally provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty. +optional
+            &quot;latestRevision&quot;: True or False, # Optional. LatestRevision may be provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty.
             &quot;percent&quot;: 42, # Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified. Cloud Run currently requires 100 percent for a single ConfigurationName TrafficTarget entry.
             &quot;revisionName&quot;: &quot;A String&quot;, # RevisionName of a specific revision to which to send this portion of traffic. This is mutually exclusive with ConfigurationName. Providing RevisionName in spec is not currently supported by Cloud Run.
-            &quot;tag&quot;: &quot;A String&quot;, # Tag is optionally used to expose a dedicated url for referencing this target exclusively. +optional
+            &quot;tag&quot;: &quot;A String&quot;, # Optional. Tag is used to expose a dedicated url for referencing this target exclusively.
             &quot;url&quot;: &quot;A String&quot;, # Output only. URL displays the URL for accessing tagged traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)
           },
         ],
@@ -269,10 +269,10 @@
         &quot;traffic&quot;: [ # Traffic holds the configured traffic distribution. These entries will always contain RevisionName references. When ConfigurationName appears in the spec, this will hold the LatestReadyRevisionName that we last observed.
           { # TrafficTarget holds a single entry of the routing table for a Route.
             &quot;configurationName&quot;: &quot;A String&quot;, # ConfigurationName of a configuration to whose latest revision we will send this portion of traffic. When the &quot;status.latestReadyRevisionName&quot; of the referenced configuration changes, we will automatically migrate traffic from the prior &quot;latest ready&quot; revision to the new one. This field is never set in Route&#x27;s status, only its spec. This is mutually exclusive with RevisionName. Cloud Run currently supports a single ConfigurationName.
-            &quot;latestRevision&quot;: True or False, # LatestRevision may be optionally provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty. +optional
+            &quot;latestRevision&quot;: True or False, # Optional. LatestRevision may be provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty.
             &quot;percent&quot;: 42, # Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified. Cloud Run currently requires 100 percent for a single ConfigurationName TrafficTarget entry.
             &quot;revisionName&quot;: &quot;A String&quot;, # RevisionName of a specific revision to which to send this portion of traffic. This is mutually exclusive with ConfigurationName. Providing RevisionName in spec is not currently supported by Cloud Run.
-            &quot;tag&quot;: &quot;A String&quot;, # Tag is optionally used to expose a dedicated url for referencing this target exclusively. +optional
+            &quot;tag&quot;: &quot;A String&quot;, # Optional. Tag is used to expose a dedicated url for referencing this target exclusively.
             &quot;url&quot;: &quot;A String&quot;, # Output only. URL displays the URL for accessing tagged traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)
           },
         ],
diff --git a/docs/dyn/run_v1.namespaces.services.html b/docs/dyn/run_v1.namespaces.services.html
index fac7856..c3f1735 100644
--- a/docs/dyn/run_v1.namespaces.services.html
+++ b/docs/dyn/run_v1.namespaces.services.html
@@ -177,7 +177,7 @@
         &quot;uid&quot;: &quot;A String&quot;, # (Optional) UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
       },
       &quot;spec&quot;: { # RevisionSpec holds the desired state of the Revision (from the client). # RevisionSpec holds the desired state of the Revision (from the client).
-        &quot;containerConcurrency&quot;: 42, # (Optional) ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
+        &quot;containerConcurrency&quot;: 42, # Optional. ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
         &quot;containers&quot;: [ # Containers holds the single container that defines the unit of execution for this Revision. In the context of a Revision, we disallow a number of fields on this Container, including: name and lifecycle. In Cloud Run, only a single container may be provided. The runtime contract is documented here: https://github.com/knative/serving/blob/master/docs/runtime-contract.md
           { # A single application container. This specifies both the container to run, the command to run in the container and the arguments to supply to it. Note that additional arguments may be supplied by the system to the container at runtime.
             &quot;args&quot;: [ # (Optional) Arguments to the entrypoint. The docker image&#x27;s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container&#x27;s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
@@ -380,10 +380,10 @@
     &quot;traffic&quot;: [ # Traffic specifies how to distribute traffic over a collection of Knative Revisions and Configurations.
       { # TrafficTarget holds a single entry of the routing table for a Route.
         &quot;configurationName&quot;: &quot;A String&quot;, # ConfigurationName of a configuration to whose latest revision we will send this portion of traffic. When the &quot;status.latestReadyRevisionName&quot; of the referenced configuration changes, we will automatically migrate traffic from the prior &quot;latest ready&quot; revision to the new one. This field is never set in Route&#x27;s status, only its spec. This is mutually exclusive with RevisionName. Cloud Run currently supports a single ConfigurationName.
-        &quot;latestRevision&quot;: True or False, # LatestRevision may be optionally provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty. +optional
+        &quot;latestRevision&quot;: True or False, # Optional. LatestRevision may be provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty.
         &quot;percent&quot;: 42, # Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified. Cloud Run currently requires 100 percent for a single ConfigurationName TrafficTarget entry.
         &quot;revisionName&quot;: &quot;A String&quot;, # RevisionName of a specific revision to which to send this portion of traffic. This is mutually exclusive with ConfigurationName. Providing RevisionName in spec is not currently supported by Cloud Run.
-        &quot;tag&quot;: &quot;A String&quot;, # Tag is optionally used to expose a dedicated url for referencing this target exclusively. +optional
+        &quot;tag&quot;: &quot;A String&quot;, # Optional. Tag is used to expose a dedicated url for referencing this target exclusively.
         &quot;url&quot;: &quot;A String&quot;, # Output only. URL displays the URL for accessing tagged traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)
       },
     ],
@@ -408,10 +408,10 @@
     &quot;traffic&quot;: [ # From RouteStatus. Traffic holds the configured traffic distribution. These entries will always contain RevisionName references. When ConfigurationName appears in the spec, this will hold the LatestReadyRevisionName that we last observed.
       { # TrafficTarget holds a single entry of the routing table for a Route.
         &quot;configurationName&quot;: &quot;A String&quot;, # ConfigurationName of a configuration to whose latest revision we will send this portion of traffic. When the &quot;status.latestReadyRevisionName&quot; of the referenced configuration changes, we will automatically migrate traffic from the prior &quot;latest ready&quot; revision to the new one. This field is never set in Route&#x27;s status, only its spec. This is mutually exclusive with RevisionName. Cloud Run currently supports a single ConfigurationName.
-        &quot;latestRevision&quot;: True or False, # LatestRevision may be optionally provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty. +optional
+        &quot;latestRevision&quot;: True or False, # Optional. LatestRevision may be provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty.
         &quot;percent&quot;: 42, # Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified. Cloud Run currently requires 100 percent for a single ConfigurationName TrafficTarget entry.
         &quot;revisionName&quot;: &quot;A String&quot;, # RevisionName of a specific revision to which to send this portion of traffic. This is mutually exclusive with ConfigurationName. Providing RevisionName in spec is not currently supported by Cloud Run.
-        &quot;tag&quot;: &quot;A String&quot;, # Tag is optionally used to expose a dedicated url for referencing this target exclusively. +optional
+        &quot;tag&quot;: &quot;A String&quot;, # Optional. Tag is used to expose a dedicated url for referencing this target exclusively.
         &quot;url&quot;: &quot;A String&quot;, # Output only. URL displays the URL for accessing tagged traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)
       },
     ],
@@ -498,7 +498,7 @@
         &quot;uid&quot;: &quot;A String&quot;, # (Optional) UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
       },
       &quot;spec&quot;: { # RevisionSpec holds the desired state of the Revision (from the client). # RevisionSpec holds the desired state of the Revision (from the client).
-        &quot;containerConcurrency&quot;: 42, # (Optional) ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
+        &quot;containerConcurrency&quot;: 42, # Optional. ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
         &quot;containers&quot;: [ # Containers holds the single container that defines the unit of execution for this Revision. In the context of a Revision, we disallow a number of fields on this Container, including: name and lifecycle. In Cloud Run, only a single container may be provided. The runtime contract is documented here: https://github.com/knative/serving/blob/master/docs/runtime-contract.md
           { # A single application container. This specifies both the container to run, the command to run in the container and the arguments to supply to it. Note that additional arguments may be supplied by the system to the container at runtime.
             &quot;args&quot;: [ # (Optional) Arguments to the entrypoint. The docker image&#x27;s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container&#x27;s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
@@ -701,10 +701,10 @@
     &quot;traffic&quot;: [ # Traffic specifies how to distribute traffic over a collection of Knative Revisions and Configurations.
       { # TrafficTarget holds a single entry of the routing table for a Route.
         &quot;configurationName&quot;: &quot;A String&quot;, # ConfigurationName of a configuration to whose latest revision we will send this portion of traffic. When the &quot;status.latestReadyRevisionName&quot; of the referenced configuration changes, we will automatically migrate traffic from the prior &quot;latest ready&quot; revision to the new one. This field is never set in Route&#x27;s status, only its spec. This is mutually exclusive with RevisionName. Cloud Run currently supports a single ConfigurationName.
-        &quot;latestRevision&quot;: True or False, # LatestRevision may be optionally provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty. +optional
+        &quot;latestRevision&quot;: True or False, # Optional. LatestRevision may be provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty.
         &quot;percent&quot;: 42, # Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified. Cloud Run currently requires 100 percent for a single ConfigurationName TrafficTarget entry.
         &quot;revisionName&quot;: &quot;A String&quot;, # RevisionName of a specific revision to which to send this portion of traffic. This is mutually exclusive with ConfigurationName. Providing RevisionName in spec is not currently supported by Cloud Run.
-        &quot;tag&quot;: &quot;A String&quot;, # Tag is optionally used to expose a dedicated url for referencing this target exclusively. +optional
+        &quot;tag&quot;: &quot;A String&quot;, # Optional. Tag is used to expose a dedicated url for referencing this target exclusively.
         &quot;url&quot;: &quot;A String&quot;, # Output only. URL displays the URL for accessing tagged traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)
       },
     ],
@@ -729,10 +729,10 @@
     &quot;traffic&quot;: [ # From RouteStatus. Traffic holds the configured traffic distribution. These entries will always contain RevisionName references. When ConfigurationName appears in the spec, this will hold the LatestReadyRevisionName that we last observed.
       { # TrafficTarget holds a single entry of the routing table for a Route.
         &quot;configurationName&quot;: &quot;A String&quot;, # ConfigurationName of a configuration to whose latest revision we will send this portion of traffic. When the &quot;status.latestReadyRevisionName&quot; of the referenced configuration changes, we will automatically migrate traffic from the prior &quot;latest ready&quot; revision to the new one. This field is never set in Route&#x27;s status, only its spec. This is mutually exclusive with RevisionName. Cloud Run currently supports a single ConfigurationName.
-        &quot;latestRevision&quot;: True or False, # LatestRevision may be optionally provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty. +optional
+        &quot;latestRevision&quot;: True or False, # Optional. LatestRevision may be provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty.
         &quot;percent&quot;: 42, # Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified. Cloud Run currently requires 100 percent for a single ConfigurationName TrafficTarget entry.
         &quot;revisionName&quot;: &quot;A String&quot;, # RevisionName of a specific revision to which to send this portion of traffic. This is mutually exclusive with ConfigurationName. Providing RevisionName in spec is not currently supported by Cloud Run.
-        &quot;tag&quot;: &quot;A String&quot;, # Tag is optionally used to expose a dedicated url for referencing this target exclusively. +optional
+        &quot;tag&quot;: &quot;A String&quot;, # Optional. Tag is used to expose a dedicated url for referencing this target exclusively.
         &quot;url&quot;: &quot;A String&quot;, # Output only. URL displays the URL for accessing tagged traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)
       },
     ],
@@ -870,7 +870,7 @@
         &quot;uid&quot;: &quot;A String&quot;, # (Optional) UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
       },
       &quot;spec&quot;: { # RevisionSpec holds the desired state of the Revision (from the client). # RevisionSpec holds the desired state of the Revision (from the client).
-        &quot;containerConcurrency&quot;: 42, # (Optional) ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
+        &quot;containerConcurrency&quot;: 42, # Optional. ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
         &quot;containers&quot;: [ # Containers holds the single container that defines the unit of execution for this Revision. In the context of a Revision, we disallow a number of fields on this Container, including: name and lifecycle. In Cloud Run, only a single container may be provided. The runtime contract is documented here: https://github.com/knative/serving/blob/master/docs/runtime-contract.md
           { # A single application container. This specifies both the container to run, the command to run in the container and the arguments to supply to it. Note that additional arguments may be supplied by the system to the container at runtime.
             &quot;args&quot;: [ # (Optional) Arguments to the entrypoint. The docker image&#x27;s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container&#x27;s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
@@ -1073,10 +1073,10 @@
     &quot;traffic&quot;: [ # Traffic specifies how to distribute traffic over a collection of Knative Revisions and Configurations.
       { # TrafficTarget holds a single entry of the routing table for a Route.
         &quot;configurationName&quot;: &quot;A String&quot;, # ConfigurationName of a configuration to whose latest revision we will send this portion of traffic. When the &quot;status.latestReadyRevisionName&quot; of the referenced configuration changes, we will automatically migrate traffic from the prior &quot;latest ready&quot; revision to the new one. This field is never set in Route&#x27;s status, only its spec. This is mutually exclusive with RevisionName. Cloud Run currently supports a single ConfigurationName.
-        &quot;latestRevision&quot;: True or False, # LatestRevision may be optionally provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty. +optional
+        &quot;latestRevision&quot;: True or False, # Optional. LatestRevision may be provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty.
         &quot;percent&quot;: 42, # Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified. Cloud Run currently requires 100 percent for a single ConfigurationName TrafficTarget entry.
         &quot;revisionName&quot;: &quot;A String&quot;, # RevisionName of a specific revision to which to send this portion of traffic. This is mutually exclusive with ConfigurationName. Providing RevisionName in spec is not currently supported by Cloud Run.
-        &quot;tag&quot;: &quot;A String&quot;, # Tag is optionally used to expose a dedicated url for referencing this target exclusively. +optional
+        &quot;tag&quot;: &quot;A String&quot;, # Optional. Tag is used to expose a dedicated url for referencing this target exclusively.
         &quot;url&quot;: &quot;A String&quot;, # Output only. URL displays the URL for accessing tagged traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)
       },
     ],
@@ -1101,10 +1101,10 @@
     &quot;traffic&quot;: [ # From RouteStatus. Traffic holds the configured traffic distribution. These entries will always contain RevisionName references. When ConfigurationName appears in the spec, this will hold the LatestReadyRevisionName that we last observed.
       { # TrafficTarget holds a single entry of the routing table for a Route.
         &quot;configurationName&quot;: &quot;A String&quot;, # ConfigurationName of a configuration to whose latest revision we will send this portion of traffic. When the &quot;status.latestReadyRevisionName&quot; of the referenced configuration changes, we will automatically migrate traffic from the prior &quot;latest ready&quot; revision to the new one. This field is never set in Route&#x27;s status, only its spec. This is mutually exclusive with RevisionName. Cloud Run currently supports a single ConfigurationName.
-        &quot;latestRevision&quot;: True or False, # LatestRevision may be optionally provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty. +optional
+        &quot;latestRevision&quot;: True or False, # Optional. LatestRevision may be provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty.
         &quot;percent&quot;: 42, # Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified. Cloud Run currently requires 100 percent for a single ConfigurationName TrafficTarget entry.
         &quot;revisionName&quot;: &quot;A String&quot;, # RevisionName of a specific revision to which to send this portion of traffic. This is mutually exclusive with ConfigurationName. Providing RevisionName in spec is not currently supported by Cloud Run.
-        &quot;tag&quot;: &quot;A String&quot;, # Tag is optionally used to expose a dedicated url for referencing this target exclusively. +optional
+        &quot;tag&quot;: &quot;A String&quot;, # Optional. Tag is used to expose a dedicated url for referencing this target exclusively.
         &quot;url&quot;: &quot;A String&quot;, # Output only. URL displays the URL for accessing tagged traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)
       },
     ],
@@ -1119,11 +1119,11 @@
 
 Args:
   parent: string, The namespace from which the services should be listed. For Cloud Run (fully managed), replace {namespace_id} with the project ID or number. (required)
-  continue: string, Optional encoded string to continue paging.
+  continue: string, Optional. Encoded string to continue paging.
   fieldSelector: string, Allows to filter resources based on a specific value for a field name. Send this in a query string format. i.e. &#x27;metadata.name%3Dlorem&#x27;. Not currently used by Cloud Run.
   includeUninitialized: boolean, Not currently used by Cloud Run.
   labelSelector: string, Allows to filter resources based on a label. Supported operations are =, !=, exists, in, and notIn.
-  limit: integer, The maximum number of records that should be returned.
+  limit: integer, Optional. The maximum number of records that should be returned.
   resourceVersion: string, The baseline resource version from which the list or watch operation should start. Not currently used by Cloud Run.
   watch: boolean, Flag that indicates that the client expects to watch this resource as well. Not currently used by Cloud Run.
   x__xgafv: string, V1 error format.
@@ -1207,7 +1207,7 @@
             &quot;uid&quot;: &quot;A String&quot;, # (Optional) UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
           },
           &quot;spec&quot;: { # RevisionSpec holds the desired state of the Revision (from the client). # RevisionSpec holds the desired state of the Revision (from the client).
-            &quot;containerConcurrency&quot;: 42, # (Optional) ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
+            &quot;containerConcurrency&quot;: 42, # Optional. ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
             &quot;containers&quot;: [ # Containers holds the single container that defines the unit of execution for this Revision. In the context of a Revision, we disallow a number of fields on this Container, including: name and lifecycle. In Cloud Run, only a single container may be provided. The runtime contract is documented here: https://github.com/knative/serving/blob/master/docs/runtime-contract.md
               { # A single application container. This specifies both the container to run, the command to run in the container and the arguments to supply to it. Note that additional arguments may be supplied by the system to the container at runtime.
                 &quot;args&quot;: [ # (Optional) Arguments to the entrypoint. The docker image&#x27;s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container&#x27;s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
@@ -1410,10 +1410,10 @@
         &quot;traffic&quot;: [ # Traffic specifies how to distribute traffic over a collection of Knative Revisions and Configurations.
           { # TrafficTarget holds a single entry of the routing table for a Route.
             &quot;configurationName&quot;: &quot;A String&quot;, # ConfigurationName of a configuration to whose latest revision we will send this portion of traffic. When the &quot;status.latestReadyRevisionName&quot; of the referenced configuration changes, we will automatically migrate traffic from the prior &quot;latest ready&quot; revision to the new one. This field is never set in Route&#x27;s status, only its spec. This is mutually exclusive with RevisionName. Cloud Run currently supports a single ConfigurationName.
-            &quot;latestRevision&quot;: True or False, # LatestRevision may be optionally provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty. +optional
+            &quot;latestRevision&quot;: True or False, # Optional. LatestRevision may be provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty.
             &quot;percent&quot;: 42, # Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified. Cloud Run currently requires 100 percent for a single ConfigurationName TrafficTarget entry.
             &quot;revisionName&quot;: &quot;A String&quot;, # RevisionName of a specific revision to which to send this portion of traffic. This is mutually exclusive with ConfigurationName. Providing RevisionName in spec is not currently supported by Cloud Run.
-            &quot;tag&quot;: &quot;A String&quot;, # Tag is optionally used to expose a dedicated url for referencing this target exclusively. +optional
+            &quot;tag&quot;: &quot;A String&quot;, # Optional. Tag is used to expose a dedicated url for referencing this target exclusively.
             &quot;url&quot;: &quot;A String&quot;, # Output only. URL displays the URL for accessing tagged traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)
           },
         ],
@@ -1438,10 +1438,10 @@
         &quot;traffic&quot;: [ # From RouteStatus. Traffic holds the configured traffic distribution. These entries will always contain RevisionName references. When ConfigurationName appears in the spec, this will hold the LatestReadyRevisionName that we last observed.
           { # TrafficTarget holds a single entry of the routing table for a Route.
             &quot;configurationName&quot;: &quot;A String&quot;, # ConfigurationName of a configuration to whose latest revision we will send this portion of traffic. When the &quot;status.latestReadyRevisionName&quot; of the referenced configuration changes, we will automatically migrate traffic from the prior &quot;latest ready&quot; revision to the new one. This field is never set in Route&#x27;s status, only its spec. This is mutually exclusive with RevisionName. Cloud Run currently supports a single ConfigurationName.
-            &quot;latestRevision&quot;: True or False, # LatestRevision may be optionally provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty. +optional
+            &quot;latestRevision&quot;: True or False, # Optional. LatestRevision may be provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty.
             &quot;percent&quot;: 42, # Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified. Cloud Run currently requires 100 percent for a single ConfigurationName TrafficTarget entry.
             &quot;revisionName&quot;: &quot;A String&quot;, # RevisionName of a specific revision to which to send this portion of traffic. This is mutually exclusive with ConfigurationName. Providing RevisionName in spec is not currently supported by Cloud Run.
-            &quot;tag&quot;: &quot;A String&quot;, # Tag is optionally used to expose a dedicated url for referencing this target exclusively. +optional
+            &quot;tag&quot;: &quot;A String&quot;, # Optional. Tag is used to expose a dedicated url for referencing this target exclusively.
             &quot;url&quot;: &quot;A String&quot;, # Output only. URL displays the URL for accessing tagged traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)
           },
         ],
@@ -1540,7 +1540,7 @@
         &quot;uid&quot;: &quot;A String&quot;, # (Optional) UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
       },
       &quot;spec&quot;: { # RevisionSpec holds the desired state of the Revision (from the client). # RevisionSpec holds the desired state of the Revision (from the client).
-        &quot;containerConcurrency&quot;: 42, # (Optional) ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
+        &quot;containerConcurrency&quot;: 42, # Optional. ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
         &quot;containers&quot;: [ # Containers holds the single container that defines the unit of execution for this Revision. In the context of a Revision, we disallow a number of fields on this Container, including: name and lifecycle. In Cloud Run, only a single container may be provided. The runtime contract is documented here: https://github.com/knative/serving/blob/master/docs/runtime-contract.md
           { # A single application container. This specifies both the container to run, the command to run in the container and the arguments to supply to it. Note that additional arguments may be supplied by the system to the container at runtime.
             &quot;args&quot;: [ # (Optional) Arguments to the entrypoint. The docker image&#x27;s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container&#x27;s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
@@ -1743,10 +1743,10 @@
     &quot;traffic&quot;: [ # Traffic specifies how to distribute traffic over a collection of Knative Revisions and Configurations.
       { # TrafficTarget holds a single entry of the routing table for a Route.
         &quot;configurationName&quot;: &quot;A String&quot;, # ConfigurationName of a configuration to whose latest revision we will send this portion of traffic. When the &quot;status.latestReadyRevisionName&quot; of the referenced configuration changes, we will automatically migrate traffic from the prior &quot;latest ready&quot; revision to the new one. This field is never set in Route&#x27;s status, only its spec. This is mutually exclusive with RevisionName. Cloud Run currently supports a single ConfigurationName.
-        &quot;latestRevision&quot;: True or False, # LatestRevision may be optionally provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty. +optional
+        &quot;latestRevision&quot;: True or False, # Optional. LatestRevision may be provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty.
         &quot;percent&quot;: 42, # Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified. Cloud Run currently requires 100 percent for a single ConfigurationName TrafficTarget entry.
         &quot;revisionName&quot;: &quot;A String&quot;, # RevisionName of a specific revision to which to send this portion of traffic. This is mutually exclusive with ConfigurationName. Providing RevisionName in spec is not currently supported by Cloud Run.
-        &quot;tag&quot;: &quot;A String&quot;, # Tag is optionally used to expose a dedicated url for referencing this target exclusively. +optional
+        &quot;tag&quot;: &quot;A String&quot;, # Optional. Tag is used to expose a dedicated url for referencing this target exclusively.
         &quot;url&quot;: &quot;A String&quot;, # Output only. URL displays the URL for accessing tagged traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)
       },
     ],
@@ -1771,10 +1771,10 @@
     &quot;traffic&quot;: [ # From RouteStatus. Traffic holds the configured traffic distribution. These entries will always contain RevisionName references. When ConfigurationName appears in the spec, this will hold the LatestReadyRevisionName that we last observed.
       { # TrafficTarget holds a single entry of the routing table for a Route.
         &quot;configurationName&quot;: &quot;A String&quot;, # ConfigurationName of a configuration to whose latest revision we will send this portion of traffic. When the &quot;status.latestReadyRevisionName&quot; of the referenced configuration changes, we will automatically migrate traffic from the prior &quot;latest ready&quot; revision to the new one. This field is never set in Route&#x27;s status, only its spec. This is mutually exclusive with RevisionName. Cloud Run currently supports a single ConfigurationName.
-        &quot;latestRevision&quot;: True or False, # LatestRevision may be optionally provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty. +optional
+        &quot;latestRevision&quot;: True or False, # Optional. LatestRevision may be provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty.
         &quot;percent&quot;: 42, # Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified. Cloud Run currently requires 100 percent for a single ConfigurationName TrafficTarget entry.
         &quot;revisionName&quot;: &quot;A String&quot;, # RevisionName of a specific revision to which to send this portion of traffic. This is mutually exclusive with ConfigurationName. Providing RevisionName in spec is not currently supported by Cloud Run.
-        &quot;tag&quot;: &quot;A String&quot;, # Tag is optionally used to expose a dedicated url for referencing this target exclusively. +optional
+        &quot;tag&quot;: &quot;A String&quot;, # Optional. Tag is used to expose a dedicated url for referencing this target exclusively.
         &quot;url&quot;: &quot;A String&quot;, # Output only. URL displays the URL for accessing tagged traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)
       },
     ],
@@ -1861,7 +1861,7 @@
         &quot;uid&quot;: &quot;A String&quot;, # (Optional) UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
       },
       &quot;spec&quot;: { # RevisionSpec holds the desired state of the Revision (from the client). # RevisionSpec holds the desired state of the Revision (from the client).
-        &quot;containerConcurrency&quot;: 42, # (Optional) ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
+        &quot;containerConcurrency&quot;: 42, # Optional. ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
         &quot;containers&quot;: [ # Containers holds the single container that defines the unit of execution for this Revision. In the context of a Revision, we disallow a number of fields on this Container, including: name and lifecycle. In Cloud Run, only a single container may be provided. The runtime contract is documented here: https://github.com/knative/serving/blob/master/docs/runtime-contract.md
           { # A single application container. This specifies both the container to run, the command to run in the container and the arguments to supply to it. Note that additional arguments may be supplied by the system to the container at runtime.
             &quot;args&quot;: [ # (Optional) Arguments to the entrypoint. The docker image&#x27;s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container&#x27;s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
@@ -2064,10 +2064,10 @@
     &quot;traffic&quot;: [ # Traffic specifies how to distribute traffic over a collection of Knative Revisions and Configurations.
       { # TrafficTarget holds a single entry of the routing table for a Route.
         &quot;configurationName&quot;: &quot;A String&quot;, # ConfigurationName of a configuration to whose latest revision we will send this portion of traffic. When the &quot;status.latestReadyRevisionName&quot; of the referenced configuration changes, we will automatically migrate traffic from the prior &quot;latest ready&quot; revision to the new one. This field is never set in Route&#x27;s status, only its spec. This is mutually exclusive with RevisionName. Cloud Run currently supports a single ConfigurationName.
-        &quot;latestRevision&quot;: True or False, # LatestRevision may be optionally provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty. +optional
+        &quot;latestRevision&quot;: True or False, # Optional. LatestRevision may be provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty.
         &quot;percent&quot;: 42, # Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified. Cloud Run currently requires 100 percent for a single ConfigurationName TrafficTarget entry.
         &quot;revisionName&quot;: &quot;A String&quot;, # RevisionName of a specific revision to which to send this portion of traffic. This is mutually exclusive with ConfigurationName. Providing RevisionName in spec is not currently supported by Cloud Run.
-        &quot;tag&quot;: &quot;A String&quot;, # Tag is optionally used to expose a dedicated url for referencing this target exclusively. +optional
+        &quot;tag&quot;: &quot;A String&quot;, # Optional. Tag is used to expose a dedicated url for referencing this target exclusively.
         &quot;url&quot;: &quot;A String&quot;, # Output only. URL displays the URL for accessing tagged traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)
       },
     ],
@@ -2092,10 +2092,10 @@
     &quot;traffic&quot;: [ # From RouteStatus. Traffic holds the configured traffic distribution. These entries will always contain RevisionName references. When ConfigurationName appears in the spec, this will hold the LatestReadyRevisionName that we last observed.
       { # TrafficTarget holds a single entry of the routing table for a Route.
         &quot;configurationName&quot;: &quot;A String&quot;, # ConfigurationName of a configuration to whose latest revision we will send this portion of traffic. When the &quot;status.latestReadyRevisionName&quot; of the referenced configuration changes, we will automatically migrate traffic from the prior &quot;latest ready&quot; revision to the new one. This field is never set in Route&#x27;s status, only its spec. This is mutually exclusive with RevisionName. Cloud Run currently supports a single ConfigurationName.
-        &quot;latestRevision&quot;: True or False, # LatestRevision may be optionally provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty. +optional
+        &quot;latestRevision&quot;: True or False, # Optional. LatestRevision may be provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty.
         &quot;percent&quot;: 42, # Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified. Cloud Run currently requires 100 percent for a single ConfigurationName TrafficTarget entry.
         &quot;revisionName&quot;: &quot;A String&quot;, # RevisionName of a specific revision to which to send this portion of traffic. This is mutually exclusive with ConfigurationName. Providing RevisionName in spec is not currently supported by Cloud Run.
-        &quot;tag&quot;: &quot;A String&quot;, # Tag is optionally used to expose a dedicated url for referencing this target exclusively. +optional
+        &quot;tag&quot;: &quot;A String&quot;, # Optional. Tag is used to expose a dedicated url for referencing this target exclusively.
         &quot;url&quot;: &quot;A String&quot;, # Output only. URL displays the URL for accessing tagged traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)
       },
     ],
diff --git a/docs/dyn/run_v1.projects.locations.configurations.html b/docs/dyn/run_v1.projects.locations.configurations.html
index 0d6d9cc..678bcbe 100644
--- a/docs/dyn/run_v1.projects.locations.configurations.html
+++ b/docs/dyn/run_v1.projects.locations.configurations.html
@@ -173,7 +173,7 @@
         &quot;uid&quot;: &quot;A String&quot;, # (Optional) UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
       },
       &quot;spec&quot;: { # RevisionSpec holds the desired state of the Revision (from the client). # RevisionSpec holds the desired state of the Revision (from the client).
-        &quot;containerConcurrency&quot;: 42, # (Optional) ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
+        &quot;containerConcurrency&quot;: 42, # Optional. ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
         &quot;containers&quot;: [ # Containers holds the single container that defines the unit of execution for this Revision. In the context of a Revision, we disallow a number of fields on this Container, including: name and lifecycle. In Cloud Run, only a single container may be provided. The runtime contract is documented here: https://github.com/knative/serving/blob/master/docs/runtime-contract.md
           { # A single application container. This specifies both the container to run, the command to run in the container and the arguments to supply to it. Note that additional arguments may be supplied by the system to the container at runtime.
             &quot;args&quot;: [ # (Optional) Arguments to the entrypoint. The docker image&#x27;s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container&#x27;s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
@@ -398,11 +398,11 @@
 
 Args:
   parent: string, The namespace from which the configurations should be listed. For Cloud Run (fully managed), replace {namespace_id} with the project ID or number. (required)
-  continue: string, Optional encoded string to continue paging.
+  continue: string, Optional. Encoded string to continue paging.
   fieldSelector: string, Allows to filter resources based on a specific value for a field name. Send this in a query string format. i.e. &#x27;metadata.name%3Dlorem&#x27;. Not currently used by Cloud Run.
   includeUninitialized: boolean, Not currently used by Cloud Run.
   labelSelector: string, Allows to filter resources based on a label. Supported operations are =, !=, exists, in, and notIn.
-  limit: integer, The maximum number of records that should be returned.
+  limit: integer, Optional. The maximum number of records that should be returned.
   resourceVersion: string, The baseline resource version from which the list or watch operation should start. Not currently used by Cloud Run.
   watch: boolean, Flag that indicates that the client expects to watch this resource as well. Not currently used by Cloud Run.
   x__xgafv: string, V1 error format.
@@ -486,7 +486,7 @@
             &quot;uid&quot;: &quot;A String&quot;, # (Optional) UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
           },
           &quot;spec&quot;: { # RevisionSpec holds the desired state of the Revision (from the client). # RevisionSpec holds the desired state of the Revision (from the client).
-            &quot;containerConcurrency&quot;: 42, # (Optional) ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
+            &quot;containerConcurrency&quot;: 42, # Optional. ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
             &quot;containers&quot;: [ # Containers holds the single container that defines the unit of execution for this Revision. In the context of a Revision, we disallow a number of fields on this Container, including: name and lifecycle. In Cloud Run, only a single container may be provided. The runtime contract is documented here: https://github.com/knative/serving/blob/master/docs/runtime-contract.md
               { # A single application container. This specifies both the container to run, the command to run in the container and the arguments to supply to it. Note that additional arguments may be supplied by the system to the container at runtime.
                 &quot;args&quot;: [ # (Optional) Arguments to the entrypoint. The docker image&#x27;s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container&#x27;s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
diff --git a/docs/dyn/run_v1.projects.locations.domainmappings.html b/docs/dyn/run_v1.projects.locations.domainmappings.html
index 127eb6f..730caa6 100644
--- a/docs/dyn/run_v1.projects.locations.domainmappings.html
+++ b/docs/dyn/run_v1.projects.locations.domainmappings.html
@@ -164,7 +164,7 @@
         &quot;type&quot;: &quot;A String&quot;, # Resource record type. Example: `AAAA`.
       },
     ],
-    &quot;url&quot;: &quot;A String&quot;, # Cloud Run fully managed: not supported Cloud Run on GKE: supported Holds the URL that will serve the traffic of the DomainMapping. +optional
+    &quot;url&quot;: &quot;A String&quot;, # Optional. Cloud Run fully managed: not supported Cloud Run on GKE: supported Holds the URL that will serve the traffic of the DomainMapping.
   },
 }
 
@@ -237,7 +237,7 @@
         &quot;type&quot;: &quot;A String&quot;, # Resource record type. Example: `AAAA`.
       },
     ],
-    &quot;url&quot;: &quot;A String&quot;, # Cloud Run fully managed: not supported Cloud Run on GKE: supported Holds the URL that will serve the traffic of the DomainMapping. +optional
+    &quot;url&quot;: &quot;A String&quot;, # Optional. Cloud Run fully managed: not supported Cloud Run on GKE: supported Holds the URL that will serve the traffic of the DomainMapping.
   },
 }</pre>
 </div>
@@ -361,7 +361,7 @@
         &quot;type&quot;: &quot;A String&quot;, # Resource record type. Example: `AAAA`.
       },
     ],
-    &quot;url&quot;: &quot;A String&quot;, # Cloud Run fully managed: not supported Cloud Run on GKE: supported Holds the URL that will serve the traffic of the DomainMapping. +optional
+    &quot;url&quot;: &quot;A String&quot;, # Optional. Cloud Run fully managed: not supported Cloud Run on GKE: supported Holds the URL that will serve the traffic of the DomainMapping.
   },
 }</pre>
 </div>
@@ -372,11 +372,11 @@
 
 Args:
   parent: string, The namespace from which the domain mappings should be listed. For Cloud Run (fully managed), replace {namespace_id} with the project ID or number. (required)
-  continue: string, Optional encoded string to continue paging.
+  continue: string, Optional. Encoded string to continue paging.
   fieldSelector: string, Allows to filter resources based on a specific value for a field name. Send this in a query string format. i.e. &#x27;metadata.name%3Dlorem&#x27;. Not currently used by Cloud Run.
   includeUninitialized: boolean, Not currently used by Cloud Run.
   labelSelector: string, Allows to filter resources based on a label. Supported operations are =, !=, exists, in, and notIn.
-  limit: integer, The maximum number of records that should be returned.
+  limit: integer, Optional. The maximum number of records that should be returned.
   resourceVersion: string, The baseline resource version from which the list or watch operation should start. Not currently used by Cloud Run.
   watch: boolean, Flag that indicates that the client expects to watch this resource as well. Not currently used by Cloud Run.
   x__xgafv: string, V1 error format.
@@ -450,7 +450,7 @@
             &quot;type&quot;: &quot;A String&quot;, # Resource record type. Example: `AAAA`.
           },
         ],
-        &quot;url&quot;: &quot;A String&quot;, # Cloud Run fully managed: not supported Cloud Run on GKE: supported Holds the URL that will serve the traffic of the DomainMapping. +optional
+        &quot;url&quot;: &quot;A String&quot;, # Optional. Cloud Run fully managed: not supported Cloud Run on GKE: supported Holds the URL that will serve the traffic of the DomainMapping.
       },
     },
   ],
diff --git a/docs/dyn/run_v1.projects.locations.revisions.html b/docs/dyn/run_v1.projects.locations.revisions.html
index 262af1e..9364a2a 100644
--- a/docs/dyn/run_v1.projects.locations.revisions.html
+++ b/docs/dyn/run_v1.projects.locations.revisions.html
@@ -187,7 +187,7 @@
     &quot;uid&quot;: &quot;A String&quot;, # (Optional) UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
   },
   &quot;spec&quot;: { # RevisionSpec holds the desired state of the Revision (from the client). # Spec holds the desired state of the Revision (from the client).
-    &quot;containerConcurrency&quot;: 42, # (Optional) ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
+    &quot;containerConcurrency&quot;: 42, # Optional. ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
     &quot;containers&quot;: [ # Containers holds the single container that defines the unit of execution for this Revision. In the context of a Revision, we disallow a number of fields on this Container, including: name and lifecycle. In Cloud Run, only a single container may be provided. The runtime contract is documented here: https://github.com/knative/serving/blob/master/docs/runtime-contract.md
       { # A single application container. This specifies both the container to run, the command to run in the container and the arguments to supply to it. Note that additional arguments may be supplied by the system to the container at runtime.
         &quot;args&quot;: [ # (Optional) Arguments to the entrypoint. The docker image&#x27;s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container&#x27;s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
@@ -398,7 +398,7 @@
       },
     ],
     &quot;imageDigest&quot;: &quot;A String&quot;, # ImageDigest holds the resolved digest for the image specified within .Spec.Container.Image. The digest is resolved during the creation of Revision. This field holds the digest value regardless of whether a tag or digest was originally specified in the Container object.
-    &quot;logUrl&quot;: &quot;A String&quot;, # Specifies the generated logging url for this particular revision based on the revision url template specified in the controller&#x27;s config. +optional
+    &quot;logUrl&quot;: &quot;A String&quot;, # Optional. Specifies the generated logging url for this particular revision based on the revision url template specified in the controller&#x27;s config.
     &quot;observedGeneration&quot;: 42, # ObservedGeneration is the &#x27;Generation&#x27; of the Revision that was last processed by the controller. Clients polling for completed reconciliation should poll until observedGeneration = metadata.generation, and the Ready condition&#x27;s status is True or False.
     &quot;serviceName&quot;: &quot;A String&quot;, # Not currently used by Cloud Run.
   },
@@ -411,11 +411,11 @@
 
 Args:
   parent: string, The namespace from which the revisions should be listed. For Cloud Run (fully managed), replace {namespace_id} with the project ID or number. (required)
-  continue: string, Optional encoded string to continue paging.
+  continue: string, Optional. Encoded string to continue paging.
   fieldSelector: string, Allows to filter resources based on a specific value for a field name. Send this in a query string format. i.e. &#x27;metadata.name%3Dlorem&#x27;. Not currently used by Cloud Run.
   includeUninitialized: boolean, Not currently used by Cloud Run.
   labelSelector: string, Allows to filter resources based on a label. Supported operations are =, !=, exists, in, and notIn.
-  limit: integer, The maximum number of records that should be returned.
+  limit: integer, Optional. The maximum number of records that should be returned.
   resourceVersion: string, The baseline resource version from which the list or watch operation should start. Not currently used by Cloud Run.
   watch: boolean, Flag that indicates that the client expects to watch this resource as well. Not currently used by Cloud Run.
   x__xgafv: string, V1 error format.
@@ -465,7 +465,7 @@
         &quot;uid&quot;: &quot;A String&quot;, # (Optional) UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
       },
       &quot;spec&quot;: { # RevisionSpec holds the desired state of the Revision (from the client). # Spec holds the desired state of the Revision (from the client).
-        &quot;containerConcurrency&quot;: 42, # (Optional) ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
+        &quot;containerConcurrency&quot;: 42, # Optional. ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
         &quot;containers&quot;: [ # Containers holds the single container that defines the unit of execution for this Revision. In the context of a Revision, we disallow a number of fields on this Container, including: name and lifecycle. In Cloud Run, only a single container may be provided. The runtime contract is documented here: https://github.com/knative/serving/blob/master/docs/runtime-contract.md
           { # A single application container. This specifies both the container to run, the command to run in the container and the arguments to supply to it. Note that additional arguments may be supplied by the system to the container at runtime.
             &quot;args&quot;: [ # (Optional) Arguments to the entrypoint. The docker image&#x27;s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container&#x27;s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
@@ -676,7 +676,7 @@
           },
         ],
         &quot;imageDigest&quot;: &quot;A String&quot;, # ImageDigest holds the resolved digest for the image specified within .Spec.Container.Image. The digest is resolved during the creation of Revision. This field holds the digest value regardless of whether a tag or digest was originally specified in the Container object.
-        &quot;logUrl&quot;: &quot;A String&quot;, # Specifies the generated logging url for this particular revision based on the revision url template specified in the controller&#x27;s config. +optional
+        &quot;logUrl&quot;: &quot;A String&quot;, # Optional. Specifies the generated logging url for this particular revision based on the revision url template specified in the controller&#x27;s config.
         &quot;observedGeneration&quot;: 42, # ObservedGeneration is the &#x27;Generation&#x27; of the Revision that was last processed by the controller. Clients polling for completed reconciliation should poll until observedGeneration = metadata.generation, and the Ready condition&#x27;s status is True or False.
         &quot;serviceName&quot;: &quot;A String&quot;, # Not currently used by Cloud Run.
       },
diff --git a/docs/dyn/run_v1.projects.locations.routes.html b/docs/dyn/run_v1.projects.locations.routes.html
index 782ded0..7488d3d 100644
--- a/docs/dyn/run_v1.projects.locations.routes.html
+++ b/docs/dyn/run_v1.projects.locations.routes.html
@@ -142,10 +142,10 @@
     &quot;traffic&quot;: [ # Traffic specifies how to distribute traffic over a collection of Knative Revisions and Configurations. Cloud Run currently supports a single configurationName.
       { # TrafficTarget holds a single entry of the routing table for a Route.
         &quot;configurationName&quot;: &quot;A String&quot;, # ConfigurationName of a configuration to whose latest revision we will send this portion of traffic. When the &quot;status.latestReadyRevisionName&quot; of the referenced configuration changes, we will automatically migrate traffic from the prior &quot;latest ready&quot; revision to the new one. This field is never set in Route&#x27;s status, only its spec. This is mutually exclusive with RevisionName. Cloud Run currently supports a single ConfigurationName.
-        &quot;latestRevision&quot;: True or False, # LatestRevision may be optionally provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty. +optional
+        &quot;latestRevision&quot;: True or False, # Optional. LatestRevision may be provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty.
         &quot;percent&quot;: 42, # Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified. Cloud Run currently requires 100 percent for a single ConfigurationName TrafficTarget entry.
         &quot;revisionName&quot;: &quot;A String&quot;, # RevisionName of a specific revision to which to send this portion of traffic. This is mutually exclusive with ConfigurationName. Providing RevisionName in spec is not currently supported by Cloud Run.
-        &quot;tag&quot;: &quot;A String&quot;, # Tag is optionally used to expose a dedicated url for referencing this target exclusively. +optional
+        &quot;tag&quot;: &quot;A String&quot;, # Optional. Tag is used to expose a dedicated url for referencing this target exclusively.
         &quot;url&quot;: &quot;A String&quot;, # Output only. URL displays the URL for accessing tagged traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)
       },
     ],
@@ -168,10 +168,10 @@
     &quot;traffic&quot;: [ # Traffic holds the configured traffic distribution. These entries will always contain RevisionName references. When ConfigurationName appears in the spec, this will hold the LatestReadyRevisionName that we last observed.
       { # TrafficTarget holds a single entry of the routing table for a Route.
         &quot;configurationName&quot;: &quot;A String&quot;, # ConfigurationName of a configuration to whose latest revision we will send this portion of traffic. When the &quot;status.latestReadyRevisionName&quot; of the referenced configuration changes, we will automatically migrate traffic from the prior &quot;latest ready&quot; revision to the new one. This field is never set in Route&#x27;s status, only its spec. This is mutually exclusive with RevisionName. Cloud Run currently supports a single ConfigurationName.
-        &quot;latestRevision&quot;: True or False, # LatestRevision may be optionally provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty. +optional
+        &quot;latestRevision&quot;: True or False, # Optional. LatestRevision may be provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty.
         &quot;percent&quot;: 42, # Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified. Cloud Run currently requires 100 percent for a single ConfigurationName TrafficTarget entry.
         &quot;revisionName&quot;: &quot;A String&quot;, # RevisionName of a specific revision to which to send this portion of traffic. This is mutually exclusive with ConfigurationName. Providing RevisionName in spec is not currently supported by Cloud Run.
-        &quot;tag&quot;: &quot;A String&quot;, # Tag is optionally used to expose a dedicated url for referencing this target exclusively. +optional
+        &quot;tag&quot;: &quot;A String&quot;, # Optional. Tag is used to expose a dedicated url for referencing this target exclusively.
         &quot;url&quot;: &quot;A String&quot;, # Output only. URL displays the URL for accessing tagged traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)
       },
     ],
@@ -186,11 +186,11 @@
 
 Args:
   parent: string, The namespace from which the routes should be listed. For Cloud Run (fully managed), replace {namespace_id} with the project ID or number. (required)
-  continue: string, Optional encoded string to continue paging.
+  continue: string, Optional. Encoded string to continue paging.
   fieldSelector: string, Allows to filter resources based on a specific value for a field name. Send this in a query string format. i.e. &#x27;metadata.name%3Dlorem&#x27;. Not currently used by Cloud Run.
   includeUninitialized: boolean, Not currently used by Cloud Run.
   labelSelector: string, Allows to filter resources based on a label. Supported operations are =, !=, exists, in, and notIn.
-  limit: integer, The maximum number of records that should be returned.
+  limit: integer, Optional. The maximum number of records that should be returned.
   resourceVersion: string, The baseline resource version from which the list or watch operation should start. Not currently used by Cloud Run.
   watch: boolean, Flag that indicates that the client expects to watch this resource as well. Not currently used by Cloud Run.
   x__xgafv: string, V1 error format.
@@ -243,10 +243,10 @@
         &quot;traffic&quot;: [ # Traffic specifies how to distribute traffic over a collection of Knative Revisions and Configurations. Cloud Run currently supports a single configurationName.
           { # TrafficTarget holds a single entry of the routing table for a Route.
             &quot;configurationName&quot;: &quot;A String&quot;, # ConfigurationName of a configuration to whose latest revision we will send this portion of traffic. When the &quot;status.latestReadyRevisionName&quot; of the referenced configuration changes, we will automatically migrate traffic from the prior &quot;latest ready&quot; revision to the new one. This field is never set in Route&#x27;s status, only its spec. This is mutually exclusive with RevisionName. Cloud Run currently supports a single ConfigurationName.
-            &quot;latestRevision&quot;: True or False, # LatestRevision may be optionally provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty. +optional
+            &quot;latestRevision&quot;: True or False, # Optional. LatestRevision may be provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty.
             &quot;percent&quot;: 42, # Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified. Cloud Run currently requires 100 percent for a single ConfigurationName TrafficTarget entry.
             &quot;revisionName&quot;: &quot;A String&quot;, # RevisionName of a specific revision to which to send this portion of traffic. This is mutually exclusive with ConfigurationName. Providing RevisionName in spec is not currently supported by Cloud Run.
-            &quot;tag&quot;: &quot;A String&quot;, # Tag is optionally used to expose a dedicated url for referencing this target exclusively. +optional
+            &quot;tag&quot;: &quot;A String&quot;, # Optional. Tag is used to expose a dedicated url for referencing this target exclusively.
             &quot;url&quot;: &quot;A String&quot;, # Output only. URL displays the URL for accessing tagged traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)
           },
         ],
@@ -269,10 +269,10 @@
         &quot;traffic&quot;: [ # Traffic holds the configured traffic distribution. These entries will always contain RevisionName references. When ConfigurationName appears in the spec, this will hold the LatestReadyRevisionName that we last observed.
           { # TrafficTarget holds a single entry of the routing table for a Route.
             &quot;configurationName&quot;: &quot;A String&quot;, # ConfigurationName of a configuration to whose latest revision we will send this portion of traffic. When the &quot;status.latestReadyRevisionName&quot; of the referenced configuration changes, we will automatically migrate traffic from the prior &quot;latest ready&quot; revision to the new one. This field is never set in Route&#x27;s status, only its spec. This is mutually exclusive with RevisionName. Cloud Run currently supports a single ConfigurationName.
-            &quot;latestRevision&quot;: True or False, # LatestRevision may be optionally provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty. +optional
+            &quot;latestRevision&quot;: True or False, # Optional. LatestRevision may be provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty.
             &quot;percent&quot;: 42, # Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified. Cloud Run currently requires 100 percent for a single ConfigurationName TrafficTarget entry.
             &quot;revisionName&quot;: &quot;A String&quot;, # RevisionName of a specific revision to which to send this portion of traffic. This is mutually exclusive with ConfigurationName. Providing RevisionName in spec is not currently supported by Cloud Run.
-            &quot;tag&quot;: &quot;A String&quot;, # Tag is optionally used to expose a dedicated url for referencing this target exclusively. +optional
+            &quot;tag&quot;: &quot;A String&quot;, # Optional. Tag is used to expose a dedicated url for referencing this target exclusively.
             &quot;url&quot;: &quot;A String&quot;, # Output only. URL displays the URL for accessing tagged traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)
           },
         ],
diff --git a/docs/dyn/run_v1.projects.locations.services.html b/docs/dyn/run_v1.projects.locations.services.html
index 078d50c..fd6830f 100644
--- a/docs/dyn/run_v1.projects.locations.services.html
+++ b/docs/dyn/run_v1.projects.locations.services.html
@@ -186,7 +186,7 @@
         &quot;uid&quot;: &quot;A String&quot;, # (Optional) UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
       },
       &quot;spec&quot;: { # RevisionSpec holds the desired state of the Revision (from the client). # RevisionSpec holds the desired state of the Revision (from the client).
-        &quot;containerConcurrency&quot;: 42, # (Optional) ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
+        &quot;containerConcurrency&quot;: 42, # Optional. ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
         &quot;containers&quot;: [ # Containers holds the single container that defines the unit of execution for this Revision. In the context of a Revision, we disallow a number of fields on this Container, including: name and lifecycle. In Cloud Run, only a single container may be provided. The runtime contract is documented here: https://github.com/knative/serving/blob/master/docs/runtime-contract.md
           { # A single application container. This specifies both the container to run, the command to run in the container and the arguments to supply to it. Note that additional arguments may be supplied by the system to the container at runtime.
             &quot;args&quot;: [ # (Optional) Arguments to the entrypoint. The docker image&#x27;s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container&#x27;s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
@@ -389,10 +389,10 @@
     &quot;traffic&quot;: [ # Traffic specifies how to distribute traffic over a collection of Knative Revisions and Configurations.
       { # TrafficTarget holds a single entry of the routing table for a Route.
         &quot;configurationName&quot;: &quot;A String&quot;, # ConfigurationName of a configuration to whose latest revision we will send this portion of traffic. When the &quot;status.latestReadyRevisionName&quot; of the referenced configuration changes, we will automatically migrate traffic from the prior &quot;latest ready&quot; revision to the new one. This field is never set in Route&#x27;s status, only its spec. This is mutually exclusive with RevisionName. Cloud Run currently supports a single ConfigurationName.
-        &quot;latestRevision&quot;: True or False, # LatestRevision may be optionally provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty. +optional
+        &quot;latestRevision&quot;: True or False, # Optional. LatestRevision may be provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty.
         &quot;percent&quot;: 42, # Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified. Cloud Run currently requires 100 percent for a single ConfigurationName TrafficTarget entry.
         &quot;revisionName&quot;: &quot;A String&quot;, # RevisionName of a specific revision to which to send this portion of traffic. This is mutually exclusive with ConfigurationName. Providing RevisionName in spec is not currently supported by Cloud Run.
-        &quot;tag&quot;: &quot;A String&quot;, # Tag is optionally used to expose a dedicated url for referencing this target exclusively. +optional
+        &quot;tag&quot;: &quot;A String&quot;, # Optional. Tag is used to expose a dedicated url for referencing this target exclusively.
         &quot;url&quot;: &quot;A String&quot;, # Output only. URL displays the URL for accessing tagged traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)
       },
     ],
@@ -417,10 +417,10 @@
     &quot;traffic&quot;: [ # From RouteStatus. Traffic holds the configured traffic distribution. These entries will always contain RevisionName references. When ConfigurationName appears in the spec, this will hold the LatestReadyRevisionName that we last observed.
       { # TrafficTarget holds a single entry of the routing table for a Route.
         &quot;configurationName&quot;: &quot;A String&quot;, # ConfigurationName of a configuration to whose latest revision we will send this portion of traffic. When the &quot;status.latestReadyRevisionName&quot; of the referenced configuration changes, we will automatically migrate traffic from the prior &quot;latest ready&quot; revision to the new one. This field is never set in Route&#x27;s status, only its spec. This is mutually exclusive with RevisionName. Cloud Run currently supports a single ConfigurationName.
-        &quot;latestRevision&quot;: True or False, # LatestRevision may be optionally provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty. +optional
+        &quot;latestRevision&quot;: True or False, # Optional. LatestRevision may be provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty.
         &quot;percent&quot;: 42, # Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified. Cloud Run currently requires 100 percent for a single ConfigurationName TrafficTarget entry.
         &quot;revisionName&quot;: &quot;A String&quot;, # RevisionName of a specific revision to which to send this portion of traffic. This is mutually exclusive with ConfigurationName. Providing RevisionName in spec is not currently supported by Cloud Run.
-        &quot;tag&quot;: &quot;A String&quot;, # Tag is optionally used to expose a dedicated url for referencing this target exclusively. +optional
+        &quot;tag&quot;: &quot;A String&quot;, # Optional. Tag is used to expose a dedicated url for referencing this target exclusively.
         &quot;url&quot;: &quot;A String&quot;, # Output only. URL displays the URL for accessing tagged traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)
       },
     ],
@@ -507,7 +507,7 @@
         &quot;uid&quot;: &quot;A String&quot;, # (Optional) UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
       },
       &quot;spec&quot;: { # RevisionSpec holds the desired state of the Revision (from the client). # RevisionSpec holds the desired state of the Revision (from the client).
-        &quot;containerConcurrency&quot;: 42, # (Optional) ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
+        &quot;containerConcurrency&quot;: 42, # Optional. ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
         &quot;containers&quot;: [ # Containers holds the single container that defines the unit of execution for this Revision. In the context of a Revision, we disallow a number of fields on this Container, including: name and lifecycle. In Cloud Run, only a single container may be provided. The runtime contract is documented here: https://github.com/knative/serving/blob/master/docs/runtime-contract.md
           { # A single application container. This specifies both the container to run, the command to run in the container and the arguments to supply to it. Note that additional arguments may be supplied by the system to the container at runtime.
             &quot;args&quot;: [ # (Optional) Arguments to the entrypoint. The docker image&#x27;s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container&#x27;s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
@@ -710,10 +710,10 @@
     &quot;traffic&quot;: [ # Traffic specifies how to distribute traffic over a collection of Knative Revisions and Configurations.
       { # TrafficTarget holds a single entry of the routing table for a Route.
         &quot;configurationName&quot;: &quot;A String&quot;, # ConfigurationName of a configuration to whose latest revision we will send this portion of traffic. When the &quot;status.latestReadyRevisionName&quot; of the referenced configuration changes, we will automatically migrate traffic from the prior &quot;latest ready&quot; revision to the new one. This field is never set in Route&#x27;s status, only its spec. This is mutually exclusive with RevisionName. Cloud Run currently supports a single ConfigurationName.
-        &quot;latestRevision&quot;: True or False, # LatestRevision may be optionally provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty. +optional
+        &quot;latestRevision&quot;: True or False, # Optional. LatestRevision may be provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty.
         &quot;percent&quot;: 42, # Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified. Cloud Run currently requires 100 percent for a single ConfigurationName TrafficTarget entry.
         &quot;revisionName&quot;: &quot;A String&quot;, # RevisionName of a specific revision to which to send this portion of traffic. This is mutually exclusive with ConfigurationName. Providing RevisionName in spec is not currently supported by Cloud Run.
-        &quot;tag&quot;: &quot;A String&quot;, # Tag is optionally used to expose a dedicated url for referencing this target exclusively. +optional
+        &quot;tag&quot;: &quot;A String&quot;, # Optional. Tag is used to expose a dedicated url for referencing this target exclusively.
         &quot;url&quot;: &quot;A String&quot;, # Output only. URL displays the URL for accessing tagged traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)
       },
     ],
@@ -738,10 +738,10 @@
     &quot;traffic&quot;: [ # From RouteStatus. Traffic holds the configured traffic distribution. These entries will always contain RevisionName references. When ConfigurationName appears in the spec, this will hold the LatestReadyRevisionName that we last observed.
       { # TrafficTarget holds a single entry of the routing table for a Route.
         &quot;configurationName&quot;: &quot;A String&quot;, # ConfigurationName of a configuration to whose latest revision we will send this portion of traffic. When the &quot;status.latestReadyRevisionName&quot; of the referenced configuration changes, we will automatically migrate traffic from the prior &quot;latest ready&quot; revision to the new one. This field is never set in Route&#x27;s status, only its spec. This is mutually exclusive with RevisionName. Cloud Run currently supports a single ConfigurationName.
-        &quot;latestRevision&quot;: True or False, # LatestRevision may be optionally provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty. +optional
+        &quot;latestRevision&quot;: True or False, # Optional. LatestRevision may be provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty.
         &quot;percent&quot;: 42, # Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified. Cloud Run currently requires 100 percent for a single ConfigurationName TrafficTarget entry.
         &quot;revisionName&quot;: &quot;A String&quot;, # RevisionName of a specific revision to which to send this portion of traffic. This is mutually exclusive with ConfigurationName. Providing RevisionName in spec is not currently supported by Cloud Run.
-        &quot;tag&quot;: &quot;A String&quot;, # Tag is optionally used to expose a dedicated url for referencing this target exclusively. +optional
+        &quot;tag&quot;: &quot;A String&quot;, # Optional. Tag is used to expose a dedicated url for referencing this target exclusively.
         &quot;url&quot;: &quot;A String&quot;, # Output only. URL displays the URL for accessing tagged traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)
       },
     ],
@@ -879,7 +879,7 @@
         &quot;uid&quot;: &quot;A String&quot;, # (Optional) UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
       },
       &quot;spec&quot;: { # RevisionSpec holds the desired state of the Revision (from the client). # RevisionSpec holds the desired state of the Revision (from the client).
-        &quot;containerConcurrency&quot;: 42, # (Optional) ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
+        &quot;containerConcurrency&quot;: 42, # Optional. ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
         &quot;containers&quot;: [ # Containers holds the single container that defines the unit of execution for this Revision. In the context of a Revision, we disallow a number of fields on this Container, including: name and lifecycle. In Cloud Run, only a single container may be provided. The runtime contract is documented here: https://github.com/knative/serving/blob/master/docs/runtime-contract.md
           { # A single application container. This specifies both the container to run, the command to run in the container and the arguments to supply to it. Note that additional arguments may be supplied by the system to the container at runtime.
             &quot;args&quot;: [ # (Optional) Arguments to the entrypoint. The docker image&#x27;s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container&#x27;s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
@@ -1082,10 +1082,10 @@
     &quot;traffic&quot;: [ # Traffic specifies how to distribute traffic over a collection of Knative Revisions and Configurations.
       { # TrafficTarget holds a single entry of the routing table for a Route.
         &quot;configurationName&quot;: &quot;A String&quot;, # ConfigurationName of a configuration to whose latest revision we will send this portion of traffic. When the &quot;status.latestReadyRevisionName&quot; of the referenced configuration changes, we will automatically migrate traffic from the prior &quot;latest ready&quot; revision to the new one. This field is never set in Route&#x27;s status, only its spec. This is mutually exclusive with RevisionName. Cloud Run currently supports a single ConfigurationName.
-        &quot;latestRevision&quot;: True or False, # LatestRevision may be optionally provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty. +optional
+        &quot;latestRevision&quot;: True or False, # Optional. LatestRevision may be provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty.
         &quot;percent&quot;: 42, # Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified. Cloud Run currently requires 100 percent for a single ConfigurationName TrafficTarget entry.
         &quot;revisionName&quot;: &quot;A String&quot;, # RevisionName of a specific revision to which to send this portion of traffic. This is mutually exclusive with ConfigurationName. Providing RevisionName in spec is not currently supported by Cloud Run.
-        &quot;tag&quot;: &quot;A String&quot;, # Tag is optionally used to expose a dedicated url for referencing this target exclusively. +optional
+        &quot;tag&quot;: &quot;A String&quot;, # Optional. Tag is used to expose a dedicated url for referencing this target exclusively.
         &quot;url&quot;: &quot;A String&quot;, # Output only. URL displays the URL for accessing tagged traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)
       },
     ],
@@ -1110,10 +1110,10 @@
     &quot;traffic&quot;: [ # From RouteStatus. Traffic holds the configured traffic distribution. These entries will always contain RevisionName references. When ConfigurationName appears in the spec, this will hold the LatestReadyRevisionName that we last observed.
       { # TrafficTarget holds a single entry of the routing table for a Route.
         &quot;configurationName&quot;: &quot;A String&quot;, # ConfigurationName of a configuration to whose latest revision we will send this portion of traffic. When the &quot;status.latestReadyRevisionName&quot; of the referenced configuration changes, we will automatically migrate traffic from the prior &quot;latest ready&quot; revision to the new one. This field is never set in Route&#x27;s status, only its spec. This is mutually exclusive with RevisionName. Cloud Run currently supports a single ConfigurationName.
-        &quot;latestRevision&quot;: True or False, # LatestRevision may be optionally provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty. +optional
+        &quot;latestRevision&quot;: True or False, # Optional. LatestRevision may be provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty.
         &quot;percent&quot;: 42, # Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified. Cloud Run currently requires 100 percent for a single ConfigurationName TrafficTarget entry.
         &quot;revisionName&quot;: &quot;A String&quot;, # RevisionName of a specific revision to which to send this portion of traffic. This is mutually exclusive with ConfigurationName. Providing RevisionName in spec is not currently supported by Cloud Run.
-        &quot;tag&quot;: &quot;A String&quot;, # Tag is optionally used to expose a dedicated url for referencing this target exclusively. +optional
+        &quot;tag&quot;: &quot;A String&quot;, # Optional. Tag is used to expose a dedicated url for referencing this target exclusively.
         &quot;url&quot;: &quot;A String&quot;, # Output only. URL displays the URL for accessing tagged traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)
       },
     ],
@@ -1176,11 +1176,11 @@
 
 Args:
   parent: string, The namespace from which the services should be listed. For Cloud Run (fully managed), replace {namespace_id} with the project ID or number. (required)
-  continue: string, Optional encoded string to continue paging.
+  continue: string, Optional. Encoded string to continue paging.
   fieldSelector: string, Allows to filter resources based on a specific value for a field name. Send this in a query string format. i.e. &#x27;metadata.name%3Dlorem&#x27;. Not currently used by Cloud Run.
   includeUninitialized: boolean, Not currently used by Cloud Run.
   labelSelector: string, Allows to filter resources based on a label. Supported operations are =, !=, exists, in, and notIn.
-  limit: integer, The maximum number of records that should be returned.
+  limit: integer, Optional. The maximum number of records that should be returned.
   resourceVersion: string, The baseline resource version from which the list or watch operation should start. Not currently used by Cloud Run.
   watch: boolean, Flag that indicates that the client expects to watch this resource as well. Not currently used by Cloud Run.
   x__xgafv: string, V1 error format.
@@ -1264,7 +1264,7 @@
             &quot;uid&quot;: &quot;A String&quot;, # (Optional) UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
           },
           &quot;spec&quot;: { # RevisionSpec holds the desired state of the Revision (from the client). # RevisionSpec holds the desired state of the Revision (from the client).
-            &quot;containerConcurrency&quot;: 42, # (Optional) ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
+            &quot;containerConcurrency&quot;: 42, # Optional. ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
             &quot;containers&quot;: [ # Containers holds the single container that defines the unit of execution for this Revision. In the context of a Revision, we disallow a number of fields on this Container, including: name and lifecycle. In Cloud Run, only a single container may be provided. The runtime contract is documented here: https://github.com/knative/serving/blob/master/docs/runtime-contract.md
               { # A single application container. This specifies both the container to run, the command to run in the container and the arguments to supply to it. Note that additional arguments may be supplied by the system to the container at runtime.
                 &quot;args&quot;: [ # (Optional) Arguments to the entrypoint. The docker image&#x27;s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container&#x27;s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
@@ -1467,10 +1467,10 @@
         &quot;traffic&quot;: [ # Traffic specifies how to distribute traffic over a collection of Knative Revisions and Configurations.
           { # TrafficTarget holds a single entry of the routing table for a Route.
             &quot;configurationName&quot;: &quot;A String&quot;, # ConfigurationName of a configuration to whose latest revision we will send this portion of traffic. When the &quot;status.latestReadyRevisionName&quot; of the referenced configuration changes, we will automatically migrate traffic from the prior &quot;latest ready&quot; revision to the new one. This field is never set in Route&#x27;s status, only its spec. This is mutually exclusive with RevisionName. Cloud Run currently supports a single ConfigurationName.
-            &quot;latestRevision&quot;: True or False, # LatestRevision may be optionally provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty. +optional
+            &quot;latestRevision&quot;: True or False, # Optional. LatestRevision may be provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty.
             &quot;percent&quot;: 42, # Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified. Cloud Run currently requires 100 percent for a single ConfigurationName TrafficTarget entry.
             &quot;revisionName&quot;: &quot;A String&quot;, # RevisionName of a specific revision to which to send this portion of traffic. This is mutually exclusive with ConfigurationName. Providing RevisionName in spec is not currently supported by Cloud Run.
-            &quot;tag&quot;: &quot;A String&quot;, # Tag is optionally used to expose a dedicated url for referencing this target exclusively. +optional
+            &quot;tag&quot;: &quot;A String&quot;, # Optional. Tag is used to expose a dedicated url for referencing this target exclusively.
             &quot;url&quot;: &quot;A String&quot;, # Output only. URL displays the URL for accessing tagged traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)
           },
         ],
@@ -1495,10 +1495,10 @@
         &quot;traffic&quot;: [ # From RouteStatus. Traffic holds the configured traffic distribution. These entries will always contain RevisionName references. When ConfigurationName appears in the spec, this will hold the LatestReadyRevisionName that we last observed.
           { # TrafficTarget holds a single entry of the routing table for a Route.
             &quot;configurationName&quot;: &quot;A String&quot;, # ConfigurationName of a configuration to whose latest revision we will send this portion of traffic. When the &quot;status.latestReadyRevisionName&quot; of the referenced configuration changes, we will automatically migrate traffic from the prior &quot;latest ready&quot; revision to the new one. This field is never set in Route&#x27;s status, only its spec. This is mutually exclusive with RevisionName. Cloud Run currently supports a single ConfigurationName.
-            &quot;latestRevision&quot;: True or False, # LatestRevision may be optionally provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty. +optional
+            &quot;latestRevision&quot;: True or False, # Optional. LatestRevision may be provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty.
             &quot;percent&quot;: 42, # Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified. Cloud Run currently requires 100 percent for a single ConfigurationName TrafficTarget entry.
             &quot;revisionName&quot;: &quot;A String&quot;, # RevisionName of a specific revision to which to send this portion of traffic. This is mutually exclusive with ConfigurationName. Providing RevisionName in spec is not currently supported by Cloud Run.
-            &quot;tag&quot;: &quot;A String&quot;, # Tag is optionally used to expose a dedicated url for referencing this target exclusively. +optional
+            &quot;tag&quot;: &quot;A String&quot;, # Optional. Tag is used to expose a dedicated url for referencing this target exclusively.
             &quot;url&quot;: &quot;A String&quot;, # Output only. URL displays the URL for accessing tagged traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)
           },
         ],
@@ -1597,7 +1597,7 @@
         &quot;uid&quot;: &quot;A String&quot;, # (Optional) UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
       },
       &quot;spec&quot;: { # RevisionSpec holds the desired state of the Revision (from the client). # RevisionSpec holds the desired state of the Revision (from the client).
-        &quot;containerConcurrency&quot;: 42, # (Optional) ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
+        &quot;containerConcurrency&quot;: 42, # Optional. ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
         &quot;containers&quot;: [ # Containers holds the single container that defines the unit of execution for this Revision. In the context of a Revision, we disallow a number of fields on this Container, including: name and lifecycle. In Cloud Run, only a single container may be provided. The runtime contract is documented here: https://github.com/knative/serving/blob/master/docs/runtime-contract.md
           { # A single application container. This specifies both the container to run, the command to run in the container and the arguments to supply to it. Note that additional arguments may be supplied by the system to the container at runtime.
             &quot;args&quot;: [ # (Optional) Arguments to the entrypoint. The docker image&#x27;s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container&#x27;s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
@@ -1800,10 +1800,10 @@
     &quot;traffic&quot;: [ # Traffic specifies how to distribute traffic over a collection of Knative Revisions and Configurations.
       { # TrafficTarget holds a single entry of the routing table for a Route.
         &quot;configurationName&quot;: &quot;A String&quot;, # ConfigurationName of a configuration to whose latest revision we will send this portion of traffic. When the &quot;status.latestReadyRevisionName&quot; of the referenced configuration changes, we will automatically migrate traffic from the prior &quot;latest ready&quot; revision to the new one. This field is never set in Route&#x27;s status, only its spec. This is mutually exclusive with RevisionName. Cloud Run currently supports a single ConfigurationName.
-        &quot;latestRevision&quot;: True or False, # LatestRevision may be optionally provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty. +optional
+        &quot;latestRevision&quot;: True or False, # Optional. LatestRevision may be provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty.
         &quot;percent&quot;: 42, # Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified. Cloud Run currently requires 100 percent for a single ConfigurationName TrafficTarget entry.
         &quot;revisionName&quot;: &quot;A String&quot;, # RevisionName of a specific revision to which to send this portion of traffic. This is mutually exclusive with ConfigurationName. Providing RevisionName in spec is not currently supported by Cloud Run.
-        &quot;tag&quot;: &quot;A String&quot;, # Tag is optionally used to expose a dedicated url for referencing this target exclusively. +optional
+        &quot;tag&quot;: &quot;A String&quot;, # Optional. Tag is used to expose a dedicated url for referencing this target exclusively.
         &quot;url&quot;: &quot;A String&quot;, # Output only. URL displays the URL for accessing tagged traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)
       },
     ],
@@ -1828,10 +1828,10 @@
     &quot;traffic&quot;: [ # From RouteStatus. Traffic holds the configured traffic distribution. These entries will always contain RevisionName references. When ConfigurationName appears in the spec, this will hold the LatestReadyRevisionName that we last observed.
       { # TrafficTarget holds a single entry of the routing table for a Route.
         &quot;configurationName&quot;: &quot;A String&quot;, # ConfigurationName of a configuration to whose latest revision we will send this portion of traffic. When the &quot;status.latestReadyRevisionName&quot; of the referenced configuration changes, we will automatically migrate traffic from the prior &quot;latest ready&quot; revision to the new one. This field is never set in Route&#x27;s status, only its spec. This is mutually exclusive with RevisionName. Cloud Run currently supports a single ConfigurationName.
-        &quot;latestRevision&quot;: True or False, # LatestRevision may be optionally provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty. +optional
+        &quot;latestRevision&quot;: True or False, # Optional. LatestRevision may be provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty.
         &quot;percent&quot;: 42, # Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified. Cloud Run currently requires 100 percent for a single ConfigurationName TrafficTarget entry.
         &quot;revisionName&quot;: &quot;A String&quot;, # RevisionName of a specific revision to which to send this portion of traffic. This is mutually exclusive with ConfigurationName. Providing RevisionName in spec is not currently supported by Cloud Run.
-        &quot;tag&quot;: &quot;A String&quot;, # Tag is optionally used to expose a dedicated url for referencing this target exclusively. +optional
+        &quot;tag&quot;: &quot;A String&quot;, # Optional. Tag is used to expose a dedicated url for referencing this target exclusively.
         &quot;url&quot;: &quot;A String&quot;, # Output only. URL displays the URL for accessing tagged traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)
       },
     ],
@@ -1918,7 +1918,7 @@
         &quot;uid&quot;: &quot;A String&quot;, # (Optional) UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
       },
       &quot;spec&quot;: { # RevisionSpec holds the desired state of the Revision (from the client). # RevisionSpec holds the desired state of the Revision (from the client).
-        &quot;containerConcurrency&quot;: 42, # (Optional) ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
+        &quot;containerConcurrency&quot;: 42, # Optional. ContainerConcurrency specifies the maximum allowed in-flight (concurrent) requests per container instance of the Revision. Cloud Run fully managed: supported, defaults to 80 Cloud Run for Anthos: supported, defaults to 0, which means concurrency to the application is not limited, and the system decides the target concurrency for the autoscaler.
         &quot;containers&quot;: [ # Containers holds the single container that defines the unit of execution for this Revision. In the context of a Revision, we disallow a number of fields on this Container, including: name and lifecycle. In Cloud Run, only a single container may be provided. The runtime contract is documented here: https://github.com/knative/serving/blob/master/docs/runtime-contract.md
           { # A single application container. This specifies both the container to run, the command to run in the container and the arguments to supply to it. Note that additional arguments may be supplied by the system to the container at runtime.
             &quot;args&quot;: [ # (Optional) Arguments to the entrypoint. The docker image&#x27;s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container&#x27;s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
@@ -2121,10 +2121,10 @@
     &quot;traffic&quot;: [ # Traffic specifies how to distribute traffic over a collection of Knative Revisions and Configurations.
       { # TrafficTarget holds a single entry of the routing table for a Route.
         &quot;configurationName&quot;: &quot;A String&quot;, # ConfigurationName of a configuration to whose latest revision we will send this portion of traffic. When the &quot;status.latestReadyRevisionName&quot; of the referenced configuration changes, we will automatically migrate traffic from the prior &quot;latest ready&quot; revision to the new one. This field is never set in Route&#x27;s status, only its spec. This is mutually exclusive with RevisionName. Cloud Run currently supports a single ConfigurationName.
-        &quot;latestRevision&quot;: True or False, # LatestRevision may be optionally provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty. +optional
+        &quot;latestRevision&quot;: True or False, # Optional. LatestRevision may be provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty.
         &quot;percent&quot;: 42, # Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified. Cloud Run currently requires 100 percent for a single ConfigurationName TrafficTarget entry.
         &quot;revisionName&quot;: &quot;A String&quot;, # RevisionName of a specific revision to which to send this portion of traffic. This is mutually exclusive with ConfigurationName. Providing RevisionName in spec is not currently supported by Cloud Run.
-        &quot;tag&quot;: &quot;A String&quot;, # Tag is optionally used to expose a dedicated url for referencing this target exclusively. +optional
+        &quot;tag&quot;: &quot;A String&quot;, # Optional. Tag is used to expose a dedicated url for referencing this target exclusively.
         &quot;url&quot;: &quot;A String&quot;, # Output only. URL displays the URL for accessing tagged traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)
       },
     ],
@@ -2149,10 +2149,10 @@
     &quot;traffic&quot;: [ # From RouteStatus. Traffic holds the configured traffic distribution. These entries will always contain RevisionName references. When ConfigurationName appears in the spec, this will hold the LatestReadyRevisionName that we last observed.
       { # TrafficTarget holds a single entry of the routing table for a Route.
         &quot;configurationName&quot;: &quot;A String&quot;, # ConfigurationName of a configuration to whose latest revision we will send this portion of traffic. When the &quot;status.latestReadyRevisionName&quot; of the referenced configuration changes, we will automatically migrate traffic from the prior &quot;latest ready&quot; revision to the new one. This field is never set in Route&#x27;s status, only its spec. This is mutually exclusive with RevisionName. Cloud Run currently supports a single ConfigurationName.
-        &quot;latestRevision&quot;: True or False, # LatestRevision may be optionally provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty. +optional
+        &quot;latestRevision&quot;: True or False, # Optional. LatestRevision may be provided to indicate that the latest ready Revision of the Configuration should be used for this traffic target. When provided LatestRevision must be true if RevisionName is empty; it must be false when RevisionName is non-empty.
         &quot;percent&quot;: 42, # Percent specifies percent of the traffic to this Revision or Configuration. This defaults to zero if unspecified. Cloud Run currently requires 100 percent for a single ConfigurationName TrafficTarget entry.
         &quot;revisionName&quot;: &quot;A String&quot;, # RevisionName of a specific revision to which to send this portion of traffic. This is mutually exclusive with ConfigurationName. Providing RevisionName in spec is not currently supported by Cloud Run.
-        &quot;tag&quot;: &quot;A String&quot;, # Tag is optionally used to expose a dedicated url for referencing this target exclusively. +optional
+        &quot;tag&quot;: &quot;A String&quot;, # Optional. Tag is used to expose a dedicated url for referencing this target exclusively.
         &quot;url&quot;: &quot;A String&quot;, # Output only. URL displays the URL for accessing tagged traffic targets. URL is displayed in status, and is disallowed on spec. URL must contain a scheme (e.g. http://) and a hostname, but may not contain anything else (e.g. basic auth, url path, etc.)
       },
     ],
diff --git a/docs/dyn/securitycenter_v1.folders.sources.findings.html b/docs/dyn/securitycenter_v1.folders.sources.findings.html
index 0708731..0f94527 100644
--- a/docs/dyn/securitycenter_v1.folders.sources.findings.html
+++ b/docs/dyn/securitycenter_v1.folders.sources.findings.html
@@ -189,6 +189,15 @@
         &quot;createTime&quot;: &quot;A String&quot;, # The time at which the finding was created in Security Command Center.
         &quot;eventTime&quot;: &quot;A String&quot;, # The time at which the event took place, or when an update to the finding occurred. For example, if the finding represents an open firewall it would capture the time the detector believes the firewall became open. The accuracy is determined by the detector. If the finding were to be resolved afterward, this time would reflect when the finding was resolved. Must not be set to a value greater than the current timestamp.
         &quot;externalUri&quot;: &quot;A String&quot;, # The URI that, if available, points to a web page outside of Security Command Center where additional information about the finding can be found. This field is guaranteed to be either empty or a well formed URL.
+        &quot;findingClass&quot;: &quot;A String&quot;, # The class of the finding.
+        &quot;indicator&quot;: { # Represents what&#x27;s commonly known as an Indicator of compromise (IoC) in computer forensics. This is an artifact observed on a network or in an operating system that, with high confidence, indicates a computer intrusion. Reference: https://en.wikipedia.org/wiki/Indicator_of_compromise # Represents what&#x27;s commonly known as an Indicator of compromise (IoC) in computer forensics. This is an artifact observed on a network or in an operating system that, with high confidence, indicates a computer intrusion. Reference: https://en.wikipedia.org/wiki/Indicator_of_compromise
+          &quot;domains&quot;: [ # List of domains associated to the Finding.
+            &quot;A String&quot;,
+          ],
+          &quot;ipAddresses&quot;: [ # List of ip addresses associated to the Finding.
+            &quot;A String&quot;,
+          ],
+        },
         &quot;name&quot;: &quot;A String&quot;, # The relative resource name of this finding. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: &quot;organizations/{organization_id}/sources/{source_id}/findings/{finding_id}&quot;
         &quot;parent&quot;: &quot;A String&quot;, # The relative resource name of the source the finding belongs to. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name This field is immutable after creation time. For example: &quot;organizations/{organization_id}/sources/{source_id}&quot;
         &quot;resourceName&quot;: &quot;A String&quot;, # For findings on Google Cloud resources, the full resource name of the Google Cloud resource this finding is for. See: https://cloud.google.com/apis/design/resource_names#full_resource_name When the finding is for a non-Google Cloud resource, the resourceName can be a customer or partner defined string. This field is immutable after creation time.
@@ -256,6 +265,15 @@
   &quot;createTime&quot;: &quot;A String&quot;, # The time at which the finding was created in Security Command Center.
   &quot;eventTime&quot;: &quot;A String&quot;, # The time at which the event took place, or when an update to the finding occurred. For example, if the finding represents an open firewall it would capture the time the detector believes the firewall became open. The accuracy is determined by the detector. If the finding were to be resolved afterward, this time would reflect when the finding was resolved. Must not be set to a value greater than the current timestamp.
   &quot;externalUri&quot;: &quot;A String&quot;, # The URI that, if available, points to a web page outside of Security Command Center where additional information about the finding can be found. This field is guaranteed to be either empty or a well formed URL.
+  &quot;findingClass&quot;: &quot;A String&quot;, # The class of the finding.
+  &quot;indicator&quot;: { # Represents what&#x27;s commonly known as an Indicator of compromise (IoC) in computer forensics. This is an artifact observed on a network or in an operating system that, with high confidence, indicates a computer intrusion. Reference: https://en.wikipedia.org/wiki/Indicator_of_compromise # Represents what&#x27;s commonly known as an Indicator of compromise (IoC) in computer forensics. This is an artifact observed on a network or in an operating system that, with high confidence, indicates a computer intrusion. Reference: https://en.wikipedia.org/wiki/Indicator_of_compromise
+    &quot;domains&quot;: [ # List of domains associated to the Finding.
+      &quot;A String&quot;,
+    ],
+    &quot;ipAddresses&quot;: [ # List of ip addresses associated to the Finding.
+      &quot;A String&quot;,
+    ],
+  },
   &quot;name&quot;: &quot;A String&quot;, # The relative resource name of this finding. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: &quot;organizations/{organization_id}/sources/{source_id}/findings/{finding_id}&quot;
   &quot;parent&quot;: &quot;A String&quot;, # The relative resource name of the source the finding belongs to. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name This field is immutable after creation time. For example: &quot;organizations/{organization_id}/sources/{source_id}&quot;
   &quot;resourceName&quot;: &quot;A String&quot;, # For findings on Google Cloud resources, the full resource name of the Google Cloud resource this finding is for. See: https://cloud.google.com/apis/design/resource_names#full_resource_name When the finding is for a non-Google Cloud resource, the resourceName can be a customer or partner defined string. This field is immutable after creation time.
@@ -288,6 +306,15 @@
   &quot;createTime&quot;: &quot;A String&quot;, # The time at which the finding was created in Security Command Center.
   &quot;eventTime&quot;: &quot;A String&quot;, # The time at which the event took place, or when an update to the finding occurred. For example, if the finding represents an open firewall it would capture the time the detector believes the firewall became open. The accuracy is determined by the detector. If the finding were to be resolved afterward, this time would reflect when the finding was resolved. Must not be set to a value greater than the current timestamp.
   &quot;externalUri&quot;: &quot;A String&quot;, # The URI that, if available, points to a web page outside of Security Command Center where additional information about the finding can be found. This field is guaranteed to be either empty or a well formed URL.
+  &quot;findingClass&quot;: &quot;A String&quot;, # The class of the finding.
+  &quot;indicator&quot;: { # Represents what&#x27;s commonly known as an Indicator of compromise (IoC) in computer forensics. This is an artifact observed on a network or in an operating system that, with high confidence, indicates a computer intrusion. Reference: https://en.wikipedia.org/wiki/Indicator_of_compromise # Represents what&#x27;s commonly known as an Indicator of compromise (IoC) in computer forensics. This is an artifact observed on a network or in an operating system that, with high confidence, indicates a computer intrusion. Reference: https://en.wikipedia.org/wiki/Indicator_of_compromise
+    &quot;domains&quot;: [ # List of domains associated to the Finding.
+      &quot;A String&quot;,
+    ],
+    &quot;ipAddresses&quot;: [ # List of ip addresses associated to the Finding.
+      &quot;A String&quot;,
+    ],
+  },
   &quot;name&quot;: &quot;A String&quot;, # The relative resource name of this finding. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: &quot;organizations/{organization_id}/sources/{source_id}/findings/{finding_id}&quot;
   &quot;parent&quot;: &quot;A String&quot;, # The relative resource name of the source the finding belongs to. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name This field is immutable after creation time. For example: &quot;organizations/{organization_id}/sources/{source_id}&quot;
   &quot;resourceName&quot;: &quot;A String&quot;, # For findings on Google Cloud resources, the full resource name of the Google Cloud resource this finding is for. See: https://cloud.google.com/apis/design/resource_names#full_resource_name When the finding is for a non-Google Cloud resource, the resourceName can be a customer or partner defined string. This field is immutable after creation time.
@@ -334,6 +361,15 @@
   &quot;createTime&quot;: &quot;A String&quot;, # The time at which the finding was created in Security Command Center.
   &quot;eventTime&quot;: &quot;A String&quot;, # The time at which the event took place, or when an update to the finding occurred. For example, if the finding represents an open firewall it would capture the time the detector believes the firewall became open. The accuracy is determined by the detector. If the finding were to be resolved afterward, this time would reflect when the finding was resolved. Must not be set to a value greater than the current timestamp.
   &quot;externalUri&quot;: &quot;A String&quot;, # The URI that, if available, points to a web page outside of Security Command Center where additional information about the finding can be found. This field is guaranteed to be either empty or a well formed URL.
+  &quot;findingClass&quot;: &quot;A String&quot;, # The class of the finding.
+  &quot;indicator&quot;: { # Represents what&#x27;s commonly known as an Indicator of compromise (IoC) in computer forensics. This is an artifact observed on a network or in an operating system that, with high confidence, indicates a computer intrusion. Reference: https://en.wikipedia.org/wiki/Indicator_of_compromise # Represents what&#x27;s commonly known as an Indicator of compromise (IoC) in computer forensics. This is an artifact observed on a network or in an operating system that, with high confidence, indicates a computer intrusion. Reference: https://en.wikipedia.org/wiki/Indicator_of_compromise
+    &quot;domains&quot;: [ # List of domains associated to the Finding.
+      &quot;A String&quot;,
+    ],
+    &quot;ipAddresses&quot;: [ # List of ip addresses associated to the Finding.
+      &quot;A String&quot;,
+    ],
+  },
   &quot;name&quot;: &quot;A String&quot;, # The relative resource name of this finding. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: &quot;organizations/{organization_id}/sources/{source_id}/findings/{finding_id}&quot;
   &quot;parent&quot;: &quot;A String&quot;, # The relative resource name of the source the finding belongs to. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name This field is immutable after creation time. For example: &quot;organizations/{organization_id}/sources/{source_id}&quot;
   &quot;resourceName&quot;: &quot;A String&quot;, # For findings on Google Cloud resources, the full resource name of the Google Cloud resource this finding is for. See: https://cloud.google.com/apis/design/resource_names#full_resource_name When the finding is for a non-Google Cloud resource, the resourceName can be a customer or partner defined string. This field is immutable after creation time.
diff --git a/docs/dyn/securitycenter_v1.organizations.sources.findings.html b/docs/dyn/securitycenter_v1.organizations.sources.findings.html
index 51e02f1..f9f7580 100644
--- a/docs/dyn/securitycenter_v1.organizations.sources.findings.html
+++ b/docs/dyn/securitycenter_v1.organizations.sources.findings.html
@@ -122,6 +122,15 @@
   &quot;createTime&quot;: &quot;A String&quot;, # The time at which the finding was created in Security Command Center.
   &quot;eventTime&quot;: &quot;A String&quot;, # The time at which the event took place, or when an update to the finding occurred. For example, if the finding represents an open firewall it would capture the time the detector believes the firewall became open. The accuracy is determined by the detector. If the finding were to be resolved afterward, this time would reflect when the finding was resolved. Must not be set to a value greater than the current timestamp.
   &quot;externalUri&quot;: &quot;A String&quot;, # The URI that, if available, points to a web page outside of Security Command Center where additional information about the finding can be found. This field is guaranteed to be either empty or a well formed URL.
+  &quot;findingClass&quot;: &quot;A String&quot;, # The class of the finding.
+  &quot;indicator&quot;: { # Represents what&#x27;s commonly known as an Indicator of compromise (IoC) in computer forensics. This is an artifact observed on a network or in an operating system that, with high confidence, indicates a computer intrusion. Reference: https://en.wikipedia.org/wiki/Indicator_of_compromise # Represents what&#x27;s commonly known as an Indicator of compromise (IoC) in computer forensics. This is an artifact observed on a network or in an operating system that, with high confidence, indicates a computer intrusion. Reference: https://en.wikipedia.org/wiki/Indicator_of_compromise
+    &quot;domains&quot;: [ # List of domains associated to the Finding.
+      &quot;A String&quot;,
+    ],
+    &quot;ipAddresses&quot;: [ # List of ip addresses associated to the Finding.
+      &quot;A String&quot;,
+    ],
+  },
   &quot;name&quot;: &quot;A String&quot;, # The relative resource name of this finding. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: &quot;organizations/{organization_id}/sources/{source_id}/findings/{finding_id}&quot;
   &quot;parent&quot;: &quot;A String&quot;, # The relative resource name of the source the finding belongs to. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name This field is immutable after creation time. For example: &quot;organizations/{organization_id}/sources/{source_id}&quot;
   &quot;resourceName&quot;: &quot;A String&quot;, # For findings on Google Cloud resources, the full resource name of the Google Cloud resource this finding is for. See: https://cloud.google.com/apis/design/resource_names#full_resource_name When the finding is for a non-Google Cloud resource, the resourceName can be a customer or partner defined string. This field is immutable after creation time.
@@ -154,6 +163,15 @@
   &quot;createTime&quot;: &quot;A String&quot;, # The time at which the finding was created in Security Command Center.
   &quot;eventTime&quot;: &quot;A String&quot;, # The time at which the event took place, or when an update to the finding occurred. For example, if the finding represents an open firewall it would capture the time the detector believes the firewall became open. The accuracy is determined by the detector. If the finding were to be resolved afterward, this time would reflect when the finding was resolved. Must not be set to a value greater than the current timestamp.
   &quot;externalUri&quot;: &quot;A String&quot;, # The URI that, if available, points to a web page outside of Security Command Center where additional information about the finding can be found. This field is guaranteed to be either empty or a well formed URL.
+  &quot;findingClass&quot;: &quot;A String&quot;, # The class of the finding.
+  &quot;indicator&quot;: { # Represents what&#x27;s commonly known as an Indicator of compromise (IoC) in computer forensics. This is an artifact observed on a network or in an operating system that, with high confidence, indicates a computer intrusion. Reference: https://en.wikipedia.org/wiki/Indicator_of_compromise # Represents what&#x27;s commonly known as an Indicator of compromise (IoC) in computer forensics. This is an artifact observed on a network or in an operating system that, with high confidence, indicates a computer intrusion. Reference: https://en.wikipedia.org/wiki/Indicator_of_compromise
+    &quot;domains&quot;: [ # List of domains associated to the Finding.
+      &quot;A String&quot;,
+    ],
+    &quot;ipAddresses&quot;: [ # List of ip addresses associated to the Finding.
+      &quot;A String&quot;,
+    ],
+  },
   &quot;name&quot;: &quot;A String&quot;, # The relative resource name of this finding. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: &quot;organizations/{organization_id}/sources/{source_id}/findings/{finding_id}&quot;
   &quot;parent&quot;: &quot;A String&quot;, # The relative resource name of the source the finding belongs to. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name This field is immutable after creation time. For example: &quot;organizations/{organization_id}/sources/{source_id}&quot;
   &quot;resourceName&quot;: &quot;A String&quot;, # For findings on Google Cloud resources, the full resource name of the Google Cloud resource this finding is for. See: https://cloud.google.com/apis/design/resource_names#full_resource_name When the finding is for a non-Google Cloud resource, the resourceName can be a customer or partner defined string. This field is immutable after creation time.
@@ -257,6 +275,15 @@
         &quot;createTime&quot;: &quot;A String&quot;, # The time at which the finding was created in Security Command Center.
         &quot;eventTime&quot;: &quot;A String&quot;, # The time at which the event took place, or when an update to the finding occurred. For example, if the finding represents an open firewall it would capture the time the detector believes the firewall became open. The accuracy is determined by the detector. If the finding were to be resolved afterward, this time would reflect when the finding was resolved. Must not be set to a value greater than the current timestamp.
         &quot;externalUri&quot;: &quot;A String&quot;, # The URI that, if available, points to a web page outside of Security Command Center where additional information about the finding can be found. This field is guaranteed to be either empty or a well formed URL.
+        &quot;findingClass&quot;: &quot;A String&quot;, # The class of the finding.
+        &quot;indicator&quot;: { # Represents what&#x27;s commonly known as an Indicator of compromise (IoC) in computer forensics. This is an artifact observed on a network or in an operating system that, with high confidence, indicates a computer intrusion. Reference: https://en.wikipedia.org/wiki/Indicator_of_compromise # Represents what&#x27;s commonly known as an Indicator of compromise (IoC) in computer forensics. This is an artifact observed on a network or in an operating system that, with high confidence, indicates a computer intrusion. Reference: https://en.wikipedia.org/wiki/Indicator_of_compromise
+          &quot;domains&quot;: [ # List of domains associated to the Finding.
+            &quot;A String&quot;,
+          ],
+          &quot;ipAddresses&quot;: [ # List of ip addresses associated to the Finding.
+            &quot;A String&quot;,
+          ],
+        },
         &quot;name&quot;: &quot;A String&quot;, # The relative resource name of this finding. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: &quot;organizations/{organization_id}/sources/{source_id}/findings/{finding_id}&quot;
         &quot;parent&quot;: &quot;A String&quot;, # The relative resource name of the source the finding belongs to. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name This field is immutable after creation time. For example: &quot;organizations/{organization_id}/sources/{source_id}&quot;
         &quot;resourceName&quot;: &quot;A String&quot;, # For findings on Google Cloud resources, the full resource name of the Google Cloud resource this finding is for. See: https://cloud.google.com/apis/design/resource_names#full_resource_name When the finding is for a non-Google Cloud resource, the resourceName can be a customer or partner defined string. This field is immutable after creation time.
@@ -324,6 +351,15 @@
   &quot;createTime&quot;: &quot;A String&quot;, # The time at which the finding was created in Security Command Center.
   &quot;eventTime&quot;: &quot;A String&quot;, # The time at which the event took place, or when an update to the finding occurred. For example, if the finding represents an open firewall it would capture the time the detector believes the firewall became open. The accuracy is determined by the detector. If the finding were to be resolved afterward, this time would reflect when the finding was resolved. Must not be set to a value greater than the current timestamp.
   &quot;externalUri&quot;: &quot;A String&quot;, # The URI that, if available, points to a web page outside of Security Command Center where additional information about the finding can be found. This field is guaranteed to be either empty or a well formed URL.
+  &quot;findingClass&quot;: &quot;A String&quot;, # The class of the finding.
+  &quot;indicator&quot;: { # Represents what&#x27;s commonly known as an Indicator of compromise (IoC) in computer forensics. This is an artifact observed on a network or in an operating system that, with high confidence, indicates a computer intrusion. Reference: https://en.wikipedia.org/wiki/Indicator_of_compromise # Represents what&#x27;s commonly known as an Indicator of compromise (IoC) in computer forensics. This is an artifact observed on a network or in an operating system that, with high confidence, indicates a computer intrusion. Reference: https://en.wikipedia.org/wiki/Indicator_of_compromise
+    &quot;domains&quot;: [ # List of domains associated to the Finding.
+      &quot;A String&quot;,
+    ],
+    &quot;ipAddresses&quot;: [ # List of ip addresses associated to the Finding.
+      &quot;A String&quot;,
+    ],
+  },
   &quot;name&quot;: &quot;A String&quot;, # The relative resource name of this finding. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: &quot;organizations/{organization_id}/sources/{source_id}/findings/{finding_id}&quot;
   &quot;parent&quot;: &quot;A String&quot;, # The relative resource name of the source the finding belongs to. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name This field is immutable after creation time. For example: &quot;organizations/{organization_id}/sources/{source_id}&quot;
   &quot;resourceName&quot;: &quot;A String&quot;, # For findings on Google Cloud resources, the full resource name of the Google Cloud resource this finding is for. See: https://cloud.google.com/apis/design/resource_names#full_resource_name When the finding is for a non-Google Cloud resource, the resourceName can be a customer or partner defined string. This field is immutable after creation time.
@@ -356,6 +392,15 @@
   &quot;createTime&quot;: &quot;A String&quot;, # The time at which the finding was created in Security Command Center.
   &quot;eventTime&quot;: &quot;A String&quot;, # The time at which the event took place, or when an update to the finding occurred. For example, if the finding represents an open firewall it would capture the time the detector believes the firewall became open. The accuracy is determined by the detector. If the finding were to be resolved afterward, this time would reflect when the finding was resolved. Must not be set to a value greater than the current timestamp.
   &quot;externalUri&quot;: &quot;A String&quot;, # The URI that, if available, points to a web page outside of Security Command Center where additional information about the finding can be found. This field is guaranteed to be either empty or a well formed URL.
+  &quot;findingClass&quot;: &quot;A String&quot;, # The class of the finding.
+  &quot;indicator&quot;: { # Represents what&#x27;s commonly known as an Indicator of compromise (IoC) in computer forensics. This is an artifact observed on a network or in an operating system that, with high confidence, indicates a computer intrusion. Reference: https://en.wikipedia.org/wiki/Indicator_of_compromise # Represents what&#x27;s commonly known as an Indicator of compromise (IoC) in computer forensics. This is an artifact observed on a network or in an operating system that, with high confidence, indicates a computer intrusion. Reference: https://en.wikipedia.org/wiki/Indicator_of_compromise
+    &quot;domains&quot;: [ # List of domains associated to the Finding.
+      &quot;A String&quot;,
+    ],
+    &quot;ipAddresses&quot;: [ # List of ip addresses associated to the Finding.
+      &quot;A String&quot;,
+    ],
+  },
   &quot;name&quot;: &quot;A String&quot;, # The relative resource name of this finding. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: &quot;organizations/{organization_id}/sources/{source_id}/findings/{finding_id}&quot;
   &quot;parent&quot;: &quot;A String&quot;, # The relative resource name of the source the finding belongs to. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name This field is immutable after creation time. For example: &quot;organizations/{organization_id}/sources/{source_id}&quot;
   &quot;resourceName&quot;: &quot;A String&quot;, # For findings on Google Cloud resources, the full resource name of the Google Cloud resource this finding is for. See: https://cloud.google.com/apis/design/resource_names#full_resource_name When the finding is for a non-Google Cloud resource, the resourceName can be a customer or partner defined string. This field is immutable after creation time.
@@ -402,6 +447,15 @@
   &quot;createTime&quot;: &quot;A String&quot;, # The time at which the finding was created in Security Command Center.
   &quot;eventTime&quot;: &quot;A String&quot;, # The time at which the event took place, or when an update to the finding occurred. For example, if the finding represents an open firewall it would capture the time the detector believes the firewall became open. The accuracy is determined by the detector. If the finding were to be resolved afterward, this time would reflect when the finding was resolved. Must not be set to a value greater than the current timestamp.
   &quot;externalUri&quot;: &quot;A String&quot;, # The URI that, if available, points to a web page outside of Security Command Center where additional information about the finding can be found. This field is guaranteed to be either empty or a well formed URL.
+  &quot;findingClass&quot;: &quot;A String&quot;, # The class of the finding.
+  &quot;indicator&quot;: { # Represents what&#x27;s commonly known as an Indicator of compromise (IoC) in computer forensics. This is an artifact observed on a network or in an operating system that, with high confidence, indicates a computer intrusion. Reference: https://en.wikipedia.org/wiki/Indicator_of_compromise # Represents what&#x27;s commonly known as an Indicator of compromise (IoC) in computer forensics. This is an artifact observed on a network or in an operating system that, with high confidence, indicates a computer intrusion. Reference: https://en.wikipedia.org/wiki/Indicator_of_compromise
+    &quot;domains&quot;: [ # List of domains associated to the Finding.
+      &quot;A String&quot;,
+    ],
+    &quot;ipAddresses&quot;: [ # List of ip addresses associated to the Finding.
+      &quot;A String&quot;,
+    ],
+  },
   &quot;name&quot;: &quot;A String&quot;, # The relative resource name of this finding. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: &quot;organizations/{organization_id}/sources/{source_id}/findings/{finding_id}&quot;
   &quot;parent&quot;: &quot;A String&quot;, # The relative resource name of the source the finding belongs to. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name This field is immutable after creation time. For example: &quot;organizations/{organization_id}/sources/{source_id}&quot;
   &quot;resourceName&quot;: &quot;A String&quot;, # For findings on Google Cloud resources, the full resource name of the Google Cloud resource this finding is for. See: https://cloud.google.com/apis/design/resource_names#full_resource_name When the finding is for a non-Google Cloud resource, the resourceName can be a customer or partner defined string. This field is immutable after creation time.
diff --git a/docs/dyn/securitycenter_v1.projects.sources.findings.html b/docs/dyn/securitycenter_v1.projects.sources.findings.html
index 12097c7..d25a8dd 100644
--- a/docs/dyn/securitycenter_v1.projects.sources.findings.html
+++ b/docs/dyn/securitycenter_v1.projects.sources.findings.html
@@ -189,6 +189,15 @@
         &quot;createTime&quot;: &quot;A String&quot;, # The time at which the finding was created in Security Command Center.
         &quot;eventTime&quot;: &quot;A String&quot;, # The time at which the event took place, or when an update to the finding occurred. For example, if the finding represents an open firewall it would capture the time the detector believes the firewall became open. The accuracy is determined by the detector. If the finding were to be resolved afterward, this time would reflect when the finding was resolved. Must not be set to a value greater than the current timestamp.
         &quot;externalUri&quot;: &quot;A String&quot;, # The URI that, if available, points to a web page outside of Security Command Center where additional information about the finding can be found. This field is guaranteed to be either empty or a well formed URL.
+        &quot;findingClass&quot;: &quot;A String&quot;, # The class of the finding.
+        &quot;indicator&quot;: { # Represents what&#x27;s commonly known as an Indicator of compromise (IoC) in computer forensics. This is an artifact observed on a network or in an operating system that, with high confidence, indicates a computer intrusion. Reference: https://en.wikipedia.org/wiki/Indicator_of_compromise # Represents what&#x27;s commonly known as an Indicator of compromise (IoC) in computer forensics. This is an artifact observed on a network or in an operating system that, with high confidence, indicates a computer intrusion. Reference: https://en.wikipedia.org/wiki/Indicator_of_compromise
+          &quot;domains&quot;: [ # List of domains associated to the Finding.
+            &quot;A String&quot;,
+          ],
+          &quot;ipAddresses&quot;: [ # List of ip addresses associated to the Finding.
+            &quot;A String&quot;,
+          ],
+        },
         &quot;name&quot;: &quot;A String&quot;, # The relative resource name of this finding. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: &quot;organizations/{organization_id}/sources/{source_id}/findings/{finding_id}&quot;
         &quot;parent&quot;: &quot;A String&quot;, # The relative resource name of the source the finding belongs to. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name This field is immutable after creation time. For example: &quot;organizations/{organization_id}/sources/{source_id}&quot;
         &quot;resourceName&quot;: &quot;A String&quot;, # For findings on Google Cloud resources, the full resource name of the Google Cloud resource this finding is for. See: https://cloud.google.com/apis/design/resource_names#full_resource_name When the finding is for a non-Google Cloud resource, the resourceName can be a customer or partner defined string. This field is immutable after creation time.
@@ -256,6 +265,15 @@
   &quot;createTime&quot;: &quot;A String&quot;, # The time at which the finding was created in Security Command Center.
   &quot;eventTime&quot;: &quot;A String&quot;, # The time at which the event took place, or when an update to the finding occurred. For example, if the finding represents an open firewall it would capture the time the detector believes the firewall became open. The accuracy is determined by the detector. If the finding were to be resolved afterward, this time would reflect when the finding was resolved. Must not be set to a value greater than the current timestamp.
   &quot;externalUri&quot;: &quot;A String&quot;, # The URI that, if available, points to a web page outside of Security Command Center where additional information about the finding can be found. This field is guaranteed to be either empty or a well formed URL.
+  &quot;findingClass&quot;: &quot;A String&quot;, # The class of the finding.
+  &quot;indicator&quot;: { # Represents what&#x27;s commonly known as an Indicator of compromise (IoC) in computer forensics. This is an artifact observed on a network or in an operating system that, with high confidence, indicates a computer intrusion. Reference: https://en.wikipedia.org/wiki/Indicator_of_compromise # Represents what&#x27;s commonly known as an Indicator of compromise (IoC) in computer forensics. This is an artifact observed on a network or in an operating system that, with high confidence, indicates a computer intrusion. Reference: https://en.wikipedia.org/wiki/Indicator_of_compromise
+    &quot;domains&quot;: [ # List of domains associated to the Finding.
+      &quot;A String&quot;,
+    ],
+    &quot;ipAddresses&quot;: [ # List of ip addresses associated to the Finding.
+      &quot;A String&quot;,
+    ],
+  },
   &quot;name&quot;: &quot;A String&quot;, # The relative resource name of this finding. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: &quot;organizations/{organization_id}/sources/{source_id}/findings/{finding_id}&quot;
   &quot;parent&quot;: &quot;A String&quot;, # The relative resource name of the source the finding belongs to. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name This field is immutable after creation time. For example: &quot;organizations/{organization_id}/sources/{source_id}&quot;
   &quot;resourceName&quot;: &quot;A String&quot;, # For findings on Google Cloud resources, the full resource name of the Google Cloud resource this finding is for. See: https://cloud.google.com/apis/design/resource_names#full_resource_name When the finding is for a non-Google Cloud resource, the resourceName can be a customer or partner defined string. This field is immutable after creation time.
@@ -288,6 +306,15 @@
   &quot;createTime&quot;: &quot;A String&quot;, # The time at which the finding was created in Security Command Center.
   &quot;eventTime&quot;: &quot;A String&quot;, # The time at which the event took place, or when an update to the finding occurred. For example, if the finding represents an open firewall it would capture the time the detector believes the firewall became open. The accuracy is determined by the detector. If the finding were to be resolved afterward, this time would reflect when the finding was resolved. Must not be set to a value greater than the current timestamp.
   &quot;externalUri&quot;: &quot;A String&quot;, # The URI that, if available, points to a web page outside of Security Command Center where additional information about the finding can be found. This field is guaranteed to be either empty or a well formed URL.
+  &quot;findingClass&quot;: &quot;A String&quot;, # The class of the finding.
+  &quot;indicator&quot;: { # Represents what&#x27;s commonly known as an Indicator of compromise (IoC) in computer forensics. This is an artifact observed on a network or in an operating system that, with high confidence, indicates a computer intrusion. Reference: https://en.wikipedia.org/wiki/Indicator_of_compromise # Represents what&#x27;s commonly known as an Indicator of compromise (IoC) in computer forensics. This is an artifact observed on a network or in an operating system that, with high confidence, indicates a computer intrusion. Reference: https://en.wikipedia.org/wiki/Indicator_of_compromise
+    &quot;domains&quot;: [ # List of domains associated to the Finding.
+      &quot;A String&quot;,
+    ],
+    &quot;ipAddresses&quot;: [ # List of ip addresses associated to the Finding.
+      &quot;A String&quot;,
+    ],
+  },
   &quot;name&quot;: &quot;A String&quot;, # The relative resource name of this finding. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: &quot;organizations/{organization_id}/sources/{source_id}/findings/{finding_id}&quot;
   &quot;parent&quot;: &quot;A String&quot;, # The relative resource name of the source the finding belongs to. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name This field is immutable after creation time. For example: &quot;organizations/{organization_id}/sources/{source_id}&quot;
   &quot;resourceName&quot;: &quot;A String&quot;, # For findings on Google Cloud resources, the full resource name of the Google Cloud resource this finding is for. See: https://cloud.google.com/apis/design/resource_names#full_resource_name When the finding is for a non-Google Cloud resource, the resourceName can be a customer or partner defined string. This field is immutable after creation time.
@@ -334,6 +361,15 @@
   &quot;createTime&quot;: &quot;A String&quot;, # The time at which the finding was created in Security Command Center.
   &quot;eventTime&quot;: &quot;A String&quot;, # The time at which the event took place, or when an update to the finding occurred. For example, if the finding represents an open firewall it would capture the time the detector believes the firewall became open. The accuracy is determined by the detector. If the finding were to be resolved afterward, this time would reflect when the finding was resolved. Must not be set to a value greater than the current timestamp.
   &quot;externalUri&quot;: &quot;A String&quot;, # The URI that, if available, points to a web page outside of Security Command Center where additional information about the finding can be found. This field is guaranteed to be either empty or a well formed URL.
+  &quot;findingClass&quot;: &quot;A String&quot;, # The class of the finding.
+  &quot;indicator&quot;: { # Represents what&#x27;s commonly known as an Indicator of compromise (IoC) in computer forensics. This is an artifact observed on a network or in an operating system that, with high confidence, indicates a computer intrusion. Reference: https://en.wikipedia.org/wiki/Indicator_of_compromise # Represents what&#x27;s commonly known as an Indicator of compromise (IoC) in computer forensics. This is an artifact observed on a network or in an operating system that, with high confidence, indicates a computer intrusion. Reference: https://en.wikipedia.org/wiki/Indicator_of_compromise
+    &quot;domains&quot;: [ # List of domains associated to the Finding.
+      &quot;A String&quot;,
+    ],
+    &quot;ipAddresses&quot;: [ # List of ip addresses associated to the Finding.
+      &quot;A String&quot;,
+    ],
+  },
   &quot;name&quot;: &quot;A String&quot;, # The relative resource name of this finding. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name Example: &quot;organizations/{organization_id}/sources/{source_id}/findings/{finding_id}&quot;
   &quot;parent&quot;: &quot;A String&quot;, # The relative resource name of the source the finding belongs to. See: https://cloud.google.com/apis/design/resource_names#relative_resource_name This field is immutable after creation time. For example: &quot;organizations/{organization_id}/sources/{source_id}&quot;
   &quot;resourceName&quot;: &quot;A String&quot;, # For findings on Google Cloud resources, the full resource name of the Google Cloud resource this finding is for. See: https://cloud.google.com/apis/design/resource_names#full_resource_name When the finding is for a non-Google Cloud resource, the resourceName can be a customer or partner defined string. This field is immutable after creation time.
diff --git a/docs/dyn/servicedirectory_v1.projects.locations.namespaces.services.endpoints.html b/docs/dyn/servicedirectory_v1.projects.locations.namespaces.services.endpoints.html
index 0d663c2..a7ef488 100644
--- a/docs/dyn/servicedirectory_v1.projects.locations.namespaces.services.endpoints.html
+++ b/docs/dyn/servicedirectory_v1.projects.locations.namespaces.services.endpoints.html
@@ -112,7 +112,7 @@
 
 { # An individual endpoint that provides a service. The service must already exist to create an endpoint.
   &quot;address&quot;: &quot;A String&quot;, # Optional. An IPv4 or IPv6 address. Service Directory rejects bad addresses like: * `8.8.8` * `8.8.8.8:53` * `test:bad:address` * `[::1]` * `[::1]:8080` Limited to 45 characters.
-  &quot;annotations&quot;: { # Optional. Annotations for the endpoint. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 512 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/) Annotations that fails to meet these requirements are rejected. * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system annotations managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
+  &quot;annotations&quot;: { # Optional. Annotations for the endpoint. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 512 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/) Annotations that fails to meet these requirements are rejected. Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
     &quot;a_key&quot;: &quot;A String&quot;,
   },
   &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name for the endpoint in the format `projects/*/locations/*/namespaces/*/services/*/endpoints/*`.
@@ -130,7 +130,7 @@
 
     { # An individual endpoint that provides a service. The service must already exist to create an endpoint.
   &quot;address&quot;: &quot;A String&quot;, # Optional. An IPv4 or IPv6 address. Service Directory rejects bad addresses like: * `8.8.8` * `8.8.8.8:53` * `test:bad:address` * `[::1]` * `[::1]:8080` Limited to 45 characters.
-  &quot;annotations&quot;: { # Optional. Annotations for the endpoint. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 512 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/) Annotations that fails to meet these requirements are rejected. * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system annotations managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
+  &quot;annotations&quot;: { # Optional. Annotations for the endpoint. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 512 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/) Annotations that fails to meet these requirements are rejected. Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
     &quot;a_key&quot;: &quot;A String&quot;,
   },
   &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name for the endpoint in the format `projects/*/locations/*/namespaces/*/services/*/endpoints/*`.
@@ -172,7 +172,7 @@
 
     { # An individual endpoint that provides a service. The service must already exist to create an endpoint.
   &quot;address&quot;: &quot;A String&quot;, # Optional. An IPv4 or IPv6 address. Service Directory rejects bad addresses like: * `8.8.8` * `8.8.8.8:53` * `test:bad:address` * `[::1]` * `[::1]:8080` Limited to 45 characters.
-  &quot;annotations&quot;: { # Optional. Annotations for the endpoint. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 512 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/) Annotations that fails to meet these requirements are rejected. * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system annotations managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
+  &quot;annotations&quot;: { # Optional. Annotations for the endpoint. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 512 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/) Annotations that fails to meet these requirements are rejected. Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
     &quot;a_key&quot;: &quot;A String&quot;,
   },
   &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name for the endpoint in the format `projects/*/locations/*/namespaces/*/services/*/endpoints/*`.
@@ -202,7 +202,7 @@
   &quot;endpoints&quot;: [ # The list of endpoints.
     { # An individual endpoint that provides a service. The service must already exist to create an endpoint.
       &quot;address&quot;: &quot;A String&quot;, # Optional. An IPv4 or IPv6 address. Service Directory rejects bad addresses like: * `8.8.8` * `8.8.8.8:53` * `test:bad:address` * `[::1]` * `[::1]:8080` Limited to 45 characters.
-      &quot;annotations&quot;: { # Optional. Annotations for the endpoint. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 512 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/) Annotations that fails to meet these requirements are rejected. * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system annotations managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
+      &quot;annotations&quot;: { # Optional. Annotations for the endpoint. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 512 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/) Annotations that fails to meet these requirements are rejected. Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
         &quot;a_key&quot;: &quot;A String&quot;,
       },
       &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name for the endpoint in the format `projects/*/locations/*/namespaces/*/services/*/endpoints/*`.
@@ -238,7 +238,7 @@
 
 { # An individual endpoint that provides a service. The service must already exist to create an endpoint.
   &quot;address&quot;: &quot;A String&quot;, # Optional. An IPv4 or IPv6 address. Service Directory rejects bad addresses like: * `8.8.8` * `8.8.8.8:53` * `test:bad:address` * `[::1]` * `[::1]:8080` Limited to 45 characters.
-  &quot;annotations&quot;: { # Optional. Annotations for the endpoint. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 512 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/) Annotations that fails to meet these requirements are rejected. * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system annotations managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
+  &quot;annotations&quot;: { # Optional. Annotations for the endpoint. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 512 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/) Annotations that fails to meet these requirements are rejected. Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
     &quot;a_key&quot;: &quot;A String&quot;,
   },
   &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name for the endpoint in the format `projects/*/locations/*/namespaces/*/services/*/endpoints/*`.
@@ -256,7 +256,7 @@
 
     { # An individual endpoint that provides a service. The service must already exist to create an endpoint.
   &quot;address&quot;: &quot;A String&quot;, # Optional. An IPv4 or IPv6 address. Service Directory rejects bad addresses like: * `8.8.8` * `8.8.8.8:53` * `test:bad:address` * `[::1]` * `[::1]:8080` Limited to 45 characters.
-  &quot;annotations&quot;: { # Optional. Annotations for the endpoint. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 512 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/) Annotations that fails to meet these requirements are rejected. * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system annotations managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
+  &quot;annotations&quot;: { # Optional. Annotations for the endpoint. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 512 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/) Annotations that fails to meet these requirements are rejected. Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
     &quot;a_key&quot;: &quot;A String&quot;,
   },
   &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name for the endpoint in the format `projects/*/locations/*/namespaces/*/services/*/endpoints/*`.
diff --git a/docs/dyn/servicedirectory_v1.projects.locations.namespaces.services.html b/docs/dyn/servicedirectory_v1.projects.locations.namespaces.services.html
index 0bf0efb..0b0943e 100644
--- a/docs/dyn/servicedirectory_v1.projects.locations.namespaces.services.html
+++ b/docs/dyn/servicedirectory_v1.projects.locations.namespaces.services.html
@@ -128,13 +128,13 @@
     The object takes the form of:
 
 { # An individual service. A service contains a name and optional metadata. A service must exist before endpoints can be added to it.
-  &quot;annotations&quot;: { # Optional. Annotations for the service. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 2000 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Annotations that fails to meet these requirements are rejected * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system annotations managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
+  &quot;annotations&quot;: { # Optional. Annotations for the service. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 2000 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Annotations that fails to meet these requirements are rejected Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
     &quot;a_key&quot;: &quot;A String&quot;,
   },
   &quot;endpoints&quot;: [ # Output only. Endpoints associated with this service. Returned on LookupService.ResolveService. Control plane clients should use RegistrationService.ListEndpoints.
     { # An individual endpoint that provides a service. The service must already exist to create an endpoint.
       &quot;address&quot;: &quot;A String&quot;, # Optional. An IPv4 or IPv6 address. Service Directory rejects bad addresses like: * `8.8.8` * `8.8.8.8:53` * `test:bad:address` * `[::1]` * `[::1]:8080` Limited to 45 characters.
-      &quot;annotations&quot;: { # Optional. Annotations for the endpoint. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 512 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/) Annotations that fails to meet these requirements are rejected. * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system annotations managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
+      &quot;annotations&quot;: { # Optional. Annotations for the endpoint. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 512 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/) Annotations that fails to meet these requirements are rejected. Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
         &quot;a_key&quot;: &quot;A String&quot;,
       },
       &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name for the endpoint in the format `projects/*/locations/*/namespaces/*/services/*/endpoints/*`.
@@ -154,13 +154,13 @@
   An object of the form:
 
     { # An individual service. A service contains a name and optional metadata. A service must exist before endpoints can be added to it.
-  &quot;annotations&quot;: { # Optional. Annotations for the service. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 2000 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Annotations that fails to meet these requirements are rejected * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system annotations managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
+  &quot;annotations&quot;: { # Optional. Annotations for the service. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 2000 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Annotations that fails to meet these requirements are rejected Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
     &quot;a_key&quot;: &quot;A String&quot;,
   },
   &quot;endpoints&quot;: [ # Output only. Endpoints associated with this service. Returned on LookupService.ResolveService. Control plane clients should use RegistrationService.ListEndpoints.
     { # An individual endpoint that provides a service. The service must already exist to create an endpoint.
       &quot;address&quot;: &quot;A String&quot;, # Optional. An IPv4 or IPv6 address. Service Directory rejects bad addresses like: * `8.8.8` * `8.8.8.8:53` * `test:bad:address` * `[::1]` * `[::1]:8080` Limited to 45 characters.
-      &quot;annotations&quot;: { # Optional. Annotations for the endpoint. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 512 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/) Annotations that fails to meet these requirements are rejected. * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system annotations managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
+      &quot;annotations&quot;: { # Optional. Annotations for the endpoint. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 512 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/) Annotations that fails to meet these requirements are rejected. Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
         &quot;a_key&quot;: &quot;A String&quot;,
       },
       &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name for the endpoint in the format `projects/*/locations/*/namespaces/*/services/*/endpoints/*`.
@@ -204,13 +204,13 @@
   An object of the form:
 
     { # An individual service. A service contains a name and optional metadata. A service must exist before endpoints can be added to it.
-  &quot;annotations&quot;: { # Optional. Annotations for the service. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 2000 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Annotations that fails to meet these requirements are rejected * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system annotations managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
+  &quot;annotations&quot;: { # Optional. Annotations for the service. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 2000 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Annotations that fails to meet these requirements are rejected Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
     &quot;a_key&quot;: &quot;A String&quot;,
   },
   &quot;endpoints&quot;: [ # Output only. Endpoints associated with this service. Returned on LookupService.ResolveService. Control plane clients should use RegistrationService.ListEndpoints.
     { # An individual endpoint that provides a service. The service must already exist to create an endpoint.
       &quot;address&quot;: &quot;A String&quot;, # Optional. An IPv4 or IPv6 address. Service Directory rejects bad addresses like: * `8.8.8` * `8.8.8.8:53` * `test:bad:address` * `[::1]` * `[::1]:8080` Limited to 45 characters.
-      &quot;annotations&quot;: { # Optional. Annotations for the endpoint. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 512 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/) Annotations that fails to meet these requirements are rejected. * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system annotations managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
+      &quot;annotations&quot;: { # Optional. Annotations for the endpoint. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 512 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/) Annotations that fails to meet these requirements are rejected. Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
         &quot;a_key&quot;: &quot;A String&quot;,
       },
       &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name for the endpoint in the format `projects/*/locations/*/namespaces/*/services/*/endpoints/*`.
@@ -286,13 +286,13 @@
   &quot;nextPageToken&quot;: &quot;A String&quot;, # Token to retrieve the next page of results, or empty if there are no more results in the list.
   &quot;services&quot;: [ # The list of services.
     { # An individual service. A service contains a name and optional metadata. A service must exist before endpoints can be added to it.
-      &quot;annotations&quot;: { # Optional. Annotations for the service. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 2000 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Annotations that fails to meet these requirements are rejected * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system annotations managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
+      &quot;annotations&quot;: { # Optional. Annotations for the service. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 2000 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Annotations that fails to meet these requirements are rejected Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
         &quot;a_key&quot;: &quot;A String&quot;,
       },
       &quot;endpoints&quot;: [ # Output only. Endpoints associated with this service. Returned on LookupService.ResolveService. Control plane clients should use RegistrationService.ListEndpoints.
         { # An individual endpoint that provides a service. The service must already exist to create an endpoint.
           &quot;address&quot;: &quot;A String&quot;, # Optional. An IPv4 or IPv6 address. Service Directory rejects bad addresses like: * `8.8.8` * `8.8.8.8:53` * `test:bad:address` * `[::1]` * `[::1]:8080` Limited to 45 characters.
-          &quot;annotations&quot;: { # Optional. Annotations for the endpoint. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 512 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/) Annotations that fails to meet these requirements are rejected. * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system annotations managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
+          &quot;annotations&quot;: { # Optional. Annotations for the endpoint. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 512 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/) Annotations that fails to meet these requirements are rejected. Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
             &quot;a_key&quot;: &quot;A String&quot;,
           },
           &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name for the endpoint in the format `projects/*/locations/*/namespaces/*/services/*/endpoints/*`.
@@ -329,13 +329,13 @@
     The object takes the form of:
 
 { # An individual service. A service contains a name and optional metadata. A service must exist before endpoints can be added to it.
-  &quot;annotations&quot;: { # Optional. Annotations for the service. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 2000 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Annotations that fails to meet these requirements are rejected * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system annotations managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
+  &quot;annotations&quot;: { # Optional. Annotations for the service. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 2000 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Annotations that fails to meet these requirements are rejected Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
     &quot;a_key&quot;: &quot;A String&quot;,
   },
   &quot;endpoints&quot;: [ # Output only. Endpoints associated with this service. Returned on LookupService.ResolveService. Control plane clients should use RegistrationService.ListEndpoints.
     { # An individual endpoint that provides a service. The service must already exist to create an endpoint.
       &quot;address&quot;: &quot;A String&quot;, # Optional. An IPv4 or IPv6 address. Service Directory rejects bad addresses like: * `8.8.8` * `8.8.8.8:53` * `test:bad:address` * `[::1]` * `[::1]:8080` Limited to 45 characters.
-      &quot;annotations&quot;: { # Optional. Annotations for the endpoint. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 512 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/) Annotations that fails to meet these requirements are rejected. * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system annotations managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
+      &quot;annotations&quot;: { # Optional. Annotations for the endpoint. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 512 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/) Annotations that fails to meet these requirements are rejected. Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
         &quot;a_key&quot;: &quot;A String&quot;,
       },
       &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name for the endpoint in the format `projects/*/locations/*/namespaces/*/services/*/endpoints/*`.
@@ -355,13 +355,13 @@
   An object of the form:
 
     { # An individual service. A service contains a name and optional metadata. A service must exist before endpoints can be added to it.
-  &quot;annotations&quot;: { # Optional. Annotations for the service. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 2000 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Annotations that fails to meet these requirements are rejected * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system annotations managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
+  &quot;annotations&quot;: { # Optional. Annotations for the service. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 2000 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Annotations that fails to meet these requirements are rejected Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
     &quot;a_key&quot;: &quot;A String&quot;,
   },
   &quot;endpoints&quot;: [ # Output only. Endpoints associated with this service. Returned on LookupService.ResolveService. Control plane clients should use RegistrationService.ListEndpoints.
     { # An individual endpoint that provides a service. The service must already exist to create an endpoint.
       &quot;address&quot;: &quot;A String&quot;, # Optional. An IPv4 or IPv6 address. Service Directory rejects bad addresses like: * `8.8.8` * `8.8.8.8:53` * `test:bad:address` * `[::1]` * `[::1]:8080` Limited to 45 characters.
-      &quot;annotations&quot;: { # Optional. Annotations for the endpoint. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 512 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/) Annotations that fails to meet these requirements are rejected. * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system annotations managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
+      &quot;annotations&quot;: { # Optional. Annotations for the endpoint. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 512 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/) Annotations that fails to meet these requirements are rejected. Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
         &quot;a_key&quot;: &quot;A String&quot;,
       },
       &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name for the endpoint in the format `projects/*/locations/*/namespaces/*/services/*/endpoints/*`.
@@ -396,13 +396,13 @@
 
     { # The response message for LookupService.ResolveService.
   &quot;service&quot;: { # An individual service. A service contains a name and optional metadata. A service must exist before endpoints can be added to it.
-    &quot;annotations&quot;: { # Optional. Annotations for the service. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 2000 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Annotations that fails to meet these requirements are rejected * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system annotations managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
+    &quot;annotations&quot;: { # Optional. Annotations for the service. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 2000 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Annotations that fails to meet these requirements are rejected Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
       &quot;a_key&quot;: &quot;A String&quot;,
     },
     &quot;endpoints&quot;: [ # Output only. Endpoints associated with this service. Returned on LookupService.ResolveService. Control plane clients should use RegistrationService.ListEndpoints.
       { # An individual endpoint that provides a service. The service must already exist to create an endpoint.
         &quot;address&quot;: &quot;A String&quot;, # Optional. An IPv4 or IPv6 address. Service Directory rejects bad addresses like: * `8.8.8` * `8.8.8.8:53` * `test:bad:address` * `[::1]` * `[::1]:8080` Limited to 45 characters.
-        &quot;annotations&quot;: { # Optional. Annotations for the endpoint. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 512 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/) Annotations that fails to meet these requirements are rejected. * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system annotations managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
+        &quot;annotations&quot;: { # Optional. Annotations for the endpoint. This data can be consumed by service clients. Restrictions: * The entire annotations dictionary may contain up to 512 characters, spread accoss all key-value pairs. Annotations that go beyond this limit are rejected * Valid annotation keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/) Annotations that fails to meet these requirements are rejected. Note: This field is equivalent to the `metadata` field in the v1beta1 API. They have the same syntax and read/write to the same location in Service Directory.
           &quot;a_key&quot;: &quot;A String&quot;,
         },
         &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name for the endpoint in the format `projects/*/locations/*/namespaces/*/services/*/endpoints/*`.
diff --git a/docs/dyn/servicedirectory_v1beta1.projects.locations.namespaces.services.endpoints.html b/docs/dyn/servicedirectory_v1beta1.projects.locations.namespaces.services.endpoints.html
index b6ee470..0bef8b6 100644
--- a/docs/dyn/servicedirectory_v1beta1.projects.locations.namespaces.services.endpoints.html
+++ b/docs/dyn/servicedirectory_v1beta1.projects.locations.namespaces.services.endpoints.html
@@ -113,7 +113,7 @@
 { # An individual endpoint that provides a service. The service must already exist to create an endpoint.
   &quot;address&quot;: &quot;A String&quot;, # Optional. An IPv4 or IPv6 address. Service Directory rejects bad addresses like: * `8.8.8` * `8.8.8.8:53` * `test:bad:address` * `[::1]` * `[::1]:8080` Limited to 45 characters.
   &quot;createTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the endpoint was created.
-  &quot;metadata&quot;: { # Optional. Metadata for the endpoint. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 512 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system metadata managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
+  &quot;metadata&quot;: { # Optional. Metadata for the endpoint. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 512 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
     &quot;a_key&quot;: &quot;A String&quot;,
   },
   &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name for the endpoint in the format `projects/*/locations/*/namespaces/*/services/*/endpoints/*`.
@@ -134,7 +134,7 @@
     { # An individual endpoint that provides a service. The service must already exist to create an endpoint.
   &quot;address&quot;: &quot;A String&quot;, # Optional. An IPv4 or IPv6 address. Service Directory rejects bad addresses like: * `8.8.8` * `8.8.8.8:53` * `test:bad:address` * `[::1]` * `[::1]:8080` Limited to 45 characters.
   &quot;createTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the endpoint was created.
-  &quot;metadata&quot;: { # Optional. Metadata for the endpoint. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 512 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system metadata managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
+  &quot;metadata&quot;: { # Optional. Metadata for the endpoint. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 512 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
     &quot;a_key&quot;: &quot;A String&quot;,
   },
   &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name for the endpoint in the format `projects/*/locations/*/namespaces/*/services/*/endpoints/*`.
@@ -179,7 +179,7 @@
     { # An individual endpoint that provides a service. The service must already exist to create an endpoint.
   &quot;address&quot;: &quot;A String&quot;, # Optional. An IPv4 or IPv6 address. Service Directory rejects bad addresses like: * `8.8.8` * `8.8.8.8:53` * `test:bad:address` * `[::1]` * `[::1]:8080` Limited to 45 characters.
   &quot;createTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the endpoint was created.
-  &quot;metadata&quot;: { # Optional. Metadata for the endpoint. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 512 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system metadata managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
+  &quot;metadata&quot;: { # Optional. Metadata for the endpoint. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 512 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
     &quot;a_key&quot;: &quot;A String&quot;,
   },
   &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name for the endpoint in the format `projects/*/locations/*/namespaces/*/services/*/endpoints/*`.
@@ -212,7 +212,7 @@
     { # An individual endpoint that provides a service. The service must already exist to create an endpoint.
       &quot;address&quot;: &quot;A String&quot;, # Optional. An IPv4 or IPv6 address. Service Directory rejects bad addresses like: * `8.8.8` * `8.8.8.8:53` * `test:bad:address` * `[::1]` * `[::1]:8080` Limited to 45 characters.
       &quot;createTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the endpoint was created.
-      &quot;metadata&quot;: { # Optional. Metadata for the endpoint. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 512 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system metadata managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
+      &quot;metadata&quot;: { # Optional. Metadata for the endpoint. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 512 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
         &quot;a_key&quot;: &quot;A String&quot;,
       },
       &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name for the endpoint in the format `projects/*/locations/*/namespaces/*/services/*/endpoints/*`.
@@ -251,7 +251,7 @@
 { # An individual endpoint that provides a service. The service must already exist to create an endpoint.
   &quot;address&quot;: &quot;A String&quot;, # Optional. An IPv4 or IPv6 address. Service Directory rejects bad addresses like: * `8.8.8` * `8.8.8.8:53` * `test:bad:address` * `[::1]` * `[::1]:8080` Limited to 45 characters.
   &quot;createTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the endpoint was created.
-  &quot;metadata&quot;: { # Optional. Metadata for the endpoint. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 512 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system metadata managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
+  &quot;metadata&quot;: { # Optional. Metadata for the endpoint. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 512 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
     &quot;a_key&quot;: &quot;A String&quot;,
   },
   &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name for the endpoint in the format `projects/*/locations/*/namespaces/*/services/*/endpoints/*`.
@@ -272,7 +272,7 @@
     { # An individual endpoint that provides a service. The service must already exist to create an endpoint.
   &quot;address&quot;: &quot;A String&quot;, # Optional. An IPv4 or IPv6 address. Service Directory rejects bad addresses like: * `8.8.8` * `8.8.8.8:53` * `test:bad:address` * `[::1]` * `[::1]:8080` Limited to 45 characters.
   &quot;createTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the endpoint was created.
-  &quot;metadata&quot;: { # Optional. Metadata for the endpoint. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 512 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system metadata managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
+  &quot;metadata&quot;: { # Optional. Metadata for the endpoint. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 512 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
     &quot;a_key&quot;: &quot;A String&quot;,
   },
   &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name for the endpoint in the format `projects/*/locations/*/namespaces/*/services/*/endpoints/*`.
diff --git a/docs/dyn/servicedirectory_v1beta1.projects.locations.namespaces.services.html b/docs/dyn/servicedirectory_v1beta1.projects.locations.namespaces.services.html
index 693f639..ad9230c 100644
--- a/docs/dyn/servicedirectory_v1beta1.projects.locations.namespaces.services.html
+++ b/docs/dyn/servicedirectory_v1beta1.projects.locations.namespaces.services.html
@@ -133,7 +133,7 @@
     { # An individual endpoint that provides a service. The service must already exist to create an endpoint.
       &quot;address&quot;: &quot;A String&quot;, # Optional. An IPv4 or IPv6 address. Service Directory rejects bad addresses like: * `8.8.8` * `8.8.8.8:53` * `test:bad:address` * `[::1]` * `[::1]:8080` Limited to 45 characters.
       &quot;createTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the endpoint was created.
-      &quot;metadata&quot;: { # Optional. Metadata for the endpoint. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 512 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system metadata managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
+      &quot;metadata&quot;: { # Optional. Metadata for the endpoint. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 512 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
         &quot;a_key&quot;: &quot;A String&quot;,
       },
       &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name for the endpoint in the format `projects/*/locations/*/namespaces/*/services/*/endpoints/*`.
@@ -142,7 +142,7 @@
       &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the endpoint was last updated.
     },
   ],
-  &quot;metadata&quot;: { # Optional. Metadata for the service. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 2000 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system metadata managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
+  &quot;metadata&quot;: { # Optional. Metadata for the service. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 2000 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
     &quot;a_key&quot;: &quot;A String&quot;,
   },
   &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name for the service in the format `projects/*/locations/*/namespaces/*/services/*`.
@@ -164,7 +164,7 @@
     { # An individual endpoint that provides a service. The service must already exist to create an endpoint.
       &quot;address&quot;: &quot;A String&quot;, # Optional. An IPv4 or IPv6 address. Service Directory rejects bad addresses like: * `8.8.8` * `8.8.8.8:53` * `test:bad:address` * `[::1]` * `[::1]:8080` Limited to 45 characters.
       &quot;createTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the endpoint was created.
-      &quot;metadata&quot;: { # Optional. Metadata for the endpoint. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 512 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system metadata managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
+      &quot;metadata&quot;: { # Optional. Metadata for the endpoint. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 512 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
         &quot;a_key&quot;: &quot;A String&quot;,
       },
       &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name for the endpoint in the format `projects/*/locations/*/namespaces/*/services/*/endpoints/*`.
@@ -173,7 +173,7 @@
       &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the endpoint was last updated.
     },
   ],
-  &quot;metadata&quot;: { # Optional. Metadata for the service. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 2000 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system metadata managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
+  &quot;metadata&quot;: { # Optional. Metadata for the service. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 2000 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
     &quot;a_key&quot;: &quot;A String&quot;,
   },
   &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name for the service in the format `projects/*/locations/*/namespaces/*/services/*`.
@@ -219,7 +219,7 @@
     { # An individual endpoint that provides a service. The service must already exist to create an endpoint.
       &quot;address&quot;: &quot;A String&quot;, # Optional. An IPv4 or IPv6 address. Service Directory rejects bad addresses like: * `8.8.8` * `8.8.8.8:53` * `test:bad:address` * `[::1]` * `[::1]:8080` Limited to 45 characters.
       &quot;createTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the endpoint was created.
-      &quot;metadata&quot;: { # Optional. Metadata for the endpoint. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 512 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system metadata managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
+      &quot;metadata&quot;: { # Optional. Metadata for the endpoint. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 512 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
         &quot;a_key&quot;: &quot;A String&quot;,
       },
       &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name for the endpoint in the format `projects/*/locations/*/namespaces/*/services/*/endpoints/*`.
@@ -228,7 +228,7 @@
       &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the endpoint was last updated.
     },
   ],
-  &quot;metadata&quot;: { # Optional. Metadata for the service. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 2000 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system metadata managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
+  &quot;metadata&quot;: { # Optional. Metadata for the service. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 2000 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
     &quot;a_key&quot;: &quot;A String&quot;,
   },
   &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name for the service in the format `projects/*/locations/*/namespaces/*/services/*`.
@@ -306,7 +306,7 @@
         { # An individual endpoint that provides a service. The service must already exist to create an endpoint.
           &quot;address&quot;: &quot;A String&quot;, # Optional. An IPv4 or IPv6 address. Service Directory rejects bad addresses like: * `8.8.8` * `8.8.8.8:53` * `test:bad:address` * `[::1]` * `[::1]:8080` Limited to 45 characters.
           &quot;createTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the endpoint was created.
-          &quot;metadata&quot;: { # Optional. Metadata for the endpoint. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 512 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system metadata managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
+          &quot;metadata&quot;: { # Optional. Metadata for the endpoint. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 512 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
             &quot;a_key&quot;: &quot;A String&quot;,
           },
           &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name for the endpoint in the format `projects/*/locations/*/namespaces/*/services/*/endpoints/*`.
@@ -315,7 +315,7 @@
           &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the endpoint was last updated.
         },
       ],
-      &quot;metadata&quot;: { # Optional. Metadata for the service. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 2000 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system metadata managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
+      &quot;metadata&quot;: { # Optional. Metadata for the service. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 2000 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
         &quot;a_key&quot;: &quot;A String&quot;,
       },
       &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name for the service in the format `projects/*/locations/*/namespaces/*/services/*`.
@@ -354,7 +354,7 @@
     { # An individual endpoint that provides a service. The service must already exist to create an endpoint.
       &quot;address&quot;: &quot;A String&quot;, # Optional. An IPv4 or IPv6 address. Service Directory rejects bad addresses like: * `8.8.8` * `8.8.8.8:53` * `test:bad:address` * `[::1]` * `[::1]:8080` Limited to 45 characters.
       &quot;createTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the endpoint was created.
-      &quot;metadata&quot;: { # Optional. Metadata for the endpoint. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 512 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system metadata managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
+      &quot;metadata&quot;: { # Optional. Metadata for the endpoint. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 512 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
         &quot;a_key&quot;: &quot;A String&quot;,
       },
       &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name for the endpoint in the format `projects/*/locations/*/namespaces/*/services/*/endpoints/*`.
@@ -363,7 +363,7 @@
       &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the endpoint was last updated.
     },
   ],
-  &quot;metadata&quot;: { # Optional. Metadata for the service. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 2000 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system metadata managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
+  &quot;metadata&quot;: { # Optional. Metadata for the service. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 2000 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
     &quot;a_key&quot;: &quot;A String&quot;,
   },
   &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name for the service in the format `projects/*/locations/*/namespaces/*/services/*`.
@@ -385,7 +385,7 @@
     { # An individual endpoint that provides a service. The service must already exist to create an endpoint.
       &quot;address&quot;: &quot;A String&quot;, # Optional. An IPv4 or IPv6 address. Service Directory rejects bad addresses like: * `8.8.8` * `8.8.8.8:53` * `test:bad:address` * `[::1]` * `[::1]:8080` Limited to 45 characters.
       &quot;createTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the endpoint was created.
-      &quot;metadata&quot;: { # Optional. Metadata for the endpoint. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 512 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system metadata managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
+      &quot;metadata&quot;: { # Optional. Metadata for the endpoint. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 512 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
         &quot;a_key&quot;: &quot;A String&quot;,
       },
       &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name for the endpoint in the format `projects/*/locations/*/namespaces/*/services/*/endpoints/*`.
@@ -394,7 +394,7 @@
       &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the endpoint was last updated.
     },
   ],
-  &quot;metadata&quot;: { # Optional. Metadata for the service. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 2000 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system metadata managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
+  &quot;metadata&quot;: { # Optional. Metadata for the service. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 2000 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
     &quot;a_key&quot;: &quot;A String&quot;,
   },
   &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name for the service in the format `projects/*/locations/*/namespaces/*/services/*`.
@@ -431,7 +431,7 @@
       { # An individual endpoint that provides a service. The service must already exist to create an endpoint.
         &quot;address&quot;: &quot;A String&quot;, # Optional. An IPv4 or IPv6 address. Service Directory rejects bad addresses like: * `8.8.8` * `8.8.8.8:53` * `test:bad:address` * `[::1]` * `[::1]:8080` Limited to 45 characters.
         &quot;createTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the endpoint was created.
-        &quot;metadata&quot;: { # Optional. Metadata for the endpoint. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 512 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system metadata managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
+        &quot;metadata&quot;: { # Optional. Metadata for the endpoint. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 512 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
           &quot;a_key&quot;: &quot;A String&quot;,
         },
         &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name for the endpoint in the format `projects/*/locations/*/namespaces/*/services/*/endpoints/*`.
@@ -440,7 +440,7 @@
         &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the endpoint was last updated.
       },
     ],
-    &quot;metadata&quot;: { # Optional. Metadata for the service. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 2000 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected * The `(*.)google.com/` and `(*.)googleapis.com/` prefixes are reserved for system metadata managed by Service Directory. If the user tries to write to these keyspaces, those entries are silently ignored by the system Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
+    &quot;metadata&quot;: { # Optional. Metadata for the service. This data can be consumed by service clients. Restrictions: * The entire metadata dictionary may contain up to 2000 characters, spread accoss all key-value pairs. Metadata that goes beyond this limit are rejected * Valid metadata keys have two segments: an optional prefix and name, separated by a slash (/). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character ([a-z0-9A-Z]) with dashes (-), underscores (_), dots (.), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (.), not longer than 253 characters in total, followed by a slash (/). Metadata that fails to meet these requirements are rejected Note: This field is equivalent to the `annotations` field in the v1 API. They have the same syntax and read/write to the same location in Service Directory.
       &quot;a_key&quot;: &quot;A String&quot;,
     },
     &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name for the service in the format `projects/*/locations/*/namespaces/*/services/*`.
diff --git a/docs/dyn/slides_v1.presentations.html b/docs/dyn/slides_v1.presentations.html
index d402260..ebad4a7 100644
--- a/docs/dyn/slides_v1.presentations.html
+++ b/docs/dyn/slides_v1.presentations.html
@@ -777,7 +777,1009 @@
           &quot;isSkipped&quot;: True or False, # Whether the slide is skipped in the presentation mode. Defaults to false.
           &quot;layoutObjectId&quot;: &quot;A String&quot;, # The object ID of the layout that this slide is based on. This property is read-only.
           &quot;masterObjectId&quot;: &quot;A String&quot;, # The object ID of the master that this slide is based on. This property is read-only.
-          &quot;notesPage&quot;: # Object with schema name: Page # The notes page that this slide is associated with. It defines the visual appearance of a notes page when printing or exporting slides with speaker notes. A notes page inherits properties from the notes master. The placeholder shape with type BODY on the notes page contains the speaker notes for this slide. The ID of this shape is identified by the speakerNotesObjectId field. The notes page is read-only except for the text content and styles of the speaker notes shape. This property is read-only.
+          &quot;notesPage&quot;: { # A page in a presentation. # The notes page that this slide is associated with. It defines the visual appearance of a notes page when printing or exporting slides with speaker notes. A notes page inherits properties from the notes master. The placeholder shape with type BODY on the notes page contains the speaker notes for this slide. The ID of this shape is identified by the speakerNotesObjectId field. The notes page is read-only except for the text content and styles of the speaker notes shape. This property is read-only.
+            &quot;layoutProperties&quot;: { # The properties of Page are only relevant for pages with page_type LAYOUT. # Layout specific properties. Only set if page_type = LAYOUT.
+              &quot;displayName&quot;: &quot;A String&quot;, # The human-readable name of the layout.
+              &quot;masterObjectId&quot;: &quot;A String&quot;, # The object ID of the master that this layout is based on.
+              &quot;name&quot;: &quot;A String&quot;, # The name of the layout.
+            },
+            &quot;masterProperties&quot;: { # The properties of Page that are only relevant for pages with page_type MASTER. # Master specific properties. Only set if page_type = MASTER.
+              &quot;displayName&quot;: &quot;A String&quot;, # The human-readable name of the master.
+            },
+            &quot;notesProperties&quot;: { # The properties of Page that are only relevant for pages with page_type NOTES. # Notes specific properties. Only set if page_type = NOTES.
+              &quot;speakerNotesObjectId&quot;: &quot;A String&quot;, # The object ID of the shape on this notes page that contains the speaker notes for the corresponding slide. The actual shape may not always exist on the notes page. Inserting text using this object ID will automatically create the shape. In this case, the actual shape may have different object ID. The `GetPresentation` or `GetPage` action will always return the latest object ID.
+            },
+            &quot;objectId&quot;: &quot;A String&quot;, # The object ID for this page. Object IDs used by Page and PageElement share the same namespace.
+            &quot;pageElements&quot;: [ # The page elements rendered on the page.
+              { # A visual element rendered on a page.
+                &quot;description&quot;: &quot;A String&quot;, # The description of the page element. Combined with title to display alt text. The field is not supported for Group elements.
+                &quot;elementGroup&quot;: { # A PageElement kind representing a joined collection of PageElements. # A collection of page elements joined as a single unit.
+                  &quot;children&quot;: [ # The collection of elements in the group. The minimum size of a group is 2.
+                    # Object with schema name: PageElement
+                  ],
+                },
+                &quot;image&quot;: { # A PageElement kind representing an image. # An image page element.
+                  &quot;contentUrl&quot;: &quot;A String&quot;, # An URL to an image with a default lifetime of 30 minutes. This URL is tagged with the account of the requester. Anyone with the URL effectively accesses the image as the original requester. Access to the image may be lost if the presentation&#x27;s sharing settings change.
+                  &quot;imageProperties&quot;: { # The properties of the Image. # The properties of the image.
+                    &quot;brightness&quot;: 3.14, # The brightness effect of the image. The value should be in the interval [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                    &quot;contrast&quot;: 3.14, # The contrast effect of the image. The value should be in the interval [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                    &quot;cropProperties&quot;: { # The crop properties of an object enclosed in a container. For example, an Image. The crop properties is represented by the offsets of four edges which define a crop rectangle. The offsets are measured in percentage from the corresponding edges of the object&#x27;s original bounding rectangle towards inside, relative to the object&#x27;s original dimensions. - If the offset is in the interval (0, 1), the corresponding edge of crop rectangle is positioned inside of the object&#x27;s original bounding rectangle. - If the offset is negative or greater than 1, the corresponding edge of crop rectangle is positioned outside of the object&#x27;s original bounding rectangle. - If the left edge of the crop rectangle is on the right side of its right edge, the object will be flipped horizontally. - If the top edge of the crop rectangle is below its bottom edge, the object will be flipped vertically. - If all offsets and rotation angle is 0, the object is not cropped. After cropping, the content in the crop rectangle will be stretched to fit its container. # The crop properties of the image. If not set, the image is not cropped. This property is read-only.
+                      &quot;angle&quot;: 3.14, # The rotation angle of the crop window around its center, in radians. Rotation angle is applied after the offset.
+                      &quot;bottomOffset&quot;: 3.14, # The offset specifies the bottom edge of the crop rectangle that is located above the original bounding rectangle bottom edge, relative to the object&#x27;s original height.
+                      &quot;leftOffset&quot;: 3.14, # The offset specifies the left edge of the crop rectangle that is located to the right of the original bounding rectangle left edge, relative to the object&#x27;s original width.
+                      &quot;rightOffset&quot;: 3.14, # The offset specifies the right edge of the crop rectangle that is located to the left of the original bounding rectangle right edge, relative to the object&#x27;s original width.
+                      &quot;topOffset&quot;: 3.14, # The offset specifies the top edge of the crop rectangle that is located below the original bounding rectangle top edge, relative to the object&#x27;s original height.
+                    },
+                    &quot;link&quot;: { # A hypertext link. # The hyperlink destination of the image. If unset, there is no link.
+                      &quot;pageObjectId&quot;: &quot;A String&quot;, # If set, indicates this is a link to the specific page in this presentation with this ID. A page with this ID may not exist.
+                      &quot;relativeLink&quot;: &quot;A String&quot;, # If set, indicates this is a link to a slide in this presentation, addressed by its position.
+                      &quot;slideIndex&quot;: 42, # If set, indicates this is a link to the slide at this zero-based index in the presentation. There may not be a slide at this index.
+                      &quot;url&quot;: &quot;A String&quot;, # If set, indicates this is a link to the external web page at this URL.
+                    },
+                    &quot;outline&quot;: { # The outline of a PageElement. If these fields are unset, they may be inherited from a parent placeholder if it exists. If there is no parent, the fields will default to the value used for new page elements created in the Slides editor, which may depend on the page element kind. # The outline of the image. If not set, the image has no outline.
+                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the outline.
+                      &quot;outlineFill&quot;: { # The fill of the outline. # The fill of the outline.
+                        &quot;solidFill&quot;: { # A solid color fill. The page or page element is filled entirely with the specified color value. If any field is unset, its value may be inherited from a parent placeholder if it exists. # Solid color fill.
+                          &quot;alpha&quot;: 3.14, # 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 * (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.
+                          &quot;color&quot;: { # A themeable solid color value. # The color value of the solid fill.
+                            &quot;rgbColor&quot;: { # An RGB color. # An opaque RGB color.
+                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
+                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
+                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
+                            },
+                            &quot;themeColor&quot;: &quot;A String&quot;, # An opaque theme color.
+                          },
+                        },
+                      },
+                      &quot;propertyState&quot;: &quot;A String&quot;, # The outline property state. Updating the outline on a page element will implicitly update this field to `RENDERED`, unless another value is specified in the same request. To have no outline on a page element, set this field to `NOT_RENDERED`. In this case, any other outline fields set in the same request will be ignored.
+                      &quot;weight&quot;: { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                        &quot;magnitude&quot;: 3.14, # The magnitude.
+                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
+                      },
+                    },
+                    &quot;recolor&quot;: { # A recolor effect applied on an image. # The recolor effect of the image. If not set, the image is not recolored. This property is read-only.
+                      &quot;name&quot;: &quot;A String&quot;, # The name of the recolor effect. The name is determined from the `recolor_stops` by matching the gradient against the colors in the page&#x27;s current color scheme. This property is read-only.
+                      &quot;recolorStops&quot;: [ # The recolor effect is represented by a gradient, which is a list of color stops. The colors in the gradient will replace the corresponding colors at the same position in the color palette and apply to the image. This property is read-only.
+                        { # A color and position in a gradient band.
+                          &quot;alpha&quot;: 3.14, # The alpha value of this color in the gradient band. Defaults to 1.0, fully opaque.
+                          &quot;color&quot;: { # A themeable solid color value. # The color of the gradient stop.
+                            &quot;rgbColor&quot;: { # An RGB color. # An opaque RGB color.
+                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
+                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
+                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
+                            },
+                            &quot;themeColor&quot;: &quot;A String&quot;, # An opaque theme color.
+                          },
+                          &quot;position&quot;: 3.14, # The relative position of the color stop in the gradient band measured in percentage. The value should be in the interval [0.0, 1.0].
+                        },
+                      ],
+                    },
+                    &quot;shadow&quot;: { # The shadow properties of a page element. If these fields are unset, they may be inherited from a parent placeholder if it exists. If there is no parent, the fields will default to the value used for new page elements created in the Slides editor, which may depend on the page element kind. # The shadow of the image. If not set, the image has no shadow. This property is read-only.
+                      &quot;alignment&quot;: &quot;A String&quot;, # The alignment point of the shadow, that sets the origin for translate, scale and skew of the shadow. This property is read-only.
+                      &quot;alpha&quot;: 3.14, # The alpha of the shadow&#x27;s color, from 0.0 to 1.0.
+                      &quot;blurRadius&quot;: { # A magnitude in a single direction in the specified units. # The radius of the shadow blur. The larger the radius, the more diffuse the shadow becomes.
+                        &quot;magnitude&quot;: 3.14, # The magnitude.
+                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
+                      },
+                      &quot;color&quot;: { # A themeable solid color value. # The shadow color value.
+                        &quot;rgbColor&quot;: { # An RGB color. # An opaque RGB color.
+                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
+                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                        &quot;themeColor&quot;: &quot;A String&quot;, # An opaque theme color.
+                      },
+                      &quot;propertyState&quot;: &quot;A String&quot;, # The shadow property state. Updating the shadow on a page element will implicitly update this field to `RENDERED`, unless another value is specified in the same request. To have no shadow on a page element, set this field to `NOT_RENDERED`. In this case, any other shadow fields set in the same request will be ignored.
+                      &quot;rotateWithShape&quot;: True or False, # Whether the shadow should rotate with the shape. This property is read-only.
+                      &quot;transform&quot;: { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] to transform source coordinates (x,y) into destination coordinates (x&#x27;, y&#x27;) according to: x&#x27; x = shear_y scale_y translate_y 1 [ 1 ] After transformation, x&#x27; = scale_x * x + shear_x * y + translate_x; y&#x27; = scale_y * y + shear_y * x + translate_y; This message is therefore composed of these six matrix elements. # Transform that encodes the translate, scale, and skew of the shadow, relative to the alignment position.
+                        &quot;scaleX&quot;: 3.14, # The X coordinate scaling element.
+                        &quot;scaleY&quot;: 3.14, # The Y coordinate scaling element.
+                        &quot;shearX&quot;: 3.14, # The X coordinate shearing element.
+                        &quot;shearY&quot;: 3.14, # The Y coordinate shearing element.
+                        &quot;translateX&quot;: 3.14, # The X coordinate translation element.
+                        &quot;translateY&quot;: 3.14, # The Y coordinate translation element.
+                        &quot;unit&quot;: &quot;A String&quot;, # The units for translate elements.
+                      },
+                      &quot;type&quot;: &quot;A String&quot;, # The type of the shadow. This property is read-only.
+                    },
+                    &quot;transparency&quot;: 3.14, # The transparency effect of the image. The value should be in the interval [0.0, 1.0], where 0 means no effect and 1 means completely transparent. This property is read-only.
+                  },
+                  &quot;sourceUrl&quot;: &quot;A String&quot;, # The source URL is the URL used to insert the image. The source URL can be empty.
+                },
+                &quot;line&quot;: { # A PageElement kind representing a non-connector line, straight connector, curved connector, or bent connector. # A line page element.
+                  &quot;lineCategory&quot;: &quot;A String&quot;, # The category of the line. It matches the `category` specified in CreateLineRequest, and can be updated with UpdateLineCategoryRequest.
+                  &quot;lineProperties&quot;: { # The properties of the Line. When unset, these fields default to values that match the appearance of new lines created in the Slides editor. # The properties of the line.
+                    &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the line.
+                    &quot;endArrow&quot;: &quot;A String&quot;, # The style of the arrow at the end of the line.
+                    &quot;endConnection&quot;: { # The properties for one end of a Line connection. # The connection at the end of the line. If unset, there is no connection. Only lines with a Type indicating it is a &quot;connector&quot; can have an `end_connection`.
+                      &quot;connectedObjectId&quot;: &quot;A String&quot;, # The object ID of the connected page element. Some page elements, such as groups, tables, and lines do not have connection sites and therefore cannot be connected to a connector line.
+                      &quot;connectionSiteIndex&quot;: 42, # The index of the connection site on the connected page element. In most cases, it corresponds to the predefined connection site index from the ECMA-376 standard. More information on those connection sites can be found in the description of the &quot;cnx&quot; attribute in section 20.1.9.9 and Annex H. &quot;Predefined DrawingML Shape and Text Geometries&quot; of &quot;Office Open XML File Formats-Fundamentals and Markup Language Reference&quot;, part 1 of [ECMA-376 5th edition] (http://www.ecma-international.org/publications/standards/Ecma-376.htm). The position of each connection site can also be viewed from Slides editor.
+                    },
+                    &quot;lineFill&quot;: { # The fill of the line. # The fill of the line. The default line fill matches the defaults for new lines created in the Slides editor.
+                      &quot;solidFill&quot;: { # A solid color fill. The page or page element is filled entirely with the specified color value. If any field is unset, its value may be inherited from a parent placeholder if it exists. # Solid color fill.
+                        &quot;alpha&quot;: 3.14, # 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 * (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.
+                        &quot;color&quot;: { # A themeable solid color value. # The color value of the solid fill.
+                          &quot;rgbColor&quot;: { # An RGB color. # An opaque RGB color.
+                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
+                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                          &quot;themeColor&quot;: &quot;A String&quot;, # An opaque theme color.
+                        },
+                      },
+                    },
+                    &quot;link&quot;: { # A hypertext link. # The hyperlink destination of the line. If unset, there is no link.
+                      &quot;pageObjectId&quot;: &quot;A String&quot;, # If set, indicates this is a link to the specific page in this presentation with this ID. A page with this ID may not exist.
+                      &quot;relativeLink&quot;: &quot;A String&quot;, # If set, indicates this is a link to a slide in this presentation, addressed by its position.
+                      &quot;slideIndex&quot;: 42, # If set, indicates this is a link to the slide at this zero-based index in the presentation. There may not be a slide at this index.
+                      &quot;url&quot;: &quot;A String&quot;, # If set, indicates this is a link to the external web page at this URL.
+                    },
+                    &quot;startArrow&quot;: &quot;A String&quot;, # The style of the arrow at the beginning of the line.
+                    &quot;startConnection&quot;: { # The properties for one end of a Line connection. # The connection at the beginning of the line. If unset, there is no connection. Only lines with a Type indicating it is a &quot;connector&quot; can have a `start_connection`.
+                      &quot;connectedObjectId&quot;: &quot;A String&quot;, # The object ID of the connected page element. Some page elements, such as groups, tables, and lines do not have connection sites and therefore cannot be connected to a connector line.
+                      &quot;connectionSiteIndex&quot;: 42, # The index of the connection site on the connected page element. In most cases, it corresponds to the predefined connection site index from the ECMA-376 standard. More information on those connection sites can be found in the description of the &quot;cnx&quot; attribute in section 20.1.9.9 and Annex H. &quot;Predefined DrawingML Shape and Text Geometries&quot; of &quot;Office Open XML File Formats-Fundamentals and Markup Language Reference&quot;, part 1 of [ECMA-376 5th edition] (http://www.ecma-international.org/publications/standards/Ecma-376.htm). The position of each connection site can also be viewed from Slides editor.
+                    },
+                    &quot;weight&quot;: { # A magnitude in a single direction in the specified units. # The thickness of the line.
+                      &quot;magnitude&quot;: 3.14, # The magnitude.
+                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
+                    },
+                  },
+                  &quot;lineType&quot;: &quot;A String&quot;, # The type of the line.
+                },
+                &quot;objectId&quot;: &quot;A String&quot;, # The object ID for this page element. Object IDs used by google.apps.slides.v1.Page and google.apps.slides.v1.PageElement share the same namespace.
+                &quot;shape&quot;: { # A PageElement kind representing a generic shape that does not have a more specific classification. # A generic shape.
+                  &quot;placeholder&quot;: { # The placeholder information that uniquely identifies a placeholder shape. # Placeholders are page elements that inherit from corresponding placeholders on layouts and masters. If set, the shape is a placeholder shape and any inherited properties can be resolved by looking at the parent placeholder identified by the Placeholder.parent_object_id field.
+                    &quot;index&quot;: 42, # The index of the placeholder. If the same placeholder types are present in the same page, they would have different index values.
+                    &quot;parentObjectId&quot;: &quot;A String&quot;, # The object ID of this shape&#x27;s parent placeholder. If unset, the parent placeholder shape does not exist, so the shape does not inherit properties from any other shape.
+                    &quot;type&quot;: &quot;A String&quot;, # The type of the placeholder.
+                  },
+                  &quot;shapeProperties&quot;: { # The properties of a Shape. If the shape is a placeholder shape as determined by the placeholder field, then these properties may be inherited from a parent placeholder shape. Determining the rendered value of the property depends on the corresponding property_state field value. Any text autofit settings on the shape are automatically deactivated by requests that can impact how text fits in the shape. # The properties of the shape.
+                    &quot;autofit&quot;: { # The autofit properties of a Shape. # The autofit properties of the shape. This property is only set for shapes that allow text.
+                      &quot;autofitType&quot;: &quot;A String&quot;, # The autofit type of the shape. If the autofit type is AUTOFIT_TYPE_UNSPECIFIED, the autofit type is inherited from a parent placeholder if it exists. The field is automatically set to NONE if a request is made that might affect text fitting within its bounding text box. In this case the font_scale is applied to the font_size and the line_spacing_reduction is applied to the line_spacing. Both properties are also reset to default values.
+                      &quot;fontScale&quot;: 3.14, # The font scale applied to the shape. For shapes with autofit_type NONE or SHAPE_AUTOFIT, this value is the default value of 1. For TEXT_AUTOFIT, this value multiplied by the font_size gives the font size that is rendered in the editor. This property is read-only.
+                      &quot;lineSpacingReduction&quot;: 3.14, # The line spacing reduction applied to the shape. For shapes with autofit_type NONE or SHAPE_AUTOFIT, this value is the default value of 0. For TEXT_AUTOFIT, this value subtracted from the line_spacing gives the line spacing that is rendered in the editor. This property is read-only.
+                    },
+                    &quot;contentAlignment&quot;: &quot;A String&quot;, # The alignment of the content in the shape. If unspecified, the alignment is inherited from a parent placeholder if it exists. If the shape has no parent, the default alignment matches the alignment for new shapes created in the Slides editor.
+                    &quot;link&quot;: { # A hypertext link. # The hyperlink destination of the shape. If unset, there is no link. Links are not inherited from parent placeholders.
+                      &quot;pageObjectId&quot;: &quot;A String&quot;, # If set, indicates this is a link to the specific page in this presentation with this ID. A page with this ID may not exist.
+                      &quot;relativeLink&quot;: &quot;A String&quot;, # If set, indicates this is a link to a slide in this presentation, addressed by its position.
+                      &quot;slideIndex&quot;: 42, # If set, indicates this is a link to the slide at this zero-based index in the presentation. There may not be a slide at this index.
+                      &quot;url&quot;: &quot;A String&quot;, # If set, indicates this is a link to the external web page at this URL.
+                    },
+                    &quot;outline&quot;: { # The outline of a PageElement. If these fields are unset, they may be inherited from a parent placeholder if it exists. If there is no parent, the fields will default to the value used for new page elements created in the Slides editor, which may depend on the page element kind. # The outline of the shape. If unset, the outline is inherited from a parent placeholder if it exists. If the shape has no parent, then the default outline depends on the shape type, matching the defaults for new shapes created in the Slides editor.
+                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the outline.
+                      &quot;outlineFill&quot;: { # The fill of the outline. # The fill of the outline.
+                        &quot;solidFill&quot;: { # A solid color fill. The page or page element is filled entirely with the specified color value. If any field is unset, its value may be inherited from a parent placeholder if it exists. # Solid color fill.
+                          &quot;alpha&quot;: 3.14, # 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 * (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.
+                          &quot;color&quot;: { # A themeable solid color value. # The color value of the solid fill.
+                            &quot;rgbColor&quot;: { # An RGB color. # An opaque RGB color.
+                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
+                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
+                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
+                            },
+                            &quot;themeColor&quot;: &quot;A String&quot;, # An opaque theme color.
+                          },
+                        },
+                      },
+                      &quot;propertyState&quot;: &quot;A String&quot;, # The outline property state. Updating the outline on a page element will implicitly update this field to `RENDERED`, unless another value is specified in the same request. To have no outline on a page element, set this field to `NOT_RENDERED`. In this case, any other outline fields set in the same request will be ignored.
+                      &quot;weight&quot;: { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                        &quot;magnitude&quot;: 3.14, # The magnitude.
+                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
+                      },
+                    },
+                    &quot;shadow&quot;: { # The shadow properties of a page element. If these fields are unset, they may be inherited from a parent placeholder if it exists. If there is no parent, the fields will default to the value used for new page elements created in the Slides editor, which may depend on the page element kind. # The shadow properties of the shape. If unset, the shadow is inherited from a parent placeholder if it exists. If the shape has no parent, then the default shadow matches the defaults for new shapes created in the Slides editor. This property is read-only.
+                      &quot;alignment&quot;: &quot;A String&quot;, # The alignment point of the shadow, that sets the origin for translate, scale and skew of the shadow. This property is read-only.
+                      &quot;alpha&quot;: 3.14, # The alpha of the shadow&#x27;s color, from 0.0 to 1.0.
+                      &quot;blurRadius&quot;: { # A magnitude in a single direction in the specified units. # The radius of the shadow blur. The larger the radius, the more diffuse the shadow becomes.
+                        &quot;magnitude&quot;: 3.14, # The magnitude.
+                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
+                      },
+                      &quot;color&quot;: { # A themeable solid color value. # The shadow color value.
+                        &quot;rgbColor&quot;: { # An RGB color. # An opaque RGB color.
+                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
+                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                        &quot;themeColor&quot;: &quot;A String&quot;, # An opaque theme color.
+                      },
+                      &quot;propertyState&quot;: &quot;A String&quot;, # The shadow property state. Updating the shadow on a page element will implicitly update this field to `RENDERED`, unless another value is specified in the same request. To have no shadow on a page element, set this field to `NOT_RENDERED`. In this case, any other shadow fields set in the same request will be ignored.
+                      &quot;rotateWithShape&quot;: True or False, # Whether the shadow should rotate with the shape. This property is read-only.
+                      &quot;transform&quot;: { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] to transform source coordinates (x,y) into destination coordinates (x&#x27;, y&#x27;) according to: x&#x27; x = shear_y scale_y translate_y 1 [ 1 ] After transformation, x&#x27; = scale_x * x + shear_x * y + translate_x; y&#x27; = scale_y * y + shear_y * x + translate_y; This message is therefore composed of these six matrix elements. # Transform that encodes the translate, scale, and skew of the shadow, relative to the alignment position.
+                        &quot;scaleX&quot;: 3.14, # The X coordinate scaling element.
+                        &quot;scaleY&quot;: 3.14, # The Y coordinate scaling element.
+                        &quot;shearX&quot;: 3.14, # The X coordinate shearing element.
+                        &quot;shearY&quot;: 3.14, # The Y coordinate shearing element.
+                        &quot;translateX&quot;: 3.14, # The X coordinate translation element.
+                        &quot;translateY&quot;: 3.14, # The Y coordinate translation element.
+                        &quot;unit&quot;: &quot;A String&quot;, # The units for translate elements.
+                      },
+                      &quot;type&quot;: &quot;A String&quot;, # The type of the shadow. This property is read-only.
+                    },
+                    &quot;shapeBackgroundFill&quot;: { # The shape background fill. # The background fill of the shape. If unset, the background fill is inherited from a parent placeholder if it exists. If the shape has no parent, then the default background fill depends on the shape type, matching the defaults for new shapes created in the Slides editor.
+                      &quot;propertyState&quot;: &quot;A String&quot;, # The background fill property state. Updating the fill on a shape will implicitly update this field to `RENDERED`, unless another value is specified in the same request. To have no fill on a shape, set this field to `NOT_RENDERED`. In this case, any other fill fields set in the same request will be ignored.
+                      &quot;solidFill&quot;: { # A solid color fill. The page or page element is filled entirely with the specified color value. If any field is unset, its value may be inherited from a parent placeholder if it exists. # Solid color fill.
+                        &quot;alpha&quot;: 3.14, # 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 * (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.
+                        &quot;color&quot;: { # A themeable solid color value. # The color value of the solid fill.
+                          &quot;rgbColor&quot;: { # An RGB color. # An opaque RGB color.
+                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
+                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                          &quot;themeColor&quot;: &quot;A String&quot;, # An opaque theme color.
+                        },
+                      },
+                    },
+                  },
+                  &quot;shapeType&quot;: &quot;A String&quot;, # The type of the shape.
+                  &quot;text&quot;: { # The general text content. The text must reside in a compatible shape (e.g. text box or rectangle) or a table cell in a page. # The text content of the shape.
+                    &quot;lists&quot;: { # The bulleted lists contained in this text, keyed by list ID.
+                      &quot;a_key&quot;: { # A List describes the look and feel of bullets belonging to paragraphs associated with a list. A paragraph that is part of a list has an implicit reference to that list&#x27;s ID.
+                        &quot;listId&quot;: &quot;A String&quot;, # The ID of the list.
+                        &quot;nestingLevel&quot;: { # A map of nesting levels to the properties of bullets at the associated level. A list has at most nine levels of nesting, so the possible values for the keys of this map are 0 through 8, inclusive.
+                          &quot;a_key&quot;: { # Contains properties describing the look and feel of a list bullet at a given level of nesting.
+                            &quot;bulletStyle&quot;: { # Represents the styling that can be applied to a TextRun. If this text is contained in a shape with a parent placeholder, then these text styles may be inherited from the parent. Which text styles are inherited depend on the nesting level of lists: * A text run in a paragraph that is not in a list will inherit its text style from the the newline character in the paragraph at the 0 nesting level of the list inside the parent placeholder. * A text run in a paragraph that is in a list will inherit its text style from the newline character in the paragraph at its corresponding nesting level of the list inside the parent placeholder. Inherited text styles are represented as unset fields in this message. If text is contained in a shape without a parent placeholder, unsetting these fields will revert the style to a value matching the defaults in the Slides editor. # The style of a bullet at this level of nesting.
+                              &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or transparent, depending on if the `opaque_color` field in it is set.
+                                &quot;opaqueColor&quot;: { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
+                                  &quot;rgbColor&quot;: { # An RGB color. # An opaque RGB color.
+                                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
+                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
+                                  },
+                                  &quot;themeColor&quot;: &quot;A String&quot;, # An opaque theme color.
+                                },
+                              },
+                              &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
+                              &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
+                              &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Slides or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`. Some fonts can affect the weight of the text. If an update request specifies values for both `font_family` and `bold`, the explicitly-set `bold` value is used.
+                              &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font. When read, the `font_size` will specified in points.
+                                &quot;magnitude&quot;: 3.14, # The magnitude.
+                                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
+                              },
+                              &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or transparent, depending on if the `opaque_color` field in it is set.
+                                &quot;opaqueColor&quot;: { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
+                                  &quot;rgbColor&quot;: { # An RGB color. # An opaque RGB color.
+                                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
+                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
+                                  },
+                                  &quot;themeColor&quot;: &quot;A String&quot;, # An opaque theme color.
+                                },
+                              },
+                              &quot;italic&quot;: True or False, # Whether or not the text is italicized.
+                              &quot;link&quot;: { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be set to ThemeColorType.HYPERLINK and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
+                                &quot;pageObjectId&quot;: &quot;A String&quot;, # If set, indicates this is a link to the specific page in this presentation with this ID. A page with this ID may not exist.
+                                &quot;relativeLink&quot;: &quot;A String&quot;, # If set, indicates this is a link to a slide in this presentation, addressed by its position.
+                                &quot;slideIndex&quot;: 42, # If set, indicates this is a link to the slide at this zero-based index in the presentation. There may not be a slide at this index.
+                                &quot;url&quot;: &quot;A String&quot;, # If set, indicates this is a link to the external web page at this URL.
+                              },
+                              &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
+                              &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
+                              &quot;underline&quot;: True or False, # Whether or not the text is underlined.
+                              &quot;weightedFontFamily&quot;: { # Represents a font family and weight used to style a TextRun. # The font family and rendered weight of the text. This field is an extension of `font_family` meant to support explicit font weights without breaking backwards compatibility. As such, when reading the style of a range of text, the value of `weighted_font_family#font_family` will always be equal to that of `font_family`. However, when writing, if both fields are included in the field mask (either explicitly or through the wildcard `&quot;*&quot;`), their values are reconciled as follows: * If `font_family` is set and `weighted_font_family` is not, the value of `font_family` is applied with weight `400` (&quot;normal&quot;). * If both fields are set, the value of `font_family` must match that of `weighted_font_family#font_family`. If so, the font family and weight of `weighted_font_family` is applied. Otherwise, a 400 bad request error is returned. * If `weighted_font_family` is set and `font_family` is not, the font family and weight of `weighted_font_family` is applied. * If neither field is set, the font family and weight of the text inherit from the parent. Note that these properties cannot inherit separately from each other. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
+                                &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Slides or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
+                                &quot;weight&quot;: 42, # The rendered weight of the text. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. Weights greater than or equal to `700` are considered bold, and weights less than `700`are not bold. The default value is `400` (&quot;normal&quot;).
+                              },
+                            },
+                          },
+                        },
+                      },
+                    },
+                    &quot;textElements&quot;: [ # The text contents broken down into its component parts, including styling information. This property is read-only.
+                      { # A TextElement describes the content of a range of indices in the text content of a Shape or TableCell.
+                        &quot;autoText&quot;: { # A TextElement kind that represents auto text. # A TextElement representing a spot in the text that is dynamically replaced with content that can change over time.
+                          &quot;content&quot;: &quot;A String&quot;, # The rendered content of this auto text, if available.
+                          &quot;style&quot;: { # Represents the styling that can be applied to a TextRun. If this text is contained in a shape with a parent placeholder, then these text styles may be inherited from the parent. Which text styles are inherited depend on the nesting level of lists: * A text run in a paragraph that is not in a list will inherit its text style from the the newline character in the paragraph at the 0 nesting level of the list inside the parent placeholder. * A text run in a paragraph that is in a list will inherit its text style from the newline character in the paragraph at its corresponding nesting level of the list inside the parent placeholder. Inherited text styles are represented as unset fields in this message. If text is contained in a shape without a parent placeholder, unsetting these fields will revert the style to a value matching the defaults in the Slides editor. # The styling applied to this auto text.
+                            &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or transparent, depending on if the `opaque_color` field in it is set.
+                              &quot;opaqueColor&quot;: { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
+                                &quot;rgbColor&quot;: { # An RGB color. # An opaque RGB color.
+                                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                                &quot;themeColor&quot;: &quot;A String&quot;, # An opaque theme color.
+                              },
+                            },
+                            &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
+                            &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
+                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Slides or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`. Some fonts can affect the weight of the text. If an update request specifies values for both `font_family` and `bold`, the explicitly-set `bold` value is used.
+                            &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font. When read, the `font_size` will specified in points.
+                              &quot;magnitude&quot;: 3.14, # The magnitude.
+                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
+                            },
+                            &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or transparent, depending on if the `opaque_color` field in it is set.
+                              &quot;opaqueColor&quot;: { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
+                                &quot;rgbColor&quot;: { # An RGB color. # An opaque RGB color.
+                                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                                &quot;themeColor&quot;: &quot;A String&quot;, # An opaque theme color.
+                              },
+                            },
+                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
+                            &quot;link&quot;: { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be set to ThemeColorType.HYPERLINK and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
+                              &quot;pageObjectId&quot;: &quot;A String&quot;, # If set, indicates this is a link to the specific page in this presentation with this ID. A page with this ID may not exist.
+                              &quot;relativeLink&quot;: &quot;A String&quot;, # If set, indicates this is a link to a slide in this presentation, addressed by its position.
+                              &quot;slideIndex&quot;: 42, # If set, indicates this is a link to the slide at this zero-based index in the presentation. There may not be a slide at this index.
+                              &quot;url&quot;: &quot;A String&quot;, # If set, indicates this is a link to the external web page at this URL.
+                            },
+                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
+                            &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
+                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
+                            &quot;weightedFontFamily&quot;: { # Represents a font family and weight used to style a TextRun. # The font family and rendered weight of the text. This field is an extension of `font_family` meant to support explicit font weights without breaking backwards compatibility. As such, when reading the style of a range of text, the value of `weighted_font_family#font_family` will always be equal to that of `font_family`. However, when writing, if both fields are included in the field mask (either explicitly or through the wildcard `&quot;*&quot;`), their values are reconciled as follows: * If `font_family` is set and `weighted_font_family` is not, the value of `font_family` is applied with weight `400` (&quot;normal&quot;). * If both fields are set, the value of `font_family` must match that of `weighted_font_family#font_family`. If so, the font family and weight of `weighted_font_family` is applied. Otherwise, a 400 bad request error is returned. * If `weighted_font_family` is set and `font_family` is not, the font family and weight of `weighted_font_family` is applied. * If neither field is set, the font family and weight of the text inherit from the parent. Note that these properties cannot inherit separately from each other. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
+                              &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Slides or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
+                              &quot;weight&quot;: 42, # The rendered weight of the text. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. Weights greater than or equal to `700` are considered bold, and weights less than `700`are not bold. The default value is `400` (&quot;normal&quot;).
+                            },
+                          },
+                          &quot;type&quot;: &quot;A String&quot;, # The type of this auto text.
+                        },
+                        &quot;endIndex&quot;: 42, # The zero-based end index of this text element, exclusive, in Unicode code units.
+                        &quot;paragraphMarker&quot;: { # A TextElement kind that represents the beginning of a new paragraph. # A marker representing the beginning of a new paragraph. The `start_index` and `end_index` of this TextElement represent the range of the paragraph. Other TextElements with an index range contained inside this paragraph&#x27;s range are considered to be part of this paragraph. The range of indices of two separate paragraphs will never overlap.
+                          &quot;bullet&quot;: { # Describes the bullet of a paragraph. # The bullet for this paragraph. If not present, the paragraph does not belong to a list.
+                            &quot;bulletStyle&quot;: { # Represents the styling that can be applied to a TextRun. If this text is contained in a shape with a parent placeholder, then these text styles may be inherited from the parent. Which text styles are inherited depend on the nesting level of lists: * A text run in a paragraph that is not in a list will inherit its text style from the the newline character in the paragraph at the 0 nesting level of the list inside the parent placeholder. * A text run in a paragraph that is in a list will inherit its text style from the newline character in the paragraph at its corresponding nesting level of the list inside the parent placeholder. Inherited text styles are represented as unset fields in this message. If text is contained in a shape without a parent placeholder, unsetting these fields will revert the style to a value matching the defaults in the Slides editor. # The paragraph specific text style applied to this bullet.
+                              &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or transparent, depending on if the `opaque_color` field in it is set.
+                                &quot;opaqueColor&quot;: { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
+                                  &quot;rgbColor&quot;: { # An RGB color. # An opaque RGB color.
+                                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
+                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
+                                  },
+                                  &quot;themeColor&quot;: &quot;A String&quot;, # An opaque theme color.
+                                },
+                              },
+                              &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
+                              &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
+                              &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Slides or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`. Some fonts can affect the weight of the text. If an update request specifies values for both `font_family` and `bold`, the explicitly-set `bold` value is used.
+                              &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font. When read, the `font_size` will specified in points.
+                                &quot;magnitude&quot;: 3.14, # The magnitude.
+                                &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
+                              },
+                              &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or transparent, depending on if the `opaque_color` field in it is set.
+                                &quot;opaqueColor&quot;: { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
+                                  &quot;rgbColor&quot;: { # An RGB color. # An opaque RGB color.
+                                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
+                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
+                                  },
+                                  &quot;themeColor&quot;: &quot;A String&quot;, # An opaque theme color.
+                                },
+                              },
+                              &quot;italic&quot;: True or False, # Whether or not the text is italicized.
+                              &quot;link&quot;: { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be set to ThemeColorType.HYPERLINK and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
+                                &quot;pageObjectId&quot;: &quot;A String&quot;, # If set, indicates this is a link to the specific page in this presentation with this ID. A page with this ID may not exist.
+                                &quot;relativeLink&quot;: &quot;A String&quot;, # If set, indicates this is a link to a slide in this presentation, addressed by its position.
+                                &quot;slideIndex&quot;: 42, # If set, indicates this is a link to the slide at this zero-based index in the presentation. There may not be a slide at this index.
+                                &quot;url&quot;: &quot;A String&quot;, # If set, indicates this is a link to the external web page at this URL.
+                              },
+                              &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
+                              &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
+                              &quot;underline&quot;: True or False, # Whether or not the text is underlined.
+                              &quot;weightedFontFamily&quot;: { # Represents a font family and weight used to style a TextRun. # The font family and rendered weight of the text. This field is an extension of `font_family` meant to support explicit font weights without breaking backwards compatibility. As such, when reading the style of a range of text, the value of `weighted_font_family#font_family` will always be equal to that of `font_family`. However, when writing, if both fields are included in the field mask (either explicitly or through the wildcard `&quot;*&quot;`), their values are reconciled as follows: * If `font_family` is set and `weighted_font_family` is not, the value of `font_family` is applied with weight `400` (&quot;normal&quot;). * If both fields are set, the value of `font_family` must match that of `weighted_font_family#font_family`. If so, the font family and weight of `weighted_font_family` is applied. Otherwise, a 400 bad request error is returned. * If `weighted_font_family` is set and `font_family` is not, the font family and weight of `weighted_font_family` is applied. * If neither field is set, the font family and weight of the text inherit from the parent. Note that these properties cannot inherit separately from each other. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
+                                &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Slides or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
+                                &quot;weight&quot;: 42, # The rendered weight of the text. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. Weights greater than or equal to `700` are considered bold, and weights less than `700`are not bold. The default value is `400` (&quot;normal&quot;).
+                              },
+                            },
+                            &quot;glyph&quot;: &quot;A String&quot;, # The rendered bullet glyph for this paragraph.
+                            &quot;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
+                            &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
+                          },
+                          &quot;style&quot;: { # Styles that apply to a whole paragraph. If this text is contained in a shape with a parent placeholder, then these paragraph styles may be inherited from the parent. Which paragraph styles are inherited depend on the nesting level of lists: * A paragraph not in a list will inherit its paragraph style from the paragraph at the 0 nesting level of the list inside the parent placeholder. * A paragraph in a list will inherit its paragraph style from the paragraph at its corresponding nesting level of the list inside the parent placeholder. Inherited paragraph styles are represented as unset fields in this message. # The paragraph&#x27;s style
+                            &quot;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
+                            &quot;direction&quot;: &quot;A String&quot;, # The text direction of this paragraph. If unset, the value defaults to LEFT_TO_RIGHT since text direction is not inherited.
+                            &quot;indentEnd&quot;: { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to the end of the text, based on the current text direction. If unset, the value is inherited from the parent.
+                              &quot;magnitude&quot;: 3.14, # The magnitude.
+                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
+                            },
+                            &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the start of the first line of the paragraph. If unset, the value is inherited from the parent.
+                              &quot;magnitude&quot;: 3.14, # The magnitude.
+                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
+                            },
+                            &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to the start of the text, based on the current text direction. If unset, the value is inherited from the parent.
+                              &quot;magnitude&quot;: 3.14, # The magnitude.
+                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
+                            },
+                            &quot;lineSpacing&quot;: 3.14, # The amount of space between lines, as a percentage of normal, where normal is represented as 100.0. If unset, the value is inherited from the parent.
+                            &quot;spaceAbove&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is inherited from the parent.
+                              &quot;magnitude&quot;: 3.14, # The magnitude.
+                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
+                            },
+                            &quot;spaceBelow&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space below the paragraph. If unset, the value is inherited from the parent.
+                              &quot;magnitude&quot;: 3.14, # The magnitude.
+                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
+                            },
+                            &quot;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
+                          },
+                        },
+                        &quot;startIndex&quot;: 42, # The zero-based start index of this text element, in Unicode code units.
+                        &quot;textRun&quot;: { # A TextElement kind that represents a run of text that all has the same styling. # A TextElement representing a run of text where all of the characters in the run have the same TextStyle. The `start_index` and `end_index` of TextRuns will always be fully contained in the index range of a single `paragraph_marker` TextElement. In other words, a TextRun will never span multiple paragraphs.
+                          &quot;content&quot;: &quot;A String&quot;, # The text of this run.
+                          &quot;style&quot;: { # Represents the styling that can be applied to a TextRun. If this text is contained in a shape with a parent placeholder, then these text styles may be inherited from the parent. Which text styles are inherited depend on the nesting level of lists: * A text run in a paragraph that is not in a list will inherit its text style from the the newline character in the paragraph at the 0 nesting level of the list inside the parent placeholder. * A text run in a paragraph that is in a list will inherit its text style from the newline character in the paragraph at its corresponding nesting level of the list inside the parent placeholder. Inherited text styles are represented as unset fields in this message. If text is contained in a shape without a parent placeholder, unsetting these fields will revert the style to a value matching the defaults in the Slides editor. # The styling applied to this run.
+                            &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or transparent, depending on if the `opaque_color` field in it is set.
+                              &quot;opaqueColor&quot;: { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
+                                &quot;rgbColor&quot;: { # An RGB color. # An opaque RGB color.
+                                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                                &quot;themeColor&quot;: &quot;A String&quot;, # An opaque theme color.
+                              },
+                            },
+                            &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
+                            &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
+                            &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Slides or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`. Some fonts can affect the weight of the text. If an update request specifies values for both `font_family` and `bold`, the explicitly-set `bold` value is used.
+                            &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font. When read, the `font_size` will specified in points.
+                              &quot;magnitude&quot;: 3.14, # The magnitude.
+                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
+                            },
+                            &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or transparent, depending on if the `opaque_color` field in it is set.
+                              &quot;opaqueColor&quot;: { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
+                                &quot;rgbColor&quot;: { # An RGB color. # An opaque RGB color.
+                                  &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                                &quot;themeColor&quot;: &quot;A String&quot;, # An opaque theme color.
+                              },
+                            },
+                            &quot;italic&quot;: True or False, # Whether or not the text is italicized.
+                            &quot;link&quot;: { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be set to ThemeColorType.HYPERLINK and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
+                              &quot;pageObjectId&quot;: &quot;A String&quot;, # If set, indicates this is a link to the specific page in this presentation with this ID. A page with this ID may not exist.
+                              &quot;relativeLink&quot;: &quot;A String&quot;, # If set, indicates this is a link to a slide in this presentation, addressed by its position.
+                              &quot;slideIndex&quot;: 42, # If set, indicates this is a link to the slide at this zero-based index in the presentation. There may not be a slide at this index.
+                              &quot;url&quot;: &quot;A String&quot;, # If set, indicates this is a link to the external web page at this URL.
+                            },
+                            &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
+                            &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
+                            &quot;underline&quot;: True or False, # Whether or not the text is underlined.
+                            &quot;weightedFontFamily&quot;: { # Represents a font family and weight used to style a TextRun. # The font family and rendered weight of the text. This field is an extension of `font_family` meant to support explicit font weights without breaking backwards compatibility. As such, when reading the style of a range of text, the value of `weighted_font_family#font_family` will always be equal to that of `font_family`. However, when writing, if both fields are included in the field mask (either explicitly or through the wildcard `&quot;*&quot;`), their values are reconciled as follows: * If `font_family` is set and `weighted_font_family` is not, the value of `font_family` is applied with weight `400` (&quot;normal&quot;). * If both fields are set, the value of `font_family` must match that of `weighted_font_family#font_family`. If so, the font family and weight of `weighted_font_family` is applied. Otherwise, a 400 bad request error is returned. * If `weighted_font_family` is set and `font_family` is not, the font family and weight of `weighted_font_family` is applied. * If neither field is set, the font family and weight of the text inherit from the parent. Note that these properties cannot inherit separately from each other. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
+                              &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Slides or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
+                              &quot;weight&quot;: 42, # The rendered weight of the text. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. Weights greater than or equal to `700` are considered bold, and weights less than `700`are not bold. The default value is `400` (&quot;normal&quot;).
+                            },
+                          },
+                        },
+                      },
+                    ],
+                  },
+                },
+                &quot;sheetsChart&quot;: { # A PageElement kind representing a linked chart embedded from Google Sheets. # A linked chart embedded from Google Sheets. Unlinked charts are represented as images.
+                  &quot;chartId&quot;: 42, # The ID of the specific chart in the Google Sheets spreadsheet that is embedded.
+                  &quot;contentUrl&quot;: &quot;A String&quot;, # The URL of an image of the embedded chart, with a default lifetime of 30 minutes. This URL is tagged with the account of the requester. Anyone with the URL effectively accesses the image as the original requester. Access to the image may be lost if the presentation&#x27;s sharing settings change.
+                  &quot;sheetsChartProperties&quot;: { # The properties of the SheetsChart. # The properties of the Sheets chart.
+                    &quot;chartImageProperties&quot;: { # The properties of the Image. # The properties of the embedded chart image.
+                      &quot;brightness&quot;: 3.14, # The brightness effect of the image. The value should be in the interval [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                      &quot;contrast&quot;: 3.14, # The contrast effect of the image. The value should be in the interval [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                      &quot;cropProperties&quot;: { # The crop properties of an object enclosed in a container. For example, an Image. The crop properties is represented by the offsets of four edges which define a crop rectangle. The offsets are measured in percentage from the corresponding edges of the object&#x27;s original bounding rectangle towards inside, relative to the object&#x27;s original dimensions. - If the offset is in the interval (0, 1), the corresponding edge of crop rectangle is positioned inside of the object&#x27;s original bounding rectangle. - If the offset is negative or greater than 1, the corresponding edge of crop rectangle is positioned outside of the object&#x27;s original bounding rectangle. - If the left edge of the crop rectangle is on the right side of its right edge, the object will be flipped horizontally. - If the top edge of the crop rectangle is below its bottom edge, the object will be flipped vertically. - If all offsets and rotation angle is 0, the object is not cropped. After cropping, the content in the crop rectangle will be stretched to fit its container. # The crop properties of the image. If not set, the image is not cropped. This property is read-only.
+                        &quot;angle&quot;: 3.14, # The rotation angle of the crop window around its center, in radians. Rotation angle is applied after the offset.
+                        &quot;bottomOffset&quot;: 3.14, # The offset specifies the bottom edge of the crop rectangle that is located above the original bounding rectangle bottom edge, relative to the object&#x27;s original height.
+                        &quot;leftOffset&quot;: 3.14, # The offset specifies the left edge of the crop rectangle that is located to the right of the original bounding rectangle left edge, relative to the object&#x27;s original width.
+                        &quot;rightOffset&quot;: 3.14, # The offset specifies the right edge of the crop rectangle that is located to the left of the original bounding rectangle right edge, relative to the object&#x27;s original width.
+                        &quot;topOffset&quot;: 3.14, # The offset specifies the top edge of the crop rectangle that is located below the original bounding rectangle top edge, relative to the object&#x27;s original height.
+                      },
+                      &quot;link&quot;: { # A hypertext link. # The hyperlink destination of the image. If unset, there is no link.
+                        &quot;pageObjectId&quot;: &quot;A String&quot;, # If set, indicates this is a link to the specific page in this presentation with this ID. A page with this ID may not exist.
+                        &quot;relativeLink&quot;: &quot;A String&quot;, # If set, indicates this is a link to a slide in this presentation, addressed by its position.
+                        &quot;slideIndex&quot;: 42, # If set, indicates this is a link to the slide at this zero-based index in the presentation. There may not be a slide at this index.
+                        &quot;url&quot;: &quot;A String&quot;, # If set, indicates this is a link to the external web page at this URL.
+                      },
+                      &quot;outline&quot;: { # The outline of a PageElement. If these fields are unset, they may be inherited from a parent placeholder if it exists. If there is no parent, the fields will default to the value used for new page elements created in the Slides editor, which may depend on the page element kind. # The outline of the image. If not set, the image has no outline.
+                        &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the outline.
+                        &quot;outlineFill&quot;: { # The fill of the outline. # The fill of the outline.
+                          &quot;solidFill&quot;: { # A solid color fill. The page or page element is filled entirely with the specified color value. If any field is unset, its value may be inherited from a parent placeholder if it exists. # Solid color fill.
+                            &quot;alpha&quot;: 3.14, # 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 * (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.
+                            &quot;color&quot;: { # A themeable solid color value. # The color value of the solid fill.
+                              &quot;rgbColor&quot;: { # An RGB color. # An opaque RGB color.
+                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
+                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                              &quot;themeColor&quot;: &quot;A String&quot;, # An opaque theme color.
+                            },
+                          },
+                        },
+                        &quot;propertyState&quot;: &quot;A String&quot;, # The outline property state. Updating the outline on a page element will implicitly update this field to `RENDERED`, unless another value is specified in the same request. To have no outline on a page element, set this field to `NOT_RENDERED`. In this case, any other outline fields set in the same request will be ignored.
+                        &quot;weight&quot;: { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                          &quot;magnitude&quot;: 3.14, # The magnitude.
+                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
+                        },
+                      },
+                      &quot;recolor&quot;: { # A recolor effect applied on an image. # The recolor effect of the image. If not set, the image is not recolored. This property is read-only.
+                        &quot;name&quot;: &quot;A String&quot;, # The name of the recolor effect. The name is determined from the `recolor_stops` by matching the gradient against the colors in the page&#x27;s current color scheme. This property is read-only.
+                        &quot;recolorStops&quot;: [ # The recolor effect is represented by a gradient, which is a list of color stops. The colors in the gradient will replace the corresponding colors at the same position in the color palette and apply to the image. This property is read-only.
+                          { # A color and position in a gradient band.
+                            &quot;alpha&quot;: 3.14, # The alpha value of this color in the gradient band. Defaults to 1.0, fully opaque.
+                            &quot;color&quot;: { # A themeable solid color value. # The color of the gradient stop.
+                              &quot;rgbColor&quot;: { # An RGB color. # An opaque RGB color.
+                                &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
+                                &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                              &quot;themeColor&quot;: &quot;A String&quot;, # An opaque theme color.
+                            },
+                            &quot;position&quot;: 3.14, # The relative position of the color stop in the gradient band measured in percentage. The value should be in the interval [0.0, 1.0].
+                          },
+                        ],
+                      },
+                      &quot;shadow&quot;: { # The shadow properties of a page element. If these fields are unset, they may be inherited from a parent placeholder if it exists. If there is no parent, the fields will default to the value used for new page elements created in the Slides editor, which may depend on the page element kind. # The shadow of the image. If not set, the image has no shadow. This property is read-only.
+                        &quot;alignment&quot;: &quot;A String&quot;, # The alignment point of the shadow, that sets the origin for translate, scale and skew of the shadow. This property is read-only.
+                        &quot;alpha&quot;: 3.14, # The alpha of the shadow&#x27;s color, from 0.0 to 1.0.
+                        &quot;blurRadius&quot;: { # A magnitude in a single direction in the specified units. # The radius of the shadow blur. The larger the radius, the more diffuse the shadow becomes.
+                          &quot;magnitude&quot;: 3.14, # The magnitude.
+                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
+                        },
+                        &quot;color&quot;: { # A themeable solid color value. # The shadow color value.
+                          &quot;rgbColor&quot;: { # An RGB color. # An opaque RGB color.
+                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
+                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                          &quot;themeColor&quot;: &quot;A String&quot;, # An opaque theme color.
+                        },
+                        &quot;propertyState&quot;: &quot;A String&quot;, # The shadow property state. Updating the shadow on a page element will implicitly update this field to `RENDERED`, unless another value is specified in the same request. To have no shadow on a page element, set this field to `NOT_RENDERED`. In this case, any other shadow fields set in the same request will be ignored.
+                        &quot;rotateWithShape&quot;: True or False, # Whether the shadow should rotate with the shape. This property is read-only.
+                        &quot;transform&quot;: { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] to transform source coordinates (x,y) into destination coordinates (x&#x27;, y&#x27;) according to: x&#x27; x = shear_y scale_y translate_y 1 [ 1 ] After transformation, x&#x27; = scale_x * x + shear_x * y + translate_x; y&#x27; = scale_y * y + shear_y * x + translate_y; This message is therefore composed of these six matrix elements. # Transform that encodes the translate, scale, and skew of the shadow, relative to the alignment position.
+                          &quot;scaleX&quot;: 3.14, # The X coordinate scaling element.
+                          &quot;scaleY&quot;: 3.14, # The Y coordinate scaling element.
+                          &quot;shearX&quot;: 3.14, # The X coordinate shearing element.
+                          &quot;shearY&quot;: 3.14, # The Y coordinate shearing element.
+                          &quot;translateX&quot;: 3.14, # The X coordinate translation element.
+                          &quot;translateY&quot;: 3.14, # The Y coordinate translation element.
+                          &quot;unit&quot;: &quot;A String&quot;, # The units for translate elements.
+                        },
+                        &quot;type&quot;: &quot;A String&quot;, # The type of the shadow. This property is read-only.
+                      },
+                      &quot;transparency&quot;: 3.14, # The transparency effect of the image. The value should be in the interval [0.0, 1.0], where 0 means no effect and 1 means completely transparent. This property is read-only.
+                    },
+                  },
+                  &quot;spreadsheetId&quot;: &quot;A String&quot;, # The ID of the Google Sheets spreadsheet that contains the source chart.
+                },
+                &quot;size&quot;: { # A width and height. # The size of the page element.
+                  &quot;height&quot;: { # A magnitude in a single direction in the specified units. # The height of the object.
+                    &quot;magnitude&quot;: 3.14, # The magnitude.
+                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
+                  },
+                  &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the object.
+                    &quot;magnitude&quot;: 3.14, # The magnitude.
+                    &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
+                  },
+                },
+                &quot;table&quot;: { # A PageElement kind representing a table. # A table page element.
+                  &quot;columns&quot;: 42, # Number of columns in the table.
+                  &quot;horizontalBorderRows&quot;: [ # Properties of horizontal cell borders. A table&#x27;s horizontal cell borders are represented as a grid. The grid has one more row than the number of rows in the table and the same number of columns as the table. For example, if the table is 3 x 3, its horizontal borders will be represented as a grid with 4 rows and 3 columns.
+                    { # Contents of each border row in a table.
+                      &quot;tableBorderCells&quot;: [ # Properties of each border cell. When a border&#x27;s adjacent table cells are merged, it is not included in the response.
+                        { # The properties of each border cell.
+                          &quot;location&quot;: { # A location of a single table cell within a table. # The location of the border within the border table.
+                            &quot;columnIndex&quot;: 42, # The 0-based column index.
+                            &quot;rowIndex&quot;: 42, # The 0-based row index.
+                          },
+                          &quot;tableBorderProperties&quot;: { # The border styling properties of the TableBorderCell. # The border properties.
+                            &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
+                            &quot;tableBorderFill&quot;: { # The fill of the border. # The fill of the table border.
+                              &quot;solidFill&quot;: { # A solid color fill. The page or page element is filled entirely with the specified color value. If any field is unset, its value may be inherited from a parent placeholder if it exists. # Solid fill.
+                                &quot;alpha&quot;: 3.14, # 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 * (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.
+                                &quot;color&quot;: { # A themeable solid color value. # The color value of the solid fill.
+                                  &quot;rgbColor&quot;: { # An RGB color. # An opaque RGB color.
+                                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
+                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
+                                  },
+                                  &quot;themeColor&quot;: &quot;A String&quot;, # An opaque theme color.
+                                },
+                              },
+                            },
+                            &quot;weight&quot;: { # A magnitude in a single direction in the specified units. # The thickness of the border.
+                              &quot;magnitude&quot;: 3.14, # The magnitude.
+                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
+                            },
+                          },
+                        },
+                      ],
+                    },
+                  ],
+                  &quot;rows&quot;: 42, # Number of rows in the table.
+                  &quot;tableColumns&quot;: [ # Properties of each column.
+                    { # Properties of each column in a table.
+                      &quot;columnWidth&quot;: { # A magnitude in a single direction in the specified units. # Width of a column.
+                        &quot;magnitude&quot;: 3.14, # The magnitude.
+                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
+                      },
+                    },
+                  ],
+                  &quot;tableRows&quot;: [ # Properties and contents of each row. Cells that span multiple rows are contained in only one of these rows and have a row_span greater than 1.
+                    { # Properties and contents of each row in a table.
+                      &quot;rowHeight&quot;: { # A magnitude in a single direction in the specified units. # Height of a row.
+                        &quot;magnitude&quot;: 3.14, # The magnitude.
+                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
+                      },
+                      &quot;tableCells&quot;: [ # Properties and contents of each cell. Cells that span multiple columns are represented only once with a column_span greater than 1. As a result, the length of this collection does not always match the number of columns of the entire table.
+                        { # Properties and contents of each table cell.
+                          &quot;columnSpan&quot;: 42, # Column span of the cell.
+                          &quot;location&quot;: { # A location of a single table cell within a table. # The location of the cell within the table.
+                            &quot;columnIndex&quot;: 42, # The 0-based column index.
+                            &quot;rowIndex&quot;: 42, # The 0-based row index.
+                          },
+                          &quot;rowSpan&quot;: 42, # Row span of the cell.
+                          &quot;tableCellProperties&quot;: { # The properties of the TableCell. # The properties of the table cell.
+                            &quot;contentAlignment&quot;: &quot;A String&quot;, # The alignment of the content in the table cell. The default alignment matches the alignment for newly created table cells in the Slides editor.
+                            &quot;tableCellBackgroundFill&quot;: { # The table cell background fill. # The background fill of the table cell. The default fill matches the fill for newly created table cells in the Slides editor.
+                              &quot;propertyState&quot;: &quot;A String&quot;, # The background fill property state. Updating the fill on a table cell will implicitly update this field to `RENDERED`, unless another value is specified in the same request. To have no fill on a table cell, set this field to `NOT_RENDERED`. In this case, any other fill fields set in the same request will be ignored.
+                              &quot;solidFill&quot;: { # A solid color fill. The page or page element is filled entirely with the specified color value. If any field is unset, its value may be inherited from a parent placeholder if it exists. # Solid color fill.
+                                &quot;alpha&quot;: 3.14, # 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 * (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.
+                                &quot;color&quot;: { # A themeable solid color value. # The color value of the solid fill.
+                                  &quot;rgbColor&quot;: { # An RGB color. # An opaque RGB color.
+                                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
+                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
+                                  },
+                                  &quot;themeColor&quot;: &quot;A String&quot;, # An opaque theme color.
+                                },
+                              },
+                            },
+                          },
+                          &quot;text&quot;: { # The general text content. The text must reside in a compatible shape (e.g. text box or rectangle) or a table cell in a page. # The text content of the cell.
+                            &quot;lists&quot;: { # The bulleted lists contained in this text, keyed by list ID.
+                              &quot;a_key&quot;: { # A List describes the look and feel of bullets belonging to paragraphs associated with a list. A paragraph that is part of a list has an implicit reference to that list&#x27;s ID.
+                                &quot;listId&quot;: &quot;A String&quot;, # The ID of the list.
+                                &quot;nestingLevel&quot;: { # A map of nesting levels to the properties of bullets at the associated level. A list has at most nine levels of nesting, so the possible values for the keys of this map are 0 through 8, inclusive.
+                                  &quot;a_key&quot;: { # Contains properties describing the look and feel of a list bullet at a given level of nesting.
+                                    &quot;bulletStyle&quot;: { # Represents the styling that can be applied to a TextRun. If this text is contained in a shape with a parent placeholder, then these text styles may be inherited from the parent. Which text styles are inherited depend on the nesting level of lists: * A text run in a paragraph that is not in a list will inherit its text style from the the newline character in the paragraph at the 0 nesting level of the list inside the parent placeholder. * A text run in a paragraph that is in a list will inherit its text style from the newline character in the paragraph at its corresponding nesting level of the list inside the parent placeholder. Inherited text styles are represented as unset fields in this message. If text is contained in a shape without a parent placeholder, unsetting these fields will revert the style to a value matching the defaults in the Slides editor. # The style of a bullet at this level of nesting.
+                                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or transparent, depending on if the `opaque_color` field in it is set.
+                                        &quot;opaqueColor&quot;: { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
+                                          &quot;rgbColor&quot;: { # An RGB color. # An opaque RGB color.
+                                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
+                                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
+                                          },
+                                          &quot;themeColor&quot;: &quot;A String&quot;, # An opaque theme color.
+                                        },
+                                      },
+                                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
+                                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
+                                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Slides or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`. Some fonts can affect the weight of the text. If an update request specifies values for both `font_family` and `bold`, the explicitly-set `bold` value is used.
+                                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font. When read, the `font_size` will specified in points.
+                                        &quot;magnitude&quot;: 3.14, # The magnitude.
+                                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
+                                      },
+                                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or transparent, depending on if the `opaque_color` field in it is set.
+                                        &quot;opaqueColor&quot;: { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
+                                          &quot;rgbColor&quot;: { # An RGB color. # An opaque RGB color.
+                                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
+                                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
+                                          },
+                                          &quot;themeColor&quot;: &quot;A String&quot;, # An opaque theme color.
+                                        },
+                                      },
+                                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
+                                      &quot;link&quot;: { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be set to ThemeColorType.HYPERLINK and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
+                                        &quot;pageObjectId&quot;: &quot;A String&quot;, # If set, indicates this is a link to the specific page in this presentation with this ID. A page with this ID may not exist.
+                                        &quot;relativeLink&quot;: &quot;A String&quot;, # If set, indicates this is a link to a slide in this presentation, addressed by its position.
+                                        &quot;slideIndex&quot;: 42, # If set, indicates this is a link to the slide at this zero-based index in the presentation. There may not be a slide at this index.
+                                        &quot;url&quot;: &quot;A String&quot;, # If set, indicates this is a link to the external web page at this URL.
+                                      },
+                                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
+                                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
+                                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
+                                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight used to style a TextRun. # The font family and rendered weight of the text. This field is an extension of `font_family` meant to support explicit font weights without breaking backwards compatibility. As such, when reading the style of a range of text, the value of `weighted_font_family#font_family` will always be equal to that of `font_family`. However, when writing, if both fields are included in the field mask (either explicitly or through the wildcard `&quot;*&quot;`), their values are reconciled as follows: * If `font_family` is set and `weighted_font_family` is not, the value of `font_family` is applied with weight `400` (&quot;normal&quot;). * If both fields are set, the value of `font_family` must match that of `weighted_font_family#font_family`. If so, the font family and weight of `weighted_font_family` is applied. Otherwise, a 400 bad request error is returned. * If `weighted_font_family` is set and `font_family` is not, the font family and weight of `weighted_font_family` is applied. * If neither field is set, the font family and weight of the text inherit from the parent. Note that these properties cannot inherit separately from each other. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
+                                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Slides or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
+                                        &quot;weight&quot;: 42, # The rendered weight of the text. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. Weights greater than or equal to `700` are considered bold, and weights less than `700`are not bold. The default value is `400` (&quot;normal&quot;).
+                                      },
+                                    },
+                                  },
+                                },
+                              },
+                            },
+                            &quot;textElements&quot;: [ # The text contents broken down into its component parts, including styling information. This property is read-only.
+                              { # A TextElement describes the content of a range of indices in the text content of a Shape or TableCell.
+                                &quot;autoText&quot;: { # A TextElement kind that represents auto text. # A TextElement representing a spot in the text that is dynamically replaced with content that can change over time.
+                                  &quot;content&quot;: &quot;A String&quot;, # The rendered content of this auto text, if available.
+                                  &quot;style&quot;: { # Represents the styling that can be applied to a TextRun. If this text is contained in a shape with a parent placeholder, then these text styles may be inherited from the parent. Which text styles are inherited depend on the nesting level of lists: * A text run in a paragraph that is not in a list will inherit its text style from the the newline character in the paragraph at the 0 nesting level of the list inside the parent placeholder. * A text run in a paragraph that is in a list will inherit its text style from the newline character in the paragraph at its corresponding nesting level of the list inside the parent placeholder. Inherited text styles are represented as unset fields in this message. If text is contained in a shape without a parent placeholder, unsetting these fields will revert the style to a value matching the defaults in the Slides editor. # The styling applied to this auto text.
+                                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or transparent, depending on if the `opaque_color` field in it is set.
+                                      &quot;opaqueColor&quot;: { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
+                                        &quot;rgbColor&quot;: { # An RGB color. # An opaque RGB color.
+                                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
+                                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
+                                        },
+                                        &quot;themeColor&quot;: &quot;A String&quot;, # An opaque theme color.
+                                      },
+                                    },
+                                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
+                                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
+                                    &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Slides or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`. Some fonts can affect the weight of the text. If an update request specifies values for both `font_family` and `bold`, the explicitly-set `bold` value is used.
+                                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font. When read, the `font_size` will specified in points.
+                                      &quot;magnitude&quot;: 3.14, # The magnitude.
+                                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
+                                    },
+                                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or transparent, depending on if the `opaque_color` field in it is set.
+                                      &quot;opaqueColor&quot;: { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
+                                        &quot;rgbColor&quot;: { # An RGB color. # An opaque RGB color.
+                                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
+                                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
+                                        },
+                                        &quot;themeColor&quot;: &quot;A String&quot;, # An opaque theme color.
+                                      },
+                                    },
+                                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
+                                    &quot;link&quot;: { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be set to ThemeColorType.HYPERLINK and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
+                                      &quot;pageObjectId&quot;: &quot;A String&quot;, # If set, indicates this is a link to the specific page in this presentation with this ID. A page with this ID may not exist.
+                                      &quot;relativeLink&quot;: &quot;A String&quot;, # If set, indicates this is a link to a slide in this presentation, addressed by its position.
+                                      &quot;slideIndex&quot;: 42, # If set, indicates this is a link to the slide at this zero-based index in the presentation. There may not be a slide at this index.
+                                      &quot;url&quot;: &quot;A String&quot;, # If set, indicates this is a link to the external web page at this URL.
+                                    },
+                                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
+                                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
+                                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
+                                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight used to style a TextRun. # The font family and rendered weight of the text. This field is an extension of `font_family` meant to support explicit font weights without breaking backwards compatibility. As such, when reading the style of a range of text, the value of `weighted_font_family#font_family` will always be equal to that of `font_family`. However, when writing, if both fields are included in the field mask (either explicitly or through the wildcard `&quot;*&quot;`), their values are reconciled as follows: * If `font_family` is set and `weighted_font_family` is not, the value of `font_family` is applied with weight `400` (&quot;normal&quot;). * If both fields are set, the value of `font_family` must match that of `weighted_font_family#font_family`. If so, the font family and weight of `weighted_font_family` is applied. Otherwise, a 400 bad request error is returned. * If `weighted_font_family` is set and `font_family` is not, the font family and weight of `weighted_font_family` is applied. * If neither field is set, the font family and weight of the text inherit from the parent. Note that these properties cannot inherit separately from each other. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
+                                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Slides or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
+                                      &quot;weight&quot;: 42, # The rendered weight of the text. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. Weights greater than or equal to `700` are considered bold, and weights less than `700`are not bold. The default value is `400` (&quot;normal&quot;).
+                                    },
+                                  },
+                                  &quot;type&quot;: &quot;A String&quot;, # The type of this auto text.
+                                },
+                                &quot;endIndex&quot;: 42, # The zero-based end index of this text element, exclusive, in Unicode code units.
+                                &quot;paragraphMarker&quot;: { # A TextElement kind that represents the beginning of a new paragraph. # A marker representing the beginning of a new paragraph. The `start_index` and `end_index` of this TextElement represent the range of the paragraph. Other TextElements with an index range contained inside this paragraph&#x27;s range are considered to be part of this paragraph. The range of indices of two separate paragraphs will never overlap.
+                                  &quot;bullet&quot;: { # Describes the bullet of a paragraph. # The bullet for this paragraph. If not present, the paragraph does not belong to a list.
+                                    &quot;bulletStyle&quot;: { # Represents the styling that can be applied to a TextRun. If this text is contained in a shape with a parent placeholder, then these text styles may be inherited from the parent. Which text styles are inherited depend on the nesting level of lists: * A text run in a paragraph that is not in a list will inherit its text style from the the newline character in the paragraph at the 0 nesting level of the list inside the parent placeholder. * A text run in a paragraph that is in a list will inherit its text style from the newline character in the paragraph at its corresponding nesting level of the list inside the parent placeholder. Inherited text styles are represented as unset fields in this message. If text is contained in a shape without a parent placeholder, unsetting these fields will revert the style to a value matching the defaults in the Slides editor. # The paragraph specific text style applied to this bullet.
+                                      &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or transparent, depending on if the `opaque_color` field in it is set.
+                                        &quot;opaqueColor&quot;: { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
+                                          &quot;rgbColor&quot;: { # An RGB color. # An opaque RGB color.
+                                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
+                                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
+                                          },
+                                          &quot;themeColor&quot;: &quot;A String&quot;, # An opaque theme color.
+                                        },
+                                      },
+                                      &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
+                                      &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
+                                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Slides or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`. Some fonts can affect the weight of the text. If an update request specifies values for both `font_family` and `bold`, the explicitly-set `bold` value is used.
+                                      &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font. When read, the `font_size` will specified in points.
+                                        &quot;magnitude&quot;: 3.14, # The magnitude.
+                                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
+                                      },
+                                      &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or transparent, depending on if the `opaque_color` field in it is set.
+                                        &quot;opaqueColor&quot;: { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
+                                          &quot;rgbColor&quot;: { # An RGB color. # An opaque RGB color.
+                                            &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                            &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
+                                            &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
+                                          },
+                                          &quot;themeColor&quot;: &quot;A String&quot;, # An opaque theme color.
+                                        },
+                                      },
+                                      &quot;italic&quot;: True or False, # Whether or not the text is italicized.
+                                      &quot;link&quot;: { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be set to ThemeColorType.HYPERLINK and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
+                                        &quot;pageObjectId&quot;: &quot;A String&quot;, # If set, indicates this is a link to the specific page in this presentation with this ID. A page with this ID may not exist.
+                                        &quot;relativeLink&quot;: &quot;A String&quot;, # If set, indicates this is a link to a slide in this presentation, addressed by its position.
+                                        &quot;slideIndex&quot;: 42, # If set, indicates this is a link to the slide at this zero-based index in the presentation. There may not be a slide at this index.
+                                        &quot;url&quot;: &quot;A String&quot;, # If set, indicates this is a link to the external web page at this URL.
+                                      },
+                                      &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
+                                      &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
+                                      &quot;underline&quot;: True or False, # Whether or not the text is underlined.
+                                      &quot;weightedFontFamily&quot;: { # Represents a font family and weight used to style a TextRun. # The font family and rendered weight of the text. This field is an extension of `font_family` meant to support explicit font weights without breaking backwards compatibility. As such, when reading the style of a range of text, the value of `weighted_font_family#font_family` will always be equal to that of `font_family`. However, when writing, if both fields are included in the field mask (either explicitly or through the wildcard `&quot;*&quot;`), their values are reconciled as follows: * If `font_family` is set and `weighted_font_family` is not, the value of `font_family` is applied with weight `400` (&quot;normal&quot;). * If both fields are set, the value of `font_family` must match that of `weighted_font_family#font_family`. If so, the font family and weight of `weighted_font_family` is applied. Otherwise, a 400 bad request error is returned. * If `weighted_font_family` is set and `font_family` is not, the font family and weight of `weighted_font_family` is applied. * If neither field is set, the font family and weight of the text inherit from the parent. Note that these properties cannot inherit separately from each other. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
+                                        &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Slides or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
+                                        &quot;weight&quot;: 42, # The rendered weight of the text. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. Weights greater than or equal to `700` are considered bold, and weights less than `700`are not bold. The default value is `400` (&quot;normal&quot;).
+                                      },
+                                    },
+                                    &quot;glyph&quot;: &quot;A String&quot;, # The rendered bullet glyph for this paragraph.
+                                    &quot;listId&quot;: &quot;A String&quot;, # The ID of the list this paragraph belongs to.
+                                    &quot;nestingLevel&quot;: 42, # The nesting level of this paragraph in the list.
+                                  },
+                                  &quot;style&quot;: { # Styles that apply to a whole paragraph. If this text is contained in a shape with a parent placeholder, then these paragraph styles may be inherited from the parent. Which paragraph styles are inherited depend on the nesting level of lists: * A paragraph not in a list will inherit its paragraph style from the paragraph at the 0 nesting level of the list inside the parent placeholder. * A paragraph in a list will inherit its paragraph style from the paragraph at its corresponding nesting level of the list inside the parent placeholder. Inherited paragraph styles are represented as unset fields in this message. # The paragraph&#x27;s style
+                                    &quot;alignment&quot;: &quot;A String&quot;, # The text alignment for this paragraph.
+                                    &quot;direction&quot;: &quot;A String&quot;, # The text direction of this paragraph. If unset, the value defaults to LEFT_TO_RIGHT since text direction is not inherited.
+                                    &quot;indentEnd&quot;: { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to the end of the text, based on the current text direction. If unset, the value is inherited from the parent.
+                                      &quot;magnitude&quot;: 3.14, # The magnitude.
+                                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
+                                    },
+                                    &quot;indentFirstLine&quot;: { # A magnitude in a single direction in the specified units. # The amount of indentation for the start of the first line of the paragraph. If unset, the value is inherited from the parent.
+                                      &quot;magnitude&quot;: 3.14, # The magnitude.
+                                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
+                                    },
+                                    &quot;indentStart&quot;: { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to the start of the text, based on the current text direction. If unset, the value is inherited from the parent.
+                                      &quot;magnitude&quot;: 3.14, # The magnitude.
+                                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
+                                    },
+                                    &quot;lineSpacing&quot;: 3.14, # The amount of space between lines, as a percentage of normal, where normal is represented as 100.0. If unset, the value is inherited from the parent.
+                                    &quot;spaceAbove&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is inherited from the parent.
+                                      &quot;magnitude&quot;: 3.14, # The magnitude.
+                                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
+                                    },
+                                    &quot;spaceBelow&quot;: { # A magnitude in a single direction in the specified units. # The amount of extra space below the paragraph. If unset, the value is inherited from the parent.
+                                      &quot;magnitude&quot;: 3.14, # The magnitude.
+                                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
+                                    },
+                                    &quot;spacingMode&quot;: &quot;A String&quot;, # The spacing mode for the paragraph.
+                                  },
+                                },
+                                &quot;startIndex&quot;: 42, # The zero-based start index of this text element, in Unicode code units.
+                                &quot;textRun&quot;: { # A TextElement kind that represents a run of text that all has the same styling. # A TextElement representing a run of text where all of the characters in the run have the same TextStyle. The `start_index` and `end_index` of TextRuns will always be fully contained in the index range of a single `paragraph_marker` TextElement. In other words, a TextRun will never span multiple paragraphs.
+                                  &quot;content&quot;: &quot;A String&quot;, # The text of this run.
+                                  &quot;style&quot;: { # Represents the styling that can be applied to a TextRun. If this text is contained in a shape with a parent placeholder, then these text styles may be inherited from the parent. Which text styles are inherited depend on the nesting level of lists: * A text run in a paragraph that is not in a list will inherit its text style from the the newline character in the paragraph at the 0 nesting level of the list inside the parent placeholder. * A text run in a paragraph that is in a list will inherit its text style from the newline character in the paragraph at its corresponding nesting level of the list inside the parent placeholder. Inherited text styles are represented as unset fields in this message. If text is contained in a shape without a parent placeholder, unsetting these fields will revert the style to a value matching the defaults in the Slides editor. # The styling applied to this run.
+                                    &quot;backgroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or transparent, depending on if the `opaque_color` field in it is set.
+                                      &quot;opaqueColor&quot;: { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
+                                        &quot;rgbColor&quot;: { # An RGB color. # An opaque RGB color.
+                                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
+                                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
+                                        },
+                                        &quot;themeColor&quot;: &quot;A String&quot;, # An opaque theme color.
+                                      },
+                                    },
+                                    &quot;baselineOffset&quot;: &quot;A String&quot;, # The text&#x27;s vertical offset from its normal position. Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically rendered in a smaller font size, computed based on the `font_size` field. The `font_size` itself is not affected by changes in this field.
+                                    &quot;bold&quot;: True or False, # Whether or not the text is rendered as bold.
+                                    &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Slides or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`. Some fonts can affect the weight of the text. If an update request specifies values for both `font_family` and `bold`, the explicitly-set `bold` value is used.
+                                    &quot;fontSize&quot;: { # A magnitude in a single direction in the specified units. # The size of the text&#x27;s font. When read, the `font_size` will specified in points.
+                                      &quot;magnitude&quot;: 3.14, # The magnitude.
+                                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
+                                    },
+                                    &quot;foregroundColor&quot;: { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or transparent, depending on if the `opaque_color` field in it is set.
+                                      &quot;opaqueColor&quot;: { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents a transparent color.
+                                        &quot;rgbColor&quot;: { # An RGB color. # An opaque RGB color.
+                                          &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                          &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
+                                          &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
+                                        },
+                                        &quot;themeColor&quot;: &quot;A String&quot;, # An opaque theme color.
+                                      },
+                                    },
+                                    &quot;italic&quot;: True or False, # Whether or not the text is italicized.
+                                    &quot;link&quot;: { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links are not inherited from parent text. Changing the link in an update request causes some other changes to the text style of the range: * When setting a link, the text foreground color will be set to ThemeColorType.HYPERLINK and the text will be underlined. If these fields are modified in the same request, those values will be used instead of the link defaults. * Setting a link on a text range that overlaps with an existing link will also update the existing link to point to the new URL. * Links are not settable on newline characters. As a result, setting a link on a text range that crosses a paragraph boundary, such as `&quot;ABC\n123&quot;`, will separate the newline character(s) into their own text runs. The link will be applied separately to the runs before and after the newline. * Removing a link will update the text style of the range to match the style of the preceding text (or the default text styles if the preceding text is another link) unless different styles are being set in the same request.
+                                      &quot;pageObjectId&quot;: &quot;A String&quot;, # If set, indicates this is a link to the specific page in this presentation with this ID. A page with this ID may not exist.
+                                      &quot;relativeLink&quot;: &quot;A String&quot;, # If set, indicates this is a link to a slide in this presentation, addressed by its position.
+                                      &quot;slideIndex&quot;: 42, # If set, indicates this is a link to the slide at this zero-based index in the presentation. There may not be a slide at this index.
+                                      &quot;url&quot;: &quot;A String&quot;, # If set, indicates this is a link to the external web page at this URL.
+                                    },
+                                    &quot;smallCaps&quot;: True or False, # Whether or not the text is in small capital letters.
+                                    &quot;strikethrough&quot;: True or False, # Whether or not the text is struck through.
+                                    &quot;underline&quot;: True or False, # Whether or not the text is underlined.
+                                    &quot;weightedFontFamily&quot;: { # Represents a font family and weight used to style a TextRun. # The font family and rendered weight of the text. This field is an extension of `font_family` meant to support explicit font weights without breaking backwards compatibility. As such, when reading the style of a range of text, the value of `weighted_font_family#font_family` will always be equal to that of `font_family`. However, when writing, if both fields are included in the field mask (either explicitly or through the wildcard `&quot;*&quot;`), their values are reconciled as follows: * If `font_family` is set and `weighted_font_family` is not, the value of `font_family` is applied with weight `400` (&quot;normal&quot;). * If both fields are set, the value of `font_family` must match that of `weighted_font_family#font_family`. If so, the font family and weight of `weighted_font_family` is applied. Otherwise, a 400 bad request error is returned. * If `weighted_font_family` is set and `font_family` is not, the font family and weight of `weighted_font_family` is applied. * If neither field is set, the font family and weight of the text inherit from the parent. Note that these properties cannot inherit separately from each other. If an update request specifies values for both `weighted_font_family` and `bold`, the `weighted_font_family` is applied first, then `bold`. If `weighted_font_family#weight` is not set, it defaults to `400`. If `weighted_font_family` is set, then `weighted_font_family#font_family` must also be set with a non-empty value. Otherwise, a 400 bad request error is returned.
+                                      &quot;fontFamily&quot;: &quot;A String&quot;, # The font family of the text. The font family can be any font from the Font menu in Slides or from [Google Fonts] (https://fonts.google.com/). If the font name is unrecognized, the text is rendered in `Arial`.
+                                      &quot;weight&quot;: 42, # The rendered weight of the text. This field can have any value that is a multiple of `100` between `100` and `900`, inclusive. This range corresponds to the numerical values described in the CSS 2.1 Specification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness), with non-numerical values disallowed. Weights greater than or equal to `700` are considered bold, and weights less than `700`are not bold. The default value is `400` (&quot;normal&quot;).
+                                    },
+                                  },
+                                },
+                              },
+                            ],
+                          },
+                        },
+                      ],
+                      &quot;tableRowProperties&quot;: { # Properties of each row in a table. # Properties of the row.
+                        &quot;minRowHeight&quot;: { # A magnitude in a single direction in the specified units. # Minimum height of the row. The row will be rendered in the Slides editor at a height equal to or greater than this value in order to show all the text in the row&#x27;s cell(s).
+                          &quot;magnitude&quot;: 3.14, # The magnitude.
+                          &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
+                        },
+                      },
+                    },
+                  ],
+                  &quot;verticalBorderRows&quot;: [ # Properties of vertical cell borders. A table&#x27;s vertical cell borders are represented as a grid. The grid has the same number of rows as the table and one more column than the number of columns in the table. For example, if the table is 3 x 3, its vertical borders will be represented as a grid with 3 rows and 4 columns.
+                    { # Contents of each border row in a table.
+                      &quot;tableBorderCells&quot;: [ # Properties of each border cell. When a border&#x27;s adjacent table cells are merged, it is not included in the response.
+                        { # The properties of each border cell.
+                          &quot;location&quot;: { # A location of a single table cell within a table. # The location of the border within the border table.
+                            &quot;columnIndex&quot;: 42, # The 0-based column index.
+                            &quot;rowIndex&quot;: 42, # The 0-based row index.
+                          },
+                          &quot;tableBorderProperties&quot;: { # The border styling properties of the TableBorderCell. # The border properties.
+                            &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the border.
+                            &quot;tableBorderFill&quot;: { # The fill of the border. # The fill of the table border.
+                              &quot;solidFill&quot;: { # A solid color fill. The page or page element is filled entirely with the specified color value. If any field is unset, its value may be inherited from a parent placeholder if it exists. # Solid fill.
+                                &quot;alpha&quot;: 3.14, # 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 * (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.
+                                &quot;color&quot;: { # A themeable solid color value. # The color value of the solid fill.
+                                  &quot;rgbColor&quot;: { # An RGB color. # An opaque RGB color.
+                                    &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                    &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
+                                    &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
+                                  },
+                                  &quot;themeColor&quot;: &quot;A String&quot;, # An opaque theme color.
+                                },
+                              },
+                            },
+                            &quot;weight&quot;: { # A magnitude in a single direction in the specified units. # The thickness of the border.
+                              &quot;magnitude&quot;: 3.14, # The magnitude.
+                              &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
+                            },
+                          },
+                        },
+                      ],
+                    },
+                  ],
+                },
+                &quot;title&quot;: &quot;A String&quot;, # The title of the page element. Combined with description to display alt text. The field is not supported for Group elements.
+                &quot;transform&quot;: { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] to transform source coordinates (x,y) into destination coordinates (x&#x27;, y&#x27;) according to: x&#x27; x = shear_y scale_y translate_y 1 [ 1 ] After transformation, x&#x27; = scale_x * x + shear_x * y + translate_x; y&#x27; = scale_y * y + shear_y * x + translate_y; This message is therefore composed of these six matrix elements. # The transform of the page element. The visual appearance of the page element is determined by its absolute transform. To compute the absolute transform, preconcatenate a page element&#x27;s transform with the transforms of all of its parent groups. If the page element is not in a group, its absolute transform is the same as the value in this field. The initial transform for the newly created Group is always the identity transform.
+                  &quot;scaleX&quot;: 3.14, # The X coordinate scaling element.
+                  &quot;scaleY&quot;: 3.14, # The Y coordinate scaling element.
+                  &quot;shearX&quot;: 3.14, # The X coordinate shearing element.
+                  &quot;shearY&quot;: 3.14, # The Y coordinate shearing element.
+                  &quot;translateX&quot;: 3.14, # The X coordinate translation element.
+                  &quot;translateY&quot;: 3.14, # The Y coordinate translation element.
+                  &quot;unit&quot;: &quot;A String&quot;, # The units for translate elements.
+                },
+                &quot;video&quot;: { # A PageElement kind representing a video. # A video page element.
+                  &quot;id&quot;: &quot;A String&quot;, # The video source&#x27;s unique identifier for this video.
+                  &quot;source&quot;: &quot;A String&quot;, # The video source.
+                  &quot;url&quot;: &quot;A String&quot;, # An URL to a video. The URL is valid as long as the source video exists and sharing settings do not change.
+                  &quot;videoProperties&quot;: { # The properties of the Video. # The properties of the video.
+                    &quot;autoPlay&quot;: True or False, # Whether to enable video autoplay when the page is displayed in present mode. Defaults to false.
+                    &quot;end&quot;: 42, # The time at which to end playback, measured in seconds from the beginning of the video. If set, the end time should be after the start time. If not set or if you set this to a value that exceeds the video&#x27;s length, the video will be played until its end.
+                    &quot;mute&quot;: True or False, # Whether to mute the audio during video playback. Defaults to false.
+                    &quot;outline&quot;: { # The outline of a PageElement. If these fields are unset, they may be inherited from a parent placeholder if it exists. If there is no parent, the fields will default to the value used for new page elements created in the Slides editor, which may depend on the page element kind. # The outline of the video. The default outline matches the defaults for new videos created in the Slides editor.
+                      &quot;dashStyle&quot;: &quot;A String&quot;, # The dash style of the outline.
+                      &quot;outlineFill&quot;: { # The fill of the outline. # The fill of the outline.
+                        &quot;solidFill&quot;: { # A solid color fill. The page or page element is filled entirely with the specified color value. If any field is unset, its value may be inherited from a parent placeholder if it exists. # Solid color fill.
+                          &quot;alpha&quot;: 3.14, # 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 * (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.
+                          &quot;color&quot;: { # A themeable solid color value. # The color value of the solid fill.
+                            &quot;rgbColor&quot;: { # An RGB color. # An opaque RGB color.
+                              &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
+                              &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
+                              &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
+                            },
+                            &quot;themeColor&quot;: &quot;A String&quot;, # An opaque theme color.
+                          },
+                        },
+                      },
+                      &quot;propertyState&quot;: &quot;A String&quot;, # The outline property state. Updating the outline on a page element will implicitly update this field to `RENDERED`, unless another value is specified in the same request. To have no outline on a page element, set this field to `NOT_RENDERED`. In this case, any other outline fields set in the same request will be ignored.
+                      &quot;weight&quot;: { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                        &quot;magnitude&quot;: 3.14, # The magnitude.
+                        &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
+                      },
+                    },
+                    &quot;start&quot;: 42, # The time at which to start playback, measured in seconds from the beginning of the video. If set, the start time should be before the end time. If you set this to a value that exceeds the video&#x27;s length in seconds, the video will be played from the last second. If not set, the video will be played from the beginning.
+                  },
+                },
+                &quot;wordArt&quot;: { # A PageElement kind representing word art. # A word art page element.
+                  &quot;renderedText&quot;: &quot;A String&quot;, # The text rendered as word art.
+                },
+              },
+            ],
+            &quot;pageProperties&quot;: { # The properties of the Page. The page will inherit properties from the parent page. Depending on the page type the hierarchy is defined in either SlideProperties or LayoutProperties. # The properties of the page.
+              &quot;colorScheme&quot;: { # The palette of predefined colors for a page. # The color scheme of the page. If unset, the color scheme is inherited from a parent page. If the page has no parent, the color scheme uses a default Slides color scheme, matching the defaults in the Slides editor. Only the concrete colors of the first 12 ThemeColorTypes are editable. In addition, only the color scheme on `Master` pages can be updated. To update the field, a color scheme containing mappings from all the first 12 ThemeColorTypes to their concrete colors must be provided. Colors for the remaining ThemeColorTypes will be ignored.
+                &quot;colors&quot;: [ # The ThemeColorType and corresponding concrete color pairs.
+                  { # A pair mapping a theme color type to the concrete color it represents.
+                    &quot;color&quot;: { # An RGB color. # The concrete color corresponding to the theme color type above.
+                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
+                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
+                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
+                    },
+                    &quot;type&quot;: &quot;A String&quot;, # The type of the theme color.
+                  },
+                ],
+              },
+              &quot;pageBackgroundFill&quot;: { # The page background fill. # The background fill of the page. If unset, the background fill is inherited from a parent page if it exists. If the page has no parent, then the background fill defaults to the corresponding fill in the Slides editor.
+                &quot;propertyState&quot;: &quot;A String&quot;, # The background fill property state. Updating the fill on a page will implicitly update this field to `RENDERED`, unless another value is specified in the same request. To have no fill on a page, set this field to `NOT_RENDERED`. In this case, any other fill fields set in the same request will be ignored.
+                &quot;solidFill&quot;: { # A solid color fill. The page or page element is filled entirely with the specified color value. If any field is unset, its value may be inherited from a parent placeholder if it exists. # Solid color fill.
+                  &quot;alpha&quot;: 3.14, # 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 * (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.
+                  &quot;color&quot;: { # A themeable solid color value. # The color value of the solid fill.
+                    &quot;rgbColor&quot;: { # An RGB color. # An opaque RGB color.
+                      &quot;blue&quot;: 3.14, # The blue component of the color, from 0.0 to 1.0.
+                      &quot;green&quot;: 3.14, # The green component of the color, from 0.0 to 1.0.
+                      &quot;red&quot;: 3.14, # The red component of the color, from 0.0 to 1.0.
+                    },
+                    &quot;themeColor&quot;: &quot;A String&quot;, # An opaque theme color.
+                  },
+                },
+                &quot;stretchedPictureFill&quot;: { # The stretched picture fill. The page or page element is filled entirely with the specified picture. The picture is stretched to fit its container. # Stretched picture fill.
+                  &quot;contentUrl&quot;: &quot;A String&quot;, # Reading the content_url: An URL to a picture with a default lifetime of 30 minutes. This URL is tagged with the account of the requester. Anyone with the URL effectively accesses the picture as the original requester. Access to the picture may be lost if the presentation&#x27;s sharing settings change. Writing the content_url: The picture is fetched once at insertion time and a copy is stored for display inside the presentation. Pictures must be less than 50MB in size, cannot exceed 25 megapixels, and must be in one of PNG, JPEG, or GIF format. The provided URL can be at most 2 kB in length.
+                  &quot;size&quot;: { # A width and height. # The original size of the picture fill. This field is read-only.
+                    &quot;height&quot;: { # A magnitude in a single direction in the specified units. # The height of the object.
+                      &quot;magnitude&quot;: 3.14, # The magnitude.
+                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
+                    },
+                    &quot;width&quot;: { # A magnitude in a single direction in the specified units. # The width of the object.
+                      &quot;magnitude&quot;: 3.14, # The magnitude.
+                      &quot;unit&quot;: &quot;A String&quot;, # The units for magnitude.
+                    },
+                  },
+                },
+              },
+            },
+            &quot;pageType&quot;: &quot;A String&quot;, # The type of the page.
+            &quot;revisionId&quot;: &quot;A String&quot;, # The revision ID of the presentation containing this page. Can be used in update requests to assert that the presentation revision hasn&#x27;t changed since the last read operation. Only populated if the user has edit access to the presentation. The format of the revision ID may change over time, so it should be treated opaquely. A returned revision ID is only guaranteed to be valid for 24 hours after it has been returned and cannot be shared across users. If the revision ID is unchanged between calls, then the presentation has not changed. Conversely, a changed ID (for the same presentation and user) usually means the presentation has been updated; however, a changed ID can also be due to internal factors such as ID format changes.
+            &quot;slideProperties&quot;: # Object with schema name: SlideProperties # Slide specific properties. Only set if page_type = SLIDE.
+          },
         },
       },
       &quot;updateSlidesPosition&quot;: { # Updates the position of slides in the presentation. # Updates the position of a set of slides in the presentation.
@@ -2040,12 +3042,7 @@
       },
       &quot;pageType&quot;: &quot;A String&quot;, # The type of the page.
       &quot;revisionId&quot;: &quot;A String&quot;, # The revision ID of the presentation containing this page. Can be used in update requests to assert that the presentation revision hasn&#x27;t changed since the last read operation. Only populated if the user has edit access to the presentation. The format of the revision ID may change over time, so it should be treated opaquely. A returned revision ID is only guaranteed to be valid for 24 hours after it has been returned and cannot be shared across users. If the revision ID is unchanged between calls, then the presentation has not changed. Conversely, a changed ID (for the same presentation and user) usually means the presentation has been updated; however, a changed ID can also be due to internal factors such as ID format changes.
-      &quot;slideProperties&quot;: { # The properties of Page that are only relevant for pages with page_type SLIDE. # Slide specific properties. Only set if page_type = SLIDE.
-        &quot;isSkipped&quot;: True or False, # Whether the slide is skipped in the presentation mode. Defaults to false.
-        &quot;layoutObjectId&quot;: &quot;A String&quot;, # The object ID of the layout that this slide is based on. This property is read-only.
-        &quot;masterObjectId&quot;: &quot;A String&quot;, # The object ID of the master that this slide is based on. This property is read-only.
-        &quot;notesPage&quot;: # Object with schema name: Page # The notes page that this slide is associated with. It defines the visual appearance of a notes page when printing or exporting slides with speaker notes. A notes page inherits properties from the notes master. The placeholder shape with type BODY on the notes page contains the speaker notes for this slide. The ID of this shape is identified by the speakerNotesObjectId field. The notes page is read-only except for the text content and styles of the speaker notes shape. This property is read-only.
-      },
+      &quot;slideProperties&quot;: # Object with schema name: SlideProperties # Slide specific properties. Only set if page_type = SLIDE.
     },
   ],
   &quot;locale&quot;: &quot;A String&quot;, # The locale of the presentation, as an IETF BCP 47 language tag.
@@ -3051,12 +4048,7 @@
       },
       &quot;pageType&quot;: &quot;A String&quot;, # The type of the page.
       &quot;revisionId&quot;: &quot;A String&quot;, # The revision ID of the presentation containing this page. Can be used in update requests to assert that the presentation revision hasn&#x27;t changed since the last read operation. Only populated if the user has edit access to the presentation. The format of the revision ID may change over time, so it should be treated opaquely. A returned revision ID is only guaranteed to be valid for 24 hours after it has been returned and cannot be shared across users. If the revision ID is unchanged between calls, then the presentation has not changed. Conversely, a changed ID (for the same presentation and user) usually means the presentation has been updated; however, a changed ID can also be due to internal factors such as ID format changes.
-      &quot;slideProperties&quot;: { # The properties of Page that are only relevant for pages with page_type SLIDE. # Slide specific properties. Only set if page_type = SLIDE.
-        &quot;isSkipped&quot;: True or False, # Whether the slide is skipped in the presentation mode. Defaults to false.
-        &quot;layoutObjectId&quot;: &quot;A String&quot;, # The object ID of the layout that this slide is based on. This property is read-only.
-        &quot;masterObjectId&quot;: &quot;A String&quot;, # The object ID of the master that this slide is based on. This property is read-only.
-        &quot;notesPage&quot;: # Object with schema name: Page # The notes page that this slide is associated with. It defines the visual appearance of a notes page when printing or exporting slides with speaker notes. A notes page inherits properties from the notes master. The placeholder shape with type BODY on the notes page contains the speaker notes for this slide. The ID of this shape is identified by the speakerNotesObjectId field. The notes page is read-only except for the text content and styles of the speaker notes shape. This property is read-only.
-      },
+      &quot;slideProperties&quot;: # Object with schema name: SlideProperties # Slide specific properties. Only set if page_type = SLIDE.
     },
   ],
   &quot;notesMaster&quot;: { # A page in a presentation. # The notes master in the presentation. It serves three purposes: - Placeholder shapes on a notes master contain the default text styles and shape properties of all placeholder shapes on notes pages. Specifically, a `SLIDE_IMAGE` placeholder shape contains the slide thumbnail, and a `BODY` placeholder shape contains the speaker notes. - The notes master page properties define the common page properties inherited by all notes pages. - Any other shapes on the notes master appear on all notes pages. The notes master is read-only.
@@ -4060,12 +5052,7 @@
     },
     &quot;pageType&quot;: &quot;A String&quot;, # The type of the page.
     &quot;revisionId&quot;: &quot;A String&quot;, # The revision ID of the presentation containing this page. Can be used in update requests to assert that the presentation revision hasn&#x27;t changed since the last read operation. Only populated if the user has edit access to the presentation. The format of the revision ID may change over time, so it should be treated opaquely. A returned revision ID is only guaranteed to be valid for 24 hours after it has been returned and cannot be shared across users. If the revision ID is unchanged between calls, then the presentation has not changed. Conversely, a changed ID (for the same presentation and user) usually means the presentation has been updated; however, a changed ID can also be due to internal factors such as ID format changes.
-    &quot;slideProperties&quot;: { # The properties of Page that are only relevant for pages with page_type SLIDE. # Slide specific properties. Only set if page_type = SLIDE.
-      &quot;isSkipped&quot;: True or False, # Whether the slide is skipped in the presentation mode. Defaults to false.
-      &quot;layoutObjectId&quot;: &quot;A String&quot;, # The object ID of the layout that this slide is based on. This property is read-only.
-      &quot;masterObjectId&quot;: &quot;A String&quot;, # The object ID of the master that this slide is based on. This property is read-only.
-      &quot;notesPage&quot;: # Object with schema name: Page # The notes page that this slide is associated with. It defines the visual appearance of a notes page when printing or exporting slides with speaker notes. A notes page inherits properties from the notes master. The placeholder shape with type BODY on the notes page contains the speaker notes for this slide. The ID of this shape is identified by the speakerNotesObjectId field. The notes page is read-only except for the text content and styles of the speaker notes shape. This property is read-only.
-    },
+    &quot;slideProperties&quot;: # Object with schema name: SlideProperties # Slide specific properties. Only set if page_type = SLIDE.
   },
   &quot;pageSize&quot;: { # A width and height. # The size of pages in the presentation.
     &quot;height&quot;: { # A magnitude in a single direction in the specified units. # The height of the object.
@@ -5081,12 +6068,7 @@
       },
       &quot;pageType&quot;: &quot;A String&quot;, # The type of the page.
       &quot;revisionId&quot;: &quot;A String&quot;, # The revision ID of the presentation containing this page. Can be used in update requests to assert that the presentation revision hasn&#x27;t changed since the last read operation. Only populated if the user has edit access to the presentation. The format of the revision ID may change over time, so it should be treated opaquely. A returned revision ID is only guaranteed to be valid for 24 hours after it has been returned and cannot be shared across users. If the revision ID is unchanged between calls, then the presentation has not changed. Conversely, a changed ID (for the same presentation and user) usually means the presentation has been updated; however, a changed ID can also be due to internal factors such as ID format changes.
-      &quot;slideProperties&quot;: { # The properties of Page that are only relevant for pages with page_type SLIDE. # Slide specific properties. Only set if page_type = SLIDE.
-        &quot;isSkipped&quot;: True or False, # Whether the slide is skipped in the presentation mode. Defaults to false.
-        &quot;layoutObjectId&quot;: &quot;A String&quot;, # The object ID of the layout that this slide is based on. This property is read-only.
-        &quot;masterObjectId&quot;: &quot;A String&quot;, # The object ID of the master that this slide is based on. This property is read-only.
-        &quot;notesPage&quot;: # Object with schema name: Page # The notes page that this slide is associated with. It defines the visual appearance of a notes page when printing or exporting slides with speaker notes. A notes page inherits properties from the notes master. The placeholder shape with type BODY on the notes page contains the speaker notes for this slide. The ID of this shape is identified by the speakerNotesObjectId field. The notes page is read-only except for the text content and styles of the speaker notes shape. This property is read-only.
-      },
+      &quot;slideProperties&quot;: # Object with schema name: SlideProperties # Slide specific properties. Only set if page_type = SLIDE.
     },
   ],
   &quot;title&quot;: &quot;A String&quot;, # The title of the presentation.
@@ -6103,12 +7085,7 @@
       },
       &quot;pageType&quot;: &quot;A String&quot;, # The type of the page.
       &quot;revisionId&quot;: &quot;A String&quot;, # The revision ID of the presentation containing this page. Can be used in update requests to assert that the presentation revision hasn&#x27;t changed since the last read operation. Only populated if the user has edit access to the presentation. The format of the revision ID may change over time, so it should be treated opaquely. A returned revision ID is only guaranteed to be valid for 24 hours after it has been returned and cannot be shared across users. If the revision ID is unchanged between calls, then the presentation has not changed. Conversely, a changed ID (for the same presentation and user) usually means the presentation has been updated; however, a changed ID can also be due to internal factors such as ID format changes.
-      &quot;slideProperties&quot;: { # The properties of Page that are only relevant for pages with page_type SLIDE. # Slide specific properties. Only set if page_type = SLIDE.
-        &quot;isSkipped&quot;: True or False, # Whether the slide is skipped in the presentation mode. Defaults to false.
-        &quot;layoutObjectId&quot;: &quot;A String&quot;, # The object ID of the layout that this slide is based on. This property is read-only.
-        &quot;masterObjectId&quot;: &quot;A String&quot;, # The object ID of the master that this slide is based on. This property is read-only.
-        &quot;notesPage&quot;: # Object with schema name: Page # The notes page that this slide is associated with. It defines the visual appearance of a notes page when printing or exporting slides with speaker notes. A notes page inherits properties from the notes master. The placeholder shape with type BODY on the notes page contains the speaker notes for this slide. The ID of this shape is identified by the speakerNotesObjectId field. The notes page is read-only except for the text content and styles of the speaker notes shape. This property is read-only.
-      },
+      &quot;slideProperties&quot;: # Object with schema name: SlideProperties # Slide specific properties. Only set if page_type = SLIDE.
     },
   ],
   &quot;locale&quot;: &quot;A String&quot;, # The locale of the presentation, as an IETF BCP 47 language tag.
@@ -7114,12 +8091,7 @@
       },
       &quot;pageType&quot;: &quot;A String&quot;, # The type of the page.
       &quot;revisionId&quot;: &quot;A String&quot;, # The revision ID of the presentation containing this page. Can be used in update requests to assert that the presentation revision hasn&#x27;t changed since the last read operation. Only populated if the user has edit access to the presentation. The format of the revision ID may change over time, so it should be treated opaquely. A returned revision ID is only guaranteed to be valid for 24 hours after it has been returned and cannot be shared across users. If the revision ID is unchanged between calls, then the presentation has not changed. Conversely, a changed ID (for the same presentation and user) usually means the presentation has been updated; however, a changed ID can also be due to internal factors such as ID format changes.
-      &quot;slideProperties&quot;: { # The properties of Page that are only relevant for pages with page_type SLIDE. # Slide specific properties. Only set if page_type = SLIDE.
-        &quot;isSkipped&quot;: True or False, # Whether the slide is skipped in the presentation mode. Defaults to false.
-        &quot;layoutObjectId&quot;: &quot;A String&quot;, # The object ID of the layout that this slide is based on. This property is read-only.
-        &quot;masterObjectId&quot;: &quot;A String&quot;, # The object ID of the master that this slide is based on. This property is read-only.
-        &quot;notesPage&quot;: # Object with schema name: Page # The notes page that this slide is associated with. It defines the visual appearance of a notes page when printing or exporting slides with speaker notes. A notes page inherits properties from the notes master. The placeholder shape with type BODY on the notes page contains the speaker notes for this slide. The ID of this shape is identified by the speakerNotesObjectId field. The notes page is read-only except for the text content and styles of the speaker notes shape. This property is read-only.
-      },
+      &quot;slideProperties&quot;: # Object with schema name: SlideProperties # Slide specific properties. Only set if page_type = SLIDE.
     },
   ],
   &quot;notesMaster&quot;: { # A page in a presentation. # The notes master in the presentation. It serves three purposes: - Placeholder shapes on a notes master contain the default text styles and shape properties of all placeholder shapes on notes pages. Specifically, a `SLIDE_IMAGE` placeholder shape contains the slide thumbnail, and a `BODY` placeholder shape contains the speaker notes. - The notes master page properties define the common page properties inherited by all notes pages. - Any other shapes on the notes master appear on all notes pages. The notes master is read-only.
@@ -8123,12 +9095,7 @@
     },
     &quot;pageType&quot;: &quot;A String&quot;, # The type of the page.
     &quot;revisionId&quot;: &quot;A String&quot;, # The revision ID of the presentation containing this page. Can be used in update requests to assert that the presentation revision hasn&#x27;t changed since the last read operation. Only populated if the user has edit access to the presentation. The format of the revision ID may change over time, so it should be treated opaquely. A returned revision ID is only guaranteed to be valid for 24 hours after it has been returned and cannot be shared across users. If the revision ID is unchanged between calls, then the presentation has not changed. Conversely, a changed ID (for the same presentation and user) usually means the presentation has been updated; however, a changed ID can also be due to internal factors such as ID format changes.
-    &quot;slideProperties&quot;: { # The properties of Page that are only relevant for pages with page_type SLIDE. # Slide specific properties. Only set if page_type = SLIDE.
-      &quot;isSkipped&quot;: True or False, # Whether the slide is skipped in the presentation mode. Defaults to false.
-      &quot;layoutObjectId&quot;: &quot;A String&quot;, # The object ID of the layout that this slide is based on. This property is read-only.
-      &quot;masterObjectId&quot;: &quot;A String&quot;, # The object ID of the master that this slide is based on. This property is read-only.
-      &quot;notesPage&quot;: # Object with schema name: Page # The notes page that this slide is associated with. It defines the visual appearance of a notes page when printing or exporting slides with speaker notes. A notes page inherits properties from the notes master. The placeholder shape with type BODY on the notes page contains the speaker notes for this slide. The ID of this shape is identified by the speakerNotesObjectId field. The notes page is read-only except for the text content and styles of the speaker notes shape. This property is read-only.
-    },
+    &quot;slideProperties&quot;: # Object with schema name: SlideProperties # Slide specific properties. Only set if page_type = SLIDE.
   },
   &quot;pageSize&quot;: { # A width and height. # The size of pages in the presentation.
     &quot;height&quot;: { # A magnitude in a single direction in the specified units. # The height of the object.
@@ -9144,12 +10111,7 @@
       },
       &quot;pageType&quot;: &quot;A String&quot;, # The type of the page.
       &quot;revisionId&quot;: &quot;A String&quot;, # The revision ID of the presentation containing this page. Can be used in update requests to assert that the presentation revision hasn&#x27;t changed since the last read operation. Only populated if the user has edit access to the presentation. The format of the revision ID may change over time, so it should be treated opaquely. A returned revision ID is only guaranteed to be valid for 24 hours after it has been returned and cannot be shared across users. If the revision ID is unchanged between calls, then the presentation has not changed. Conversely, a changed ID (for the same presentation and user) usually means the presentation has been updated; however, a changed ID can also be due to internal factors such as ID format changes.
-      &quot;slideProperties&quot;: { # The properties of Page that are only relevant for pages with page_type SLIDE. # Slide specific properties. Only set if page_type = SLIDE.
-        &quot;isSkipped&quot;: True or False, # Whether the slide is skipped in the presentation mode. Defaults to false.
-        &quot;layoutObjectId&quot;: &quot;A String&quot;, # The object ID of the layout that this slide is based on. This property is read-only.
-        &quot;masterObjectId&quot;: &quot;A String&quot;, # The object ID of the master that this slide is based on. This property is read-only.
-        &quot;notesPage&quot;: # Object with schema name: Page # The notes page that this slide is associated with. It defines the visual appearance of a notes page when printing or exporting slides with speaker notes. A notes page inherits properties from the notes master. The placeholder shape with type BODY on the notes page contains the speaker notes for this slide. The ID of this shape is identified by the speakerNotesObjectId field. The notes page is read-only except for the text content and styles of the speaker notes shape. This property is read-only.
-      },
+      &quot;slideProperties&quot;: # Object with schema name: SlideProperties # Slide specific properties. Only set if page_type = SLIDE.
     },
   ],
   &quot;title&quot;: &quot;A String&quot;, # The title of the presentation.
@@ -10173,12 +11135,7 @@
       },
       &quot;pageType&quot;: &quot;A String&quot;, # The type of the page.
       &quot;revisionId&quot;: &quot;A String&quot;, # The revision ID of the presentation containing this page. Can be used in update requests to assert that the presentation revision hasn&#x27;t changed since the last read operation. Only populated if the user has edit access to the presentation. The format of the revision ID may change over time, so it should be treated opaquely. A returned revision ID is only guaranteed to be valid for 24 hours after it has been returned and cannot be shared across users. If the revision ID is unchanged between calls, then the presentation has not changed. Conversely, a changed ID (for the same presentation and user) usually means the presentation has been updated; however, a changed ID can also be due to internal factors such as ID format changes.
-      &quot;slideProperties&quot;: { # The properties of Page that are only relevant for pages with page_type SLIDE. # Slide specific properties. Only set if page_type = SLIDE.
-        &quot;isSkipped&quot;: True or False, # Whether the slide is skipped in the presentation mode. Defaults to false.
-        &quot;layoutObjectId&quot;: &quot;A String&quot;, # The object ID of the layout that this slide is based on. This property is read-only.
-        &quot;masterObjectId&quot;: &quot;A String&quot;, # The object ID of the master that this slide is based on. This property is read-only.
-        &quot;notesPage&quot;: # Object with schema name: Page # The notes page that this slide is associated with. It defines the visual appearance of a notes page when printing or exporting slides with speaker notes. A notes page inherits properties from the notes master. The placeholder shape with type BODY on the notes page contains the speaker notes for this slide. The ID of this shape is identified by the speakerNotesObjectId field. The notes page is read-only except for the text content and styles of the speaker notes shape. This property is read-only.
-      },
+      &quot;slideProperties&quot;: # Object with schema name: SlideProperties # Slide specific properties. Only set if page_type = SLIDE.
     },
   ],
   &quot;locale&quot;: &quot;A String&quot;, # The locale of the presentation, as an IETF BCP 47 language tag.
@@ -11184,12 +12141,7 @@
       },
       &quot;pageType&quot;: &quot;A String&quot;, # The type of the page.
       &quot;revisionId&quot;: &quot;A String&quot;, # The revision ID of the presentation containing this page. Can be used in update requests to assert that the presentation revision hasn&#x27;t changed since the last read operation. Only populated if the user has edit access to the presentation. The format of the revision ID may change over time, so it should be treated opaquely. A returned revision ID is only guaranteed to be valid for 24 hours after it has been returned and cannot be shared across users. If the revision ID is unchanged between calls, then the presentation has not changed. Conversely, a changed ID (for the same presentation and user) usually means the presentation has been updated; however, a changed ID can also be due to internal factors such as ID format changes.
-      &quot;slideProperties&quot;: { # The properties of Page that are only relevant for pages with page_type SLIDE. # Slide specific properties. Only set if page_type = SLIDE.
-        &quot;isSkipped&quot;: True or False, # Whether the slide is skipped in the presentation mode. Defaults to false.
-        &quot;layoutObjectId&quot;: &quot;A String&quot;, # The object ID of the layout that this slide is based on. This property is read-only.
-        &quot;masterObjectId&quot;: &quot;A String&quot;, # The object ID of the master that this slide is based on. This property is read-only.
-        &quot;notesPage&quot;: # Object with schema name: Page # The notes page that this slide is associated with. It defines the visual appearance of a notes page when printing or exporting slides with speaker notes. A notes page inherits properties from the notes master. The placeholder shape with type BODY on the notes page contains the speaker notes for this slide. The ID of this shape is identified by the speakerNotesObjectId field. The notes page is read-only except for the text content and styles of the speaker notes shape. This property is read-only.
-      },
+      &quot;slideProperties&quot;: # Object with schema name: SlideProperties # Slide specific properties. Only set if page_type = SLIDE.
     },
   ],
   &quot;notesMaster&quot;: { # A page in a presentation. # The notes master in the presentation. It serves three purposes: - Placeholder shapes on a notes master contain the default text styles and shape properties of all placeholder shapes on notes pages. Specifically, a `SLIDE_IMAGE` placeholder shape contains the slide thumbnail, and a `BODY` placeholder shape contains the speaker notes. - The notes master page properties define the common page properties inherited by all notes pages. - Any other shapes on the notes master appear on all notes pages. The notes master is read-only.
@@ -12193,12 +13145,7 @@
     },
     &quot;pageType&quot;: &quot;A String&quot;, # The type of the page.
     &quot;revisionId&quot;: &quot;A String&quot;, # The revision ID of the presentation containing this page. Can be used in update requests to assert that the presentation revision hasn&#x27;t changed since the last read operation. Only populated if the user has edit access to the presentation. The format of the revision ID may change over time, so it should be treated opaquely. A returned revision ID is only guaranteed to be valid for 24 hours after it has been returned and cannot be shared across users. If the revision ID is unchanged between calls, then the presentation has not changed. Conversely, a changed ID (for the same presentation and user) usually means the presentation has been updated; however, a changed ID can also be due to internal factors such as ID format changes.
-    &quot;slideProperties&quot;: { # The properties of Page that are only relevant for pages with page_type SLIDE. # Slide specific properties. Only set if page_type = SLIDE.
-      &quot;isSkipped&quot;: True or False, # Whether the slide is skipped in the presentation mode. Defaults to false.
-      &quot;layoutObjectId&quot;: &quot;A String&quot;, # The object ID of the layout that this slide is based on. This property is read-only.
-      &quot;masterObjectId&quot;: &quot;A String&quot;, # The object ID of the master that this slide is based on. This property is read-only.
-      &quot;notesPage&quot;: # Object with schema name: Page # The notes page that this slide is associated with. It defines the visual appearance of a notes page when printing or exporting slides with speaker notes. A notes page inherits properties from the notes master. The placeholder shape with type BODY on the notes page contains the speaker notes for this slide. The ID of this shape is identified by the speakerNotesObjectId field. The notes page is read-only except for the text content and styles of the speaker notes shape. This property is read-only.
-    },
+    &quot;slideProperties&quot;: # Object with schema name: SlideProperties # Slide specific properties. Only set if page_type = SLIDE.
   },
   &quot;pageSize&quot;: { # A width and height. # The size of pages in the presentation.
     &quot;height&quot;: { # A magnitude in a single direction in the specified units. # The height of the object.
@@ -13214,12 +14161,7 @@
       },
       &quot;pageType&quot;: &quot;A String&quot;, # The type of the page.
       &quot;revisionId&quot;: &quot;A String&quot;, # The revision ID of the presentation containing this page. Can be used in update requests to assert that the presentation revision hasn&#x27;t changed since the last read operation. Only populated if the user has edit access to the presentation. The format of the revision ID may change over time, so it should be treated opaquely. A returned revision ID is only guaranteed to be valid for 24 hours after it has been returned and cannot be shared across users. If the revision ID is unchanged between calls, then the presentation has not changed. Conversely, a changed ID (for the same presentation and user) usually means the presentation has been updated; however, a changed ID can also be due to internal factors such as ID format changes.
-      &quot;slideProperties&quot;: { # The properties of Page that are only relevant for pages with page_type SLIDE. # Slide specific properties. Only set if page_type = SLIDE.
-        &quot;isSkipped&quot;: True or False, # Whether the slide is skipped in the presentation mode. Defaults to false.
-        &quot;layoutObjectId&quot;: &quot;A String&quot;, # The object ID of the layout that this slide is based on. This property is read-only.
-        &quot;masterObjectId&quot;: &quot;A String&quot;, # The object ID of the master that this slide is based on. This property is read-only.
-        &quot;notesPage&quot;: # Object with schema name: Page # The notes page that this slide is associated with. It defines the visual appearance of a notes page when printing or exporting slides with speaker notes. A notes page inherits properties from the notes master. The placeholder shape with type BODY on the notes page contains the speaker notes for this slide. The ID of this shape is identified by the speakerNotesObjectId field. The notes page is read-only except for the text content and styles of the speaker notes shape. This property is read-only.
-      },
+      &quot;slideProperties&quot;: # Object with schema name: SlideProperties # Slide specific properties. Only set if page_type = SLIDE.
     },
   ],
   &quot;title&quot;: &quot;A String&quot;, # The title of the presentation.
diff --git a/docs/dyn/slides_v1.presentations.pages.html b/docs/dyn/slides_v1.presentations.pages.html
index bb9f82c..e43aa02 100644
--- a/docs/dyn/slides_v1.presentations.pages.html
+++ b/docs/dyn/slides_v1.presentations.pages.html
@@ -1105,12 +1105,7 @@
   },
   &quot;pageType&quot;: &quot;A String&quot;, # The type of the page.
   &quot;revisionId&quot;: &quot;A String&quot;, # The revision ID of the presentation containing this page. Can be used in update requests to assert that the presentation revision hasn&#x27;t changed since the last read operation. Only populated if the user has edit access to the presentation. The format of the revision ID may change over time, so it should be treated opaquely. A returned revision ID is only guaranteed to be valid for 24 hours after it has been returned and cannot be shared across users. If the revision ID is unchanged between calls, then the presentation has not changed. Conversely, a changed ID (for the same presentation and user) usually means the presentation has been updated; however, a changed ID can also be due to internal factors such as ID format changes.
-  &quot;slideProperties&quot;: { # The properties of Page that are only relevant for pages with page_type SLIDE. # Slide specific properties. Only set if page_type = SLIDE.
-    &quot;isSkipped&quot;: True or False, # Whether the slide is skipped in the presentation mode. Defaults to false.
-    &quot;layoutObjectId&quot;: &quot;A String&quot;, # The object ID of the layout that this slide is based on. This property is read-only.
-    &quot;masterObjectId&quot;: &quot;A String&quot;, # The object ID of the master that this slide is based on. This property is read-only.
-    &quot;notesPage&quot;: # Object with schema name: Page # The notes page that this slide is associated with. It defines the visual appearance of a notes page when printing or exporting slides with speaker notes. A notes page inherits properties from the notes master. The placeholder shape with type BODY on the notes page contains the speaker notes for this slide. The ID of this shape is identified by the speakerNotesObjectId field. The notes page is read-only except for the text content and styles of the speaker notes shape. This property is read-only.
-  },
+  &quot;slideProperties&quot;: # Object with schema name: SlideProperties # Slide specific properties. Only set if page_type = SLIDE.
 }</pre>
 </div>
 
diff --git a/docs/dyn/spanner_v1.projects.instances.databases.sessions.html b/docs/dyn/spanner_v1.projects.instances.databases.sessions.html
index 963628b..31c2d2f 100644
--- a/docs/dyn/spanner_v1.projects.instances.databases.sessions.html
+++ b/docs/dyn/spanner_v1.projects.instances.databases.sessions.html
@@ -421,7 +421,14 @@
         &quot;a_key&quot;: { # `Type` indicates the type of a Cloud Spanner value, as might be stored in a table cell or returned from an SQL query.
           &quot;arrayElementType&quot;: # Object with schema name: Type # If code == ARRAY, then `array_element_type` is the type of the array elements.
           &quot;code&quot;: &quot;A String&quot;, # Required. The TypeCode for this type.
-          &quot;structType&quot;: # Object with schema name: StructType # If code == STRUCT, then `struct_type` provides type information for the struct&#x27;s fields.
+          &quot;structType&quot;: { # `StructType` defines the fields of a STRUCT type. # If code == STRUCT, then `struct_type` provides type information for the struct&#x27;s fields.
+            &quot;fields&quot;: [ # The list of fields that make up this struct. Order is significant, because values of this struct type are represented as lists, where the order of field values matches the order of fields in the StructType. In turn, the order of fields matches the order of columns in a read request, or the order of fields in the `SELECT` clause of a query.
+              { # Message representing a single field of a struct.
+                &quot;name&quot;: &quot;A String&quot;, # The name of the field. For reads, this is the column name. For SQL queries, it is the column alias (e.g., `&quot;Word&quot;` in the query `&quot;SELECT &#x27;hello&#x27; AS Word&quot;`), or the column name (e.g., `&quot;ColName&quot;` in the query `&quot;SELECT ColName FROM Table&quot;`). Some columns might have an empty name (e.g., `&quot;SELECT UPPER(ColName)&quot;`). Note that a query result can contain multiple fields with the same name.
+                &quot;type&quot;: # Object with schema name: Type # The type of the field.
+              },
+            ],
+          },
         },
       },
       &quot;params&quot;: { # Parameter names and values that bind to placeholders in the DML string. A parameter placeholder consists of the `@` character followed by the parameter name (for example, `@firstName`). Parameter names can contain letters, numbers, and underscores. Parameters can appear anywhere that a literal value is expected. The same parameter name can be used more than once, for example: `&quot;WHERE id &gt; @msg_id AND id &lt; @msg_id + 100&quot;` It is an error to execute a SQL statement with unbound parameters.
@@ -479,11 +486,7 @@
           &quot;fields&quot;: [ # The list of fields that make up this struct. Order is significant, because values of this struct type are represented as lists, where the order of field values matches the order of fields in the StructType. In turn, the order of fields matches the order of columns in a read request, or the order of fields in the `SELECT` clause of a query.
             { # Message representing a single field of a struct.
               &quot;name&quot;: &quot;A String&quot;, # The name of the field. For reads, this is the column name. For SQL queries, it is the column alias (e.g., `&quot;Word&quot;` in the query `&quot;SELECT &#x27;hello&#x27; AS Word&quot;`), or the column name (e.g., `&quot;ColName&quot;` in the query `&quot;SELECT ColName FROM Table&quot;`). Some columns might have an empty name (e.g., `&quot;SELECT UPPER(ColName)&quot;`). Note that a query result can contain multiple fields with the same name.
-              &quot;type&quot;: { # `Type` indicates the type of a Cloud Spanner value, as might be stored in a table cell or returned from an SQL query. # The type of the field.
-                &quot;arrayElementType&quot;: # Object with schema name: Type # If code == ARRAY, then `array_element_type` is the type of the array elements.
-                &quot;code&quot;: &quot;A String&quot;, # Required. The TypeCode for this type.
-                &quot;structType&quot;: # Object with schema name: StructType # If code == STRUCT, then `struct_type` provides type information for the struct&#x27;s fields.
-              },
+              &quot;type&quot;: # Object with schema name: Type # The type of the field.
             },
           ],
         },
@@ -560,7 +563,14 @@
     &quot;a_key&quot;: { # `Type` indicates the type of a Cloud Spanner value, as might be stored in a table cell or returned from an SQL query.
       &quot;arrayElementType&quot;: # Object with schema name: Type # If code == ARRAY, then `array_element_type` is the type of the array elements.
       &quot;code&quot;: &quot;A String&quot;, # Required. The TypeCode for this type.
-      &quot;structType&quot;: # Object with schema name: StructType # If code == STRUCT, then `struct_type` provides type information for the struct&#x27;s fields.
+      &quot;structType&quot;: { # `StructType` defines the fields of a STRUCT type. # If code == STRUCT, then `struct_type` provides type information for the struct&#x27;s fields.
+        &quot;fields&quot;: [ # The list of fields that make up this struct. Order is significant, because values of this struct type are represented as lists, where the order of field values matches the order of fields in the StructType. In turn, the order of fields matches the order of columns in a read request, or the order of fields in the `SELECT` clause of a query.
+          { # Message representing a single field of a struct.
+            &quot;name&quot;: &quot;A String&quot;, # The name of the field. For reads, this is the column name. For SQL queries, it is the column alias (e.g., `&quot;Word&quot;` in the query `&quot;SELECT &#x27;hello&#x27; AS Word&quot;`), or the column name (e.g., `&quot;ColName&quot;` in the query `&quot;SELECT ColName FROM Table&quot;`). Some columns might have an empty name (e.g., `&quot;SELECT UPPER(ColName)&quot;`). Note that a query result can contain multiple fields with the same name.
+            &quot;type&quot;: # Object with schema name: Type # The type of the field.
+          },
+        ],
+      },
     },
   },
   &quot;params&quot;: { # Parameter names and values that bind to placeholders in the SQL string. A parameter placeholder consists of the `@` character followed by the parameter name (for example, `@firstName`). Parameter names must conform to the naming requirements of identifiers as specified at https://cloud.google.com/spanner/docs/lexical#identifiers. Parameters can appear anywhere that a literal value is expected. The same parameter name can be used more than once, for example: `&quot;WHERE id &gt; @msg_id AND id &lt; @msg_id + 100&quot;` It is an error to execute a SQL statement with unbound parameters.
@@ -627,11 +637,7 @@
       &quot;fields&quot;: [ # The list of fields that make up this struct. Order is significant, because values of this struct type are represented as lists, where the order of field values matches the order of fields in the StructType. In turn, the order of fields matches the order of columns in a read request, or the order of fields in the `SELECT` clause of a query.
         { # Message representing a single field of a struct.
           &quot;name&quot;: &quot;A String&quot;, # The name of the field. For reads, this is the column name. For SQL queries, it is the column alias (e.g., `&quot;Word&quot;` in the query `&quot;SELECT &#x27;hello&#x27; AS Word&quot;`), or the column name (e.g., `&quot;ColName&quot;` in the query `&quot;SELECT ColName FROM Table&quot;`). Some columns might have an empty name (e.g., `&quot;SELECT UPPER(ColName)&quot;`). Note that a query result can contain multiple fields with the same name.
-          &quot;type&quot;: { # `Type` indicates the type of a Cloud Spanner value, as might be stored in a table cell or returned from an SQL query. # The type of the field.
-            &quot;arrayElementType&quot;: # Object with schema name: Type # If code == ARRAY, then `array_element_type` is the type of the array elements.
-            &quot;code&quot;: &quot;A String&quot;, # Required. The TypeCode for this type.
-            &quot;structType&quot;: # Object with schema name: StructType # If code == STRUCT, then `struct_type` provides type information for the struct&#x27;s fields.
-          },
+          &quot;type&quot;: # Object with schema name: Type # The type of the field.
         },
       ],
     },
@@ -697,7 +703,14 @@
     &quot;a_key&quot;: { # `Type` indicates the type of a Cloud Spanner value, as might be stored in a table cell or returned from an SQL query.
       &quot;arrayElementType&quot;: # Object with schema name: Type # If code == ARRAY, then `array_element_type` is the type of the array elements.
       &quot;code&quot;: &quot;A String&quot;, # Required. The TypeCode for this type.
-      &quot;structType&quot;: # Object with schema name: StructType # If code == STRUCT, then `struct_type` provides type information for the struct&#x27;s fields.
+      &quot;structType&quot;: { # `StructType` defines the fields of a STRUCT type. # If code == STRUCT, then `struct_type` provides type information for the struct&#x27;s fields.
+        &quot;fields&quot;: [ # The list of fields that make up this struct. Order is significant, because values of this struct type are represented as lists, where the order of field values matches the order of fields in the StructType. In turn, the order of fields matches the order of columns in a read request, or the order of fields in the `SELECT` clause of a query.
+          { # Message representing a single field of a struct.
+            &quot;name&quot;: &quot;A String&quot;, # The name of the field. For reads, this is the column name. For SQL queries, it is the column alias (e.g., `&quot;Word&quot;` in the query `&quot;SELECT &#x27;hello&#x27; AS Word&quot;`), or the column name (e.g., `&quot;ColName&quot;` in the query `&quot;SELECT ColName FROM Table&quot;`). Some columns might have an empty name (e.g., `&quot;SELECT UPPER(ColName)&quot;`). Note that a query result can contain multiple fields with the same name.
+            &quot;type&quot;: # Object with schema name: Type # The type of the field.
+          },
+        ],
+      },
     },
   },
   &quot;params&quot;: { # Parameter names and values that bind to placeholders in the SQL string. A parameter placeholder consists of the `@` character followed by the parameter name (for example, `@firstName`). Parameter names must conform to the naming requirements of identifiers as specified at https://cloud.google.com/spanner/docs/lexical#identifiers. Parameters can appear anywhere that a literal value is expected. The same parameter name can be used more than once, for example: `&quot;WHERE id &gt; @msg_id AND id &lt; @msg_id + 100&quot;` It is an error to execute a SQL statement with unbound parameters.
@@ -765,11 +778,7 @@
       &quot;fields&quot;: [ # The list of fields that make up this struct. Order is significant, because values of this struct type are represented as lists, where the order of field values matches the order of fields in the StructType. In turn, the order of fields matches the order of columns in a read request, or the order of fields in the `SELECT` clause of a query.
         { # Message representing a single field of a struct.
           &quot;name&quot;: &quot;A String&quot;, # The name of the field. For reads, this is the column name. For SQL queries, it is the column alias (e.g., `&quot;Word&quot;` in the query `&quot;SELECT &#x27;hello&#x27; AS Word&quot;`), or the column name (e.g., `&quot;ColName&quot;` in the query `&quot;SELECT ColName FROM Table&quot;`). Some columns might have an empty name (e.g., `&quot;SELECT UPPER(ColName)&quot;`). Note that a query result can contain multiple fields with the same name.
-          &quot;type&quot;: { # `Type` indicates the type of a Cloud Spanner value, as might be stored in a table cell or returned from an SQL query. # The type of the field.
-            &quot;arrayElementType&quot;: # Object with schema name: Type # If code == ARRAY, then `array_element_type` is the type of the array elements.
-            &quot;code&quot;: &quot;A String&quot;, # Required. The TypeCode for this type.
-            &quot;structType&quot;: # Object with schema name: StructType # If code == STRUCT, then `struct_type` provides type information for the struct&#x27;s fields.
-          },
+          &quot;type&quot;: # Object with schema name: Type # The type of the field.
         },
       ],
     },
@@ -904,7 +913,14 @@
     &quot;a_key&quot;: { # `Type` indicates the type of a Cloud Spanner value, as might be stored in a table cell or returned from an SQL query.
       &quot;arrayElementType&quot;: # Object with schema name: Type # If code == ARRAY, then `array_element_type` is the type of the array elements.
       &quot;code&quot;: &quot;A String&quot;, # Required. The TypeCode for this type.
-      &quot;structType&quot;: # Object with schema name: StructType # If code == STRUCT, then `struct_type` provides type information for the struct&#x27;s fields.
+      &quot;structType&quot;: { # `StructType` defines the fields of a STRUCT type. # If code == STRUCT, then `struct_type` provides type information for the struct&#x27;s fields.
+        &quot;fields&quot;: [ # The list of fields that make up this struct. Order is significant, because values of this struct type are represented as lists, where the order of field values matches the order of fields in the StructType. In turn, the order of fields matches the order of columns in a read request, or the order of fields in the `SELECT` clause of a query.
+          { # Message representing a single field of a struct.
+            &quot;name&quot;: &quot;A String&quot;, # The name of the field. For reads, this is the column name. For SQL queries, it is the column alias (e.g., `&quot;Word&quot;` in the query `&quot;SELECT &#x27;hello&#x27; AS Word&quot;`), or the column name (e.g., `&quot;ColName&quot;` in the query `&quot;SELECT ColName FROM Table&quot;`). Some columns might have an empty name (e.g., `&quot;SELECT UPPER(ColName)&quot;`). Note that a query result can contain multiple fields with the same name.
+            &quot;type&quot;: # Object with schema name: Type # The type of the field.
+          },
+        ],
+      },
     },
   },
   &quot;params&quot;: { # Parameter names and values that bind to placeholders in the SQL string. A parameter placeholder consists of the `@` character followed by the parameter name (for example, `@firstName`). Parameter names can contain letters, numbers, and underscores. Parameters can appear anywhere that a literal value is expected. The same parameter name can be used more than once, for example: `&quot;WHERE id &gt; @msg_id AND id &lt; @msg_id + 100&quot;` It is an error to execute a SQL statement with unbound parameters.
@@ -1160,11 +1176,7 @@
       &quot;fields&quot;: [ # The list of fields that make up this struct. Order is significant, because values of this struct type are represented as lists, where the order of field values matches the order of fields in the StructType. In turn, the order of fields matches the order of columns in a read request, or the order of fields in the `SELECT` clause of a query.
         { # Message representing a single field of a struct.
           &quot;name&quot;: &quot;A String&quot;, # The name of the field. For reads, this is the column name. For SQL queries, it is the column alias (e.g., `&quot;Word&quot;` in the query `&quot;SELECT &#x27;hello&#x27; AS Word&quot;`), or the column name (e.g., `&quot;ColName&quot;` in the query `&quot;SELECT ColName FROM Table&quot;`). Some columns might have an empty name (e.g., `&quot;SELECT UPPER(ColName)&quot;`). Note that a query result can contain multiple fields with the same name.
-          &quot;type&quot;: { # `Type` indicates the type of a Cloud Spanner value, as might be stored in a table cell or returned from an SQL query. # The type of the field.
-            &quot;arrayElementType&quot;: # Object with schema name: Type # If code == ARRAY, then `array_element_type` is the type of the array elements.
-            &quot;code&quot;: &quot;A String&quot;, # Required. The TypeCode for this type.
-            &quot;structType&quot;: # Object with schema name: StructType # If code == STRUCT, then `struct_type` provides type information for the struct&#x27;s fields.
-          },
+          &quot;type&quot;: # Object with schema name: Type # The type of the field.
         },
       ],
     },
@@ -1336,11 +1348,7 @@
       &quot;fields&quot;: [ # The list of fields that make up this struct. Order is significant, because values of this struct type are represented as lists, where the order of field values matches the order of fields in the StructType. In turn, the order of fields matches the order of columns in a read request, or the order of fields in the `SELECT` clause of a query.
         { # Message representing a single field of a struct.
           &quot;name&quot;: &quot;A String&quot;, # The name of the field. For reads, this is the column name. For SQL queries, it is the column alias (e.g., `&quot;Word&quot;` in the query `&quot;SELECT &#x27;hello&#x27; AS Word&quot;`), or the column name (e.g., `&quot;ColName&quot;` in the query `&quot;SELECT ColName FROM Table&quot;`). Some columns might have an empty name (e.g., `&quot;SELECT UPPER(ColName)&quot;`). Note that a query result can contain multiple fields with the same name.
-          &quot;type&quot;: { # `Type` indicates the type of a Cloud Spanner value, as might be stored in a table cell or returned from an SQL query. # The type of the field.
-            &quot;arrayElementType&quot;: # Object with schema name: Type # If code == ARRAY, then `array_element_type` is the type of the array elements.
-            &quot;code&quot;: &quot;A String&quot;, # Required. The TypeCode for this type.
-            &quot;structType&quot;: # Object with schema name: StructType # If code == STRUCT, then `struct_type` provides type information for the struct&#x27;s fields.
-          },
+          &quot;type&quot;: # Object with schema name: Type # The type of the field.
         },
       ],
     },
diff --git a/docs/dyn/speech_v1p1beta1.projects.locations.customClasses.html b/docs/dyn/speech_v1p1beta1.projects.locations.customClasses.html
index 558cd75..3c2acb5 100644
--- a/docs/dyn/speech_v1p1beta1.projects.locations.customClasses.html
+++ b/docs/dyn/speech_v1p1beta1.projects.locations.customClasses.html
@@ -120,7 +120,7 @@
     ],
     &quot;name&quot;: &quot;A String&quot;, # The resource name of the custom class.
   },
-  &quot;customClassId&quot;: &quot;A String&quot;, # The ID to use for the custom class, which will become the final component of the custom class&#x27; resource name. This value should be 4-63 characters, and valid characters are /a-z-/.
+  &quot;customClassId&quot;: &quot;A String&quot;, # Required. The ID to use for the custom class, which will become the final component of the custom class&#x27; resource name. This value should be 4-63 characters, and valid characters are /a-z-/.
 }
 
   x__xgafv: string, V1 error format.
diff --git a/docs/dyn/speech_v1p1beta1.projects.locations.phraseSets.html b/docs/dyn/speech_v1p1beta1.projects.locations.phraseSets.html
index 6621ae9..bdc0d2d 100644
--- a/docs/dyn/speech_v1p1beta1.projects.locations.phraseSets.html
+++ b/docs/dyn/speech_v1p1beta1.projects.locations.phraseSets.html
@@ -121,7 +121,7 @@
       },
     ],
   },
-  &quot;phraseSetId&quot;: &quot;A String&quot;, # The ID to use for the phrase set, which will become the final component of the phrase set&#x27;s resource name. This value should be 4-63 characters, and valid characters are /a-z-/.
+  &quot;phraseSetId&quot;: &quot;A String&quot;, # Required. The ID to use for the phrase set, which will become the final component of the phrase set&#x27;s resource name. This value should be 4-63 characters, and valid characters are /a-z-/.
 }
 
   x__xgafv: string, V1 error format.
diff --git a/docs/dyn/speech_v1p1beta1.speech.html b/docs/dyn/speech_v1p1beta1.speech.html
index 0b1fda9..ff43ade 100644
--- a/docs/dyn/speech_v1p1beta1.speech.html
+++ b/docs/dyn/speech_v1p1beta1.speech.html
@@ -174,6 +174,13 @@
         ],
       },
     ],
+    &quot;transcriptNormalization&quot;: { # Transcription normalization configuration. Use transcription normalization to automatically replace parts of the transcript with phrases of your choosing. For StreamingRecognize, this normalization only applies to stable partial transcripts (stability &gt; 0.8) and final transcripts. # Use transcription normalization to automatically replace parts of the transcript with phrases of your choosing. For StreamingRecognize, this normalization only applies to stable partial transcripts (stability &gt; 0.8) and final transcripts.
+      &quot;entries&quot;: { # A single replacement configuration. # A list of replacement entries. We will perform replacement with one entry at a time. For example, the second entry in [&quot;cat&quot; =&gt; &quot;dog&quot;, &quot;mountain cat&quot; =&gt; &quot;mountain dog&quot;] will never be applied because we will always process the first entry before it. At most 100 entries.
+        &quot;caseSensitive&quot;: True or False, # Whether the search is case sensitive.
+        &quot;replace&quot;: &quot;A String&quot;, # What to replace with. Max length is 100 characters.
+        &quot;search&quot;: &quot;A String&quot;, # What to replace. Max length is 100 characters.
+      },
+    },
     &quot;useEnhanced&quot;: True or False, # Set to true to use an enhanced model for speech recognition. If `use_enhanced` is set to true and the `model` field is not set, then an appropriate enhanced model is chosen if an enhanced model exists for the audio. If `use_enhanced` is true and an enhanced version of the specified model does not exist, then the speech is recognized using the standard version of the specified model.
   },
   &quot;outputConfig&quot;: { # Specifies an optional destination for the recognition results. # Optional. Specifies an optional destination for the recognition results.
@@ -295,6 +302,13 @@
         ],
       },
     ],
+    &quot;transcriptNormalization&quot;: { # Transcription normalization configuration. Use transcription normalization to automatically replace parts of the transcript with phrases of your choosing. For StreamingRecognize, this normalization only applies to stable partial transcripts (stability &gt; 0.8) and final transcripts. # Use transcription normalization to automatically replace parts of the transcript with phrases of your choosing. For StreamingRecognize, this normalization only applies to stable partial transcripts (stability &gt; 0.8) and final transcripts.
+      &quot;entries&quot;: { # A single replacement configuration. # A list of replacement entries. We will perform replacement with one entry at a time. For example, the second entry in [&quot;cat&quot; =&gt; &quot;dog&quot;, &quot;mountain cat&quot; =&gt; &quot;mountain dog&quot;] will never be applied because we will always process the first entry before it. At most 100 entries.
+        &quot;caseSensitive&quot;: True or False, # Whether the search is case sensitive.
+        &quot;replace&quot;: &quot;A String&quot;, # What to replace with. Max length is 100 characters.
+        &quot;search&quot;: &quot;A String&quot;, # What to replace. Max length is 100 characters.
+      },
+    },
     &quot;useEnhanced&quot;: True or False, # Set to true to use an enhanced model for speech recognition. If `use_enhanced` is set to true and the `model` field is not set, then an appropriate enhanced model is chosen if an enhanced model exists for the audio. If `use_enhanced` is true and an enhanced version of the specified model does not exist, then the speech is recognized using the standard version of the specified model.
   },
 }
diff --git a/docs/dyn/sqladmin_v1.backupRuns.html b/docs/dyn/sqladmin_v1.backupRuns.html
new file mode 100644
index 0000000..5e77ed8
--- /dev/null
+++ b/docs/dyn/sqladmin_v1.backupRuns.html
@@ -0,0 +1,419 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="sqladmin_v1.html">Cloud SQL Admin API</a> . <a href="sqladmin_v1.backupRuns.html">backupRuns</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#close">close()</a></code></p>
+<p class="firstline">Close httplib2 connections.</p>
+<p class="toc_element">
+  <code><a href="#delete">delete(project, instance, id, x__xgafv=None)</a></code></p>
+<p class="firstline">Deletes the backup taken by a backup run.</p>
+<p class="toc_element">
+  <code><a href="#get">get(project, instance, id, x__xgafv=None)</a></code></p>
+<p class="firstline">Retrieves a resource containing information about a backup run.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(project, instance, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Creates a new backup run on demand.</p>
+<p class="toc_element">
+  <code><a href="#list">list(project, instance, maxResults=None, pageToken=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Lists all backup runs associated with the project or a given instance and configuration in the reverse chronological order of the backup initiation time.</p>
+<p class="toc_element">
+  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
+<p class="firstline">Retrieves the next page of results.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="close">close()</code>
+  <pre>Close httplib2 connections.</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="delete">delete(project, instance, id, x__xgafv=None)</code>
+  <pre>Deletes the backup taken by a backup run.
+
+Args:
+  project: string, Project ID of the project that contains the instance. (required)
+  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
+  id: string, The ID of the backup run to delete. To find a backup run ID, use the list method. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
+  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
+    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupContext**.
+  },
+  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
+    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
+      { # Database instance operation error.
+        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+      },
+    ],
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationErrors**.
+  },
+  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
+    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. **MySQL** and **PostgreSQL** instances only.
+      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
+    },
+    &quot;databases&quot;: [ # Databases to be exported. **MySQL instances:** If **fileType** is **SQL** and no database is specified, all databases are exported, except for the **mysql** system database. If **fileType** is **CSV**, you can specify one database, either by using this property or by using the **csvExportOptions.selectQuery** property, which takes precedence over this property. **PostgreSQL instances:** You must specify one database to be exported. If **fileType** is **CSV**, this database must match the one specified in the **csvExportOptions.selectQuery** property. **SQL Server instances:** You must specify one database to be exported, and the **fileType** must be **BAK**.
+      &quot;A String&quot;,
+    ],
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data. **BAK**: The file contains backup data for a SQL Server instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#exportContext**.
+    &quot;offload&quot;: True or False, # Option for export offload.
+    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
+      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
+        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to **1**, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to **2**, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than **1**, --set-gtid-purged is set to OFF.
+      },
+      &quot;schemaOnly&quot;: True or False, # Export only schemas.
+      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form **gs://bucketName/fileName**. If the file already exists, the request succeeds, but the operation fails. If **fileType** is **SQL** and the filename ends with .gz, the contents are compressed.
+  },
+  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
+    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
+      &quot;encryptionOptions&quot;: {
+        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
+        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+      },
+    },
+    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
+      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
+        &quot;A String&quot;,
+      ],
+      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
+    },
+    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If **fileType** is **SQL**, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. If **fileType** is **CSV**, one database must be specified.
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data.
+    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#importContext**.
+    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form **gs://bucketName/fileName**. Compressed gzip files (.gz) are supported when **fileType** is **SQL**. The instance must have write permissions to the bucket and read access to the file.
+  },
+  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operation**.
+  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: **CREATE** **DELETE** **UPDATE** **RESTART** **IMPORT** **EXPORT** **BACKUP_VOLUME** **RESTORE_VOLUME** **CREATE_USER** **DELETE_USER** **CREATE_DATABASE** **DELETE_DATABASE**
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are: **PENDING** **RUNNING** **DONE** **SQL_OPERATION_STATUS_UNSPECIFIED**
+  &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
+  &quot;targetLink&quot;: &quot;A String&quot;,
+  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
+  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(project, instance, id, x__xgafv=None)</code>
+  <pre>Retrieves a resource containing information about a backup run.
+
+Args:
+  project: string, Project ID of the project that contains the instance. (required)
+  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
+  id: string, The ID of this backup run. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # A BackupRun resource.
+  &quot;backupKind&quot;: &quot;A String&quot;, # Specifies the kind of backup, PHYSICAL or DEFAULT_SNAPSHOT.
+  &quot;description&quot;: &quot;A String&quot;, # The description of this run, only applicable to on-demand backups.
+  &quot;diskEncryptionConfiguration&quot;: { # Disk encryption configuration for an instance. # Encryption configuration specific to a backup.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#diskEncryptionConfiguration**.
+    &quot;kmsKeyName&quot;: &quot;A String&quot;, # Resource name of KMS key for disk encryption
+  },
+  &quot;diskEncryptionStatus&quot;: { # Disk encryption status for an instance. # Encryption status specific to a backup.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#diskEncryptionStatus**.
+    &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # KMS key version used to encrypt the Cloud SQL instance resource
+  },
+  &quot;endTime&quot;: &quot;A String&quot;, # The time the backup operation completed in UTC timezone in RFC 3339 format, for example *2012-11-15T16:19:00.094Z*.
+  &quot;enqueuedTime&quot;: &quot;A String&quot;, # The time the run was enqueued in UTC timezone in RFC 3339 format, for example *2012-11-15T16:19:00.094Z*.
+  &quot;error&quot;: { # Database instance operation error. # Information about why the backup operation failed. This is only present if the run has the FAILED status.
+    &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+    &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+  },
+  &quot;id&quot;: &quot;A String&quot;, # The identifier for this backup run. Unique only for a specific Cloud SQL instance.
+  &quot;instance&quot;: &quot;A String&quot;, # Name of the database instance.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#backupRun*.
+  &quot;location&quot;: &quot;A String&quot;, # Location of the backups.
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;startTime&quot;: &quot;A String&quot;, # The time the backup operation actually started in UTC timezone in RFC 3339 format, for example *2012-11-15T16:19:00.094Z*.
+  &quot;status&quot;: &quot;A String&quot;, # The status of this run.
+  &quot;type&quot;: &quot;A String&quot;, # The type of this run; can be either &quot;AUTOMATED&quot; or &quot;ON_DEMAND&quot;. This field defaults to &quot;ON_DEMAND&quot; and is ignored, when specified for insert requests.
+  &quot;windowStartTime&quot;: &quot;A String&quot;, # The start time of the backup window during which this the backup was attempted in RFC 3339 format, for example *2012-11-15T16:19:00.094Z*.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(project, instance, body=None, x__xgafv=None)</code>
+  <pre>Creates a new backup run on demand.
+
+Args:
+  project: string, Project ID of the project that contains the instance. (required)
+  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # A BackupRun resource.
+  &quot;backupKind&quot;: &quot;A String&quot;, # Specifies the kind of backup, PHYSICAL or DEFAULT_SNAPSHOT.
+  &quot;description&quot;: &quot;A String&quot;, # The description of this run, only applicable to on-demand backups.
+  &quot;diskEncryptionConfiguration&quot;: { # Disk encryption configuration for an instance. # Encryption configuration specific to a backup.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#diskEncryptionConfiguration**.
+    &quot;kmsKeyName&quot;: &quot;A String&quot;, # Resource name of KMS key for disk encryption
+  },
+  &quot;diskEncryptionStatus&quot;: { # Disk encryption status for an instance. # Encryption status specific to a backup.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#diskEncryptionStatus**.
+    &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # KMS key version used to encrypt the Cloud SQL instance resource
+  },
+  &quot;endTime&quot;: &quot;A String&quot;, # The time the backup operation completed in UTC timezone in RFC 3339 format, for example *2012-11-15T16:19:00.094Z*.
+  &quot;enqueuedTime&quot;: &quot;A String&quot;, # The time the run was enqueued in UTC timezone in RFC 3339 format, for example *2012-11-15T16:19:00.094Z*.
+  &quot;error&quot;: { # Database instance operation error. # Information about why the backup operation failed. This is only present if the run has the FAILED status.
+    &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+    &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+  },
+  &quot;id&quot;: &quot;A String&quot;, # The identifier for this backup run. Unique only for a specific Cloud SQL instance.
+  &quot;instance&quot;: &quot;A String&quot;, # Name of the database instance.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#backupRun*.
+  &quot;location&quot;: &quot;A String&quot;, # Location of the backups.
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;startTime&quot;: &quot;A String&quot;, # The time the backup operation actually started in UTC timezone in RFC 3339 format, for example *2012-11-15T16:19:00.094Z*.
+  &quot;status&quot;: &quot;A String&quot;, # The status of this run.
+  &quot;type&quot;: &quot;A String&quot;, # The type of this run; can be either &quot;AUTOMATED&quot; or &quot;ON_DEMAND&quot;. This field defaults to &quot;ON_DEMAND&quot; and is ignored, when specified for insert requests.
+  &quot;windowStartTime&quot;: &quot;A String&quot;, # The start time of the backup window during which this the backup was attempted in RFC 3339 format, for example *2012-11-15T16:19:00.094Z*.
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
+  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
+    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupContext**.
+  },
+  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
+    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
+      { # Database instance operation error.
+        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+      },
+    ],
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationErrors**.
+  },
+  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
+    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. **MySQL** and **PostgreSQL** instances only.
+      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
+    },
+    &quot;databases&quot;: [ # Databases to be exported. **MySQL instances:** If **fileType** is **SQL** and no database is specified, all databases are exported, except for the **mysql** system database. If **fileType** is **CSV**, you can specify one database, either by using this property or by using the **csvExportOptions.selectQuery** property, which takes precedence over this property. **PostgreSQL instances:** You must specify one database to be exported. If **fileType** is **CSV**, this database must match the one specified in the **csvExportOptions.selectQuery** property. **SQL Server instances:** You must specify one database to be exported, and the **fileType** must be **BAK**.
+      &quot;A String&quot;,
+    ],
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data. **BAK**: The file contains backup data for a SQL Server instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#exportContext**.
+    &quot;offload&quot;: True or False, # Option for export offload.
+    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
+      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
+        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to **1**, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to **2**, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than **1**, --set-gtid-purged is set to OFF.
+      },
+      &quot;schemaOnly&quot;: True or False, # Export only schemas.
+      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form **gs://bucketName/fileName**. If the file already exists, the request succeeds, but the operation fails. If **fileType** is **SQL** and the filename ends with .gz, the contents are compressed.
+  },
+  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
+    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
+      &quot;encryptionOptions&quot;: {
+        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
+        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+      },
+    },
+    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
+      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
+        &quot;A String&quot;,
+      ],
+      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
+    },
+    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If **fileType** is **SQL**, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. If **fileType** is **CSV**, one database must be specified.
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data.
+    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#importContext**.
+    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form **gs://bucketName/fileName**. Compressed gzip files (.gz) are supported when **fileType** is **SQL**. The instance must have write permissions to the bucket and read access to the file.
+  },
+  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operation**.
+  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: **CREATE** **DELETE** **UPDATE** **RESTART** **IMPORT** **EXPORT** **BACKUP_VOLUME** **RESTORE_VOLUME** **CREATE_USER** **DELETE_USER** **CREATE_DATABASE** **DELETE_DATABASE**
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are: **PENDING** **RUNNING** **DONE** **SQL_OPERATION_STATUS_UNSPECIFIED**
+  &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
+  &quot;targetLink&quot;: &quot;A String&quot;,
+  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
+  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(project, instance, maxResults=None, pageToken=None, x__xgafv=None)</code>
+  <pre>Lists all backup runs associated with the project or a given instance and configuration in the reverse chronological order of the backup initiation time.
+
+Args:
+  project: string, Project ID of the project that contains the instance. (required)
+  instance: string, Cloud SQL instance ID, or &quot;-&quot; for all instances. This does not include the project ID. (required)
+  maxResults: integer, Maximum number of backup runs per response.
+  pageToken: string, A previously-returned page token representing part of the larger set of results to view.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Backup run list results.
+  &quot;items&quot;: [ # A list of backup runs in reverse chronological order of the enqueued time.
+    { # A BackupRun resource.
+      &quot;backupKind&quot;: &quot;A String&quot;, # Specifies the kind of backup, PHYSICAL or DEFAULT_SNAPSHOT.
+      &quot;description&quot;: &quot;A String&quot;, # The description of this run, only applicable to on-demand backups.
+      &quot;diskEncryptionConfiguration&quot;: { # Disk encryption configuration for an instance. # Encryption configuration specific to a backup.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#diskEncryptionConfiguration**.
+        &quot;kmsKeyName&quot;: &quot;A String&quot;, # Resource name of KMS key for disk encryption
+      },
+      &quot;diskEncryptionStatus&quot;: { # Disk encryption status for an instance. # Encryption status specific to a backup.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#diskEncryptionStatus**.
+        &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # KMS key version used to encrypt the Cloud SQL instance resource
+      },
+      &quot;endTime&quot;: &quot;A String&quot;, # The time the backup operation completed in UTC timezone in RFC 3339 format, for example *2012-11-15T16:19:00.094Z*.
+      &quot;enqueuedTime&quot;: &quot;A String&quot;, # The time the run was enqueued in UTC timezone in RFC 3339 format, for example *2012-11-15T16:19:00.094Z*.
+      &quot;error&quot;: { # Database instance operation error. # Information about why the backup operation failed. This is only present if the run has the FAILED status.
+        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+      },
+      &quot;id&quot;: &quot;A String&quot;, # The identifier for this backup run. Unique only for a specific Cloud SQL instance.
+      &quot;instance&quot;: &quot;A String&quot;, # Name of the database instance.
+      &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#backupRun*.
+      &quot;location&quot;: &quot;A String&quot;, # Location of the backups.
+      &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+      &quot;startTime&quot;: &quot;A String&quot;, # The time the backup operation actually started in UTC timezone in RFC 3339 format, for example *2012-11-15T16:19:00.094Z*.
+      &quot;status&quot;: &quot;A String&quot;, # The status of this run.
+      &quot;type&quot;: &quot;A String&quot;, # The type of this run; can be either &quot;AUTOMATED&quot; or &quot;ON_DEMAND&quot;. This field defaults to &quot;ON_DEMAND&quot; and is ignored, when specified for insert requests.
+      &quot;windowStartTime&quot;: &quot;A String&quot;, # The start time of the backup window during which this the backup was attempted in RFC 3339 format, for example *2012-11-15T16:19:00.094Z*.
+    },
+  ],
+  &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#backupRunsList*.
+  &quot;nextPageToken&quot;: &quot;A String&quot;, # The continuation token, used to page through large result sets. Provide this value in a subsequent request to return the next page of results.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
+  <pre>Retrieves the next page of results.
+
+Args:
+  previous_request: The request for the previous page. (required)
+  previous_response: The response from the request for the previous page. (required)
+
+Returns:
+  A request object that you can call &#x27;execute()&#x27; on to request the next
+  page. Returns None if there are no more items in the collection.
+    </pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/sqladmin_v1.connect.html b/docs/dyn/sqladmin_v1.connect.html
new file mode 100644
index 0000000..d6ab29e
--- /dev/null
+++ b/docs/dyn/sqladmin_v1.connect.html
@@ -0,0 +1,172 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="sqladmin_v1.html">Cloud SQL Admin API</a> . <a href="sqladmin_v1.connect.html">connect</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#close">close()</a></code></p>
+<p class="firstline">Close httplib2 connections.</p>
+<p class="toc_element">
+  <code><a href="#generateEphemeralCert">generateEphemeralCert(project, instance, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Generates a short-lived X509 certificate containing the provided public key and signed by a private key specific to the target instance. Users may use the certificate to authenticate as themselves when connecting to the database.</p>
+<p class="toc_element">
+  <code><a href="#get">get(project, instance, readTime=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Retrieves connect settings about a Cloud SQL instance.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="close">close()</code>
+  <pre>Close httplib2 connections.</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="generateEphemeralCert">generateEphemeralCert(project, instance, body=None, x__xgafv=None)</code>
+  <pre>Generates a short-lived X509 certificate containing the provided public key and signed by a private key specific to the target instance. Users may use the certificate to authenticate as themselves when connecting to the database.
+
+Args:
+  project: string, Project ID of the project that contains the instance. (required)
+  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Ephemeral certificate creation request.
+  &quot;access_token&quot;: &quot;A String&quot;, # Optional. Access token to include in the signed certificate.
+  &quot;public_key&quot;: &quot;A String&quot;, # PEM encoded public key to include in the signed certificate.
+  &quot;readTime&quot;: &quot;A String&quot;, # Optional. Optional snapshot read timestamp to trade freshness for performance.
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Ephemeral certificate creation request.
+  &quot;ephemeralCert&quot;: { # SslCerts Resource # Generated cert
+    &quot;cert&quot;: &quot;A String&quot;, # PEM representation.
+    &quot;certSerialNumber&quot;: &quot;A String&quot;, # Serial number, as extracted from the certificate.
+    &quot;commonName&quot;: &quot;A String&quot;, # User supplied name. Constrained to [a-zA-Z.-_ ]+.
+    &quot;createTime&quot;: &quot;A String&quot;, # The time when the certificate was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**
+    &quot;expirationTime&quot;: &quot;A String&quot;, # The time when the certificate expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+    &quot;instance&quot;: &quot;A String&quot;, # Name of the database instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always sql#sslCert.
+    &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+    &quot;sha1Fingerprint&quot;: &quot;A String&quot;, # Sha1 Fingerprint.
+  },
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(project, instance, readTime=None, x__xgafv=None)</code>
+  <pre>Retrieves connect settings about a Cloud SQL instance.
+
+Args:
+  project: string, Project ID of the project that contains the instance. (required)
+  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
+  readTime: string, Optional. Optional snapshot read timestamp to trade freshness for performance.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Connect settings retrieval response.
+  &quot;backendType&quot;: &quot;A String&quot;, # **SECOND_GEN**: Cloud SQL database instance. **EXTERNAL**: A database server that is not managed by Google. This property is read-only; use the **tier** property in the **settings** object to determine the database type.
+  &quot;databaseVersion&quot;: &quot;A String&quot;, # The database engine type and version. The **databaseVersion** field cannot be changed after instance creation. MySQL instances: **MYSQL_8_0**, **MYSQL_5_7** (default), or **MYSQL_5_6**. PostgreSQL instances: **POSTGRES_9_6**, **POSTGRES_10**, **POSTGRES_11** or **POSTGRES_12** (default). SQL Server instances: **SQLSERVER_2017_STANDARD** (default), **SQLSERVER_2017_ENTERPRISE**, **SQLSERVER_2017_EXPRESS**, or **SQLSERVER_2017_WEB**.
+  &quot;ipAddresses&quot;: [ # The assigned IP addresses for the instance.
+    { # Database instance IP Mapping.
+      &quot;ipAddress&quot;: &quot;A String&quot;, # The IP address assigned.
+      &quot;timeToRetire&quot;: &quot;A String&quot;, # The due time for this IP to be retired in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**. This field is only available when the IP is scheduled to be retired.
+      &quot;type&quot;: &quot;A String&quot;, # The type of this IP address. A **PRIMARY** address is a public address that can accept incoming connections. A **PRIVATE** address is a private address that can accept incoming connections. An **OUTGOING** address is the source address of connections originating from the instance, if supported.
+    },
+  ],
+  &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#connectSettings`.
+  &quot;serverCaCert&quot;: { # SslCerts Resource # SSL configuration.
+    &quot;cert&quot;: &quot;A String&quot;, # PEM representation.
+    &quot;certSerialNumber&quot;: &quot;A String&quot;, # Serial number, as extracted from the certificate.
+    &quot;commonName&quot;: &quot;A String&quot;, # User supplied name. Constrained to [a-zA-Z.-_ ]+.
+    &quot;createTime&quot;: &quot;A String&quot;, # The time when the certificate was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**
+    &quot;expirationTime&quot;: &quot;A String&quot;, # The time when the certificate expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+    &quot;instance&quot;: &quot;A String&quot;, # Name of the database instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always sql#sslCert.
+    &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+    &quot;sha1Fingerprint&quot;: &quot;A String&quot;, # Sha1 Fingerprint.
+  },
+}</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/sqladmin_v1.databases.html b/docs/dyn/sqladmin_v1.databases.html
new file mode 100644
index 0000000..c87c4af
--- /dev/null
+++ b/docs/dyn/sqladmin_v1.databases.html
@@ -0,0 +1,573 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="sqladmin_v1.html">Cloud SQL Admin API</a> . <a href="sqladmin_v1.databases.html">databases</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#close">close()</a></code></p>
+<p class="firstline">Close httplib2 connections.</p>
+<p class="toc_element">
+  <code><a href="#delete">delete(project, instance, database, x__xgafv=None)</a></code></p>
+<p class="firstline">Deletes a database from a Cloud SQL instance.</p>
+<p class="toc_element">
+  <code><a href="#get">get(project, instance, database, x__xgafv=None)</a></code></p>
+<p class="firstline">Retrieves a resource containing information about a database inside a Cloud SQL instance.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(project, instance, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Inserts a resource containing information about a database inside a Cloud SQL instance.</p>
+<p class="toc_element">
+  <code><a href="#list">list(project, instance, x__xgafv=None)</a></code></p>
+<p class="firstline">Lists databases in the specified Cloud SQL instance.</p>
+<p class="toc_element">
+  <code><a href="#patch">patch(project, instance, database, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Partially updates a resource containing information about a database inside a Cloud SQL instance. This method supports patch semantics.</p>
+<p class="toc_element">
+  <code><a href="#update">update(project, instance, database, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Updates a resource containing information about a database inside a Cloud SQL instance.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="close">close()</code>
+  <pre>Close httplib2 connections.</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="delete">delete(project, instance, database, x__xgafv=None)</code>
+  <pre>Deletes a database from a Cloud SQL instance.
+
+Args:
+  project: string, Project ID of the project that contains the instance. (required)
+  instance: string, Database instance ID. This does not include the project ID. (required)
+  database: string, Name of the database to be deleted in the instance. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
+  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
+    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupContext**.
+  },
+  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
+    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
+      { # Database instance operation error.
+        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+      },
+    ],
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationErrors**.
+  },
+  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
+    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. **MySQL** and **PostgreSQL** instances only.
+      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
+    },
+    &quot;databases&quot;: [ # Databases to be exported. **MySQL instances:** If **fileType** is **SQL** and no database is specified, all databases are exported, except for the **mysql** system database. If **fileType** is **CSV**, you can specify one database, either by using this property or by using the **csvExportOptions.selectQuery** property, which takes precedence over this property. **PostgreSQL instances:** You must specify one database to be exported. If **fileType** is **CSV**, this database must match the one specified in the **csvExportOptions.selectQuery** property. **SQL Server instances:** You must specify one database to be exported, and the **fileType** must be **BAK**.
+      &quot;A String&quot;,
+    ],
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data. **BAK**: The file contains backup data for a SQL Server instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#exportContext**.
+    &quot;offload&quot;: True or False, # Option for export offload.
+    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
+      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
+        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to **1**, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to **2**, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than **1**, --set-gtid-purged is set to OFF.
+      },
+      &quot;schemaOnly&quot;: True or False, # Export only schemas.
+      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form **gs://bucketName/fileName**. If the file already exists, the request succeeds, but the operation fails. If **fileType** is **SQL** and the filename ends with .gz, the contents are compressed.
+  },
+  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
+    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
+      &quot;encryptionOptions&quot;: {
+        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
+        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+      },
+    },
+    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
+      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
+        &quot;A String&quot;,
+      ],
+      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
+    },
+    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If **fileType** is **SQL**, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. If **fileType** is **CSV**, one database must be specified.
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data.
+    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#importContext**.
+    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form **gs://bucketName/fileName**. Compressed gzip files (.gz) are supported when **fileType** is **SQL**. The instance must have write permissions to the bucket and read access to the file.
+  },
+  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operation**.
+  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: **CREATE** **DELETE** **UPDATE** **RESTART** **IMPORT** **EXPORT** **BACKUP_VOLUME** **RESTORE_VOLUME** **CREATE_USER** **DELETE_USER** **CREATE_DATABASE** **DELETE_DATABASE**
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are: **PENDING** **RUNNING** **DONE** **SQL_OPERATION_STATUS_UNSPECIFIED**
+  &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
+  &quot;targetLink&quot;: &quot;A String&quot;,
+  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
+  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(project, instance, database, x__xgafv=None)</code>
+  <pre>Retrieves a resource containing information about a database inside a Cloud SQL instance.
+
+Args:
+  project: string, Project ID of the project that contains the instance. (required)
+  instance: string, Database instance ID. This does not include the project ID. (required)
+  database: string, Name of the database in the instance. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Represents a SQL database on the Cloud SQL instance.
+  &quot;charset&quot;: &quot;A String&quot;, # The Cloud SQL charset value.
+  &quot;collation&quot;: &quot;A String&quot;, # The Cloud SQL collation value.
+  &quot;etag&quot;: &quot;A String&quot;, # This field is deprecated and will be removed from a future version of the API.
+  &quot;instance&quot;: &quot;A String&quot;, # The name of the Cloud SQL instance. This does not include the project ID.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#database**.
+  &quot;name&quot;: &quot;A String&quot;, # The name of the database in the Cloud SQL instance. This does not include the project ID or instance name.
+  &quot;project&quot;: &quot;A String&quot;, # The project ID of the project containing the Cloud SQL database. The Google apps domain is prefixed if applicable.
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;sqlserverDatabaseDetails&quot;: { # Represents a Sql Server database on the Cloud SQL instance.
+    &quot;compatibilityLevel&quot;: 42, # The version of SQL Server with which the database is to be made compatible
+    &quot;recoveryModel&quot;: &quot;A String&quot;, # The recovery model of a SQL Server database
+  },
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(project, instance, body=None, x__xgafv=None)</code>
+  <pre>Inserts a resource containing information about a database inside a Cloud SQL instance.
+
+Args:
+  project: string, Project ID of the project that contains the instance. (required)
+  instance: string, Database instance ID. This does not include the project ID. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Represents a SQL database on the Cloud SQL instance.
+  &quot;charset&quot;: &quot;A String&quot;, # The Cloud SQL charset value.
+  &quot;collation&quot;: &quot;A String&quot;, # The Cloud SQL collation value.
+  &quot;etag&quot;: &quot;A String&quot;, # This field is deprecated and will be removed from a future version of the API.
+  &quot;instance&quot;: &quot;A String&quot;, # The name of the Cloud SQL instance. This does not include the project ID.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#database**.
+  &quot;name&quot;: &quot;A String&quot;, # The name of the database in the Cloud SQL instance. This does not include the project ID or instance name.
+  &quot;project&quot;: &quot;A String&quot;, # The project ID of the project containing the Cloud SQL database. The Google apps domain is prefixed if applicable.
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;sqlserverDatabaseDetails&quot;: { # Represents a Sql Server database on the Cloud SQL instance.
+    &quot;compatibilityLevel&quot;: 42, # The version of SQL Server with which the database is to be made compatible
+    &quot;recoveryModel&quot;: &quot;A String&quot;, # The recovery model of a SQL Server database
+  },
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
+  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
+    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupContext**.
+  },
+  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
+    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
+      { # Database instance operation error.
+        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+      },
+    ],
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationErrors**.
+  },
+  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
+    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. **MySQL** and **PostgreSQL** instances only.
+      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
+    },
+    &quot;databases&quot;: [ # Databases to be exported. **MySQL instances:** If **fileType** is **SQL** and no database is specified, all databases are exported, except for the **mysql** system database. If **fileType** is **CSV**, you can specify one database, either by using this property or by using the **csvExportOptions.selectQuery** property, which takes precedence over this property. **PostgreSQL instances:** You must specify one database to be exported. If **fileType** is **CSV**, this database must match the one specified in the **csvExportOptions.selectQuery** property. **SQL Server instances:** You must specify one database to be exported, and the **fileType** must be **BAK**.
+      &quot;A String&quot;,
+    ],
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data. **BAK**: The file contains backup data for a SQL Server instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#exportContext**.
+    &quot;offload&quot;: True or False, # Option for export offload.
+    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
+      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
+        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to **1**, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to **2**, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than **1**, --set-gtid-purged is set to OFF.
+      },
+      &quot;schemaOnly&quot;: True or False, # Export only schemas.
+      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form **gs://bucketName/fileName**. If the file already exists, the request succeeds, but the operation fails. If **fileType** is **SQL** and the filename ends with .gz, the contents are compressed.
+  },
+  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
+    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
+      &quot;encryptionOptions&quot;: {
+        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
+        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+      },
+    },
+    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
+      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
+        &quot;A String&quot;,
+      ],
+      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
+    },
+    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If **fileType** is **SQL**, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. If **fileType** is **CSV**, one database must be specified.
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data.
+    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#importContext**.
+    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form **gs://bucketName/fileName**. Compressed gzip files (.gz) are supported when **fileType** is **SQL**. The instance must have write permissions to the bucket and read access to the file.
+  },
+  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operation**.
+  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: **CREATE** **DELETE** **UPDATE** **RESTART** **IMPORT** **EXPORT** **BACKUP_VOLUME** **RESTORE_VOLUME** **CREATE_USER** **DELETE_USER** **CREATE_DATABASE** **DELETE_DATABASE**
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are: **PENDING** **RUNNING** **DONE** **SQL_OPERATION_STATUS_UNSPECIFIED**
+  &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
+  &quot;targetLink&quot;: &quot;A String&quot;,
+  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
+  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(project, instance, x__xgafv=None)</code>
+  <pre>Lists databases in the specified Cloud SQL instance.
+
+Args:
+  project: string, Project ID of the project that contains the instance. (required)
+  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Database list response.
+  &quot;items&quot;: [ # List of database resources in the instance.
+    { # Represents a SQL database on the Cloud SQL instance.
+      &quot;charset&quot;: &quot;A String&quot;, # The Cloud SQL charset value.
+      &quot;collation&quot;: &quot;A String&quot;, # The Cloud SQL collation value.
+      &quot;etag&quot;: &quot;A String&quot;, # This field is deprecated and will be removed from a future version of the API.
+      &quot;instance&quot;: &quot;A String&quot;, # The name of the Cloud SQL instance. This does not include the project ID.
+      &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#database**.
+      &quot;name&quot;: &quot;A String&quot;, # The name of the database in the Cloud SQL instance. This does not include the project ID or instance name.
+      &quot;project&quot;: &quot;A String&quot;, # The project ID of the project containing the Cloud SQL database. The Google apps domain is prefixed if applicable.
+      &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+      &quot;sqlserverDatabaseDetails&quot;: { # Represents a Sql Server database on the Cloud SQL instance.
+        &quot;compatibilityLevel&quot;: 42, # The version of SQL Server with which the database is to be made compatible
+        &quot;recoveryModel&quot;: &quot;A String&quot;, # The recovery model of a SQL Server database
+      },
+    },
+  ],
+  &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#databasesList*.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="patch">patch(project, instance, database, body=None, x__xgafv=None)</code>
+  <pre>Partially updates a resource containing information about a database inside a Cloud SQL instance. This method supports patch semantics.
+
+Args:
+  project: string, Project ID of the project that contains the instance. (required)
+  instance: string, Database instance ID. This does not include the project ID. (required)
+  database: string, Name of the database to be updated in the instance. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Represents a SQL database on the Cloud SQL instance.
+  &quot;charset&quot;: &quot;A String&quot;, # The Cloud SQL charset value.
+  &quot;collation&quot;: &quot;A String&quot;, # The Cloud SQL collation value.
+  &quot;etag&quot;: &quot;A String&quot;, # This field is deprecated and will be removed from a future version of the API.
+  &quot;instance&quot;: &quot;A String&quot;, # The name of the Cloud SQL instance. This does not include the project ID.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#database**.
+  &quot;name&quot;: &quot;A String&quot;, # The name of the database in the Cloud SQL instance. This does not include the project ID or instance name.
+  &quot;project&quot;: &quot;A String&quot;, # The project ID of the project containing the Cloud SQL database. The Google apps domain is prefixed if applicable.
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;sqlserverDatabaseDetails&quot;: { # Represents a Sql Server database on the Cloud SQL instance.
+    &quot;compatibilityLevel&quot;: 42, # The version of SQL Server with which the database is to be made compatible
+    &quot;recoveryModel&quot;: &quot;A String&quot;, # The recovery model of a SQL Server database
+  },
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
+  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
+    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupContext**.
+  },
+  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
+    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
+      { # Database instance operation error.
+        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+      },
+    ],
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationErrors**.
+  },
+  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
+    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. **MySQL** and **PostgreSQL** instances only.
+      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
+    },
+    &quot;databases&quot;: [ # Databases to be exported. **MySQL instances:** If **fileType** is **SQL** and no database is specified, all databases are exported, except for the **mysql** system database. If **fileType** is **CSV**, you can specify one database, either by using this property or by using the **csvExportOptions.selectQuery** property, which takes precedence over this property. **PostgreSQL instances:** You must specify one database to be exported. If **fileType** is **CSV**, this database must match the one specified in the **csvExportOptions.selectQuery** property. **SQL Server instances:** You must specify one database to be exported, and the **fileType** must be **BAK**.
+      &quot;A String&quot;,
+    ],
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data. **BAK**: The file contains backup data for a SQL Server instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#exportContext**.
+    &quot;offload&quot;: True or False, # Option for export offload.
+    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
+      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
+        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to **1**, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to **2**, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than **1**, --set-gtid-purged is set to OFF.
+      },
+      &quot;schemaOnly&quot;: True or False, # Export only schemas.
+      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form **gs://bucketName/fileName**. If the file already exists, the request succeeds, but the operation fails. If **fileType** is **SQL** and the filename ends with .gz, the contents are compressed.
+  },
+  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
+    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
+      &quot;encryptionOptions&quot;: {
+        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
+        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+      },
+    },
+    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
+      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
+        &quot;A String&quot;,
+      ],
+      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
+    },
+    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If **fileType** is **SQL**, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. If **fileType** is **CSV**, one database must be specified.
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data.
+    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#importContext**.
+    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form **gs://bucketName/fileName**. Compressed gzip files (.gz) are supported when **fileType** is **SQL**. The instance must have write permissions to the bucket and read access to the file.
+  },
+  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operation**.
+  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: **CREATE** **DELETE** **UPDATE** **RESTART** **IMPORT** **EXPORT** **BACKUP_VOLUME** **RESTORE_VOLUME** **CREATE_USER** **DELETE_USER** **CREATE_DATABASE** **DELETE_DATABASE**
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are: **PENDING** **RUNNING** **DONE** **SQL_OPERATION_STATUS_UNSPECIFIED**
+  &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
+  &quot;targetLink&quot;: &quot;A String&quot;,
+  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
+  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="update">update(project, instance, database, body=None, x__xgafv=None)</code>
+  <pre>Updates a resource containing information about a database inside a Cloud SQL instance.
+
+Args:
+  project: string, Project ID of the project that contains the instance. (required)
+  instance: string, Database instance ID. This does not include the project ID. (required)
+  database: string, Name of the database to be updated in the instance. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Represents a SQL database on the Cloud SQL instance.
+  &quot;charset&quot;: &quot;A String&quot;, # The Cloud SQL charset value.
+  &quot;collation&quot;: &quot;A String&quot;, # The Cloud SQL collation value.
+  &quot;etag&quot;: &quot;A String&quot;, # This field is deprecated and will be removed from a future version of the API.
+  &quot;instance&quot;: &quot;A String&quot;, # The name of the Cloud SQL instance. This does not include the project ID.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#database**.
+  &quot;name&quot;: &quot;A String&quot;, # The name of the database in the Cloud SQL instance. This does not include the project ID or instance name.
+  &quot;project&quot;: &quot;A String&quot;, # The project ID of the project containing the Cloud SQL database. The Google apps domain is prefixed if applicable.
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;sqlserverDatabaseDetails&quot;: { # Represents a Sql Server database on the Cloud SQL instance.
+    &quot;compatibilityLevel&quot;: 42, # The version of SQL Server with which the database is to be made compatible
+    &quot;recoveryModel&quot;: &quot;A String&quot;, # The recovery model of a SQL Server database
+  },
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
+  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
+    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupContext**.
+  },
+  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
+    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
+      { # Database instance operation error.
+        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+      },
+    ],
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationErrors**.
+  },
+  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
+    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. **MySQL** and **PostgreSQL** instances only.
+      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
+    },
+    &quot;databases&quot;: [ # Databases to be exported. **MySQL instances:** If **fileType** is **SQL** and no database is specified, all databases are exported, except for the **mysql** system database. If **fileType** is **CSV**, you can specify one database, either by using this property or by using the **csvExportOptions.selectQuery** property, which takes precedence over this property. **PostgreSQL instances:** You must specify one database to be exported. If **fileType** is **CSV**, this database must match the one specified in the **csvExportOptions.selectQuery** property. **SQL Server instances:** You must specify one database to be exported, and the **fileType** must be **BAK**.
+      &quot;A String&quot;,
+    ],
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data. **BAK**: The file contains backup data for a SQL Server instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#exportContext**.
+    &quot;offload&quot;: True or False, # Option for export offload.
+    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
+      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
+        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to **1**, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to **2**, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than **1**, --set-gtid-purged is set to OFF.
+      },
+      &quot;schemaOnly&quot;: True or False, # Export only schemas.
+      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form **gs://bucketName/fileName**. If the file already exists, the request succeeds, but the operation fails. If **fileType** is **SQL** and the filename ends with .gz, the contents are compressed.
+  },
+  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
+    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
+      &quot;encryptionOptions&quot;: {
+        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
+        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+      },
+    },
+    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
+      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
+        &quot;A String&quot;,
+      ],
+      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
+    },
+    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If **fileType** is **SQL**, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. If **fileType** is **CSV**, one database must be specified.
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data.
+    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#importContext**.
+    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form **gs://bucketName/fileName**. Compressed gzip files (.gz) are supported when **fileType** is **SQL**. The instance must have write permissions to the bucket and read access to the file.
+  },
+  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operation**.
+  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: **CREATE** **DELETE** **UPDATE** **RESTART** **IMPORT** **EXPORT** **BACKUP_VOLUME** **RESTORE_VOLUME** **CREATE_USER** **DELETE_USER** **CREATE_DATABASE** **DELETE_DATABASE**
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are: **PENDING** **RUNNING** **DONE** **SQL_OPERATION_STATUS_UNSPECIFIED**
+  &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
+  &quot;targetLink&quot;: &quot;A String&quot;,
+  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
+  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
+}</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/sqladmin_v1.flags.html b/docs/dyn/sqladmin_v1.flags.html
new file mode 100644
index 0000000..3d050b1
--- /dev/null
+++ b/docs/dyn/sqladmin_v1.flags.html
@@ -0,0 +1,128 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="sqladmin_v1.html">Cloud SQL Admin API</a> . <a href="sqladmin_v1.flags.html">flags</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#close">close()</a></code></p>
+<p class="firstline">Close httplib2 connections.</p>
+<p class="toc_element">
+  <code><a href="#list">list(databaseVersion=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Lists all available database flags for Cloud SQL instances.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="close">close()</code>
+  <pre>Close httplib2 connections.</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(databaseVersion=None, x__xgafv=None)</code>
+  <pre>Lists all available database flags for Cloud SQL instances.
+
+Args:
+  databaseVersion: string, Database type and version you want to retrieve flags for. By default, this method returns flags for all database types and versions.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Flags list response.
+  &quot;items&quot;: [ # List of flags.
+    { # A flag resource.
+      &quot;allowedIntValues&quot;: [ # Use this field if only certain integers are accepted. Can be combined with min_value and max_value to add additional values.
+        &quot;A String&quot;,
+      ],
+      &quot;allowedStringValues&quot;: [ # For **STRING** flags, a list of strings that the value can be set to.
+        &quot;A String&quot;,
+      ],
+      &quot;appliesTo&quot;: [ # The database version this flag applies to. Can be **MYSQL_8_0**, **MYSQL_5_6**, or **MYSQL_5_7**.
+        &quot;A String&quot;,
+      ],
+      &quot;inBeta&quot;: True or False, # Whether or not the flag is considered in beta.
+      &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#flag**.
+      &quot;maxValue&quot;: &quot;A String&quot;, # For **INTEGER** flags, the maximum allowed value.
+      &quot;minValue&quot;: &quot;A String&quot;, # For **INTEGER** flags, the minimum allowed value.
+      &quot;name&quot;: &quot;A String&quot;, # This is the name of the flag. Flag names always use underscores, not hyphens, for example: **max_allowed_packet**
+      &quot;requiresRestart&quot;: True or False, # Indicates whether changing this flag will trigger a database restart. Only applicable to Second Generation instances.
+      &quot;type&quot;: &quot;A String&quot;, # The type of the flag. Flags are typed to being **BOOLEAN**, **STRING**, **INTEGER** or **NONE**. **NONE** is used for flags which do not take a value, such as **skip_grant_tables**.
+    },
+  ],
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#flagsList**.
+}</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/sqladmin_v1.html b/docs/dyn/sqladmin_v1.html
index 0330ae8..7d53cf3 100644
--- a/docs/dyn/sqladmin_v1.html
+++ b/docs/dyn/sqladmin_v1.html
@@ -75,16 +75,56 @@
 <h1><a href="sqladmin_v1.html">Cloud SQL Admin API</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
+  <code><a href="sqladmin_v1.backupRuns.html">backupRuns()</a></code>
+</p>
+<p class="firstline">Returns the backupRuns Resource.</p>
+
+<p class="toc_element">
+  <code><a href="sqladmin_v1.connect.html">connect()</a></code>
+</p>
+<p class="firstline">Returns the connect Resource.</p>
+
+<p class="toc_element">
+  <code><a href="sqladmin_v1.databases.html">databases()</a></code>
+</p>
+<p class="firstline">Returns the databases Resource.</p>
+
+<p class="toc_element">
+  <code><a href="sqladmin_v1.flags.html">flags()</a></code>
+</p>
+<p class="firstline">Returns the flags Resource.</p>
+
+<p class="toc_element">
   <code><a href="sqladmin_v1.instances.html">instances()</a></code>
 </p>
 <p class="firstline">Returns the instances Resource.</p>
 
 <p class="toc_element">
+  <code><a href="sqladmin_v1.operations.html">operations()</a></code>
+</p>
+<p class="firstline">Returns the operations Resource.</p>
+
+<p class="toc_element">
   <code><a href="sqladmin_v1.projects.html">projects()</a></code>
 </p>
 <p class="firstline">Returns the projects Resource.</p>
 
 <p class="toc_element">
+  <code><a href="sqladmin_v1.sslCerts.html">sslCerts()</a></code>
+</p>
+<p class="firstline">Returns the sslCerts Resource.</p>
+
+<p class="toc_element">
+  <code><a href="sqladmin_v1.tiers.html">tiers()</a></code>
+</p>
+<p class="firstline">Returns the tiers Resource.</p>
+
+<p class="toc_element">
+  <code><a href="sqladmin_v1.users.html">users()</a></code>
+</p>
+<p class="firstline">Returns the users Resource.</p>
+
+<p class="toc_element">
   <code><a href="#close">close()</a></code></p>
 <p class="firstline">Close httplib2 connections.</p>
 <p class="toc_element">
diff --git a/docs/dyn/sqladmin_v1.instances.html b/docs/dyn/sqladmin_v1.instances.html
index e76345d..b99f241 100644
--- a/docs/dyn/sqladmin_v1.instances.html
+++ b/docs/dyn/sqladmin_v1.instances.html
@@ -75,21 +75,1251 @@
 <h1><a href="sqladmin_v1.html">Cloud SQL Admin API</a> . <a href="sqladmin_v1.instances.html">instances</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
+  <code><a href="#addServerCa">addServerCa(project, instance, x__xgafv=None)</a></code></p>
+<p class="firstline">Adds a new trusted Certificate Authority (CA) version for the specified instance. Required to prepare for a certificate rotation. If a CA version was previously added but never used in a certificate rotation, this operation replaces that version. There cannot be more than one CA version waiting to be rotated in.</p>
+<p class="toc_element">
+  <code><a href="#clone">clone(project, instance, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Creates a Cloud SQL instance as a clone of the source instance. Using this operation might cause your instance to restart.</p>
+<p class="toc_element">
   <code><a href="#close">close()</a></code></p>
 <p class="firstline">Close httplib2 connections.</p>
 <p class="toc_element">
+  <code><a href="#delete">delete(project, instance, x__xgafv=None)</a></code></p>
+<p class="firstline">Deletes a Cloud SQL instance.</p>
+<p class="toc_element">
+  <code><a href="#demoteMaster">demoteMaster(project, instance, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Demotes the stand-alone instance to be a Cloud SQL read replica for an external database server.</p>
+<p class="toc_element">
+  <code><a href="#export">export(project, instance, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Exports data from a Cloud SQL instance to a Cloud Storage bucket as a SQL dump or CSV file.</p>
+<p class="toc_element">
+  <code><a href="#failover">failover(project, instance, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Initiates a manual failover of a high availability (HA) primary instance to a standby instance, which becomes the primary instance. Users are then rerouted to the new primary. For more information, see the Overview of high availability page in the Cloud SQL documentation. If using Legacy HA (MySQL only), this causes the instance to failover to its failover replica instance.</p>
+<p class="toc_element">
+  <code><a href="#get">get(project, instance, x__xgafv=None)</a></code></p>
+<p class="firstline">Retrieves a resource containing information about a Cloud SQL instance.</p>
+<p class="toc_element">
+  <code><a href="#import_">import_(project, instance, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Imports data into a Cloud SQL instance from a SQL dump or CSV file in Cloud Storage.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(project, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Creates a new Cloud SQL instance.</p>
+<p class="toc_element">
   <code><a href="#list">list(project, filter=None, maxResults=None, pageToken=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Lists instances under a given project.</p>
 <p class="toc_element">
+  <code><a href="#listServerCas">listServerCas(project, instance, x__xgafv=None)</a></code></p>
+<p class="firstline">Lists all of the trusted Certificate Authorities (CAs) for the specified instance. There can be up to three CAs listed: the CA that was used to sign the certificate that is currently in use, a CA that has been added but not yet used to sign a certificate, and a CA used to sign a certificate that has previously rotated out.</p>
+<p class="toc_element">
   <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
 <p class="firstline">Retrieves the next page of results.</p>
+<p class="toc_element">
+  <code><a href="#patch">patch(project, instance, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Updates settings of a Cloud SQL instance. This method supports patch semantics.</p>
+<p class="toc_element">
+  <code><a href="#promoteReplica">promoteReplica(project, instance, x__xgafv=None)</a></code></p>
+<p class="firstline">Promotes the read replica instance to be a stand-alone Cloud SQL instance. Using this operation might cause your instance to restart.</p>
+<p class="toc_element">
+  <code><a href="#resetSslConfig">resetSslConfig(project, instance, x__xgafv=None)</a></code></p>
+<p class="firstline">Deletes all client certificates and generates a new server SSL certificate for the instance.</p>
+<p class="toc_element">
+  <code><a href="#restart">restart(project, instance, x__xgafv=None)</a></code></p>
+<p class="firstline">Restarts a Cloud SQL instance.</p>
+<p class="toc_element">
+  <code><a href="#restoreBackup">restoreBackup(project, instance, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Restores a backup of a Cloud SQL instance. Using this operation might cause your instance to restart.</p>
+<p class="toc_element">
+  <code><a href="#rotateServerCa">rotateServerCa(project, instance, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Rotates the server certificate to one signed by the Certificate Authority (CA) version previously added with the addServerCA method.</p>
+<p class="toc_element">
+  <code><a href="#startReplica">startReplica(project, instance, x__xgafv=None)</a></code></p>
+<p class="firstline">Starts the replication in the read replica instance.</p>
+<p class="toc_element">
+  <code><a href="#stopReplica">stopReplica(project, instance, x__xgafv=None)</a></code></p>
+<p class="firstline">Stops the replication in the read replica instance.</p>
+<p class="toc_element">
+  <code><a href="#truncateLog">truncateLog(project, instance, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Truncate MySQL general and slow query log tables MySQL only.</p>
+<p class="toc_element">
+  <code><a href="#update">update(project, instance, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Updates settings of a Cloud SQL instance. Using this operation might cause your instance to restart.</p>
 <h3>Method Details</h3>
 <div class="method">
+    <code class="details" id="addServerCa">addServerCa(project, instance, x__xgafv=None)</code>
+  <pre>Adds a new trusted Certificate Authority (CA) version for the specified instance. Required to prepare for a certificate rotation. If a CA version was previously added but never used in a certificate rotation, this operation replaces that version. There cannot be more than one CA version waiting to be rotated in.
+
+Args:
+  project: string, Project ID of the project that contains the instance. (required)
+  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
+  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
+    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupContext**.
+  },
+  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
+    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
+      { # Database instance operation error.
+        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+      },
+    ],
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationErrors**.
+  },
+  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
+    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. **MySQL** and **PostgreSQL** instances only.
+      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
+    },
+    &quot;databases&quot;: [ # Databases to be exported. **MySQL instances:** If **fileType** is **SQL** and no database is specified, all databases are exported, except for the **mysql** system database. If **fileType** is **CSV**, you can specify one database, either by using this property or by using the **csvExportOptions.selectQuery** property, which takes precedence over this property. **PostgreSQL instances:** You must specify one database to be exported. If **fileType** is **CSV**, this database must match the one specified in the **csvExportOptions.selectQuery** property. **SQL Server instances:** You must specify one database to be exported, and the **fileType** must be **BAK**.
+      &quot;A String&quot;,
+    ],
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data. **BAK**: The file contains backup data for a SQL Server instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#exportContext**.
+    &quot;offload&quot;: True or False, # Option for export offload.
+    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
+      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
+        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to **1**, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to **2**, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than **1**, --set-gtid-purged is set to OFF.
+      },
+      &quot;schemaOnly&quot;: True or False, # Export only schemas.
+      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form **gs://bucketName/fileName**. If the file already exists, the request succeeds, but the operation fails. If **fileType** is **SQL** and the filename ends with .gz, the contents are compressed.
+  },
+  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
+    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
+      &quot;encryptionOptions&quot;: {
+        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
+        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+      },
+    },
+    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
+      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
+        &quot;A String&quot;,
+      ],
+      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
+    },
+    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If **fileType** is **SQL**, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. If **fileType** is **CSV**, one database must be specified.
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data.
+    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#importContext**.
+    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form **gs://bucketName/fileName**. Compressed gzip files (.gz) are supported when **fileType** is **SQL**. The instance must have write permissions to the bucket and read access to the file.
+  },
+  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operation**.
+  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: **CREATE** **DELETE** **UPDATE** **RESTART** **IMPORT** **EXPORT** **BACKUP_VOLUME** **RESTORE_VOLUME** **CREATE_USER** **DELETE_USER** **CREATE_DATABASE** **DELETE_DATABASE**
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are: **PENDING** **RUNNING** **DONE** **SQL_OPERATION_STATUS_UNSPECIFIED**
+  &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
+  &quot;targetLink&quot;: &quot;A String&quot;,
+  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
+  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="clone">clone(project, instance, body=None, x__xgafv=None)</code>
+  <pre>Creates a Cloud SQL instance as a clone of the source instance. Using this operation might cause your instance to restart.
+
+Args:
+  project: string, Project ID of the source as well as the clone Cloud SQL instance. (required)
+  instance: string, The ID of the Cloud SQL instance to be cloned (source). This does not include the project ID. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Database instance clone request.
+  &quot;cloneContext&quot;: { # Database instance clone context. # Contains details about the clone operation.
+    &quot;binLogCoordinates&quot;: { # Binary log coordinates. # Binary log coordinates, if specified, identify the position up to which the source instance is cloned. If not specified, the source instance is cloned up to the most recent binary log coordinates.
+      &quot;binLogFileName&quot;: &quot;A String&quot;, # Name of the binary log file for a Cloud SQL instance.
+      &quot;binLogPosition&quot;: &quot;A String&quot;, # Position (offset) within the binary log file.
+      &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#binLogCoordinates*.
+    },
+    &quot;destinationInstanceName&quot;: &quot;A String&quot;, # Name of the Cloud SQL instance to be created as a clone.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#cloneContext*.
+    &quot;pitrTimestampMs&quot;: &quot;A String&quot;, # Reserved for future use.
+    &quot;pointInTime&quot;: &quot;A String&quot;, # Timestamp, if specified, identifies the time to which the source instance is cloned.
+  },
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
+  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
+    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupContext**.
+  },
+  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
+    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
+      { # Database instance operation error.
+        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+      },
+    ],
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationErrors**.
+  },
+  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
+    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. **MySQL** and **PostgreSQL** instances only.
+      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
+    },
+    &quot;databases&quot;: [ # Databases to be exported. **MySQL instances:** If **fileType** is **SQL** and no database is specified, all databases are exported, except for the **mysql** system database. If **fileType** is **CSV**, you can specify one database, either by using this property or by using the **csvExportOptions.selectQuery** property, which takes precedence over this property. **PostgreSQL instances:** You must specify one database to be exported. If **fileType** is **CSV**, this database must match the one specified in the **csvExportOptions.selectQuery** property. **SQL Server instances:** You must specify one database to be exported, and the **fileType** must be **BAK**.
+      &quot;A String&quot;,
+    ],
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data. **BAK**: The file contains backup data for a SQL Server instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#exportContext**.
+    &quot;offload&quot;: True or False, # Option for export offload.
+    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
+      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
+        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to **1**, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to **2**, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than **1**, --set-gtid-purged is set to OFF.
+      },
+      &quot;schemaOnly&quot;: True or False, # Export only schemas.
+      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form **gs://bucketName/fileName**. If the file already exists, the request succeeds, but the operation fails. If **fileType** is **SQL** and the filename ends with .gz, the contents are compressed.
+  },
+  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
+    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
+      &quot;encryptionOptions&quot;: {
+        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
+        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+      },
+    },
+    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
+      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
+        &quot;A String&quot;,
+      ],
+      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
+    },
+    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If **fileType** is **SQL**, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. If **fileType** is **CSV**, one database must be specified.
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data.
+    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#importContext**.
+    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form **gs://bucketName/fileName**. Compressed gzip files (.gz) are supported when **fileType** is **SQL**. The instance must have write permissions to the bucket and read access to the file.
+  },
+  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operation**.
+  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: **CREATE** **DELETE** **UPDATE** **RESTART** **IMPORT** **EXPORT** **BACKUP_VOLUME** **RESTORE_VOLUME** **CREATE_USER** **DELETE_USER** **CREATE_DATABASE** **DELETE_DATABASE**
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are: **PENDING** **RUNNING** **DONE** **SQL_OPERATION_STATUS_UNSPECIFIED**
+  &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
+  &quot;targetLink&quot;: &quot;A String&quot;,
+  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
+  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
+}</pre>
+</div>
+
+<div class="method">
     <code class="details" id="close">close()</code>
   <pre>Close httplib2 connections.</pre>
 </div>
 
 <div class="method">
+    <code class="details" id="delete">delete(project, instance, x__xgafv=None)</code>
+  <pre>Deletes a Cloud SQL instance.
+
+Args:
+  project: string, Project ID of the project that contains the instance to be deleted. (required)
+  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
+  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
+    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupContext**.
+  },
+  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
+    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
+      { # Database instance operation error.
+        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+      },
+    ],
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationErrors**.
+  },
+  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
+    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. **MySQL** and **PostgreSQL** instances only.
+      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
+    },
+    &quot;databases&quot;: [ # Databases to be exported. **MySQL instances:** If **fileType** is **SQL** and no database is specified, all databases are exported, except for the **mysql** system database. If **fileType** is **CSV**, you can specify one database, either by using this property or by using the **csvExportOptions.selectQuery** property, which takes precedence over this property. **PostgreSQL instances:** You must specify one database to be exported. If **fileType** is **CSV**, this database must match the one specified in the **csvExportOptions.selectQuery** property. **SQL Server instances:** You must specify one database to be exported, and the **fileType** must be **BAK**.
+      &quot;A String&quot;,
+    ],
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data. **BAK**: The file contains backup data for a SQL Server instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#exportContext**.
+    &quot;offload&quot;: True or False, # Option for export offload.
+    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
+      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
+        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to **1**, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to **2**, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than **1**, --set-gtid-purged is set to OFF.
+      },
+      &quot;schemaOnly&quot;: True or False, # Export only schemas.
+      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form **gs://bucketName/fileName**. If the file already exists, the request succeeds, but the operation fails. If **fileType** is **SQL** and the filename ends with .gz, the contents are compressed.
+  },
+  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
+    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
+      &quot;encryptionOptions&quot;: {
+        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
+        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+      },
+    },
+    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
+      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
+        &quot;A String&quot;,
+      ],
+      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
+    },
+    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If **fileType** is **SQL**, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. If **fileType** is **CSV**, one database must be specified.
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data.
+    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#importContext**.
+    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form **gs://bucketName/fileName**. Compressed gzip files (.gz) are supported when **fileType** is **SQL**. The instance must have write permissions to the bucket and read access to the file.
+  },
+  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operation**.
+  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: **CREATE** **DELETE** **UPDATE** **RESTART** **IMPORT** **EXPORT** **BACKUP_VOLUME** **RESTORE_VOLUME** **CREATE_USER** **DELETE_USER** **CREATE_DATABASE** **DELETE_DATABASE**
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are: **PENDING** **RUNNING** **DONE** **SQL_OPERATION_STATUS_UNSPECIFIED**
+  &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
+  &quot;targetLink&quot;: &quot;A String&quot;,
+  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
+  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="demoteMaster">demoteMaster(project, instance, body=None, x__xgafv=None)</code>
+  <pre>Demotes the stand-alone instance to be a Cloud SQL read replica for an external database server.
+
+Args:
+  project: string, ID of the project that contains the instance. (required)
+  instance: string, Cloud SQL instance name. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Database demote primary instance request.
+  &quot;demoteMasterContext&quot;: { # Database instance demote primary instance context. # Contains details about the demoteMaster operation.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#demoteMasterContext*.
+    &quot;masterInstanceName&quot;: &quot;A String&quot;, # The name of the instance which will act as on-premises primary instance in the replication setup.
+    &quot;replicaConfiguration&quot;: { # Read-replica configuration for connecting to the on-premises primary instance. # Configuration specific to read-replicas replicating from the on-premises primary instance.
+      &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#demoteMasterConfiguration**.
+      &quot;mysqlReplicaConfiguration&quot;: { # Read-replica configuration specific to MySQL databases. # MySQL specific configuration when replicating from a MySQL on-premises primary instance. Replication configuration information such as the username, password, certificates, and keys are not stored in the instance metadata. The configuration information is used only to set up the replication connection and is stored by MySQL in a file named **master.info** in the data directory.
+        &quot;caCertificate&quot;: &quot;A String&quot;, # PEM representation of the trusted CA&#x27;s x509 certificate.
+        &quot;clientCertificate&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s x509 certificate.
+        &quot;clientKey&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s private key. The corresponsing public key is encoded in the client&#x27;s certificate. The format of the replica&#x27;s private key can be either PKCS #1 or PKCS #8.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#demoteMasterMysqlReplicaConfiguration**.
+        &quot;password&quot;: &quot;A String&quot;, # The password for the replication connection.
+        &quot;username&quot;: &quot;A String&quot;, # The username for the replication connection.
+      },
+    },
+    &quot;verifyGtidConsistency&quot;: True or False, # Verify GTID consistency for demote operation. Default value: *True*. Setting this flag to false enables you to bypass GTID consistency check between on-premises primary instance and Cloud SQL instance during the demotion operation but also exposes you to the risk of future replication failures. Change the value value only if you know the reason for the GTID divergence and are confident that doing so will not cause any replication issues.
+  },
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
+  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
+    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupContext**.
+  },
+  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
+    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
+      { # Database instance operation error.
+        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+      },
+    ],
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationErrors**.
+  },
+  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
+    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. **MySQL** and **PostgreSQL** instances only.
+      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
+    },
+    &quot;databases&quot;: [ # Databases to be exported. **MySQL instances:** If **fileType** is **SQL** and no database is specified, all databases are exported, except for the **mysql** system database. If **fileType** is **CSV**, you can specify one database, either by using this property or by using the **csvExportOptions.selectQuery** property, which takes precedence over this property. **PostgreSQL instances:** You must specify one database to be exported. If **fileType** is **CSV**, this database must match the one specified in the **csvExportOptions.selectQuery** property. **SQL Server instances:** You must specify one database to be exported, and the **fileType** must be **BAK**.
+      &quot;A String&quot;,
+    ],
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data. **BAK**: The file contains backup data for a SQL Server instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#exportContext**.
+    &quot;offload&quot;: True or False, # Option for export offload.
+    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
+      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
+        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to **1**, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to **2**, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than **1**, --set-gtid-purged is set to OFF.
+      },
+      &quot;schemaOnly&quot;: True or False, # Export only schemas.
+      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form **gs://bucketName/fileName**. If the file already exists, the request succeeds, but the operation fails. If **fileType** is **SQL** and the filename ends with .gz, the contents are compressed.
+  },
+  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
+    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
+      &quot;encryptionOptions&quot;: {
+        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
+        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+      },
+    },
+    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
+      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
+        &quot;A String&quot;,
+      ],
+      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
+    },
+    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If **fileType** is **SQL**, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. If **fileType** is **CSV**, one database must be specified.
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data.
+    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#importContext**.
+    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form **gs://bucketName/fileName**. Compressed gzip files (.gz) are supported when **fileType** is **SQL**. The instance must have write permissions to the bucket and read access to the file.
+  },
+  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operation**.
+  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: **CREATE** **DELETE** **UPDATE** **RESTART** **IMPORT** **EXPORT** **BACKUP_VOLUME** **RESTORE_VOLUME** **CREATE_USER** **DELETE_USER** **CREATE_DATABASE** **DELETE_DATABASE**
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are: **PENDING** **RUNNING** **DONE** **SQL_OPERATION_STATUS_UNSPECIFIED**
+  &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
+  &quot;targetLink&quot;: &quot;A String&quot;,
+  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
+  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="export">export(project, instance, body=None, x__xgafv=None)</code>
+  <pre>Exports data from a Cloud SQL instance to a Cloud Storage bucket as a SQL dump or CSV file.
+
+Args:
+  project: string, Project ID of the project that contains the instance to be exported. (required)
+  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Database instance export request.
+  &quot;exportContext&quot;: { # Database instance export context. # Contains details about the export operation.
+    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. **MySQL** and **PostgreSQL** instances only.
+      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
+    },
+    &quot;databases&quot;: [ # Databases to be exported. **MySQL instances:** If **fileType** is **SQL** and no database is specified, all databases are exported, except for the **mysql** system database. If **fileType** is **CSV**, you can specify one database, either by using this property or by using the **csvExportOptions.selectQuery** property, which takes precedence over this property. **PostgreSQL instances:** You must specify one database to be exported. If **fileType** is **CSV**, this database must match the one specified in the **csvExportOptions.selectQuery** property. **SQL Server instances:** You must specify one database to be exported, and the **fileType** must be **BAK**.
+      &quot;A String&quot;,
+    ],
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data. **BAK**: The file contains backup data for a SQL Server instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#exportContext**.
+    &quot;offload&quot;: True or False, # Option for export offload.
+    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
+      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
+        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to **1**, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to **2**, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than **1**, --set-gtid-purged is set to OFF.
+      },
+      &quot;schemaOnly&quot;: True or False, # Export only schemas.
+      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form **gs://bucketName/fileName**. If the file already exists, the request succeeds, but the operation fails. If **fileType** is **SQL** and the filename ends with .gz, the contents are compressed.
+  },
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
+  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
+    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupContext**.
+  },
+  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
+    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
+      { # Database instance operation error.
+        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+      },
+    ],
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationErrors**.
+  },
+  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
+    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. **MySQL** and **PostgreSQL** instances only.
+      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
+    },
+    &quot;databases&quot;: [ # Databases to be exported. **MySQL instances:** If **fileType** is **SQL** and no database is specified, all databases are exported, except for the **mysql** system database. If **fileType** is **CSV**, you can specify one database, either by using this property or by using the **csvExportOptions.selectQuery** property, which takes precedence over this property. **PostgreSQL instances:** You must specify one database to be exported. If **fileType** is **CSV**, this database must match the one specified in the **csvExportOptions.selectQuery** property. **SQL Server instances:** You must specify one database to be exported, and the **fileType** must be **BAK**.
+      &quot;A String&quot;,
+    ],
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data. **BAK**: The file contains backup data for a SQL Server instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#exportContext**.
+    &quot;offload&quot;: True or False, # Option for export offload.
+    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
+      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
+        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to **1**, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to **2**, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than **1**, --set-gtid-purged is set to OFF.
+      },
+      &quot;schemaOnly&quot;: True or False, # Export only schemas.
+      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form **gs://bucketName/fileName**. If the file already exists, the request succeeds, but the operation fails. If **fileType** is **SQL** and the filename ends with .gz, the contents are compressed.
+  },
+  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
+    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
+      &quot;encryptionOptions&quot;: {
+        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
+        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+      },
+    },
+    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
+      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
+        &quot;A String&quot;,
+      ],
+      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
+    },
+    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If **fileType** is **SQL**, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. If **fileType** is **CSV**, one database must be specified.
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data.
+    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#importContext**.
+    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form **gs://bucketName/fileName**. Compressed gzip files (.gz) are supported when **fileType** is **SQL**. The instance must have write permissions to the bucket and read access to the file.
+  },
+  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operation**.
+  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: **CREATE** **DELETE** **UPDATE** **RESTART** **IMPORT** **EXPORT** **BACKUP_VOLUME** **RESTORE_VOLUME** **CREATE_USER** **DELETE_USER** **CREATE_DATABASE** **DELETE_DATABASE**
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are: **PENDING** **RUNNING** **DONE** **SQL_OPERATION_STATUS_UNSPECIFIED**
+  &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
+  &quot;targetLink&quot;: &quot;A String&quot;,
+  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
+  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="failover">failover(project, instance, body=None, x__xgafv=None)</code>
+  <pre>Initiates a manual failover of a high availability (HA) primary instance to a standby instance, which becomes the primary instance. Users are then rerouted to the new primary. For more information, see the Overview of high availability page in the Cloud SQL documentation. If using Legacy HA (MySQL only), this causes the instance to failover to its failover replica instance.
+
+Args:
+  project: string, ID of the project that contains the read replica. (required)
+  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Instance failover request.
+  &quot;failoverContext&quot;: { # Database instance failover context. # Failover Context.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#failoverContext*.
+    &quot;settingsVersion&quot;: &quot;A String&quot;, # The current settings version of this instance. Request will be rejected if this version doesn&#x27;t match the current settings version.
+  },
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
+  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
+    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupContext**.
+  },
+  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
+    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
+      { # Database instance operation error.
+        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+      },
+    ],
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationErrors**.
+  },
+  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
+    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. **MySQL** and **PostgreSQL** instances only.
+      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
+    },
+    &quot;databases&quot;: [ # Databases to be exported. **MySQL instances:** If **fileType** is **SQL** and no database is specified, all databases are exported, except for the **mysql** system database. If **fileType** is **CSV**, you can specify one database, either by using this property or by using the **csvExportOptions.selectQuery** property, which takes precedence over this property. **PostgreSQL instances:** You must specify one database to be exported. If **fileType** is **CSV**, this database must match the one specified in the **csvExportOptions.selectQuery** property. **SQL Server instances:** You must specify one database to be exported, and the **fileType** must be **BAK**.
+      &quot;A String&quot;,
+    ],
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data. **BAK**: The file contains backup data for a SQL Server instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#exportContext**.
+    &quot;offload&quot;: True or False, # Option for export offload.
+    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
+      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
+        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to **1**, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to **2**, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than **1**, --set-gtid-purged is set to OFF.
+      },
+      &quot;schemaOnly&quot;: True or False, # Export only schemas.
+      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form **gs://bucketName/fileName**. If the file already exists, the request succeeds, but the operation fails. If **fileType** is **SQL** and the filename ends with .gz, the contents are compressed.
+  },
+  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
+    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
+      &quot;encryptionOptions&quot;: {
+        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
+        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+      },
+    },
+    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
+      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
+        &quot;A String&quot;,
+      ],
+      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
+    },
+    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If **fileType** is **SQL**, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. If **fileType** is **CSV**, one database must be specified.
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data.
+    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#importContext**.
+    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form **gs://bucketName/fileName**. Compressed gzip files (.gz) are supported when **fileType** is **SQL**. The instance must have write permissions to the bucket and read access to the file.
+  },
+  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operation**.
+  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: **CREATE** **DELETE** **UPDATE** **RESTART** **IMPORT** **EXPORT** **BACKUP_VOLUME** **RESTORE_VOLUME** **CREATE_USER** **DELETE_USER** **CREATE_DATABASE** **DELETE_DATABASE**
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are: **PENDING** **RUNNING** **DONE** **SQL_OPERATION_STATUS_UNSPECIFIED**
+  &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
+  &quot;targetLink&quot;: &quot;A String&quot;,
+  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
+  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(project, instance, x__xgafv=None)</code>
+  <pre>Retrieves a resource containing information about a Cloud SQL instance.
+
+Args:
+  project: string, Project ID of the project that contains the instance. (required)
+  instance: string, Database instance ID. This does not include the project ID. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # A Cloud SQL instance resource.
+  &quot;backendType&quot;: &quot;A String&quot;, #  *SECOND_GEN*: Cloud SQL database instance. *EXTERNAL*: A database server that is not managed by Google. This property is read-only; use the *tier* property in the *settings* object to determine the database type.
+  &quot;connectionName&quot;: &quot;A String&quot;, # Connection name of the Cloud SQL instance used in connection strings.
+  &quot;currentDiskSize&quot;: &quot;A String&quot;, # The current disk usage of the instance in bytes. This property has been deprecated. Use the &quot;cloudsql.googleapis.com/database/disk/bytes_used&quot; metric in Cloud Monitoring API instead. Please see this announcement for details.
+  &quot;databaseVersion&quot;: &quot;A String&quot;, # The database engine type and version. The *databaseVersion* field cannot be changed after instance creation. MySQL instances: *MYSQL_8_0*, *MYSQL_5_7* (default), or *MYSQL_5_6*. PostgreSQL instances: *POSTGRES_9_6*, *POSTGRES_10*, *POSTGRES_11*, *POSTGRES_12*, *POSTGRES_13* (default). SQL Server instances: *SQLSERVER_2019_STANDARD*, *SQLSERVER_2019_ENTERPRISE*, *SQLSERVER_2019_EXPRESS*, or *SQLSERVER_2019_WEB*, *SQLSERVER_2017_STANDARD* (default), *SQLSERVER_2017_ENTERPRISE*, *SQLSERVER_2017_EXPRESS*, or *SQLSERVER_2017_WEB*.
+  &quot;diskEncryptionConfiguration&quot;: { # Disk encryption configuration for an instance. # Disk encryption configuration specific to an instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#diskEncryptionConfiguration**.
+    &quot;kmsKeyName&quot;: &quot;A String&quot;, # Resource name of KMS key for disk encryption
+  },
+  &quot;diskEncryptionStatus&quot;: { # Disk encryption status for an instance. # Disk encryption status specific to an instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#diskEncryptionStatus**.
+    &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # KMS key version used to encrypt the Cloud SQL instance resource
+  },
+  &quot;etag&quot;: &quot;A String&quot;, # This field is deprecated and will be removed from a future version of the API. Use the *settings.settingsVersion* field instead.
+  &quot;failoverReplica&quot;: { # The name and status of the failover replica.
+    &quot;available&quot;: True or False, # The availability status of the failover replica. A false status indicates that the failover replica is out of sync. The primary instance can only failover to the failover replica when the status is true.
+    &quot;name&quot;: &quot;A String&quot;, # The name of the failover replica. If specified at instance creation, a failover replica is created for the instance. The name doesn&#x27;t include the project ID.
+  },
+  &quot;gceZone&quot;: &quot;A String&quot;, # The Compute Engine zone that the instance is currently serving from. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary zone.
+  &quot;instanceType&quot;: &quot;A String&quot;, # The instance type. This can be one of the following. *CLOUD_SQL_INSTANCE*: A Cloud SQL instance that is not replicating from a primary instance. *ON_PREMISES_INSTANCE*: An instance running on the customer&#x27;s premises. *READ_REPLICA_INSTANCE*: A Cloud SQL instance configured as a read-replica.
+  &quot;ipAddresses&quot;: [ # The assigned IP addresses for the instance.
+    { # Database instance IP Mapping.
+      &quot;ipAddress&quot;: &quot;A String&quot;, # The IP address assigned.
+      &quot;timeToRetire&quot;: &quot;A String&quot;, # The due time for this IP to be retired in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**. This field is only available when the IP is scheduled to be retired.
+      &quot;type&quot;: &quot;A String&quot;, # The type of this IP address. A **PRIMARY** address is a public address that can accept incoming connections. A **PRIVATE** address is a private address that can accept incoming connections. An **OUTGOING** address is the source address of connections originating from the instance, if supported.
+    },
+  ],
+  &quot;ipv6Address&quot;: &quot;A String&quot;, # The IPv6 address assigned to the instance. (Deprecated) This property was applicable only to First Generation instances.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#instance*.
+  &quot;masterInstanceName&quot;: &quot;A String&quot;, # The name of the instance which will act as primary in the replication setup.
+  &quot;maxDiskSize&quot;: &quot;A String&quot;, # The maximum disk size of the instance in bytes.
+  &quot;name&quot;: &quot;A String&quot;, # Name of the Cloud SQL instance. This does not include the project ID.
+  &quot;onPremisesConfiguration&quot;: { # On-premises instance configuration. # Configuration specific to on-premises instances.
+    &quot;caCertificate&quot;: &quot;A String&quot;, # PEM representation of the trusted CA&#x27;s x509 certificate.
+    &quot;clientCertificate&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s x509 certificate.
+    &quot;clientKey&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s private key. The corresponsing public key is encoded in the client&#x27;s certificate.
+    &quot;dumpFilePath&quot;: &quot;A String&quot;, # The dump file to create the Cloud SQL replica.
+    &quot;hostPort&quot;: &quot;A String&quot;, # The host and port of the on-premises instance in host:port format
+    &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#onPremisesConfiguration*.
+    &quot;password&quot;: &quot;A String&quot;, # The password for connecting to on-premises instance.
+    &quot;username&quot;: &quot;A String&quot;, # The username for connecting to on-premises instance.
+  },
+  &quot;outOfDiskReport&quot;: { # This message wraps up the information written by out-of-disk detection job. # This field represents the report generated by the proactive database wellness job for OutOfDisk issues. Writers: -- the proactive database wellness job for OOD. Readers: -- the Pantheon frontend -- the proactive database wellness job
+    &quot;sqlMinRecommendedIncreaseSizeGb&quot;: 42, # The minimum recommended increase size in GigaBytes This field is consumed by the frontend Writers: -- the proactive database wellness job for OOD. Readers: -- the Pantheon frontend
+    &quot;sqlOutOfDiskState&quot;: &quot;A String&quot;, # This field represents the state generated by the proactive database wellness job for OutOfDisk issues. Writers: -- the proactive database wellness job for OOD. Readers: -- the Pantheon frontend -- the proactive database wellness job
+  },
+  &quot;project&quot;: &quot;A String&quot;, # The project ID of the project containing the Cloud SQL instance. The Google apps domain is prefixed if applicable.
+  &quot;region&quot;: &quot;A String&quot;, # The geographical region. Can be *us-central* (*FIRST_GEN* instances only) *us-central1* (*SECOND_GEN* instances only) *asia-east1* or *europe-west1*. Defaults to *us-central* or *us-central1* depending on the instance type. The region cannot be changed after instance creation.
+  &quot;replicaConfiguration&quot;: { # Read-replica configuration for connecting to the primary instance. # Configuration specific to failover replicas and read replicas.
+    &quot;failoverTarget&quot;: True or False, # Specifies if the replica is the failover target. If the field is set to *true* the replica will be designated as a failover replica. In case the primary instance fails, the replica instance will be promoted as the new primary instance. Only one replica can be specified as failover target, and the replica has to be in different zone with the primary instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#replicaConfiguration*.
+    &quot;mysqlReplicaConfiguration&quot;: { # Read-replica configuration specific to MySQL databases. # MySQL specific configuration when replicating from a MySQL on-premises primary instance. Replication configuration information such as the username, password, certificates, and keys are not stored in the instance metadata.The configuration information is used only to set up the replication connection and is stored by MySQL in a file named *master.info* in the data directory.
+      &quot;caCertificate&quot;: &quot;A String&quot;, # PEM representation of the trusted CA&#x27;s x509 certificate.
+      &quot;clientCertificate&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s x509 certificate.
+      &quot;clientKey&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s private key. The corresponsing public key is encoded in the client&#x27;s certificate.
+      &quot;connectRetryInterval&quot;: 42, # Seconds to wait between connect retries. MySQL&#x27;s default is 60 seconds.
+      &quot;dumpFilePath&quot;: &quot;A String&quot;, # Path to a SQL dump file in Google Cloud Storage from which the replica instance is to be created. The URI is in the form gs://bucketName/fileName. Compressed gzip files (.gz) are also supported. Dumps have the binlog co-ordinates from which replication begins. This can be accomplished by setting --master-data to 1 when using mysqldump.
+      &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#mysqlReplicaConfiguration**.
+      &quot;masterHeartbeatPeriod&quot;: &quot;A String&quot;, # Interval in milliseconds between replication heartbeats.
+      &quot;password&quot;: &quot;A String&quot;, # The password for the replication connection.
+      &quot;sslCipher&quot;: &quot;A String&quot;, # A list of permissible ciphers to use for SSL encryption.
+      &quot;username&quot;: &quot;A String&quot;, # The username for the replication connection.
+      &quot;verifyServerCertificate&quot;: True or False, # Whether or not to check the primary instance&#x27;s Common Name value in the certificate that it sends during the SSL handshake.
+    },
+  },
+  &quot;replicaNames&quot;: [ # The replicas of the instance.
+    &quot;A String&quot;,
+  ],
+  &quot;rootPassword&quot;: &quot;A String&quot;, # Initial root password. Use only on creation.
+  &quot;satisfiesPzs&quot;: True or False, # The status indicating if instance satisfiesPzs. Reserved for future use.
+  &quot;scheduledMaintenance&quot;: { # Any scheduled maintenancce for this instance. # The start time of any upcoming scheduled maintenance for this instance.
+    &quot;canDefer&quot;: True or False,
+    &quot;canReschedule&quot;: True or False, # If the scheduled maintenance can be rescheduled.
+    &quot;scheduleDeadlineTime&quot;: &quot;A String&quot;, # Maintenance cannot be rescheduled to start beyond this deadline.
+    &quot;startTime&quot;: &quot;A String&quot;, # The start time of any upcoming scheduled maintenance for this instance.
+  },
+  &quot;secondaryGceZone&quot;: &quot;A String&quot;, # The Compute Engine zone that the failover instance is currently serving from for a regional instance. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary/failover zone. Reserved for future use.
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;serverCaCert&quot;: { # SslCerts Resource # SSL configuration.
+    &quot;cert&quot;: &quot;A String&quot;, # PEM representation.
+    &quot;certSerialNumber&quot;: &quot;A String&quot;, # Serial number, as extracted from the certificate.
+    &quot;commonName&quot;: &quot;A String&quot;, # User supplied name. Constrained to [a-zA-Z.-_ ]+.
+    &quot;createTime&quot;: &quot;A String&quot;, # The time when the certificate was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**
+    &quot;expirationTime&quot;: &quot;A String&quot;, # The time when the certificate expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+    &quot;instance&quot;: &quot;A String&quot;, # Name of the database instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always sql#sslCert.
+    &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+    &quot;sha1Fingerprint&quot;: &quot;A String&quot;, # Sha1 Fingerprint.
+  },
+  &quot;serviceAccountEmailAddress&quot;: &quot;A String&quot;, # The service account email address assigned to the instance. This property is read-only.
+  &quot;settings&quot;: { # Database instance settings. # The user settings.
+    &quot;activationPolicy&quot;: &quot;A String&quot;, # The activation policy specifies when the instance is activated; it is applicable only when the instance state is RUNNABLE. Valid values: **ALWAYS**: The instance is on, and remains so even in the absence of connection requests. **NEVER**: The instance is off; it is not activated, even if a connection request arrives.
+    &quot;activeDirectoryConfig&quot;: { # Active Directory configuration, relevant only for Cloud SQL for SQL Server. # Active Directory configuration, relevant only for Cloud SQL for SQL Server.
+      &quot;domain&quot;: &quot;A String&quot;, # The name of the domain (e.g., mydomain.com).
+      &quot;kind&quot;: &quot;A String&quot;, # This is always sql#activeDirectoryConfig.
+    },
+    &quot;authorizedGaeApplications&quot;: [ # The App Engine app IDs that can access this instance. (Deprecated) Applied to First Generation instances only.
+      &quot;A String&quot;,
+    ],
+    &quot;availabilityType&quot;: &quot;A String&quot;, # Availability type. Potential values: **ZONAL**: The instance serves data from only one zone. Outages in that zone affect data accessibility. **REGIONAL**: The instance can serve data from more than one zone in a region (it is highly available). For more information, see [Overview of the High Availability Configuration](https://cloud.google.com/sql/docs/mysql/high-availability).
+    &quot;backupConfiguration&quot;: { # Database instance backup configuration. # The daily backup configuration for the instance.
+      &quot;backupRetentionSettings&quot;: { # We currently only support backup retention by specifying the number of backups we will retain. # Backup retention settings.
+        &quot;retainedBackups&quot;: 42, # Depending on the value of retention_unit, this is used to determine if a backup needs to be deleted. If retention_unit is &#x27;COUNT&#x27;, we will retain this many backups.
+        &quot;retentionUnit&quot;: &quot;A String&quot;, # The unit that &#x27;retained_backups&#x27; represents.
+      },
+      &quot;binaryLogEnabled&quot;: True or False, # (MySQL only) Whether binary log is enabled. If backup configuration is disabled, binarylog must be disabled as well.
+      &quot;enabled&quot;: True or False, # Whether this configuration is enabled.
+      &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupConfiguration**.
+      &quot;location&quot;: &quot;A String&quot;, # Location of the backup
+      &quot;pointInTimeRecoveryEnabled&quot;: True or False, # (Postgres only) Whether point in time recovery is enabled.
+      &quot;replicationLogArchivingEnabled&quot;: True or False, # Reserved for future use.
+      &quot;startTime&quot;: &quot;A String&quot;, # Start time for the daily backup configuration in UTC timezone in the 24 hour format - **HH:MM**.
+      &quot;transactionLogRetentionDays&quot;: 42, # The number of days of transaction logs we retain for point in time restore, from 1-7.
+    },
+    &quot;collation&quot;: &quot;A String&quot;, # The name of server Instance collation.
+    &quot;crashSafeReplicationEnabled&quot;: True or False, # Configuration specific to read replica instances. Indicates whether database flags for crash-safe replication are enabled. This property was only applicable to First Generation instances.
+    &quot;dataDiskSizeGb&quot;: &quot;A String&quot;, # The size of data disk, in GB. The data disk size minimum is 10GB.
+    &quot;dataDiskType&quot;: &quot;A String&quot;, # The type of data disk: **PD_SSD** (default) or **PD_HDD**.
+    &quot;databaseFlags&quot;: [ # The database flags passed to the instance at startup.
+      { # Database flags for Cloud SQL instances.
+        &quot;name&quot;: &quot;A String&quot;, # The name of the flag. These flags are passed at instance startup, so include both server options and system variables. Flags are specified with underscores, not hyphens. For more information, see [Configuring Database Flags](https://cloud.google.com/sql/docs/mysql/flags) in the Cloud SQL documentation.
+        &quot;value&quot;: &quot;A String&quot;, # The value of the flag. Booleans are set to **on** for true and **off** for false. This field must be omitted if the flag doesn&#x27;t take a value.
+      },
+    ],
+    &quot;databaseReplicationEnabled&quot;: True or False, # Configuration specific to read replica instances. Indicates whether replication is enabled or not.
+    &quot;denyMaintenancePeriods&quot;: [ # Deny maintenance periods
+      { # Deny maintenance Periods. This specifies a date range during when all CSA rollout will be denied.
+        &quot;endDate&quot;: &quot;A String&quot;, # &quot;deny maintenance period&quot; end date. If the year of the end date is empty, the year of the start date also must be empty. In this case, it means the no maintenance interval recurs every year. The date is in format yyyy-mm-dd i.e., 2020-11-01, or mm-dd, i.e., 11-01
+        &quot;startDate&quot;: &quot;A String&quot;, # &quot;deny maintenance period&quot; start date. If the year of the start date is empty, the year of the end date also must be empty. In this case, it means the no maintenance interval recurs every year. The date is in format yyyy-mm-dd i.e., 2020-11-01, or mm-dd, i.e., 11-01
+        &quot;time&quot;: &quot;A String&quot;, # Time in UTC when the &quot;deny maintenance period&quot; starts on start_date and ends on end_date. The time is in format: HH:mm:SS, i.e., 00:00:00
+      },
+    ],
+    &quot;insightsConfig&quot;: { # Insights configuration. This specifies when Cloud SQL Insights feature is enabled and optional configuration. # Insights configuration, for now relevant only for Postgres.
+      &quot;queryInsightsEnabled&quot;: True or False, # Whether Query Insights feature is enabled.
+      &quot;queryPlansPerMinute&quot;: 42, # Number of query execution plans captured by Insights per minute for all queries combined. Default is 5.
+      &quot;queryStringLength&quot;: 42, # Maximum query length stored in bytes. Default value: 1024 bytes. Range: 256-4500 bytes. Query length more than this field value will be truncated to this value. When unset, query length will be the default value. Changing query length will restart the database.
+      &quot;recordApplicationTags&quot;: True or False, # Whether Query Insights will record application tags from query when enabled.
+      &quot;recordClientAddress&quot;: True or False, # Whether Query Insights will record client address when enabled.
+    },
+    &quot;ipConfiguration&quot;: { # IP Management configuration. # The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled for Second Generation instances.
+      &quot;authorizedNetworks&quot;: [ # The list of external networks that are allowed to connect to the instance using the IP. In &#x27;CIDR&#x27; notation, also known as &#x27;slash&#x27; notation (for example: **192.168.100.0/24**).
+        { # An entry for an Access Control list.
+          &quot;expirationTime&quot;: &quot;A String&quot;, # The time when this access control entry expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+          &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#aclEntry**.
+          &quot;name&quot;: &quot;A String&quot;, # Optional. A label to identify this entry.
+          &quot;value&quot;: &quot;A String&quot;, # The allowlisted value for the access control list.
+        },
+      ],
+      &quot;ipv4Enabled&quot;: True or False, # Whether the instance is assigned a public IP address or not.
+      &quot;privateNetwork&quot;: &quot;A String&quot;, # The resource link for the VPC network from which the Cloud SQL instance is accessible for private IP. For example, **/projects/myProject/global/networks/default**. This setting can be updated, but it cannot be removed after it is set.
+      &quot;requireSsl&quot;: True or False, # Whether SSL connections over IP are enforced or not.
+    },
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#settings**.
+    &quot;locationPreference&quot;: { # Preferred location. This specifies where a Cloud SQL instance is located. Note that if the preferred location is not available, the instance will be located as close as possible within the region. Only one location may be specified. # The location preference settings. This allows the instance to be located as near as possible to Compute Engine zone for better performance.
+      &quot;followGaeApplication&quot;: &quot;A String&quot;, # The App Engine application to follow, it must be in the same region as the Cloud SQL instance.
+      &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#locationPreference**.
+      &quot;secondaryZone&quot;: &quot;A String&quot;, # The preferred Compute Engine zone for the secondary/failover (for example: us-central1-a, us-central1-b, etc.). Reserved for future use.
+      &quot;zone&quot;: &quot;A String&quot;, # The preferred Compute Engine zone (for example: us-central1-a, us-central1-b, etc.).
+    },
+    &quot;maintenanceWindow&quot;: { # Maintenance window. This specifies when a Cloud SQL instance is restarted for system maintenance purposes. # The maintenance window for this instance. This specifies when the instance can be restarted for maintenance purposes.
+      &quot;day&quot;: 42, # day of week (1-7), starting on Monday.
+      &quot;hour&quot;: 42, # hour of day - 0 to 23.
+      &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#maintenanceWindow**.
+      &quot;updateTrack&quot;: &quot;A String&quot;, # Maintenance timing setting: **canary** (Earlier) or **stable** (Later). [Learn more] (https://cloud.google.com/sql/docs/mysql/instance-settings#maintenance-timing-2ndgen).
+    },
+    &quot;pricingPlan&quot;: &quot;A String&quot;, # The pricing plan for this instance. This can be either **PER_USE** or **PACKAGE**. Only **PER_USE** is supported for Second Generation instances.
+    &quot;replicationType&quot;: &quot;A String&quot;, # The type of replication this instance uses. This can be either **ASYNCHRONOUS** or **SYNCHRONOUS**. (Deprecated) This property was only applicable to First Generation instances.
+    &quot;settingsVersion&quot;: &quot;A String&quot;, # The version of instance settings. This is a required field for update method to make sure concurrent updates are handled properly. During update, use the most recent settingsVersion value for this instance and do not try to update this value.
+    &quot;storageAutoResize&quot;: True or False, # Configuration to increase storage size automatically. The default value is true.
+    &quot;storageAutoResizeLimit&quot;: &quot;A String&quot;, # The maximum size to which storage capacity can be automatically increased. The default value is 0, which specifies that there is no limit.
+    &quot;tier&quot;: &quot;A String&quot;, # The tier (or machine type) for this instance, for example **db-custom-1-3840**.
+    &quot;userLabels&quot;: { # User-provided labels, represented as a dictionary where each label is a single key value pair.
+      &quot;a_key&quot;: &quot;A String&quot;,
+    },
+  },
+  &quot;state&quot;: &quot;A String&quot;, # The current serving state of the Cloud SQL instance. This can be one of the following. *SQL_INSTANCE_STATE_UNSPECIFIED*: The state of the instance is unknown. *RUNNABLE*: The instance is running, or has been stopped by owner. *SUSPENDED*: The instance is not available, for example due to problems with billing. *PENDING_DELETE*: The instance is being deleted. *PENDING_CREATE*: The instance is being created. *MAINTENANCE*: The instance is down for maintenance. *FAILED*: The instance creation failed.
+  &quot;suspensionReason&quot;: [ # If the instance state is SUSPENDED, the reason for the suspension.
+    &quot;A String&quot;,
+  ],
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="import_">import_(project, instance, body=None, x__xgafv=None)</code>
+  <pre>Imports data into a Cloud SQL instance from a SQL dump or CSV file in Cloud Storage.
+
+Args:
+  project: string, Project ID of the project that contains the instance. (required)
+  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Database instance import request.
+  &quot;importContext&quot;: { # Database instance import context. # Contains details about the import operation.
+    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
+      &quot;encryptionOptions&quot;: {
+        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
+        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+      },
+    },
+    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
+      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
+        &quot;A String&quot;,
+      ],
+      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
+    },
+    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If **fileType** is **SQL**, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. If **fileType** is **CSV**, one database must be specified.
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data.
+    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#importContext**.
+    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form **gs://bucketName/fileName**. Compressed gzip files (.gz) are supported when **fileType** is **SQL**. The instance must have write permissions to the bucket and read access to the file.
+  },
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
+  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
+    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupContext**.
+  },
+  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
+    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
+      { # Database instance operation error.
+        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+      },
+    ],
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationErrors**.
+  },
+  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
+    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. **MySQL** and **PostgreSQL** instances only.
+      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
+    },
+    &quot;databases&quot;: [ # Databases to be exported. **MySQL instances:** If **fileType** is **SQL** and no database is specified, all databases are exported, except for the **mysql** system database. If **fileType** is **CSV**, you can specify one database, either by using this property or by using the **csvExportOptions.selectQuery** property, which takes precedence over this property. **PostgreSQL instances:** You must specify one database to be exported. If **fileType** is **CSV**, this database must match the one specified in the **csvExportOptions.selectQuery** property. **SQL Server instances:** You must specify one database to be exported, and the **fileType** must be **BAK**.
+      &quot;A String&quot;,
+    ],
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data. **BAK**: The file contains backup data for a SQL Server instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#exportContext**.
+    &quot;offload&quot;: True or False, # Option for export offload.
+    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
+      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
+        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to **1**, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to **2**, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than **1**, --set-gtid-purged is set to OFF.
+      },
+      &quot;schemaOnly&quot;: True or False, # Export only schemas.
+      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form **gs://bucketName/fileName**. If the file already exists, the request succeeds, but the operation fails. If **fileType** is **SQL** and the filename ends with .gz, the contents are compressed.
+  },
+  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
+    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
+      &quot;encryptionOptions&quot;: {
+        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
+        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+      },
+    },
+    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
+      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
+        &quot;A String&quot;,
+      ],
+      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
+    },
+    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If **fileType** is **SQL**, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. If **fileType** is **CSV**, one database must be specified.
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data.
+    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#importContext**.
+    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form **gs://bucketName/fileName**. Compressed gzip files (.gz) are supported when **fileType** is **SQL**. The instance must have write permissions to the bucket and read access to the file.
+  },
+  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operation**.
+  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: **CREATE** **DELETE** **UPDATE** **RESTART** **IMPORT** **EXPORT** **BACKUP_VOLUME** **RESTORE_VOLUME** **CREATE_USER** **DELETE_USER** **CREATE_DATABASE** **DELETE_DATABASE**
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are: **PENDING** **RUNNING** **DONE** **SQL_OPERATION_STATUS_UNSPECIFIED**
+  &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
+  &quot;targetLink&quot;: &quot;A String&quot;,
+  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
+  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(project, body=None, x__xgafv=None)</code>
+  <pre>Creates a new Cloud SQL instance.
+
+Args:
+  project: string, Project ID of the project to which the newly created Cloud SQL instances should belong. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # A Cloud SQL instance resource.
+  &quot;backendType&quot;: &quot;A String&quot;, #  *SECOND_GEN*: Cloud SQL database instance. *EXTERNAL*: A database server that is not managed by Google. This property is read-only; use the *tier* property in the *settings* object to determine the database type.
+  &quot;connectionName&quot;: &quot;A String&quot;, # Connection name of the Cloud SQL instance used in connection strings.
+  &quot;currentDiskSize&quot;: &quot;A String&quot;, # The current disk usage of the instance in bytes. This property has been deprecated. Use the &quot;cloudsql.googleapis.com/database/disk/bytes_used&quot; metric in Cloud Monitoring API instead. Please see this announcement for details.
+  &quot;databaseVersion&quot;: &quot;A String&quot;, # The database engine type and version. The *databaseVersion* field cannot be changed after instance creation. MySQL instances: *MYSQL_8_0*, *MYSQL_5_7* (default), or *MYSQL_5_6*. PostgreSQL instances: *POSTGRES_9_6*, *POSTGRES_10*, *POSTGRES_11*, *POSTGRES_12*, *POSTGRES_13* (default). SQL Server instances: *SQLSERVER_2019_STANDARD*, *SQLSERVER_2019_ENTERPRISE*, *SQLSERVER_2019_EXPRESS*, or *SQLSERVER_2019_WEB*, *SQLSERVER_2017_STANDARD* (default), *SQLSERVER_2017_ENTERPRISE*, *SQLSERVER_2017_EXPRESS*, or *SQLSERVER_2017_WEB*.
+  &quot;diskEncryptionConfiguration&quot;: { # Disk encryption configuration for an instance. # Disk encryption configuration specific to an instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#diskEncryptionConfiguration**.
+    &quot;kmsKeyName&quot;: &quot;A String&quot;, # Resource name of KMS key for disk encryption
+  },
+  &quot;diskEncryptionStatus&quot;: { # Disk encryption status for an instance. # Disk encryption status specific to an instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#diskEncryptionStatus**.
+    &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # KMS key version used to encrypt the Cloud SQL instance resource
+  },
+  &quot;etag&quot;: &quot;A String&quot;, # This field is deprecated and will be removed from a future version of the API. Use the *settings.settingsVersion* field instead.
+  &quot;failoverReplica&quot;: { # The name and status of the failover replica.
+    &quot;available&quot;: True or False, # The availability status of the failover replica. A false status indicates that the failover replica is out of sync. The primary instance can only failover to the failover replica when the status is true.
+    &quot;name&quot;: &quot;A String&quot;, # The name of the failover replica. If specified at instance creation, a failover replica is created for the instance. The name doesn&#x27;t include the project ID.
+  },
+  &quot;gceZone&quot;: &quot;A String&quot;, # The Compute Engine zone that the instance is currently serving from. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary zone.
+  &quot;instanceType&quot;: &quot;A String&quot;, # The instance type. This can be one of the following. *CLOUD_SQL_INSTANCE*: A Cloud SQL instance that is not replicating from a primary instance. *ON_PREMISES_INSTANCE*: An instance running on the customer&#x27;s premises. *READ_REPLICA_INSTANCE*: A Cloud SQL instance configured as a read-replica.
+  &quot;ipAddresses&quot;: [ # The assigned IP addresses for the instance.
+    { # Database instance IP Mapping.
+      &quot;ipAddress&quot;: &quot;A String&quot;, # The IP address assigned.
+      &quot;timeToRetire&quot;: &quot;A String&quot;, # The due time for this IP to be retired in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**. This field is only available when the IP is scheduled to be retired.
+      &quot;type&quot;: &quot;A String&quot;, # The type of this IP address. A **PRIMARY** address is a public address that can accept incoming connections. A **PRIVATE** address is a private address that can accept incoming connections. An **OUTGOING** address is the source address of connections originating from the instance, if supported.
+    },
+  ],
+  &quot;ipv6Address&quot;: &quot;A String&quot;, # The IPv6 address assigned to the instance. (Deprecated) This property was applicable only to First Generation instances.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#instance*.
+  &quot;masterInstanceName&quot;: &quot;A String&quot;, # The name of the instance which will act as primary in the replication setup.
+  &quot;maxDiskSize&quot;: &quot;A String&quot;, # The maximum disk size of the instance in bytes.
+  &quot;name&quot;: &quot;A String&quot;, # Name of the Cloud SQL instance. This does not include the project ID.
+  &quot;onPremisesConfiguration&quot;: { # On-premises instance configuration. # Configuration specific to on-premises instances.
+    &quot;caCertificate&quot;: &quot;A String&quot;, # PEM representation of the trusted CA&#x27;s x509 certificate.
+    &quot;clientCertificate&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s x509 certificate.
+    &quot;clientKey&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s private key. The corresponsing public key is encoded in the client&#x27;s certificate.
+    &quot;dumpFilePath&quot;: &quot;A String&quot;, # The dump file to create the Cloud SQL replica.
+    &quot;hostPort&quot;: &quot;A String&quot;, # The host and port of the on-premises instance in host:port format
+    &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#onPremisesConfiguration*.
+    &quot;password&quot;: &quot;A String&quot;, # The password for connecting to on-premises instance.
+    &quot;username&quot;: &quot;A String&quot;, # The username for connecting to on-premises instance.
+  },
+  &quot;outOfDiskReport&quot;: { # This message wraps up the information written by out-of-disk detection job. # This field represents the report generated by the proactive database wellness job for OutOfDisk issues. Writers: -- the proactive database wellness job for OOD. Readers: -- the Pantheon frontend -- the proactive database wellness job
+    &quot;sqlMinRecommendedIncreaseSizeGb&quot;: 42, # The minimum recommended increase size in GigaBytes This field is consumed by the frontend Writers: -- the proactive database wellness job for OOD. Readers: -- the Pantheon frontend
+    &quot;sqlOutOfDiskState&quot;: &quot;A String&quot;, # This field represents the state generated by the proactive database wellness job for OutOfDisk issues. Writers: -- the proactive database wellness job for OOD. Readers: -- the Pantheon frontend -- the proactive database wellness job
+  },
+  &quot;project&quot;: &quot;A String&quot;, # The project ID of the project containing the Cloud SQL instance. The Google apps domain is prefixed if applicable.
+  &quot;region&quot;: &quot;A String&quot;, # The geographical region. Can be *us-central* (*FIRST_GEN* instances only) *us-central1* (*SECOND_GEN* instances only) *asia-east1* or *europe-west1*. Defaults to *us-central* or *us-central1* depending on the instance type. The region cannot be changed after instance creation.
+  &quot;replicaConfiguration&quot;: { # Read-replica configuration for connecting to the primary instance. # Configuration specific to failover replicas and read replicas.
+    &quot;failoverTarget&quot;: True or False, # Specifies if the replica is the failover target. If the field is set to *true* the replica will be designated as a failover replica. In case the primary instance fails, the replica instance will be promoted as the new primary instance. Only one replica can be specified as failover target, and the replica has to be in different zone with the primary instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#replicaConfiguration*.
+    &quot;mysqlReplicaConfiguration&quot;: { # Read-replica configuration specific to MySQL databases. # MySQL specific configuration when replicating from a MySQL on-premises primary instance. Replication configuration information such as the username, password, certificates, and keys are not stored in the instance metadata.The configuration information is used only to set up the replication connection and is stored by MySQL in a file named *master.info* in the data directory.
+      &quot;caCertificate&quot;: &quot;A String&quot;, # PEM representation of the trusted CA&#x27;s x509 certificate.
+      &quot;clientCertificate&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s x509 certificate.
+      &quot;clientKey&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s private key. The corresponsing public key is encoded in the client&#x27;s certificate.
+      &quot;connectRetryInterval&quot;: 42, # Seconds to wait between connect retries. MySQL&#x27;s default is 60 seconds.
+      &quot;dumpFilePath&quot;: &quot;A String&quot;, # Path to a SQL dump file in Google Cloud Storage from which the replica instance is to be created. The URI is in the form gs://bucketName/fileName. Compressed gzip files (.gz) are also supported. Dumps have the binlog co-ordinates from which replication begins. This can be accomplished by setting --master-data to 1 when using mysqldump.
+      &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#mysqlReplicaConfiguration**.
+      &quot;masterHeartbeatPeriod&quot;: &quot;A String&quot;, # Interval in milliseconds between replication heartbeats.
+      &quot;password&quot;: &quot;A String&quot;, # The password for the replication connection.
+      &quot;sslCipher&quot;: &quot;A String&quot;, # A list of permissible ciphers to use for SSL encryption.
+      &quot;username&quot;: &quot;A String&quot;, # The username for the replication connection.
+      &quot;verifyServerCertificate&quot;: True or False, # Whether or not to check the primary instance&#x27;s Common Name value in the certificate that it sends during the SSL handshake.
+    },
+  },
+  &quot;replicaNames&quot;: [ # The replicas of the instance.
+    &quot;A String&quot;,
+  ],
+  &quot;rootPassword&quot;: &quot;A String&quot;, # Initial root password. Use only on creation.
+  &quot;satisfiesPzs&quot;: True or False, # The status indicating if instance satisfiesPzs. Reserved for future use.
+  &quot;scheduledMaintenance&quot;: { # Any scheduled maintenancce for this instance. # The start time of any upcoming scheduled maintenance for this instance.
+    &quot;canDefer&quot;: True or False,
+    &quot;canReschedule&quot;: True or False, # If the scheduled maintenance can be rescheduled.
+    &quot;scheduleDeadlineTime&quot;: &quot;A String&quot;, # Maintenance cannot be rescheduled to start beyond this deadline.
+    &quot;startTime&quot;: &quot;A String&quot;, # The start time of any upcoming scheduled maintenance for this instance.
+  },
+  &quot;secondaryGceZone&quot;: &quot;A String&quot;, # The Compute Engine zone that the failover instance is currently serving from for a regional instance. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary/failover zone. Reserved for future use.
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;serverCaCert&quot;: { # SslCerts Resource # SSL configuration.
+    &quot;cert&quot;: &quot;A String&quot;, # PEM representation.
+    &quot;certSerialNumber&quot;: &quot;A String&quot;, # Serial number, as extracted from the certificate.
+    &quot;commonName&quot;: &quot;A String&quot;, # User supplied name. Constrained to [a-zA-Z.-_ ]+.
+    &quot;createTime&quot;: &quot;A String&quot;, # The time when the certificate was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**
+    &quot;expirationTime&quot;: &quot;A String&quot;, # The time when the certificate expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+    &quot;instance&quot;: &quot;A String&quot;, # Name of the database instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always sql#sslCert.
+    &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+    &quot;sha1Fingerprint&quot;: &quot;A String&quot;, # Sha1 Fingerprint.
+  },
+  &quot;serviceAccountEmailAddress&quot;: &quot;A String&quot;, # The service account email address assigned to the instance. This property is read-only.
+  &quot;settings&quot;: { # Database instance settings. # The user settings.
+    &quot;activationPolicy&quot;: &quot;A String&quot;, # The activation policy specifies when the instance is activated; it is applicable only when the instance state is RUNNABLE. Valid values: **ALWAYS**: The instance is on, and remains so even in the absence of connection requests. **NEVER**: The instance is off; it is not activated, even if a connection request arrives.
+    &quot;activeDirectoryConfig&quot;: { # Active Directory configuration, relevant only for Cloud SQL for SQL Server. # Active Directory configuration, relevant only for Cloud SQL for SQL Server.
+      &quot;domain&quot;: &quot;A String&quot;, # The name of the domain (e.g., mydomain.com).
+      &quot;kind&quot;: &quot;A String&quot;, # This is always sql#activeDirectoryConfig.
+    },
+    &quot;authorizedGaeApplications&quot;: [ # The App Engine app IDs that can access this instance. (Deprecated) Applied to First Generation instances only.
+      &quot;A String&quot;,
+    ],
+    &quot;availabilityType&quot;: &quot;A String&quot;, # Availability type. Potential values: **ZONAL**: The instance serves data from only one zone. Outages in that zone affect data accessibility. **REGIONAL**: The instance can serve data from more than one zone in a region (it is highly available). For more information, see [Overview of the High Availability Configuration](https://cloud.google.com/sql/docs/mysql/high-availability).
+    &quot;backupConfiguration&quot;: { # Database instance backup configuration. # The daily backup configuration for the instance.
+      &quot;backupRetentionSettings&quot;: { # We currently only support backup retention by specifying the number of backups we will retain. # Backup retention settings.
+        &quot;retainedBackups&quot;: 42, # Depending on the value of retention_unit, this is used to determine if a backup needs to be deleted. If retention_unit is &#x27;COUNT&#x27;, we will retain this many backups.
+        &quot;retentionUnit&quot;: &quot;A String&quot;, # The unit that &#x27;retained_backups&#x27; represents.
+      },
+      &quot;binaryLogEnabled&quot;: True or False, # (MySQL only) Whether binary log is enabled. If backup configuration is disabled, binarylog must be disabled as well.
+      &quot;enabled&quot;: True or False, # Whether this configuration is enabled.
+      &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupConfiguration**.
+      &quot;location&quot;: &quot;A String&quot;, # Location of the backup
+      &quot;pointInTimeRecoveryEnabled&quot;: True or False, # (Postgres only) Whether point in time recovery is enabled.
+      &quot;replicationLogArchivingEnabled&quot;: True or False, # Reserved for future use.
+      &quot;startTime&quot;: &quot;A String&quot;, # Start time for the daily backup configuration in UTC timezone in the 24 hour format - **HH:MM**.
+      &quot;transactionLogRetentionDays&quot;: 42, # The number of days of transaction logs we retain for point in time restore, from 1-7.
+    },
+    &quot;collation&quot;: &quot;A String&quot;, # The name of server Instance collation.
+    &quot;crashSafeReplicationEnabled&quot;: True or False, # Configuration specific to read replica instances. Indicates whether database flags for crash-safe replication are enabled. This property was only applicable to First Generation instances.
+    &quot;dataDiskSizeGb&quot;: &quot;A String&quot;, # The size of data disk, in GB. The data disk size minimum is 10GB.
+    &quot;dataDiskType&quot;: &quot;A String&quot;, # The type of data disk: **PD_SSD** (default) or **PD_HDD**.
+    &quot;databaseFlags&quot;: [ # The database flags passed to the instance at startup.
+      { # Database flags for Cloud SQL instances.
+        &quot;name&quot;: &quot;A String&quot;, # The name of the flag. These flags are passed at instance startup, so include both server options and system variables. Flags are specified with underscores, not hyphens. For more information, see [Configuring Database Flags](https://cloud.google.com/sql/docs/mysql/flags) in the Cloud SQL documentation.
+        &quot;value&quot;: &quot;A String&quot;, # The value of the flag. Booleans are set to **on** for true and **off** for false. This field must be omitted if the flag doesn&#x27;t take a value.
+      },
+    ],
+    &quot;databaseReplicationEnabled&quot;: True or False, # Configuration specific to read replica instances. Indicates whether replication is enabled or not.
+    &quot;denyMaintenancePeriods&quot;: [ # Deny maintenance periods
+      { # Deny maintenance Periods. This specifies a date range during when all CSA rollout will be denied.
+        &quot;endDate&quot;: &quot;A String&quot;, # &quot;deny maintenance period&quot; end date. If the year of the end date is empty, the year of the start date also must be empty. In this case, it means the no maintenance interval recurs every year. The date is in format yyyy-mm-dd i.e., 2020-11-01, or mm-dd, i.e., 11-01
+        &quot;startDate&quot;: &quot;A String&quot;, # &quot;deny maintenance period&quot; start date. If the year of the start date is empty, the year of the end date also must be empty. In this case, it means the no maintenance interval recurs every year. The date is in format yyyy-mm-dd i.e., 2020-11-01, or mm-dd, i.e., 11-01
+        &quot;time&quot;: &quot;A String&quot;, # Time in UTC when the &quot;deny maintenance period&quot; starts on start_date and ends on end_date. The time is in format: HH:mm:SS, i.e., 00:00:00
+      },
+    ],
+    &quot;insightsConfig&quot;: { # Insights configuration. This specifies when Cloud SQL Insights feature is enabled and optional configuration. # Insights configuration, for now relevant only for Postgres.
+      &quot;queryInsightsEnabled&quot;: True or False, # Whether Query Insights feature is enabled.
+      &quot;queryPlansPerMinute&quot;: 42, # Number of query execution plans captured by Insights per minute for all queries combined. Default is 5.
+      &quot;queryStringLength&quot;: 42, # Maximum query length stored in bytes. Default value: 1024 bytes. Range: 256-4500 bytes. Query length more than this field value will be truncated to this value. When unset, query length will be the default value. Changing query length will restart the database.
+      &quot;recordApplicationTags&quot;: True or False, # Whether Query Insights will record application tags from query when enabled.
+      &quot;recordClientAddress&quot;: True or False, # Whether Query Insights will record client address when enabled.
+    },
+    &quot;ipConfiguration&quot;: { # IP Management configuration. # The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled for Second Generation instances.
+      &quot;authorizedNetworks&quot;: [ # The list of external networks that are allowed to connect to the instance using the IP. In &#x27;CIDR&#x27; notation, also known as &#x27;slash&#x27; notation (for example: **192.168.100.0/24**).
+        { # An entry for an Access Control list.
+          &quot;expirationTime&quot;: &quot;A String&quot;, # The time when this access control entry expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+          &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#aclEntry**.
+          &quot;name&quot;: &quot;A String&quot;, # Optional. A label to identify this entry.
+          &quot;value&quot;: &quot;A String&quot;, # The allowlisted value for the access control list.
+        },
+      ],
+      &quot;ipv4Enabled&quot;: True or False, # Whether the instance is assigned a public IP address or not.
+      &quot;privateNetwork&quot;: &quot;A String&quot;, # The resource link for the VPC network from which the Cloud SQL instance is accessible for private IP. For example, **/projects/myProject/global/networks/default**. This setting can be updated, but it cannot be removed after it is set.
+      &quot;requireSsl&quot;: True or False, # Whether SSL connections over IP are enforced or not.
+    },
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#settings**.
+    &quot;locationPreference&quot;: { # Preferred location. This specifies where a Cloud SQL instance is located. Note that if the preferred location is not available, the instance will be located as close as possible within the region. Only one location may be specified. # The location preference settings. This allows the instance to be located as near as possible to Compute Engine zone for better performance.
+      &quot;followGaeApplication&quot;: &quot;A String&quot;, # The App Engine application to follow, it must be in the same region as the Cloud SQL instance.
+      &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#locationPreference**.
+      &quot;secondaryZone&quot;: &quot;A String&quot;, # The preferred Compute Engine zone for the secondary/failover (for example: us-central1-a, us-central1-b, etc.). Reserved for future use.
+      &quot;zone&quot;: &quot;A String&quot;, # The preferred Compute Engine zone (for example: us-central1-a, us-central1-b, etc.).
+    },
+    &quot;maintenanceWindow&quot;: { # Maintenance window. This specifies when a Cloud SQL instance is restarted for system maintenance purposes. # The maintenance window for this instance. This specifies when the instance can be restarted for maintenance purposes.
+      &quot;day&quot;: 42, # day of week (1-7), starting on Monday.
+      &quot;hour&quot;: 42, # hour of day - 0 to 23.
+      &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#maintenanceWindow**.
+      &quot;updateTrack&quot;: &quot;A String&quot;, # Maintenance timing setting: **canary** (Earlier) or **stable** (Later). [Learn more] (https://cloud.google.com/sql/docs/mysql/instance-settings#maintenance-timing-2ndgen).
+    },
+    &quot;pricingPlan&quot;: &quot;A String&quot;, # The pricing plan for this instance. This can be either **PER_USE** or **PACKAGE**. Only **PER_USE** is supported for Second Generation instances.
+    &quot;replicationType&quot;: &quot;A String&quot;, # The type of replication this instance uses. This can be either **ASYNCHRONOUS** or **SYNCHRONOUS**. (Deprecated) This property was only applicable to First Generation instances.
+    &quot;settingsVersion&quot;: &quot;A String&quot;, # The version of instance settings. This is a required field for update method to make sure concurrent updates are handled properly. During update, use the most recent settingsVersion value for this instance and do not try to update this value.
+    &quot;storageAutoResize&quot;: True or False, # Configuration to increase storage size automatically. The default value is true.
+    &quot;storageAutoResizeLimit&quot;: &quot;A String&quot;, # The maximum size to which storage capacity can be automatically increased. The default value is 0, which specifies that there is no limit.
+    &quot;tier&quot;: &quot;A String&quot;, # The tier (or machine type) for this instance, for example **db-custom-1-3840**.
+    &quot;userLabels&quot;: { # User-provided labels, represented as a dictionary where each label is a single key value pair.
+      &quot;a_key&quot;: &quot;A String&quot;,
+    },
+  },
+  &quot;state&quot;: &quot;A String&quot;, # The current serving state of the Cloud SQL instance. This can be one of the following. *SQL_INSTANCE_STATE_UNSPECIFIED*: The state of the instance is unknown. *RUNNABLE*: The instance is running, or has been stopped by owner. *SUSPENDED*: The instance is not available, for example due to problems with billing. *PENDING_DELETE*: The instance is being deleted. *PENDING_CREATE*: The instance is being created. *MAINTENANCE*: The instance is down for maintenance. *FAILED*: The instance creation failed.
+  &quot;suspensionReason&quot;: [ # If the instance state is SUSPENDED, the reason for the suspension.
+    &quot;A String&quot;,
+  ],
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
+  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
+    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupContext**.
+  },
+  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
+    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
+      { # Database instance operation error.
+        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+      },
+    ],
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationErrors**.
+  },
+  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
+    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. **MySQL** and **PostgreSQL** instances only.
+      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
+    },
+    &quot;databases&quot;: [ # Databases to be exported. **MySQL instances:** If **fileType** is **SQL** and no database is specified, all databases are exported, except for the **mysql** system database. If **fileType** is **CSV**, you can specify one database, either by using this property or by using the **csvExportOptions.selectQuery** property, which takes precedence over this property. **PostgreSQL instances:** You must specify one database to be exported. If **fileType** is **CSV**, this database must match the one specified in the **csvExportOptions.selectQuery** property. **SQL Server instances:** You must specify one database to be exported, and the **fileType** must be **BAK**.
+      &quot;A String&quot;,
+    ],
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data. **BAK**: The file contains backup data for a SQL Server instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#exportContext**.
+    &quot;offload&quot;: True or False, # Option for export offload.
+    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
+      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
+        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to **1**, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to **2**, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than **1**, --set-gtid-purged is set to OFF.
+      },
+      &quot;schemaOnly&quot;: True or False, # Export only schemas.
+      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form **gs://bucketName/fileName**. If the file already exists, the request succeeds, but the operation fails. If **fileType** is **SQL** and the filename ends with .gz, the contents are compressed.
+  },
+  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
+    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
+      &quot;encryptionOptions&quot;: {
+        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
+        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+      },
+    },
+    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
+      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
+        &quot;A String&quot;,
+      ],
+      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
+    },
+    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If **fileType** is **SQL**, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. If **fileType** is **CSV**, one database must be specified.
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data.
+    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#importContext**.
+    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form **gs://bucketName/fileName**. Compressed gzip files (.gz) are supported when **fileType** is **SQL**. The instance must have write permissions to the bucket and read access to the file.
+  },
+  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operation**.
+  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: **CREATE** **DELETE** **UPDATE** **RESTART** **IMPORT** **EXPORT** **BACKUP_VOLUME** **RESTORE_VOLUME** **CREATE_USER** **DELETE_USER** **CREATE_DATABASE** **DELETE_DATABASE**
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are: **PENDING** **RUNNING** **DONE** **SQL_OPERATION_STATUS_UNSPECIFIED**
+  &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
+  &quot;targetLink&quot;: &quot;A String&quot;,
+  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
+  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
+}</pre>
+</div>
+
+<div class="method">
     <code class="details" id="list">list(project, filter=None, maxResults=None, pageToken=None, x__xgafv=None)</code>
   <pre>Lists instances under a given project.
 
@@ -112,29 +1342,22 @@
       &quot;backendType&quot;: &quot;A String&quot;, #  *SECOND_GEN*: Cloud SQL database instance. *EXTERNAL*: A database server that is not managed by Google. This property is read-only; use the *tier* property in the *settings* object to determine the database type.
       &quot;connectionName&quot;: &quot;A String&quot;, # Connection name of the Cloud SQL instance used in connection strings.
       &quot;currentDiskSize&quot;: &quot;A String&quot;, # The current disk usage of the instance in bytes. This property has been deprecated. Use the &quot;cloudsql.googleapis.com/database/disk/bytes_used&quot; metric in Cloud Monitoring API instead. Please see this announcement for details.
-      &quot;databaseVersion&quot;: &quot;A String&quot;, # The database engine type and version. The *databaseVersion* field cannot be changed after instance creation. MySQL instances: *MYSQL_8_0*, *MYSQL_5_7* (default), or *MYSQL_5_6*. PostgreSQL instances: *POSTGRES_9_6*, *POSTGRES_10*, *POSTGRES_11*, *POSTGRES_12*, or *POSTGRES_13* (default). SQL Server instances: *SQLSERVER_2017_STANDARD* (default), *SQLSERVER_2017_ENTERPRISE*, *SQLSERVER_2017_EXPRESS*, or *SQLSERVER_2017_WEB*.
-      &quot;diskEncryptionConfiguration&quot;: { # Disk encryption configuration for an instance. # Disk encryption configuration specific to an instance. Applies only to Second Generation instances.
+      &quot;databaseVersion&quot;: &quot;A String&quot;, # The database engine type and version. The *databaseVersion* field cannot be changed after instance creation. MySQL instances: *MYSQL_8_0*, *MYSQL_5_7* (default), or *MYSQL_5_6*. PostgreSQL instances: *POSTGRES_9_6*, *POSTGRES_10*, *POSTGRES_11*, *POSTGRES_12*, *POSTGRES_13* (default). SQL Server instances: *SQLSERVER_2019_STANDARD*, *SQLSERVER_2019_ENTERPRISE*, *SQLSERVER_2019_EXPRESS*, or *SQLSERVER_2019_WEB*, *SQLSERVER_2017_STANDARD* (default), *SQLSERVER_2017_ENTERPRISE*, *SQLSERVER_2017_EXPRESS*, or *SQLSERVER_2017_WEB*.
+      &quot;diskEncryptionConfiguration&quot;: { # Disk encryption configuration for an instance. # Disk encryption configuration specific to an instance.
         &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#diskEncryptionConfiguration**.
         &quot;kmsKeyName&quot;: &quot;A String&quot;, # Resource name of KMS key for disk encryption
       },
-      &quot;diskEncryptionStatus&quot;: { # Disk encryption status for an instance. # Disk encryption status specific to an instance. Applies only to Second Generation instances.
+      &quot;diskEncryptionStatus&quot;: { # Disk encryption status for an instance. # Disk encryption status specific to an instance.
         &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#diskEncryptionStatus**.
         &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # KMS key version used to encrypt the Cloud SQL instance resource
       },
-      &quot;encryptedRootPassword&quot;: &quot;A String&quot;, # For internal usage only. The encrypted password.
       &quot;etag&quot;: &quot;A String&quot;, # This field is deprecated and will be removed from a future version of the API. Use the *settings.settingsVersion* field instead.
-      &quot;failoverReplica&quot;: { # The name and status of the failover replica. This property is applicable only to Second Generation instances.
+      &quot;failoverReplica&quot;: { # The name and status of the failover replica.
         &quot;available&quot;: True or False, # The availability status of the failover replica. A false status indicates that the failover replica is out of sync. The primary instance can only failover to the failover replica when the status is true.
-        &quot;failoverInstance&quot;: { # Reference to another Cloud SQL instance. # A reference to the failover replica. If specified at instance creation, a failover replica is created for the instance. Currently, the failover replica can only be created in the same region as the primary instance.
-          &quot;name&quot;: &quot;A String&quot;, # The name of the Cloud SQL instance being referenced.
-          &quot;region&quot;: &quot;A String&quot;, # The region of the Cloud SQL instance being referenced.
-        },
-        &quot;name&quot;: &quot;A String&quot;, # The name of the failover replica. If specified at instance creation, a failover replica is created for the instance. The name doesn&#x27;t include the project ID. This property is applicable only to Second Generation instances.
+        &quot;name&quot;: &quot;A String&quot;, # The name of the failover replica. If specified at instance creation, a failover replica is created for the instance. The name doesn&#x27;t include the project ID.
       },
       &quot;gceZone&quot;: &quot;A String&quot;, # The Compute Engine zone that the instance is currently serving from. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary zone.
-      &quot;installedVersion&quot;: &quot;A String&quot;, # installed_version stores the current fully resolved database version including minor version such as MySQL_5.6.50
       &quot;instanceType&quot;: &quot;A String&quot;, # The instance type. This can be one of the following. *CLOUD_SQL_INSTANCE*: A Cloud SQL instance that is not replicating from a primary instance. *ON_PREMISES_INSTANCE*: An instance running on the customer&#x27;s premises. *READ_REPLICA_INSTANCE*: A Cloud SQL instance configured as a read-replica.
-      &quot;instanceUid&quot;: &quot;A String&quot;, # Uid of the Cloud SQL instance. Used by Pantheon to check instance is created
       &quot;ipAddresses&quot;: [ # The assigned IP addresses for the instance.
         { # Database instance IP Mapping.
           &quot;ipAddress&quot;: &quot;A String&quot;, # The IP address assigned.
@@ -144,10 +1367,6 @@
       ],
       &quot;ipv6Address&quot;: &quot;A String&quot;, # The IPv6 address assigned to the instance. (Deprecated) This property was applicable only to First Generation instances.
       &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#instance*.
-      &quot;masterInstance&quot;: { # Reference to another Cloud SQL instance. # The reference to the instance which will act as primary in the replication setup.
-        &quot;name&quot;: &quot;A String&quot;, # The name of the Cloud SQL instance being referenced.
-        &quot;region&quot;: &quot;A String&quot;, # The region of the Cloud SQL instance being referenced.
-      },
       &quot;masterInstanceName&quot;: &quot;A String&quot;, # The name of the instance which will act as primary in the replication setup.
       &quot;maxDiskSize&quot;: &quot;A String&quot;, # The maximum disk size of the instance in bytes.
       &quot;name&quot;: &quot;A String&quot;, # Name of the Cloud SQL instance. This does not include the project ID.
@@ -184,12 +1403,6 @@
           &quot;verifyServerCertificate&quot;: True or False, # Whether or not to check the primary instance&#x27;s Common Name value in the certificate that it sends during the SSL handshake.
         },
       },
-      &quot;replicaInstances&quot;: [ # The replicas of the instance.
-        { # Reference to another Cloud SQL instance.
-          &quot;name&quot;: &quot;A String&quot;, # The name of the Cloud SQL instance being referenced.
-          &quot;region&quot;: &quot;A String&quot;, # The region of the Cloud SQL instance being referenced.
-        },
-      ],
       &quot;replicaNames&quot;: [ # The replicas of the instance.
         &quot;A String&quot;,
       ],
@@ -211,6 +1424,7 @@
         &quot;expirationTime&quot;: &quot;A String&quot;, # The time when the certificate expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
         &quot;instance&quot;: &quot;A String&quot;, # Name of the database instance.
         &quot;kind&quot;: &quot;A String&quot;, # This is always sql#sslCert.
+        &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
         &quot;sha1Fingerprint&quot;: &quot;A String&quot;, # Sha1 Fingerprint.
       },
       &quot;serviceAccountEmailAddress&quot;: &quot;A String&quot;, # The service account email address assigned to the instance. This property is read-only.
@@ -220,7 +1434,10 @@
           &quot;domain&quot;: &quot;A String&quot;, # The name of the domain (e.g., mydomain.com).
           &quot;kind&quot;: &quot;A String&quot;, # This is always sql#activeDirectoryConfig.
         },
-        &quot;availabilityType&quot;: &quot;A String&quot;, # Availability type. Potential values: **ZONAL**: The instance serves data from only one zone. Outages in that zone affect data accessibility. **REGIONAL**: The instance can serve data from more than one zone in a region (it is highly available). For more information, see [Overview of the High Availability Configuration](/sql/docs/postgres/high-availability).
+        &quot;authorizedGaeApplications&quot;: [ # The App Engine app IDs that can access this instance. (Deprecated) Applied to First Generation instances only.
+          &quot;A String&quot;,
+        ],
+        &quot;availabilityType&quot;: &quot;A String&quot;, # Availability type. Potential values: **ZONAL**: The instance serves data from only one zone. Outages in that zone affect data accessibility. **REGIONAL**: The instance can serve data from more than one zone in a region (it is highly available). For more information, see [Overview of the High Availability Configuration](https://cloud.google.com/sql/docs/mysql/high-availability).
         &quot;backupConfiguration&quot;: { # Database instance backup configuration. # The daily backup configuration for the instance.
           &quot;backupRetentionSettings&quot;: { # We currently only support backup retention by specifying the number of backups we will retain. # Backup retention settings.
             &quot;retainedBackups&quot;: 42, # Depending on the value of retention_unit, this is used to determine if a backup needs to be deleted. If retention_unit is &#x27;COUNT&#x27;, we will retain this many backups.
@@ -241,7 +1458,7 @@
         &quot;dataDiskType&quot;: &quot;A String&quot;, # The type of data disk: **PD_SSD** (default) or **PD_HDD**.
         &quot;databaseFlags&quot;: [ # The database flags passed to the instance at startup.
           { # Database flags for Cloud SQL instances.
-            &quot;name&quot;: &quot;A String&quot;, # The name of the flag. These flags are passed at instance startup, so include both server options and system variables for MySQL. Flags are specified with underscores, not hyphens. For more information, see [Configuring Database Flags](/sql/docs/mysql/flags) in the Cloud SQL documentation.
+            &quot;name&quot;: &quot;A String&quot;, # The name of the flag. These flags are passed at instance startup, so include both server options and system variables. Flags are specified with underscores, not hyphens. For more information, see [Configuring Database Flags](https://cloud.google.com/sql/docs/mysql/flags) in the Cloud SQL documentation.
             &quot;value&quot;: &quot;A String&quot;, # The value of the flag. Booleans are set to **on** for true and **off** for false. This field must be omitted if the flag doesn&#x27;t take a value.
           },
         ],
@@ -255,7 +1472,7 @@
         ],
         &quot;insightsConfig&quot;: { # Insights configuration. This specifies when Cloud SQL Insights feature is enabled and optional configuration. # Insights configuration, for now relevant only for Postgres.
           &quot;queryInsightsEnabled&quot;: True or False, # Whether Query Insights feature is enabled.
-          &quot;queryPlansPerMinute&quot;: 42, # Number of query plans generated by Insights per minute. Default is 5. Changing this will restart the database.
+          &quot;queryPlansPerMinute&quot;: 42, # Number of query execution plans captured by Insights per minute for all queries combined. Default is 5.
           &quot;queryStringLength&quot;: 42, # Maximum query length stored in bytes. Default value: 1024 bytes. Range: 256-4500 bytes. Query length more than this field value will be truncated to this value. When unset, query length will be the default value. Changing query length will restart the database.
           &quot;recordApplicationTags&quot;: True or False, # Whether Query Insights will record application tags from query when enabled.
           &quot;recordClientAddress&quot;: True or False, # Whether Query Insights will record client address when enabled.
@@ -275,6 +1492,7 @@
         },
         &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#settings**.
         &quot;locationPreference&quot;: { # Preferred location. This specifies where a Cloud SQL instance is located. Note that if the preferred location is not available, the instance will be located as close as possible within the region. Only one location may be specified. # The location preference settings. This allows the instance to be located as near as possible to Compute Engine zone for better performance.
+          &quot;followGaeApplication&quot;: &quot;A String&quot;, # The App Engine application to follow, it must be in the same region as the Cloud SQL instance.
           &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#locationPreference**.
           &quot;secondaryZone&quot;: &quot;A String&quot;, # The preferred Compute Engine zone for the secondary/failover (for example: us-central1-a, us-central1-b, etc.). Reserved for future use.
           &quot;zone&quot;: &quot;A String&quot;, # The preferred Compute Engine zone (for example: us-central1-a, us-central1-b, etc.).
@@ -283,7 +1501,7 @@
           &quot;day&quot;: 42, # day of week (1-7), starting on Monday.
           &quot;hour&quot;: 42, # hour of day - 0 to 23.
           &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#maintenanceWindow**.
-          &quot;updateTrack&quot;: &quot;A String&quot;, # Maintenance timing setting: **canary** (Earlier) or **stable** (Later). [Learn more] (https://cloud.google.com/sql/docs/mysql/admin-api/rest/v1/instance-settings#maintenance-timing-2ndgen).
+          &quot;updateTrack&quot;: &quot;A String&quot;, # Maintenance timing setting: **canary** (Earlier) or **stable** (Later). [Learn more] (https://cloud.google.com/sql/docs/mysql/instance-settings#maintenance-timing-2ndgen).
         },
         &quot;pricingPlan&quot;: &quot;A String&quot;, # The pricing plan for this instance. This can be either **PER_USE** or **PACKAGE**. Only **PER_USE** is supported for Second Generation instances.
         &quot;replicationType&quot;: &quot;A String&quot;, # The type of replication this instance uses. This can be either **ASYNCHRONOUS** or **SYNCHRONOUS**. (Deprecated) This property was only applicable to First Generation instances.
@@ -314,6 +1532,40 @@
 </div>
 
 <div class="method">
+    <code class="details" id="listServerCas">listServerCas(project, instance, x__xgafv=None)</code>
+  <pre>Lists all of the trusted Certificate Authorities (CAs) for the specified instance. There can be up to three CAs listed: the CA that was used to sign the certificate that is currently in use, a CA that has been added but not yet used to sign a certificate, and a CA used to sign a certificate that has previously rotated out.
+
+Args:
+  project: string, Project ID of the project that contains the instance. (required)
+  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Instances ListServerCas response.
+  &quot;activeVersion&quot;: &quot;A String&quot;,
+  &quot;certs&quot;: [ # List of server CA certificates for the instance.
+    { # SslCerts Resource
+      &quot;cert&quot;: &quot;A String&quot;, # PEM representation.
+      &quot;certSerialNumber&quot;: &quot;A String&quot;, # Serial number, as extracted from the certificate.
+      &quot;commonName&quot;: &quot;A String&quot;, # User supplied name. Constrained to [a-zA-Z.-_ ]+.
+      &quot;createTime&quot;: &quot;A String&quot;, # The time when the certificate was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**
+      &quot;expirationTime&quot;: &quot;A String&quot;, # The time when the certificate expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+      &quot;instance&quot;: &quot;A String&quot;, # Name of the database instance.
+      &quot;kind&quot;: &quot;A String&quot;, # This is always sql#sslCert.
+      &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+      &quot;sha1Fingerprint&quot;: &quot;A String&quot;, # Sha1 Fingerprint.
+    },
+  ],
+  &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#instancesListServerCas*.
+}</pre>
+</div>
+
+<div class="method">
     <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
   <pre>Retrieves the next page of results.
 
@@ -327,4 +1579,1264 @@
     </pre>
 </div>
 
+<div class="method">
+    <code class="details" id="patch">patch(project, instance, body=None, x__xgafv=None)</code>
+  <pre>Updates settings of a Cloud SQL instance. This method supports patch semantics.
+
+Args:
+  project: string, Project ID of the project that contains the instance. (required)
+  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # A Cloud SQL instance resource.
+  &quot;backendType&quot;: &quot;A String&quot;, #  *SECOND_GEN*: Cloud SQL database instance. *EXTERNAL*: A database server that is not managed by Google. This property is read-only; use the *tier* property in the *settings* object to determine the database type.
+  &quot;connectionName&quot;: &quot;A String&quot;, # Connection name of the Cloud SQL instance used in connection strings.
+  &quot;currentDiskSize&quot;: &quot;A String&quot;, # The current disk usage of the instance in bytes. This property has been deprecated. Use the &quot;cloudsql.googleapis.com/database/disk/bytes_used&quot; metric in Cloud Monitoring API instead. Please see this announcement for details.
+  &quot;databaseVersion&quot;: &quot;A String&quot;, # The database engine type and version. The *databaseVersion* field cannot be changed after instance creation. MySQL instances: *MYSQL_8_0*, *MYSQL_5_7* (default), or *MYSQL_5_6*. PostgreSQL instances: *POSTGRES_9_6*, *POSTGRES_10*, *POSTGRES_11*, *POSTGRES_12*, *POSTGRES_13* (default). SQL Server instances: *SQLSERVER_2019_STANDARD*, *SQLSERVER_2019_ENTERPRISE*, *SQLSERVER_2019_EXPRESS*, or *SQLSERVER_2019_WEB*, *SQLSERVER_2017_STANDARD* (default), *SQLSERVER_2017_ENTERPRISE*, *SQLSERVER_2017_EXPRESS*, or *SQLSERVER_2017_WEB*.
+  &quot;diskEncryptionConfiguration&quot;: { # Disk encryption configuration for an instance. # Disk encryption configuration specific to an instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#diskEncryptionConfiguration**.
+    &quot;kmsKeyName&quot;: &quot;A String&quot;, # Resource name of KMS key for disk encryption
+  },
+  &quot;diskEncryptionStatus&quot;: { # Disk encryption status for an instance. # Disk encryption status specific to an instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#diskEncryptionStatus**.
+    &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # KMS key version used to encrypt the Cloud SQL instance resource
+  },
+  &quot;etag&quot;: &quot;A String&quot;, # This field is deprecated and will be removed from a future version of the API. Use the *settings.settingsVersion* field instead.
+  &quot;failoverReplica&quot;: { # The name and status of the failover replica.
+    &quot;available&quot;: True or False, # The availability status of the failover replica. A false status indicates that the failover replica is out of sync. The primary instance can only failover to the failover replica when the status is true.
+    &quot;name&quot;: &quot;A String&quot;, # The name of the failover replica. If specified at instance creation, a failover replica is created for the instance. The name doesn&#x27;t include the project ID.
+  },
+  &quot;gceZone&quot;: &quot;A String&quot;, # The Compute Engine zone that the instance is currently serving from. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary zone.
+  &quot;instanceType&quot;: &quot;A String&quot;, # The instance type. This can be one of the following. *CLOUD_SQL_INSTANCE*: A Cloud SQL instance that is not replicating from a primary instance. *ON_PREMISES_INSTANCE*: An instance running on the customer&#x27;s premises. *READ_REPLICA_INSTANCE*: A Cloud SQL instance configured as a read-replica.
+  &quot;ipAddresses&quot;: [ # The assigned IP addresses for the instance.
+    { # Database instance IP Mapping.
+      &quot;ipAddress&quot;: &quot;A String&quot;, # The IP address assigned.
+      &quot;timeToRetire&quot;: &quot;A String&quot;, # The due time for this IP to be retired in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**. This field is only available when the IP is scheduled to be retired.
+      &quot;type&quot;: &quot;A String&quot;, # The type of this IP address. A **PRIMARY** address is a public address that can accept incoming connections. A **PRIVATE** address is a private address that can accept incoming connections. An **OUTGOING** address is the source address of connections originating from the instance, if supported.
+    },
+  ],
+  &quot;ipv6Address&quot;: &quot;A String&quot;, # The IPv6 address assigned to the instance. (Deprecated) This property was applicable only to First Generation instances.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#instance*.
+  &quot;masterInstanceName&quot;: &quot;A String&quot;, # The name of the instance which will act as primary in the replication setup.
+  &quot;maxDiskSize&quot;: &quot;A String&quot;, # The maximum disk size of the instance in bytes.
+  &quot;name&quot;: &quot;A String&quot;, # Name of the Cloud SQL instance. This does not include the project ID.
+  &quot;onPremisesConfiguration&quot;: { # On-premises instance configuration. # Configuration specific to on-premises instances.
+    &quot;caCertificate&quot;: &quot;A String&quot;, # PEM representation of the trusted CA&#x27;s x509 certificate.
+    &quot;clientCertificate&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s x509 certificate.
+    &quot;clientKey&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s private key. The corresponsing public key is encoded in the client&#x27;s certificate.
+    &quot;dumpFilePath&quot;: &quot;A String&quot;, # The dump file to create the Cloud SQL replica.
+    &quot;hostPort&quot;: &quot;A String&quot;, # The host and port of the on-premises instance in host:port format
+    &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#onPremisesConfiguration*.
+    &quot;password&quot;: &quot;A String&quot;, # The password for connecting to on-premises instance.
+    &quot;username&quot;: &quot;A String&quot;, # The username for connecting to on-premises instance.
+  },
+  &quot;outOfDiskReport&quot;: { # This message wraps up the information written by out-of-disk detection job. # This field represents the report generated by the proactive database wellness job for OutOfDisk issues. Writers: -- the proactive database wellness job for OOD. Readers: -- the Pantheon frontend -- the proactive database wellness job
+    &quot;sqlMinRecommendedIncreaseSizeGb&quot;: 42, # The minimum recommended increase size in GigaBytes This field is consumed by the frontend Writers: -- the proactive database wellness job for OOD. Readers: -- the Pantheon frontend
+    &quot;sqlOutOfDiskState&quot;: &quot;A String&quot;, # This field represents the state generated by the proactive database wellness job for OutOfDisk issues. Writers: -- the proactive database wellness job for OOD. Readers: -- the Pantheon frontend -- the proactive database wellness job
+  },
+  &quot;project&quot;: &quot;A String&quot;, # The project ID of the project containing the Cloud SQL instance. The Google apps domain is prefixed if applicable.
+  &quot;region&quot;: &quot;A String&quot;, # The geographical region. Can be *us-central* (*FIRST_GEN* instances only) *us-central1* (*SECOND_GEN* instances only) *asia-east1* or *europe-west1*. Defaults to *us-central* or *us-central1* depending on the instance type. The region cannot be changed after instance creation.
+  &quot;replicaConfiguration&quot;: { # Read-replica configuration for connecting to the primary instance. # Configuration specific to failover replicas and read replicas.
+    &quot;failoverTarget&quot;: True or False, # Specifies if the replica is the failover target. If the field is set to *true* the replica will be designated as a failover replica. In case the primary instance fails, the replica instance will be promoted as the new primary instance. Only one replica can be specified as failover target, and the replica has to be in different zone with the primary instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#replicaConfiguration*.
+    &quot;mysqlReplicaConfiguration&quot;: { # Read-replica configuration specific to MySQL databases. # MySQL specific configuration when replicating from a MySQL on-premises primary instance. Replication configuration information such as the username, password, certificates, and keys are not stored in the instance metadata.The configuration information is used only to set up the replication connection and is stored by MySQL in a file named *master.info* in the data directory.
+      &quot;caCertificate&quot;: &quot;A String&quot;, # PEM representation of the trusted CA&#x27;s x509 certificate.
+      &quot;clientCertificate&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s x509 certificate.
+      &quot;clientKey&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s private key. The corresponsing public key is encoded in the client&#x27;s certificate.
+      &quot;connectRetryInterval&quot;: 42, # Seconds to wait between connect retries. MySQL&#x27;s default is 60 seconds.
+      &quot;dumpFilePath&quot;: &quot;A String&quot;, # Path to a SQL dump file in Google Cloud Storage from which the replica instance is to be created. The URI is in the form gs://bucketName/fileName. Compressed gzip files (.gz) are also supported. Dumps have the binlog co-ordinates from which replication begins. This can be accomplished by setting --master-data to 1 when using mysqldump.
+      &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#mysqlReplicaConfiguration**.
+      &quot;masterHeartbeatPeriod&quot;: &quot;A String&quot;, # Interval in milliseconds between replication heartbeats.
+      &quot;password&quot;: &quot;A String&quot;, # The password for the replication connection.
+      &quot;sslCipher&quot;: &quot;A String&quot;, # A list of permissible ciphers to use for SSL encryption.
+      &quot;username&quot;: &quot;A String&quot;, # The username for the replication connection.
+      &quot;verifyServerCertificate&quot;: True or False, # Whether or not to check the primary instance&#x27;s Common Name value in the certificate that it sends during the SSL handshake.
+    },
+  },
+  &quot;replicaNames&quot;: [ # The replicas of the instance.
+    &quot;A String&quot;,
+  ],
+  &quot;rootPassword&quot;: &quot;A String&quot;, # Initial root password. Use only on creation.
+  &quot;satisfiesPzs&quot;: True or False, # The status indicating if instance satisfiesPzs. Reserved for future use.
+  &quot;scheduledMaintenance&quot;: { # Any scheduled maintenancce for this instance. # The start time of any upcoming scheduled maintenance for this instance.
+    &quot;canDefer&quot;: True or False,
+    &quot;canReschedule&quot;: True or False, # If the scheduled maintenance can be rescheduled.
+    &quot;scheduleDeadlineTime&quot;: &quot;A String&quot;, # Maintenance cannot be rescheduled to start beyond this deadline.
+    &quot;startTime&quot;: &quot;A String&quot;, # The start time of any upcoming scheduled maintenance for this instance.
+  },
+  &quot;secondaryGceZone&quot;: &quot;A String&quot;, # The Compute Engine zone that the failover instance is currently serving from for a regional instance. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary/failover zone. Reserved for future use.
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;serverCaCert&quot;: { # SslCerts Resource # SSL configuration.
+    &quot;cert&quot;: &quot;A String&quot;, # PEM representation.
+    &quot;certSerialNumber&quot;: &quot;A String&quot;, # Serial number, as extracted from the certificate.
+    &quot;commonName&quot;: &quot;A String&quot;, # User supplied name. Constrained to [a-zA-Z.-_ ]+.
+    &quot;createTime&quot;: &quot;A String&quot;, # The time when the certificate was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**
+    &quot;expirationTime&quot;: &quot;A String&quot;, # The time when the certificate expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+    &quot;instance&quot;: &quot;A String&quot;, # Name of the database instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always sql#sslCert.
+    &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+    &quot;sha1Fingerprint&quot;: &quot;A String&quot;, # Sha1 Fingerprint.
+  },
+  &quot;serviceAccountEmailAddress&quot;: &quot;A String&quot;, # The service account email address assigned to the instance. This property is read-only.
+  &quot;settings&quot;: { # Database instance settings. # The user settings.
+    &quot;activationPolicy&quot;: &quot;A String&quot;, # The activation policy specifies when the instance is activated; it is applicable only when the instance state is RUNNABLE. Valid values: **ALWAYS**: The instance is on, and remains so even in the absence of connection requests. **NEVER**: The instance is off; it is not activated, even if a connection request arrives.
+    &quot;activeDirectoryConfig&quot;: { # Active Directory configuration, relevant only for Cloud SQL for SQL Server. # Active Directory configuration, relevant only for Cloud SQL for SQL Server.
+      &quot;domain&quot;: &quot;A String&quot;, # The name of the domain (e.g., mydomain.com).
+      &quot;kind&quot;: &quot;A String&quot;, # This is always sql#activeDirectoryConfig.
+    },
+    &quot;authorizedGaeApplications&quot;: [ # The App Engine app IDs that can access this instance. (Deprecated) Applied to First Generation instances only.
+      &quot;A String&quot;,
+    ],
+    &quot;availabilityType&quot;: &quot;A String&quot;, # Availability type. Potential values: **ZONAL**: The instance serves data from only one zone. Outages in that zone affect data accessibility. **REGIONAL**: The instance can serve data from more than one zone in a region (it is highly available). For more information, see [Overview of the High Availability Configuration](https://cloud.google.com/sql/docs/mysql/high-availability).
+    &quot;backupConfiguration&quot;: { # Database instance backup configuration. # The daily backup configuration for the instance.
+      &quot;backupRetentionSettings&quot;: { # We currently only support backup retention by specifying the number of backups we will retain. # Backup retention settings.
+        &quot;retainedBackups&quot;: 42, # Depending on the value of retention_unit, this is used to determine if a backup needs to be deleted. If retention_unit is &#x27;COUNT&#x27;, we will retain this many backups.
+        &quot;retentionUnit&quot;: &quot;A String&quot;, # The unit that &#x27;retained_backups&#x27; represents.
+      },
+      &quot;binaryLogEnabled&quot;: True or False, # (MySQL only) Whether binary log is enabled. If backup configuration is disabled, binarylog must be disabled as well.
+      &quot;enabled&quot;: True or False, # Whether this configuration is enabled.
+      &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupConfiguration**.
+      &quot;location&quot;: &quot;A String&quot;, # Location of the backup
+      &quot;pointInTimeRecoveryEnabled&quot;: True or False, # (Postgres only) Whether point in time recovery is enabled.
+      &quot;replicationLogArchivingEnabled&quot;: True or False, # Reserved for future use.
+      &quot;startTime&quot;: &quot;A String&quot;, # Start time for the daily backup configuration in UTC timezone in the 24 hour format - **HH:MM**.
+      &quot;transactionLogRetentionDays&quot;: 42, # The number of days of transaction logs we retain for point in time restore, from 1-7.
+    },
+    &quot;collation&quot;: &quot;A String&quot;, # The name of server Instance collation.
+    &quot;crashSafeReplicationEnabled&quot;: True or False, # Configuration specific to read replica instances. Indicates whether database flags for crash-safe replication are enabled. This property was only applicable to First Generation instances.
+    &quot;dataDiskSizeGb&quot;: &quot;A String&quot;, # The size of data disk, in GB. The data disk size minimum is 10GB.
+    &quot;dataDiskType&quot;: &quot;A String&quot;, # The type of data disk: **PD_SSD** (default) or **PD_HDD**.
+    &quot;databaseFlags&quot;: [ # The database flags passed to the instance at startup.
+      { # Database flags for Cloud SQL instances.
+        &quot;name&quot;: &quot;A String&quot;, # The name of the flag. These flags are passed at instance startup, so include both server options and system variables. Flags are specified with underscores, not hyphens. For more information, see [Configuring Database Flags](https://cloud.google.com/sql/docs/mysql/flags) in the Cloud SQL documentation.
+        &quot;value&quot;: &quot;A String&quot;, # The value of the flag. Booleans are set to **on** for true and **off** for false. This field must be omitted if the flag doesn&#x27;t take a value.
+      },
+    ],
+    &quot;databaseReplicationEnabled&quot;: True or False, # Configuration specific to read replica instances. Indicates whether replication is enabled or not.
+    &quot;denyMaintenancePeriods&quot;: [ # Deny maintenance periods
+      { # Deny maintenance Periods. This specifies a date range during when all CSA rollout will be denied.
+        &quot;endDate&quot;: &quot;A String&quot;, # &quot;deny maintenance period&quot; end date. If the year of the end date is empty, the year of the start date also must be empty. In this case, it means the no maintenance interval recurs every year. The date is in format yyyy-mm-dd i.e., 2020-11-01, or mm-dd, i.e., 11-01
+        &quot;startDate&quot;: &quot;A String&quot;, # &quot;deny maintenance period&quot; start date. If the year of the start date is empty, the year of the end date also must be empty. In this case, it means the no maintenance interval recurs every year. The date is in format yyyy-mm-dd i.e., 2020-11-01, or mm-dd, i.e., 11-01
+        &quot;time&quot;: &quot;A String&quot;, # Time in UTC when the &quot;deny maintenance period&quot; starts on start_date and ends on end_date. The time is in format: HH:mm:SS, i.e., 00:00:00
+      },
+    ],
+    &quot;insightsConfig&quot;: { # Insights configuration. This specifies when Cloud SQL Insights feature is enabled and optional configuration. # Insights configuration, for now relevant only for Postgres.
+      &quot;queryInsightsEnabled&quot;: True or False, # Whether Query Insights feature is enabled.
+      &quot;queryPlansPerMinute&quot;: 42, # Number of query execution plans captured by Insights per minute for all queries combined. Default is 5.
+      &quot;queryStringLength&quot;: 42, # Maximum query length stored in bytes. Default value: 1024 bytes. Range: 256-4500 bytes. Query length more than this field value will be truncated to this value. When unset, query length will be the default value. Changing query length will restart the database.
+      &quot;recordApplicationTags&quot;: True or False, # Whether Query Insights will record application tags from query when enabled.
+      &quot;recordClientAddress&quot;: True or False, # Whether Query Insights will record client address when enabled.
+    },
+    &quot;ipConfiguration&quot;: { # IP Management configuration. # The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled for Second Generation instances.
+      &quot;authorizedNetworks&quot;: [ # The list of external networks that are allowed to connect to the instance using the IP. In &#x27;CIDR&#x27; notation, also known as &#x27;slash&#x27; notation (for example: **192.168.100.0/24**).
+        { # An entry for an Access Control list.
+          &quot;expirationTime&quot;: &quot;A String&quot;, # The time when this access control entry expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+          &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#aclEntry**.
+          &quot;name&quot;: &quot;A String&quot;, # Optional. A label to identify this entry.
+          &quot;value&quot;: &quot;A String&quot;, # The allowlisted value for the access control list.
+        },
+      ],
+      &quot;ipv4Enabled&quot;: True or False, # Whether the instance is assigned a public IP address or not.
+      &quot;privateNetwork&quot;: &quot;A String&quot;, # The resource link for the VPC network from which the Cloud SQL instance is accessible for private IP. For example, **/projects/myProject/global/networks/default**. This setting can be updated, but it cannot be removed after it is set.
+      &quot;requireSsl&quot;: True or False, # Whether SSL connections over IP are enforced or not.
+    },
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#settings**.
+    &quot;locationPreference&quot;: { # Preferred location. This specifies where a Cloud SQL instance is located. Note that if the preferred location is not available, the instance will be located as close as possible within the region. Only one location may be specified. # The location preference settings. This allows the instance to be located as near as possible to Compute Engine zone for better performance.
+      &quot;followGaeApplication&quot;: &quot;A String&quot;, # The App Engine application to follow, it must be in the same region as the Cloud SQL instance.
+      &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#locationPreference**.
+      &quot;secondaryZone&quot;: &quot;A String&quot;, # The preferred Compute Engine zone for the secondary/failover (for example: us-central1-a, us-central1-b, etc.). Reserved for future use.
+      &quot;zone&quot;: &quot;A String&quot;, # The preferred Compute Engine zone (for example: us-central1-a, us-central1-b, etc.).
+    },
+    &quot;maintenanceWindow&quot;: { # Maintenance window. This specifies when a Cloud SQL instance is restarted for system maintenance purposes. # The maintenance window for this instance. This specifies when the instance can be restarted for maintenance purposes.
+      &quot;day&quot;: 42, # day of week (1-7), starting on Monday.
+      &quot;hour&quot;: 42, # hour of day - 0 to 23.
+      &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#maintenanceWindow**.
+      &quot;updateTrack&quot;: &quot;A String&quot;, # Maintenance timing setting: **canary** (Earlier) or **stable** (Later). [Learn more] (https://cloud.google.com/sql/docs/mysql/instance-settings#maintenance-timing-2ndgen).
+    },
+    &quot;pricingPlan&quot;: &quot;A String&quot;, # The pricing plan for this instance. This can be either **PER_USE** or **PACKAGE**. Only **PER_USE** is supported for Second Generation instances.
+    &quot;replicationType&quot;: &quot;A String&quot;, # The type of replication this instance uses. This can be either **ASYNCHRONOUS** or **SYNCHRONOUS**. (Deprecated) This property was only applicable to First Generation instances.
+    &quot;settingsVersion&quot;: &quot;A String&quot;, # The version of instance settings. This is a required field for update method to make sure concurrent updates are handled properly. During update, use the most recent settingsVersion value for this instance and do not try to update this value.
+    &quot;storageAutoResize&quot;: True or False, # Configuration to increase storage size automatically. The default value is true.
+    &quot;storageAutoResizeLimit&quot;: &quot;A String&quot;, # The maximum size to which storage capacity can be automatically increased. The default value is 0, which specifies that there is no limit.
+    &quot;tier&quot;: &quot;A String&quot;, # The tier (or machine type) for this instance, for example **db-custom-1-3840**.
+    &quot;userLabels&quot;: { # User-provided labels, represented as a dictionary where each label is a single key value pair.
+      &quot;a_key&quot;: &quot;A String&quot;,
+    },
+  },
+  &quot;state&quot;: &quot;A String&quot;, # The current serving state of the Cloud SQL instance. This can be one of the following. *SQL_INSTANCE_STATE_UNSPECIFIED*: The state of the instance is unknown. *RUNNABLE*: The instance is running, or has been stopped by owner. *SUSPENDED*: The instance is not available, for example due to problems with billing. *PENDING_DELETE*: The instance is being deleted. *PENDING_CREATE*: The instance is being created. *MAINTENANCE*: The instance is down for maintenance. *FAILED*: The instance creation failed.
+  &quot;suspensionReason&quot;: [ # If the instance state is SUSPENDED, the reason for the suspension.
+    &quot;A String&quot;,
+  ],
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
+  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
+    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupContext**.
+  },
+  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
+    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
+      { # Database instance operation error.
+        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+      },
+    ],
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationErrors**.
+  },
+  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
+    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. **MySQL** and **PostgreSQL** instances only.
+      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
+    },
+    &quot;databases&quot;: [ # Databases to be exported. **MySQL instances:** If **fileType** is **SQL** and no database is specified, all databases are exported, except for the **mysql** system database. If **fileType** is **CSV**, you can specify one database, either by using this property or by using the **csvExportOptions.selectQuery** property, which takes precedence over this property. **PostgreSQL instances:** You must specify one database to be exported. If **fileType** is **CSV**, this database must match the one specified in the **csvExportOptions.selectQuery** property. **SQL Server instances:** You must specify one database to be exported, and the **fileType** must be **BAK**.
+      &quot;A String&quot;,
+    ],
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data. **BAK**: The file contains backup data for a SQL Server instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#exportContext**.
+    &quot;offload&quot;: True or False, # Option for export offload.
+    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
+      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
+        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to **1**, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to **2**, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than **1**, --set-gtid-purged is set to OFF.
+      },
+      &quot;schemaOnly&quot;: True or False, # Export only schemas.
+      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form **gs://bucketName/fileName**. If the file already exists, the request succeeds, but the operation fails. If **fileType** is **SQL** and the filename ends with .gz, the contents are compressed.
+  },
+  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
+    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
+      &quot;encryptionOptions&quot;: {
+        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
+        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+      },
+    },
+    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
+      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
+        &quot;A String&quot;,
+      ],
+      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
+    },
+    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If **fileType** is **SQL**, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. If **fileType** is **CSV**, one database must be specified.
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data.
+    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#importContext**.
+    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form **gs://bucketName/fileName**. Compressed gzip files (.gz) are supported when **fileType** is **SQL**. The instance must have write permissions to the bucket and read access to the file.
+  },
+  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operation**.
+  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: **CREATE** **DELETE** **UPDATE** **RESTART** **IMPORT** **EXPORT** **BACKUP_VOLUME** **RESTORE_VOLUME** **CREATE_USER** **DELETE_USER** **CREATE_DATABASE** **DELETE_DATABASE**
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are: **PENDING** **RUNNING** **DONE** **SQL_OPERATION_STATUS_UNSPECIFIED**
+  &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
+  &quot;targetLink&quot;: &quot;A String&quot;,
+  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
+  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="promoteReplica">promoteReplica(project, instance, x__xgafv=None)</code>
+  <pre>Promotes the read replica instance to be a stand-alone Cloud SQL instance. Using this operation might cause your instance to restart.
+
+Args:
+  project: string, ID of the project that contains the read replica. (required)
+  instance: string, Cloud SQL read replica instance name. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
+  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
+    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupContext**.
+  },
+  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
+    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
+      { # Database instance operation error.
+        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+      },
+    ],
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationErrors**.
+  },
+  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
+    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. **MySQL** and **PostgreSQL** instances only.
+      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
+    },
+    &quot;databases&quot;: [ # Databases to be exported. **MySQL instances:** If **fileType** is **SQL** and no database is specified, all databases are exported, except for the **mysql** system database. If **fileType** is **CSV**, you can specify one database, either by using this property or by using the **csvExportOptions.selectQuery** property, which takes precedence over this property. **PostgreSQL instances:** You must specify one database to be exported. If **fileType** is **CSV**, this database must match the one specified in the **csvExportOptions.selectQuery** property. **SQL Server instances:** You must specify one database to be exported, and the **fileType** must be **BAK**.
+      &quot;A String&quot;,
+    ],
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data. **BAK**: The file contains backup data for a SQL Server instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#exportContext**.
+    &quot;offload&quot;: True or False, # Option for export offload.
+    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
+      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
+        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to **1**, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to **2**, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than **1**, --set-gtid-purged is set to OFF.
+      },
+      &quot;schemaOnly&quot;: True or False, # Export only schemas.
+      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form **gs://bucketName/fileName**. If the file already exists, the request succeeds, but the operation fails. If **fileType** is **SQL** and the filename ends with .gz, the contents are compressed.
+  },
+  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
+    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
+      &quot;encryptionOptions&quot;: {
+        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
+        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+      },
+    },
+    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
+      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
+        &quot;A String&quot;,
+      ],
+      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
+    },
+    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If **fileType** is **SQL**, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. If **fileType** is **CSV**, one database must be specified.
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data.
+    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#importContext**.
+    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form **gs://bucketName/fileName**. Compressed gzip files (.gz) are supported when **fileType** is **SQL**. The instance must have write permissions to the bucket and read access to the file.
+  },
+  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operation**.
+  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: **CREATE** **DELETE** **UPDATE** **RESTART** **IMPORT** **EXPORT** **BACKUP_VOLUME** **RESTORE_VOLUME** **CREATE_USER** **DELETE_USER** **CREATE_DATABASE** **DELETE_DATABASE**
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are: **PENDING** **RUNNING** **DONE** **SQL_OPERATION_STATUS_UNSPECIFIED**
+  &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
+  &quot;targetLink&quot;: &quot;A String&quot;,
+  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
+  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="resetSslConfig">resetSslConfig(project, instance, x__xgafv=None)</code>
+  <pre>Deletes all client certificates and generates a new server SSL certificate for the instance.
+
+Args:
+  project: string, Project ID of the project that contains the instance. (required)
+  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
+  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
+    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupContext**.
+  },
+  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
+    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
+      { # Database instance operation error.
+        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+      },
+    ],
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationErrors**.
+  },
+  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
+    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. **MySQL** and **PostgreSQL** instances only.
+      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
+    },
+    &quot;databases&quot;: [ # Databases to be exported. **MySQL instances:** If **fileType** is **SQL** and no database is specified, all databases are exported, except for the **mysql** system database. If **fileType** is **CSV**, you can specify one database, either by using this property or by using the **csvExportOptions.selectQuery** property, which takes precedence over this property. **PostgreSQL instances:** You must specify one database to be exported. If **fileType** is **CSV**, this database must match the one specified in the **csvExportOptions.selectQuery** property. **SQL Server instances:** You must specify one database to be exported, and the **fileType** must be **BAK**.
+      &quot;A String&quot;,
+    ],
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data. **BAK**: The file contains backup data for a SQL Server instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#exportContext**.
+    &quot;offload&quot;: True or False, # Option for export offload.
+    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
+      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
+        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to **1**, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to **2**, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than **1**, --set-gtid-purged is set to OFF.
+      },
+      &quot;schemaOnly&quot;: True or False, # Export only schemas.
+      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form **gs://bucketName/fileName**. If the file already exists, the request succeeds, but the operation fails. If **fileType** is **SQL** and the filename ends with .gz, the contents are compressed.
+  },
+  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
+    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
+      &quot;encryptionOptions&quot;: {
+        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
+        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+      },
+    },
+    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
+      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
+        &quot;A String&quot;,
+      ],
+      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
+    },
+    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If **fileType** is **SQL**, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. If **fileType** is **CSV**, one database must be specified.
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data.
+    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#importContext**.
+    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form **gs://bucketName/fileName**. Compressed gzip files (.gz) are supported when **fileType** is **SQL**. The instance must have write permissions to the bucket and read access to the file.
+  },
+  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operation**.
+  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: **CREATE** **DELETE** **UPDATE** **RESTART** **IMPORT** **EXPORT** **BACKUP_VOLUME** **RESTORE_VOLUME** **CREATE_USER** **DELETE_USER** **CREATE_DATABASE** **DELETE_DATABASE**
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are: **PENDING** **RUNNING** **DONE** **SQL_OPERATION_STATUS_UNSPECIFIED**
+  &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
+  &quot;targetLink&quot;: &quot;A String&quot;,
+  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
+  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="restart">restart(project, instance, x__xgafv=None)</code>
+  <pre>Restarts a Cloud SQL instance.
+
+Args:
+  project: string, Project ID of the project that contains the instance to be restarted. (required)
+  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
+  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
+    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupContext**.
+  },
+  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
+    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
+      { # Database instance operation error.
+        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+      },
+    ],
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationErrors**.
+  },
+  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
+    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. **MySQL** and **PostgreSQL** instances only.
+      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
+    },
+    &quot;databases&quot;: [ # Databases to be exported. **MySQL instances:** If **fileType** is **SQL** and no database is specified, all databases are exported, except for the **mysql** system database. If **fileType** is **CSV**, you can specify one database, either by using this property or by using the **csvExportOptions.selectQuery** property, which takes precedence over this property. **PostgreSQL instances:** You must specify one database to be exported. If **fileType** is **CSV**, this database must match the one specified in the **csvExportOptions.selectQuery** property. **SQL Server instances:** You must specify one database to be exported, and the **fileType** must be **BAK**.
+      &quot;A String&quot;,
+    ],
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data. **BAK**: The file contains backup data for a SQL Server instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#exportContext**.
+    &quot;offload&quot;: True or False, # Option for export offload.
+    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
+      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
+        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to **1**, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to **2**, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than **1**, --set-gtid-purged is set to OFF.
+      },
+      &quot;schemaOnly&quot;: True or False, # Export only schemas.
+      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form **gs://bucketName/fileName**. If the file already exists, the request succeeds, but the operation fails. If **fileType** is **SQL** and the filename ends with .gz, the contents are compressed.
+  },
+  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
+    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
+      &quot;encryptionOptions&quot;: {
+        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
+        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+      },
+    },
+    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
+      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
+        &quot;A String&quot;,
+      ],
+      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
+    },
+    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If **fileType** is **SQL**, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. If **fileType** is **CSV**, one database must be specified.
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data.
+    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#importContext**.
+    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form **gs://bucketName/fileName**. Compressed gzip files (.gz) are supported when **fileType** is **SQL**. The instance must have write permissions to the bucket and read access to the file.
+  },
+  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operation**.
+  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: **CREATE** **DELETE** **UPDATE** **RESTART** **IMPORT** **EXPORT** **BACKUP_VOLUME** **RESTORE_VOLUME** **CREATE_USER** **DELETE_USER** **CREATE_DATABASE** **DELETE_DATABASE**
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are: **PENDING** **RUNNING** **DONE** **SQL_OPERATION_STATUS_UNSPECIFIED**
+  &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
+  &quot;targetLink&quot;: &quot;A String&quot;,
+  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
+  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="restoreBackup">restoreBackup(project, instance, body=None, x__xgafv=None)</code>
+  <pre>Restores a backup of a Cloud SQL instance. Using this operation might cause your instance to restart.
+
+Args:
+  project: string, Project ID of the project that contains the instance. (required)
+  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Database instance restore backup request.
+  &quot;restoreBackupContext&quot;: { # Database instance restore from backup context. Backup context contains source instance id and project id. # Parameters required to perform the restore backup operation.
+    &quot;backupRunId&quot;: &quot;A String&quot;, # The ID of the backup run to restore from.
+    &quot;instanceId&quot;: &quot;A String&quot;, # The ID of the instance that the backup was taken from.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#restoreBackupContext*.
+    &quot;project&quot;: &quot;A String&quot;, # The full project ID of the source instance.
+  },
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
+  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
+    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupContext**.
+  },
+  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
+    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
+      { # Database instance operation error.
+        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+      },
+    ],
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationErrors**.
+  },
+  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
+    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. **MySQL** and **PostgreSQL** instances only.
+      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
+    },
+    &quot;databases&quot;: [ # Databases to be exported. **MySQL instances:** If **fileType** is **SQL** and no database is specified, all databases are exported, except for the **mysql** system database. If **fileType** is **CSV**, you can specify one database, either by using this property or by using the **csvExportOptions.selectQuery** property, which takes precedence over this property. **PostgreSQL instances:** You must specify one database to be exported. If **fileType** is **CSV**, this database must match the one specified in the **csvExportOptions.selectQuery** property. **SQL Server instances:** You must specify one database to be exported, and the **fileType** must be **BAK**.
+      &quot;A String&quot;,
+    ],
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data. **BAK**: The file contains backup data for a SQL Server instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#exportContext**.
+    &quot;offload&quot;: True or False, # Option for export offload.
+    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
+      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
+        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to **1**, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to **2**, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than **1**, --set-gtid-purged is set to OFF.
+      },
+      &quot;schemaOnly&quot;: True or False, # Export only schemas.
+      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form **gs://bucketName/fileName**. If the file already exists, the request succeeds, but the operation fails. If **fileType** is **SQL** and the filename ends with .gz, the contents are compressed.
+  },
+  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
+    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
+      &quot;encryptionOptions&quot;: {
+        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
+        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+      },
+    },
+    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
+      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
+        &quot;A String&quot;,
+      ],
+      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
+    },
+    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If **fileType** is **SQL**, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. If **fileType** is **CSV**, one database must be specified.
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data.
+    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#importContext**.
+    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form **gs://bucketName/fileName**. Compressed gzip files (.gz) are supported when **fileType** is **SQL**. The instance must have write permissions to the bucket and read access to the file.
+  },
+  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operation**.
+  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: **CREATE** **DELETE** **UPDATE** **RESTART** **IMPORT** **EXPORT** **BACKUP_VOLUME** **RESTORE_VOLUME** **CREATE_USER** **DELETE_USER** **CREATE_DATABASE** **DELETE_DATABASE**
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are: **PENDING** **RUNNING** **DONE** **SQL_OPERATION_STATUS_UNSPECIFIED**
+  &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
+  &quot;targetLink&quot;: &quot;A String&quot;,
+  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
+  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="rotateServerCa">rotateServerCa(project, instance, body=None, x__xgafv=None)</code>
+  <pre>Rotates the server certificate to one signed by the Certificate Authority (CA) version previously added with the addServerCA method.
+
+Args:
+  project: string, Project ID of the project that contains the instance. (required)
+  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Rotate server CA request.
+  &quot;rotateServerCaContext&quot;: { # Instance rotate server CA context. # Contains details about the rotate server CA operation.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#rotateServerCaContext*.
+    &quot;nextVersion&quot;: &quot;A String&quot;, # The fingerprint of the next version to be rotated to. If left unspecified, will be rotated to the most recently added server CA version.
+  },
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
+  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
+    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupContext**.
+  },
+  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
+    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
+      { # Database instance operation error.
+        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+      },
+    ],
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationErrors**.
+  },
+  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
+    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. **MySQL** and **PostgreSQL** instances only.
+      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
+    },
+    &quot;databases&quot;: [ # Databases to be exported. **MySQL instances:** If **fileType** is **SQL** and no database is specified, all databases are exported, except for the **mysql** system database. If **fileType** is **CSV**, you can specify one database, either by using this property or by using the **csvExportOptions.selectQuery** property, which takes precedence over this property. **PostgreSQL instances:** You must specify one database to be exported. If **fileType** is **CSV**, this database must match the one specified in the **csvExportOptions.selectQuery** property. **SQL Server instances:** You must specify one database to be exported, and the **fileType** must be **BAK**.
+      &quot;A String&quot;,
+    ],
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data. **BAK**: The file contains backup data for a SQL Server instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#exportContext**.
+    &quot;offload&quot;: True or False, # Option for export offload.
+    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
+      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
+        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to **1**, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to **2**, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than **1**, --set-gtid-purged is set to OFF.
+      },
+      &quot;schemaOnly&quot;: True or False, # Export only schemas.
+      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form **gs://bucketName/fileName**. If the file already exists, the request succeeds, but the operation fails. If **fileType** is **SQL** and the filename ends with .gz, the contents are compressed.
+  },
+  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
+    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
+      &quot;encryptionOptions&quot;: {
+        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
+        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+      },
+    },
+    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
+      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
+        &quot;A String&quot;,
+      ],
+      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
+    },
+    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If **fileType** is **SQL**, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. If **fileType** is **CSV**, one database must be specified.
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data.
+    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#importContext**.
+    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form **gs://bucketName/fileName**. Compressed gzip files (.gz) are supported when **fileType** is **SQL**. The instance must have write permissions to the bucket and read access to the file.
+  },
+  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operation**.
+  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: **CREATE** **DELETE** **UPDATE** **RESTART** **IMPORT** **EXPORT** **BACKUP_VOLUME** **RESTORE_VOLUME** **CREATE_USER** **DELETE_USER** **CREATE_DATABASE** **DELETE_DATABASE**
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are: **PENDING** **RUNNING** **DONE** **SQL_OPERATION_STATUS_UNSPECIFIED**
+  &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
+  &quot;targetLink&quot;: &quot;A String&quot;,
+  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
+  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="startReplica">startReplica(project, instance, x__xgafv=None)</code>
+  <pre>Starts the replication in the read replica instance.
+
+Args:
+  project: string, ID of the project that contains the read replica. (required)
+  instance: string, Cloud SQL read replica instance name. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
+  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
+    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupContext**.
+  },
+  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
+    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
+      { # Database instance operation error.
+        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+      },
+    ],
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationErrors**.
+  },
+  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
+    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. **MySQL** and **PostgreSQL** instances only.
+      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
+    },
+    &quot;databases&quot;: [ # Databases to be exported. **MySQL instances:** If **fileType** is **SQL** and no database is specified, all databases are exported, except for the **mysql** system database. If **fileType** is **CSV**, you can specify one database, either by using this property or by using the **csvExportOptions.selectQuery** property, which takes precedence over this property. **PostgreSQL instances:** You must specify one database to be exported. If **fileType** is **CSV**, this database must match the one specified in the **csvExportOptions.selectQuery** property. **SQL Server instances:** You must specify one database to be exported, and the **fileType** must be **BAK**.
+      &quot;A String&quot;,
+    ],
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data. **BAK**: The file contains backup data for a SQL Server instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#exportContext**.
+    &quot;offload&quot;: True or False, # Option for export offload.
+    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
+      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
+        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to **1**, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to **2**, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than **1**, --set-gtid-purged is set to OFF.
+      },
+      &quot;schemaOnly&quot;: True or False, # Export only schemas.
+      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form **gs://bucketName/fileName**. If the file already exists, the request succeeds, but the operation fails. If **fileType** is **SQL** and the filename ends with .gz, the contents are compressed.
+  },
+  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
+    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
+      &quot;encryptionOptions&quot;: {
+        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
+        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+      },
+    },
+    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
+      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
+        &quot;A String&quot;,
+      ],
+      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
+    },
+    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If **fileType** is **SQL**, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. If **fileType** is **CSV**, one database must be specified.
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data.
+    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#importContext**.
+    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form **gs://bucketName/fileName**. Compressed gzip files (.gz) are supported when **fileType** is **SQL**. The instance must have write permissions to the bucket and read access to the file.
+  },
+  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operation**.
+  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: **CREATE** **DELETE** **UPDATE** **RESTART** **IMPORT** **EXPORT** **BACKUP_VOLUME** **RESTORE_VOLUME** **CREATE_USER** **DELETE_USER** **CREATE_DATABASE** **DELETE_DATABASE**
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are: **PENDING** **RUNNING** **DONE** **SQL_OPERATION_STATUS_UNSPECIFIED**
+  &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
+  &quot;targetLink&quot;: &quot;A String&quot;,
+  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
+  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="stopReplica">stopReplica(project, instance, x__xgafv=None)</code>
+  <pre>Stops the replication in the read replica instance.
+
+Args:
+  project: string, ID of the project that contains the read replica. (required)
+  instance: string, Cloud SQL read replica instance name. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
+  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
+    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupContext**.
+  },
+  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
+    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
+      { # Database instance operation error.
+        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+      },
+    ],
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationErrors**.
+  },
+  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
+    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. **MySQL** and **PostgreSQL** instances only.
+      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
+    },
+    &quot;databases&quot;: [ # Databases to be exported. **MySQL instances:** If **fileType** is **SQL** and no database is specified, all databases are exported, except for the **mysql** system database. If **fileType** is **CSV**, you can specify one database, either by using this property or by using the **csvExportOptions.selectQuery** property, which takes precedence over this property. **PostgreSQL instances:** You must specify one database to be exported. If **fileType** is **CSV**, this database must match the one specified in the **csvExportOptions.selectQuery** property. **SQL Server instances:** You must specify one database to be exported, and the **fileType** must be **BAK**.
+      &quot;A String&quot;,
+    ],
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data. **BAK**: The file contains backup data for a SQL Server instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#exportContext**.
+    &quot;offload&quot;: True or False, # Option for export offload.
+    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
+      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
+        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to **1**, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to **2**, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than **1**, --set-gtid-purged is set to OFF.
+      },
+      &quot;schemaOnly&quot;: True or False, # Export only schemas.
+      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form **gs://bucketName/fileName**. If the file already exists, the request succeeds, but the operation fails. If **fileType** is **SQL** and the filename ends with .gz, the contents are compressed.
+  },
+  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
+    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
+      &quot;encryptionOptions&quot;: {
+        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
+        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+      },
+    },
+    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
+      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
+        &quot;A String&quot;,
+      ],
+      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
+    },
+    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If **fileType** is **SQL**, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. If **fileType** is **CSV**, one database must be specified.
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data.
+    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#importContext**.
+    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form **gs://bucketName/fileName**. Compressed gzip files (.gz) are supported when **fileType** is **SQL**. The instance must have write permissions to the bucket and read access to the file.
+  },
+  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operation**.
+  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: **CREATE** **DELETE** **UPDATE** **RESTART** **IMPORT** **EXPORT** **BACKUP_VOLUME** **RESTORE_VOLUME** **CREATE_USER** **DELETE_USER** **CREATE_DATABASE** **DELETE_DATABASE**
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are: **PENDING** **RUNNING** **DONE** **SQL_OPERATION_STATUS_UNSPECIFIED**
+  &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
+  &quot;targetLink&quot;: &quot;A String&quot;,
+  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
+  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="truncateLog">truncateLog(project, instance, body=None, x__xgafv=None)</code>
+  <pre>Truncate MySQL general and slow query log tables MySQL only.
+
+Args:
+  project: string, Project ID of the Cloud SQL project. (required)
+  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # Instance truncate log request.
+  &quot;truncateLogContext&quot;: { # Database Instance truncate log context. # Contains details about the truncate log operation.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#truncateLogContext*.
+    &quot;logType&quot;: &quot;A String&quot;, # The type of log to truncate. Valid values are *MYSQL_GENERAL_TABLE* and *MYSQL_SLOW_TABLE*.
+  },
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
+  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
+    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupContext**.
+  },
+  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
+    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
+      { # Database instance operation error.
+        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+      },
+    ],
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationErrors**.
+  },
+  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
+    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. **MySQL** and **PostgreSQL** instances only.
+      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
+    },
+    &quot;databases&quot;: [ # Databases to be exported. **MySQL instances:** If **fileType** is **SQL** and no database is specified, all databases are exported, except for the **mysql** system database. If **fileType** is **CSV**, you can specify one database, either by using this property or by using the **csvExportOptions.selectQuery** property, which takes precedence over this property. **PostgreSQL instances:** You must specify one database to be exported. If **fileType** is **CSV**, this database must match the one specified in the **csvExportOptions.selectQuery** property. **SQL Server instances:** You must specify one database to be exported, and the **fileType** must be **BAK**.
+      &quot;A String&quot;,
+    ],
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data. **BAK**: The file contains backup data for a SQL Server instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#exportContext**.
+    &quot;offload&quot;: True or False, # Option for export offload.
+    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
+      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
+        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to **1**, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to **2**, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than **1**, --set-gtid-purged is set to OFF.
+      },
+      &quot;schemaOnly&quot;: True or False, # Export only schemas.
+      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form **gs://bucketName/fileName**. If the file already exists, the request succeeds, but the operation fails. If **fileType** is **SQL** and the filename ends with .gz, the contents are compressed.
+  },
+  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
+    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
+      &quot;encryptionOptions&quot;: {
+        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
+        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+      },
+    },
+    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
+      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
+        &quot;A String&quot;,
+      ],
+      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
+    },
+    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If **fileType** is **SQL**, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. If **fileType** is **CSV**, one database must be specified.
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data.
+    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#importContext**.
+    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form **gs://bucketName/fileName**. Compressed gzip files (.gz) are supported when **fileType** is **SQL**. The instance must have write permissions to the bucket and read access to the file.
+  },
+  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operation**.
+  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: **CREATE** **DELETE** **UPDATE** **RESTART** **IMPORT** **EXPORT** **BACKUP_VOLUME** **RESTORE_VOLUME** **CREATE_USER** **DELETE_USER** **CREATE_DATABASE** **DELETE_DATABASE**
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are: **PENDING** **RUNNING** **DONE** **SQL_OPERATION_STATUS_UNSPECIFIED**
+  &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
+  &quot;targetLink&quot;: &quot;A String&quot;,
+  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
+  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="update">update(project, instance, body=None, x__xgafv=None)</code>
+  <pre>Updates settings of a Cloud SQL instance. Using this operation might cause your instance to restart.
+
+Args:
+  project: string, Project ID of the project that contains the instance. (required)
+  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # A Cloud SQL instance resource.
+  &quot;backendType&quot;: &quot;A String&quot;, #  *SECOND_GEN*: Cloud SQL database instance. *EXTERNAL*: A database server that is not managed by Google. This property is read-only; use the *tier* property in the *settings* object to determine the database type.
+  &quot;connectionName&quot;: &quot;A String&quot;, # Connection name of the Cloud SQL instance used in connection strings.
+  &quot;currentDiskSize&quot;: &quot;A String&quot;, # The current disk usage of the instance in bytes. This property has been deprecated. Use the &quot;cloudsql.googleapis.com/database/disk/bytes_used&quot; metric in Cloud Monitoring API instead. Please see this announcement for details.
+  &quot;databaseVersion&quot;: &quot;A String&quot;, # The database engine type and version. The *databaseVersion* field cannot be changed after instance creation. MySQL instances: *MYSQL_8_0*, *MYSQL_5_7* (default), or *MYSQL_5_6*. PostgreSQL instances: *POSTGRES_9_6*, *POSTGRES_10*, *POSTGRES_11*, *POSTGRES_12*, *POSTGRES_13* (default). SQL Server instances: *SQLSERVER_2019_STANDARD*, *SQLSERVER_2019_ENTERPRISE*, *SQLSERVER_2019_EXPRESS*, or *SQLSERVER_2019_WEB*, *SQLSERVER_2017_STANDARD* (default), *SQLSERVER_2017_ENTERPRISE*, *SQLSERVER_2017_EXPRESS*, or *SQLSERVER_2017_WEB*.
+  &quot;diskEncryptionConfiguration&quot;: { # Disk encryption configuration for an instance. # Disk encryption configuration specific to an instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#diskEncryptionConfiguration**.
+    &quot;kmsKeyName&quot;: &quot;A String&quot;, # Resource name of KMS key for disk encryption
+  },
+  &quot;diskEncryptionStatus&quot;: { # Disk encryption status for an instance. # Disk encryption status specific to an instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#diskEncryptionStatus**.
+    &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # KMS key version used to encrypt the Cloud SQL instance resource
+  },
+  &quot;etag&quot;: &quot;A String&quot;, # This field is deprecated and will be removed from a future version of the API. Use the *settings.settingsVersion* field instead.
+  &quot;failoverReplica&quot;: { # The name and status of the failover replica.
+    &quot;available&quot;: True or False, # The availability status of the failover replica. A false status indicates that the failover replica is out of sync. The primary instance can only failover to the failover replica when the status is true.
+    &quot;name&quot;: &quot;A String&quot;, # The name of the failover replica. If specified at instance creation, a failover replica is created for the instance. The name doesn&#x27;t include the project ID.
+  },
+  &quot;gceZone&quot;: &quot;A String&quot;, # The Compute Engine zone that the instance is currently serving from. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary zone.
+  &quot;instanceType&quot;: &quot;A String&quot;, # The instance type. This can be one of the following. *CLOUD_SQL_INSTANCE*: A Cloud SQL instance that is not replicating from a primary instance. *ON_PREMISES_INSTANCE*: An instance running on the customer&#x27;s premises. *READ_REPLICA_INSTANCE*: A Cloud SQL instance configured as a read-replica.
+  &quot;ipAddresses&quot;: [ # The assigned IP addresses for the instance.
+    { # Database instance IP Mapping.
+      &quot;ipAddress&quot;: &quot;A String&quot;, # The IP address assigned.
+      &quot;timeToRetire&quot;: &quot;A String&quot;, # The due time for this IP to be retired in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**. This field is only available when the IP is scheduled to be retired.
+      &quot;type&quot;: &quot;A String&quot;, # The type of this IP address. A **PRIMARY** address is a public address that can accept incoming connections. A **PRIVATE** address is a private address that can accept incoming connections. An **OUTGOING** address is the source address of connections originating from the instance, if supported.
+    },
+  ],
+  &quot;ipv6Address&quot;: &quot;A String&quot;, # The IPv6 address assigned to the instance. (Deprecated) This property was applicable only to First Generation instances.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#instance*.
+  &quot;masterInstanceName&quot;: &quot;A String&quot;, # The name of the instance which will act as primary in the replication setup.
+  &quot;maxDiskSize&quot;: &quot;A String&quot;, # The maximum disk size of the instance in bytes.
+  &quot;name&quot;: &quot;A String&quot;, # Name of the Cloud SQL instance. This does not include the project ID.
+  &quot;onPremisesConfiguration&quot;: { # On-premises instance configuration. # Configuration specific to on-premises instances.
+    &quot;caCertificate&quot;: &quot;A String&quot;, # PEM representation of the trusted CA&#x27;s x509 certificate.
+    &quot;clientCertificate&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s x509 certificate.
+    &quot;clientKey&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s private key. The corresponsing public key is encoded in the client&#x27;s certificate.
+    &quot;dumpFilePath&quot;: &quot;A String&quot;, # The dump file to create the Cloud SQL replica.
+    &quot;hostPort&quot;: &quot;A String&quot;, # The host and port of the on-premises instance in host:port format
+    &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#onPremisesConfiguration*.
+    &quot;password&quot;: &quot;A String&quot;, # The password for connecting to on-premises instance.
+    &quot;username&quot;: &quot;A String&quot;, # The username for connecting to on-premises instance.
+  },
+  &quot;outOfDiskReport&quot;: { # This message wraps up the information written by out-of-disk detection job. # This field represents the report generated by the proactive database wellness job for OutOfDisk issues. Writers: -- the proactive database wellness job for OOD. Readers: -- the Pantheon frontend -- the proactive database wellness job
+    &quot;sqlMinRecommendedIncreaseSizeGb&quot;: 42, # The minimum recommended increase size in GigaBytes This field is consumed by the frontend Writers: -- the proactive database wellness job for OOD. Readers: -- the Pantheon frontend
+    &quot;sqlOutOfDiskState&quot;: &quot;A String&quot;, # This field represents the state generated by the proactive database wellness job for OutOfDisk issues. Writers: -- the proactive database wellness job for OOD. Readers: -- the Pantheon frontend -- the proactive database wellness job
+  },
+  &quot;project&quot;: &quot;A String&quot;, # The project ID of the project containing the Cloud SQL instance. The Google apps domain is prefixed if applicable.
+  &quot;region&quot;: &quot;A String&quot;, # The geographical region. Can be *us-central* (*FIRST_GEN* instances only) *us-central1* (*SECOND_GEN* instances only) *asia-east1* or *europe-west1*. Defaults to *us-central* or *us-central1* depending on the instance type. The region cannot be changed after instance creation.
+  &quot;replicaConfiguration&quot;: { # Read-replica configuration for connecting to the primary instance. # Configuration specific to failover replicas and read replicas.
+    &quot;failoverTarget&quot;: True or False, # Specifies if the replica is the failover target. If the field is set to *true* the replica will be designated as a failover replica. In case the primary instance fails, the replica instance will be promoted as the new primary instance. Only one replica can be specified as failover target, and the replica has to be in different zone with the primary instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#replicaConfiguration*.
+    &quot;mysqlReplicaConfiguration&quot;: { # Read-replica configuration specific to MySQL databases. # MySQL specific configuration when replicating from a MySQL on-premises primary instance. Replication configuration information such as the username, password, certificates, and keys are not stored in the instance metadata.The configuration information is used only to set up the replication connection and is stored by MySQL in a file named *master.info* in the data directory.
+      &quot;caCertificate&quot;: &quot;A String&quot;, # PEM representation of the trusted CA&#x27;s x509 certificate.
+      &quot;clientCertificate&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s x509 certificate.
+      &quot;clientKey&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s private key. The corresponsing public key is encoded in the client&#x27;s certificate.
+      &quot;connectRetryInterval&quot;: 42, # Seconds to wait between connect retries. MySQL&#x27;s default is 60 seconds.
+      &quot;dumpFilePath&quot;: &quot;A String&quot;, # Path to a SQL dump file in Google Cloud Storage from which the replica instance is to be created. The URI is in the form gs://bucketName/fileName. Compressed gzip files (.gz) are also supported. Dumps have the binlog co-ordinates from which replication begins. This can be accomplished by setting --master-data to 1 when using mysqldump.
+      &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#mysqlReplicaConfiguration**.
+      &quot;masterHeartbeatPeriod&quot;: &quot;A String&quot;, # Interval in milliseconds between replication heartbeats.
+      &quot;password&quot;: &quot;A String&quot;, # The password for the replication connection.
+      &quot;sslCipher&quot;: &quot;A String&quot;, # A list of permissible ciphers to use for SSL encryption.
+      &quot;username&quot;: &quot;A String&quot;, # The username for the replication connection.
+      &quot;verifyServerCertificate&quot;: True or False, # Whether or not to check the primary instance&#x27;s Common Name value in the certificate that it sends during the SSL handshake.
+    },
+  },
+  &quot;replicaNames&quot;: [ # The replicas of the instance.
+    &quot;A String&quot;,
+  ],
+  &quot;rootPassword&quot;: &quot;A String&quot;, # Initial root password. Use only on creation.
+  &quot;satisfiesPzs&quot;: True or False, # The status indicating if instance satisfiesPzs. Reserved for future use.
+  &quot;scheduledMaintenance&quot;: { # Any scheduled maintenancce for this instance. # The start time of any upcoming scheduled maintenance for this instance.
+    &quot;canDefer&quot;: True or False,
+    &quot;canReschedule&quot;: True or False, # If the scheduled maintenance can be rescheduled.
+    &quot;scheduleDeadlineTime&quot;: &quot;A String&quot;, # Maintenance cannot be rescheduled to start beyond this deadline.
+    &quot;startTime&quot;: &quot;A String&quot;, # The start time of any upcoming scheduled maintenance for this instance.
+  },
+  &quot;secondaryGceZone&quot;: &quot;A String&quot;, # The Compute Engine zone that the failover instance is currently serving from for a regional instance. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary/failover zone. Reserved for future use.
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;serverCaCert&quot;: { # SslCerts Resource # SSL configuration.
+    &quot;cert&quot;: &quot;A String&quot;, # PEM representation.
+    &quot;certSerialNumber&quot;: &quot;A String&quot;, # Serial number, as extracted from the certificate.
+    &quot;commonName&quot;: &quot;A String&quot;, # User supplied name. Constrained to [a-zA-Z.-_ ]+.
+    &quot;createTime&quot;: &quot;A String&quot;, # The time when the certificate was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**
+    &quot;expirationTime&quot;: &quot;A String&quot;, # The time when the certificate expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+    &quot;instance&quot;: &quot;A String&quot;, # Name of the database instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always sql#sslCert.
+    &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+    &quot;sha1Fingerprint&quot;: &quot;A String&quot;, # Sha1 Fingerprint.
+  },
+  &quot;serviceAccountEmailAddress&quot;: &quot;A String&quot;, # The service account email address assigned to the instance. This property is read-only.
+  &quot;settings&quot;: { # Database instance settings. # The user settings.
+    &quot;activationPolicy&quot;: &quot;A String&quot;, # The activation policy specifies when the instance is activated; it is applicable only when the instance state is RUNNABLE. Valid values: **ALWAYS**: The instance is on, and remains so even in the absence of connection requests. **NEVER**: The instance is off; it is not activated, even if a connection request arrives.
+    &quot;activeDirectoryConfig&quot;: { # Active Directory configuration, relevant only for Cloud SQL for SQL Server. # Active Directory configuration, relevant only for Cloud SQL for SQL Server.
+      &quot;domain&quot;: &quot;A String&quot;, # The name of the domain (e.g., mydomain.com).
+      &quot;kind&quot;: &quot;A String&quot;, # This is always sql#activeDirectoryConfig.
+    },
+    &quot;authorizedGaeApplications&quot;: [ # The App Engine app IDs that can access this instance. (Deprecated) Applied to First Generation instances only.
+      &quot;A String&quot;,
+    ],
+    &quot;availabilityType&quot;: &quot;A String&quot;, # Availability type. Potential values: **ZONAL**: The instance serves data from only one zone. Outages in that zone affect data accessibility. **REGIONAL**: The instance can serve data from more than one zone in a region (it is highly available). For more information, see [Overview of the High Availability Configuration](https://cloud.google.com/sql/docs/mysql/high-availability).
+    &quot;backupConfiguration&quot;: { # Database instance backup configuration. # The daily backup configuration for the instance.
+      &quot;backupRetentionSettings&quot;: { # We currently only support backup retention by specifying the number of backups we will retain. # Backup retention settings.
+        &quot;retainedBackups&quot;: 42, # Depending on the value of retention_unit, this is used to determine if a backup needs to be deleted. If retention_unit is &#x27;COUNT&#x27;, we will retain this many backups.
+        &quot;retentionUnit&quot;: &quot;A String&quot;, # The unit that &#x27;retained_backups&#x27; represents.
+      },
+      &quot;binaryLogEnabled&quot;: True or False, # (MySQL only) Whether binary log is enabled. If backup configuration is disabled, binarylog must be disabled as well.
+      &quot;enabled&quot;: True or False, # Whether this configuration is enabled.
+      &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupConfiguration**.
+      &quot;location&quot;: &quot;A String&quot;, # Location of the backup
+      &quot;pointInTimeRecoveryEnabled&quot;: True or False, # (Postgres only) Whether point in time recovery is enabled.
+      &quot;replicationLogArchivingEnabled&quot;: True or False, # Reserved for future use.
+      &quot;startTime&quot;: &quot;A String&quot;, # Start time for the daily backup configuration in UTC timezone in the 24 hour format - **HH:MM**.
+      &quot;transactionLogRetentionDays&quot;: 42, # The number of days of transaction logs we retain for point in time restore, from 1-7.
+    },
+    &quot;collation&quot;: &quot;A String&quot;, # The name of server Instance collation.
+    &quot;crashSafeReplicationEnabled&quot;: True or False, # Configuration specific to read replica instances. Indicates whether database flags for crash-safe replication are enabled. This property was only applicable to First Generation instances.
+    &quot;dataDiskSizeGb&quot;: &quot;A String&quot;, # The size of data disk, in GB. The data disk size minimum is 10GB.
+    &quot;dataDiskType&quot;: &quot;A String&quot;, # The type of data disk: **PD_SSD** (default) or **PD_HDD**.
+    &quot;databaseFlags&quot;: [ # The database flags passed to the instance at startup.
+      { # Database flags for Cloud SQL instances.
+        &quot;name&quot;: &quot;A String&quot;, # The name of the flag. These flags are passed at instance startup, so include both server options and system variables. Flags are specified with underscores, not hyphens. For more information, see [Configuring Database Flags](https://cloud.google.com/sql/docs/mysql/flags) in the Cloud SQL documentation.
+        &quot;value&quot;: &quot;A String&quot;, # The value of the flag. Booleans are set to **on** for true and **off** for false. This field must be omitted if the flag doesn&#x27;t take a value.
+      },
+    ],
+    &quot;databaseReplicationEnabled&quot;: True or False, # Configuration specific to read replica instances. Indicates whether replication is enabled or not.
+    &quot;denyMaintenancePeriods&quot;: [ # Deny maintenance periods
+      { # Deny maintenance Periods. This specifies a date range during when all CSA rollout will be denied.
+        &quot;endDate&quot;: &quot;A String&quot;, # &quot;deny maintenance period&quot; end date. If the year of the end date is empty, the year of the start date also must be empty. In this case, it means the no maintenance interval recurs every year. The date is in format yyyy-mm-dd i.e., 2020-11-01, or mm-dd, i.e., 11-01
+        &quot;startDate&quot;: &quot;A String&quot;, # &quot;deny maintenance period&quot; start date. If the year of the start date is empty, the year of the end date also must be empty. In this case, it means the no maintenance interval recurs every year. The date is in format yyyy-mm-dd i.e., 2020-11-01, or mm-dd, i.e., 11-01
+        &quot;time&quot;: &quot;A String&quot;, # Time in UTC when the &quot;deny maintenance period&quot; starts on start_date and ends on end_date. The time is in format: HH:mm:SS, i.e., 00:00:00
+      },
+    ],
+    &quot;insightsConfig&quot;: { # Insights configuration. This specifies when Cloud SQL Insights feature is enabled and optional configuration. # Insights configuration, for now relevant only for Postgres.
+      &quot;queryInsightsEnabled&quot;: True or False, # Whether Query Insights feature is enabled.
+      &quot;queryPlansPerMinute&quot;: 42, # Number of query execution plans captured by Insights per minute for all queries combined. Default is 5.
+      &quot;queryStringLength&quot;: 42, # Maximum query length stored in bytes. Default value: 1024 bytes. Range: 256-4500 bytes. Query length more than this field value will be truncated to this value. When unset, query length will be the default value. Changing query length will restart the database.
+      &quot;recordApplicationTags&quot;: True or False, # Whether Query Insights will record application tags from query when enabled.
+      &quot;recordClientAddress&quot;: True or False, # Whether Query Insights will record client address when enabled.
+    },
+    &quot;ipConfiguration&quot;: { # IP Management configuration. # The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled for Second Generation instances.
+      &quot;authorizedNetworks&quot;: [ # The list of external networks that are allowed to connect to the instance using the IP. In &#x27;CIDR&#x27; notation, also known as &#x27;slash&#x27; notation (for example: **192.168.100.0/24**).
+        { # An entry for an Access Control list.
+          &quot;expirationTime&quot;: &quot;A String&quot;, # The time when this access control entry expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+          &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#aclEntry**.
+          &quot;name&quot;: &quot;A String&quot;, # Optional. A label to identify this entry.
+          &quot;value&quot;: &quot;A String&quot;, # The allowlisted value for the access control list.
+        },
+      ],
+      &quot;ipv4Enabled&quot;: True or False, # Whether the instance is assigned a public IP address or not.
+      &quot;privateNetwork&quot;: &quot;A String&quot;, # The resource link for the VPC network from which the Cloud SQL instance is accessible for private IP. For example, **/projects/myProject/global/networks/default**. This setting can be updated, but it cannot be removed after it is set.
+      &quot;requireSsl&quot;: True or False, # Whether SSL connections over IP are enforced or not.
+    },
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#settings**.
+    &quot;locationPreference&quot;: { # Preferred location. This specifies where a Cloud SQL instance is located. Note that if the preferred location is not available, the instance will be located as close as possible within the region. Only one location may be specified. # The location preference settings. This allows the instance to be located as near as possible to Compute Engine zone for better performance.
+      &quot;followGaeApplication&quot;: &quot;A String&quot;, # The App Engine application to follow, it must be in the same region as the Cloud SQL instance.
+      &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#locationPreference**.
+      &quot;secondaryZone&quot;: &quot;A String&quot;, # The preferred Compute Engine zone for the secondary/failover (for example: us-central1-a, us-central1-b, etc.). Reserved for future use.
+      &quot;zone&quot;: &quot;A String&quot;, # The preferred Compute Engine zone (for example: us-central1-a, us-central1-b, etc.).
+    },
+    &quot;maintenanceWindow&quot;: { # Maintenance window. This specifies when a Cloud SQL instance is restarted for system maintenance purposes. # The maintenance window for this instance. This specifies when the instance can be restarted for maintenance purposes.
+      &quot;day&quot;: 42, # day of week (1-7), starting on Monday.
+      &quot;hour&quot;: 42, # hour of day - 0 to 23.
+      &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#maintenanceWindow**.
+      &quot;updateTrack&quot;: &quot;A String&quot;, # Maintenance timing setting: **canary** (Earlier) or **stable** (Later). [Learn more] (https://cloud.google.com/sql/docs/mysql/instance-settings#maintenance-timing-2ndgen).
+    },
+    &quot;pricingPlan&quot;: &quot;A String&quot;, # The pricing plan for this instance. This can be either **PER_USE** or **PACKAGE**. Only **PER_USE** is supported for Second Generation instances.
+    &quot;replicationType&quot;: &quot;A String&quot;, # The type of replication this instance uses. This can be either **ASYNCHRONOUS** or **SYNCHRONOUS**. (Deprecated) This property was only applicable to First Generation instances.
+    &quot;settingsVersion&quot;: &quot;A String&quot;, # The version of instance settings. This is a required field for update method to make sure concurrent updates are handled properly. During update, use the most recent settingsVersion value for this instance and do not try to update this value.
+    &quot;storageAutoResize&quot;: True or False, # Configuration to increase storage size automatically. The default value is true.
+    &quot;storageAutoResizeLimit&quot;: &quot;A String&quot;, # The maximum size to which storage capacity can be automatically increased. The default value is 0, which specifies that there is no limit.
+    &quot;tier&quot;: &quot;A String&quot;, # The tier (or machine type) for this instance, for example **db-custom-1-3840**.
+    &quot;userLabels&quot;: { # User-provided labels, represented as a dictionary where each label is a single key value pair.
+      &quot;a_key&quot;: &quot;A String&quot;,
+    },
+  },
+  &quot;state&quot;: &quot;A String&quot;, # The current serving state of the Cloud SQL instance. This can be one of the following. *SQL_INSTANCE_STATE_UNSPECIFIED*: The state of the instance is unknown. *RUNNABLE*: The instance is running, or has been stopped by owner. *SUSPENDED*: The instance is not available, for example due to problems with billing. *PENDING_DELETE*: The instance is being deleted. *PENDING_CREATE*: The instance is being created. *MAINTENANCE*: The instance is down for maintenance. *FAILED*: The instance creation failed.
+  &quot;suspensionReason&quot;: [ # If the instance state is SUSPENDED, the reason for the suspension.
+    &quot;A String&quot;,
+  ],
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
+  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
+    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupContext**.
+  },
+  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
+    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
+      { # Database instance operation error.
+        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+      },
+    ],
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationErrors**.
+  },
+  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
+    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. **MySQL** and **PostgreSQL** instances only.
+      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
+    },
+    &quot;databases&quot;: [ # Databases to be exported. **MySQL instances:** If **fileType** is **SQL** and no database is specified, all databases are exported, except for the **mysql** system database. If **fileType** is **CSV**, you can specify one database, either by using this property or by using the **csvExportOptions.selectQuery** property, which takes precedence over this property. **PostgreSQL instances:** You must specify one database to be exported. If **fileType** is **CSV**, this database must match the one specified in the **csvExportOptions.selectQuery** property. **SQL Server instances:** You must specify one database to be exported, and the **fileType** must be **BAK**.
+      &quot;A String&quot;,
+    ],
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data. **BAK**: The file contains backup data for a SQL Server instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#exportContext**.
+    &quot;offload&quot;: True or False, # Option for export offload.
+    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
+      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
+        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to **1**, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to **2**, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than **1**, --set-gtid-purged is set to OFF.
+      },
+      &quot;schemaOnly&quot;: True or False, # Export only schemas.
+      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form **gs://bucketName/fileName**. If the file already exists, the request succeeds, but the operation fails. If **fileType** is **SQL** and the filename ends with .gz, the contents are compressed.
+  },
+  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
+    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
+      &quot;encryptionOptions&quot;: {
+        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
+        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+      },
+    },
+    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
+      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
+        &quot;A String&quot;,
+      ],
+      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
+    },
+    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If **fileType** is **SQL**, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. If **fileType** is **CSV**, one database must be specified.
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data.
+    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#importContext**.
+    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form **gs://bucketName/fileName**. Compressed gzip files (.gz) are supported when **fileType** is **SQL**. The instance must have write permissions to the bucket and read access to the file.
+  },
+  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operation**.
+  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: **CREATE** **DELETE** **UPDATE** **RESTART** **IMPORT** **EXPORT** **BACKUP_VOLUME** **RESTORE_VOLUME** **CREATE_USER** **DELETE_USER** **CREATE_DATABASE** **DELETE_DATABASE**
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are: **PENDING** **RUNNING** **DONE** **SQL_OPERATION_STATUS_UNSPECIFIED**
+  &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
+  &quot;targetLink&quot;: &quot;A String&quot;,
+  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
+  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
+}</pre>
+</div>
+
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/sqladmin_v1.operations.html b/docs/dyn/sqladmin_v1.operations.html
new file mode 100644
index 0000000..291c896
--- /dev/null
+++ b/docs/dyn/sqladmin_v1.operations.html
@@ -0,0 +1,289 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="sqladmin_v1.html">Cloud SQL Admin API</a> . <a href="sqladmin_v1.operations.html">operations</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#close">close()</a></code></p>
+<p class="firstline">Close httplib2 connections.</p>
+<p class="toc_element">
+  <code><a href="#get">get(project, operation, x__xgafv=None)</a></code></p>
+<p class="firstline">Retrieves an instance operation that has been performed on an instance.</p>
+<p class="toc_element">
+  <code><a href="#list">list(project, instance=None, maxResults=None, pageToken=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Lists all instance operations that have been performed on the given Cloud SQL instance in the reverse chronological order of the start time.</p>
+<p class="toc_element">
+  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
+<p class="firstline">Retrieves the next page of results.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="close">close()</code>
+  <pre>Close httplib2 connections.</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(project, operation, x__xgafv=None)</code>
+  <pre>Retrieves an instance operation that has been performed on an instance.
+
+Args:
+  project: string, Project ID of the project that contains the instance. (required)
+  operation: string, Instance operation ID. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
+  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
+    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupContext**.
+  },
+  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
+    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
+      { # Database instance operation error.
+        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+      },
+    ],
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationErrors**.
+  },
+  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
+    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. **MySQL** and **PostgreSQL** instances only.
+      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
+    },
+    &quot;databases&quot;: [ # Databases to be exported. **MySQL instances:** If **fileType** is **SQL** and no database is specified, all databases are exported, except for the **mysql** system database. If **fileType** is **CSV**, you can specify one database, either by using this property or by using the **csvExportOptions.selectQuery** property, which takes precedence over this property. **PostgreSQL instances:** You must specify one database to be exported. If **fileType** is **CSV**, this database must match the one specified in the **csvExportOptions.selectQuery** property. **SQL Server instances:** You must specify one database to be exported, and the **fileType** must be **BAK**.
+      &quot;A String&quot;,
+    ],
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data. **BAK**: The file contains backup data for a SQL Server instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#exportContext**.
+    &quot;offload&quot;: True or False, # Option for export offload.
+    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
+      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
+        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to **1**, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to **2**, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than **1**, --set-gtid-purged is set to OFF.
+      },
+      &quot;schemaOnly&quot;: True or False, # Export only schemas.
+      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form **gs://bucketName/fileName**. If the file already exists, the request succeeds, but the operation fails. If **fileType** is **SQL** and the filename ends with .gz, the contents are compressed.
+  },
+  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
+    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
+      &quot;encryptionOptions&quot;: {
+        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
+        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+      },
+    },
+    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
+      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
+        &quot;A String&quot;,
+      ],
+      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
+    },
+    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If **fileType** is **SQL**, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. If **fileType** is **CSV**, one database must be specified.
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data.
+    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#importContext**.
+    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form **gs://bucketName/fileName**. Compressed gzip files (.gz) are supported when **fileType** is **SQL**. The instance must have write permissions to the bucket and read access to the file.
+  },
+  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operation**.
+  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: **CREATE** **DELETE** **UPDATE** **RESTART** **IMPORT** **EXPORT** **BACKUP_VOLUME** **RESTORE_VOLUME** **CREATE_USER** **DELETE_USER** **CREATE_DATABASE** **DELETE_DATABASE**
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are: **PENDING** **RUNNING** **DONE** **SQL_OPERATION_STATUS_UNSPECIFIED**
+  &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
+  &quot;targetLink&quot;: &quot;A String&quot;,
+  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
+  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(project, instance=None, maxResults=None, pageToken=None, x__xgafv=None)</code>
+  <pre>Lists all instance operations that have been performed on the given Cloud SQL instance in the reverse chronological order of the start time.
+
+Args:
+  project: string, Project ID of the project that contains the instance. (required)
+  instance: string, Cloud SQL instance ID. This does not include the project ID.
+  maxResults: integer, Maximum number of operations per response.
+  pageToken: string, A previously-returned page token representing part of the larger set of results to view.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Operations list response.
+  &quot;items&quot;: [ # List of operation resources.
+    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
+      &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
+        &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupContext**.
+      },
+      &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+      &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
+        &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
+          { # Database instance operation error.
+            &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+            &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+            &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+          },
+        ],
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationErrors**.
+      },
+      &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
+        &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. **MySQL** and **PostgreSQL** instances only.
+          &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
+        },
+        &quot;databases&quot;: [ # Databases to be exported. **MySQL instances:** If **fileType** is **SQL** and no database is specified, all databases are exported, except for the **mysql** system database. If **fileType** is **CSV**, you can specify one database, either by using this property or by using the **csvExportOptions.selectQuery** property, which takes precedence over this property. **PostgreSQL instances:** You must specify one database to be exported. If **fileType** is **CSV**, this database must match the one specified in the **csvExportOptions.selectQuery** property. **SQL Server instances:** You must specify one database to be exported, and the **fileType** must be **BAK**.
+          &quot;A String&quot;,
+        ],
+        &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data. **BAK**: The file contains backup data for a SQL Server instance.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#exportContext**.
+        &quot;offload&quot;: True or False, # Option for export offload.
+        &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
+          &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
+            &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to **1**, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to **2**, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than **1**, --set-gtid-purged is set to OFF.
+          },
+          &quot;schemaOnly&quot;: True or False, # Export only schemas.
+          &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
+            &quot;A String&quot;,
+          ],
+        },
+        &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form **gs://bucketName/fileName**. If the file already exists, the request succeeds, but the operation fails. If **fileType** is **SQL** and the filename ends with .gz, the contents are compressed.
+      },
+      &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
+        &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
+          &quot;encryptionOptions&quot;: {
+            &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+            &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
+            &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+          },
+        },
+        &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
+          &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
+            &quot;A String&quot;,
+          ],
+          &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
+        },
+        &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If **fileType** is **SQL**, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. If **fileType** is **CSV**, one database must be specified.
+        &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data.
+        &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#importContext**.
+        &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form **gs://bucketName/fileName**. Compressed gzip files (.gz) are supported when **fileType** is **SQL**. The instance must have write permissions to the bucket and read access to the file.
+      },
+      &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+      &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operation**.
+      &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+      &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: **CREATE** **DELETE** **UPDATE** **RESTART** **IMPORT** **EXPORT** **BACKUP_VOLUME** **RESTORE_VOLUME** **CREATE_USER** **DELETE_USER** **CREATE_DATABASE** **DELETE_DATABASE**
+      &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+      &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+      &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are: **PENDING** **RUNNING** **DONE** **SQL_OPERATION_STATUS_UNSPECIFIED**
+      &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
+      &quot;targetLink&quot;: &quot;A String&quot;,
+      &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
+      &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
+    },
+  ],
+  &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#operationsList*.
+  &quot;nextPageToken&quot;: &quot;A String&quot;, # The continuation token, used to page through large result sets. Provide this value in a subsequent request to return the next page of results.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
+  <pre>Retrieves the next page of results.
+
+Args:
+  previous_request: The request for the previous page. (required)
+  previous_response: The response from the request for the previous page. (required)
+
+Returns:
+  A request object that you can call &#x27;execute()&#x27; on to request the next
+  page. Returns None if there are no more items in the collection.
+    </pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/sqladmin_v1.projects.instances.html b/docs/dyn/sqladmin_v1.projects.instances.html
index f0c21d3..e84b557 100644
--- a/docs/dyn/sqladmin_v1.projects.instances.html
+++ b/docs/dyn/sqladmin_v1.projects.instances.html
@@ -75,22 +75,17 @@
 <h1><a href="sqladmin_v1.html">Cloud SQL Admin API</a> . <a href="sqladmin_v1.projects.html">projects</a> . <a href="sqladmin_v1.projects.instances.html">instances</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="sqladmin_v1.projects.instances.createEphemeral.html">createEphemeral()</a></code>
-</p>
-<p class="firstline">Returns the createEphemeral Resource.</p>
-
-<p class="toc_element">
   <code><a href="#close">close()</a></code></p>
 <p class="firstline">Close httplib2 connections.</p>
 <p class="toc_element">
-  <code><a href="#generateEphemeralCert">generateEphemeralCert(project, instance, body=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Generates a short-lived X509 certificate containing the provided public key and signed by a private key specific to the target instance. Users may use the certificate to authenticate as themselves when connecting to the database.</p>
+  <code><a href="#rescheduleMaintenance">rescheduleMaintenance(project, instance, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Reschedules the maintenance on the given instance.</p>
 <p class="toc_element">
-  <code><a href="#get">get(project, instance, x__xgafv=None)</a></code></p>
-<p class="firstline">Retrieves a resource containing information about a Cloud SQL instance.</p>
+  <code><a href="#startExternalSync">startExternalSync(project, instance, skipVerification=None, syncMode=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Start External primary instance migration.</p>
 <p class="toc_element">
-  <code><a href="#getConnectSettings">getConnectSettings(project, instance, readTime=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Retrieves connect settings about a Cloud SQL instance.</p>
+  <code><a href="#verifyExternalSyncSettings">verifyExternalSyncSettings(project, instance, syncMode=None, verifyConnectionOnly=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Verify External primary instance external sync settings.</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="close">close()</code>
@@ -98,19 +93,20 @@
 </div>
 
 <div class="method">
-    <code class="details" id="generateEphemeralCert">generateEphemeralCert(project, instance, body=None, x__xgafv=None)</code>
-  <pre>Generates a short-lived X509 certificate containing the provided public key and signed by a private key specific to the target instance. Users may use the certificate to authenticate as themselves when connecting to the database.
+    <code class="details" id="rescheduleMaintenance">rescheduleMaintenance(project, instance, body=None, x__xgafv=None)</code>
+  <pre>Reschedules the maintenance on the given instance.
 
 Args:
-  project: string, Project ID of the project that contains the instance. (required)
+  project: string, ID of the project that contains the instance. (required)
   instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
   body: object, The request body.
     The object takes the form of:
 
-{ # Ephemeral certificate creation request.
-  &quot;access_token&quot;: &quot;A String&quot;, # Optional. Access token to include in the signed certificate.
-  &quot;public_key&quot;: &quot;A String&quot;, # PEM encoded public key to include in the signed certificate.
-  &quot;readTime&quot;: &quot;A String&quot;, # Optional. Optional snapshot read timestamp to trade freshness for performance.
+{ # Reschedule options for maintenance windows.
+  &quot;reschedule&quot;: { # Required. The type of the reschedule the user wants.
+    &quot;rescheduleType&quot;: &quot;A String&quot;, # Required. The type of the reschedule.
+    &quot;scheduleTime&quot;: &quot;A String&quot;, # Optional. Timestamp when the maintenance shall be rescheduled to if reschedule_type=SPECIFIC_TIME, in RFC 3339 format, for example *2012-11-15T16:19:00.094Z*.
+  },
 }
 
   x__xgafv: string, V1 error format.
@@ -121,27 +117,90 @@
 Returns:
   An object of the form:
 
-    { # Ephemeral certificate creation request.
-  &quot;ephemeralCert&quot;: { # SslCerts Resource # Generated cert
-    &quot;cert&quot;: &quot;A String&quot;, # PEM representation.
-    &quot;certSerialNumber&quot;: &quot;A String&quot;, # Serial number, as extracted from the certificate.
-    &quot;commonName&quot;: &quot;A String&quot;, # User supplied name. Constrained to [a-zA-Z.-_ ]+.
-    &quot;createTime&quot;: &quot;A String&quot;, # The time when the certificate was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**
-    &quot;expirationTime&quot;: &quot;A String&quot;, # The time when the certificate expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
-    &quot;instance&quot;: &quot;A String&quot;, # Name of the database instance.
-    &quot;kind&quot;: &quot;A String&quot;, # This is always sql#sslCert.
-    &quot;sha1Fingerprint&quot;: &quot;A String&quot;, # Sha1 Fingerprint.
+    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
+  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
+    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupContext**.
   },
+  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
+    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
+      { # Database instance operation error.
+        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+      },
+    ],
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationErrors**.
+  },
+  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
+    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. **MySQL** and **PostgreSQL** instances only.
+      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
+    },
+    &quot;databases&quot;: [ # Databases to be exported. **MySQL instances:** If **fileType** is **SQL** and no database is specified, all databases are exported, except for the **mysql** system database. If **fileType** is **CSV**, you can specify one database, either by using this property or by using the **csvExportOptions.selectQuery** property, which takes precedence over this property. **PostgreSQL instances:** You must specify one database to be exported. If **fileType** is **CSV**, this database must match the one specified in the **csvExportOptions.selectQuery** property. **SQL Server instances:** You must specify one database to be exported, and the **fileType** must be **BAK**.
+      &quot;A String&quot;,
+    ],
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data. **BAK**: The file contains backup data for a SQL Server instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#exportContext**.
+    &quot;offload&quot;: True or False, # Option for export offload.
+    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
+      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
+        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to **1**, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to **2**, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than **1**, --set-gtid-purged is set to OFF.
+      },
+      &quot;schemaOnly&quot;: True or False, # Export only schemas.
+      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form **gs://bucketName/fileName**. If the file already exists, the request succeeds, but the operation fails. If **fileType** is **SQL** and the filename ends with .gz, the contents are compressed.
+  },
+  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
+    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
+      &quot;encryptionOptions&quot;: {
+        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
+        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+      },
+    },
+    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
+      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
+        &quot;A String&quot;,
+      ],
+      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
+    },
+    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If **fileType** is **SQL**, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. If **fileType** is **CSV**, one database must be specified.
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data.
+    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#importContext**.
+    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form **gs://bucketName/fileName**. Compressed gzip files (.gz) are supported when **fileType** is **SQL**. The instance must have write permissions to the bucket and read access to the file.
+  },
+  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operation**.
+  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: **CREATE** **DELETE** **UPDATE** **RESTART** **IMPORT** **EXPORT** **BACKUP_VOLUME** **RESTORE_VOLUME** **CREATE_USER** **DELETE_USER** **CREATE_DATABASE** **DELETE_DATABASE**
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are: **PENDING** **RUNNING** **DONE** **SQL_OPERATION_STATUS_UNSPECIFIED**
+  &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
+  &quot;targetLink&quot;: &quot;A String&quot;,
+  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
+  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
 }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="get">get(project, instance, x__xgafv=None)</code>
-  <pre>Retrieves a resource containing information about a Cloud SQL instance.
+    <code class="details" id="startExternalSync">startExternalSync(project, instance, skipVerification=None, syncMode=None, x__xgafv=None)</code>
+  <pre>Start External primary instance migration.
 
 Args:
-  project: string, Project ID of the project that contains the instance. (required)
-  instance: string, Database instance ID. This does not include the project ID. (required)
+  project: string, ID of the project that contains the instance. (required)
+  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
+  skipVerification: boolean, Whether to skip the verification step (VESS).
+  syncMode: string, External sync mode.
+    Allowed values
+      EXTERNAL_SYNC_MODE_UNSPECIFIED - Unknown external sync mode, will be defaulted to ONLINE mode
+      ONLINE - Online external sync will set up replication after initial data external sync
+      OFFLINE - Offline external sync only dumps and loads a one-time snapshot of the primary instance&#x27;s data
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -150,208 +209,90 @@
 Returns:
   An object of the form:
 
-    { # A Cloud SQL instance resource.
-  &quot;backendType&quot;: &quot;A String&quot;, #  *SECOND_GEN*: Cloud SQL database instance. *EXTERNAL*: A database server that is not managed by Google. This property is read-only; use the *tier* property in the *settings* object to determine the database type.
-  &quot;connectionName&quot;: &quot;A String&quot;, # Connection name of the Cloud SQL instance used in connection strings.
-  &quot;currentDiskSize&quot;: &quot;A String&quot;, # The current disk usage of the instance in bytes. This property has been deprecated. Use the &quot;cloudsql.googleapis.com/database/disk/bytes_used&quot; metric in Cloud Monitoring API instead. Please see this announcement for details.
-  &quot;databaseVersion&quot;: &quot;A String&quot;, # The database engine type and version. The *databaseVersion* field cannot be changed after instance creation. MySQL instances: *MYSQL_8_0*, *MYSQL_5_7* (default), or *MYSQL_5_6*. PostgreSQL instances: *POSTGRES_9_6*, *POSTGRES_10*, *POSTGRES_11*, *POSTGRES_12*, or *POSTGRES_13* (default). SQL Server instances: *SQLSERVER_2017_STANDARD* (default), *SQLSERVER_2017_ENTERPRISE*, *SQLSERVER_2017_EXPRESS*, or *SQLSERVER_2017_WEB*.
-  &quot;diskEncryptionConfiguration&quot;: { # Disk encryption configuration for an instance. # Disk encryption configuration specific to an instance. Applies only to Second Generation instances.
-    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#diskEncryptionConfiguration**.
-    &quot;kmsKeyName&quot;: &quot;A String&quot;, # Resource name of KMS key for disk encryption
+    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
+  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
+    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupContext**.
   },
-  &quot;diskEncryptionStatus&quot;: { # Disk encryption status for an instance. # Disk encryption status specific to an instance. Applies only to Second Generation instances.
-    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#diskEncryptionStatus**.
-    &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # KMS key version used to encrypt the Cloud SQL instance resource
-  },
-  &quot;encryptedRootPassword&quot;: &quot;A String&quot;, # For internal usage only. The encrypted password.
-  &quot;etag&quot;: &quot;A String&quot;, # This field is deprecated and will be removed from a future version of the API. Use the *settings.settingsVersion* field instead.
-  &quot;failoverReplica&quot;: { # The name and status of the failover replica. This property is applicable only to Second Generation instances.
-    &quot;available&quot;: True or False, # The availability status of the failover replica. A false status indicates that the failover replica is out of sync. The primary instance can only failover to the failover replica when the status is true.
-    &quot;failoverInstance&quot;: { # Reference to another Cloud SQL instance. # A reference to the failover replica. If specified at instance creation, a failover replica is created for the instance. Currently, the failover replica can only be created in the same region as the primary instance.
-      &quot;name&quot;: &quot;A String&quot;, # The name of the Cloud SQL instance being referenced.
-      &quot;region&quot;: &quot;A String&quot;, # The region of the Cloud SQL instance being referenced.
-    },
-    &quot;name&quot;: &quot;A String&quot;, # The name of the failover replica. If specified at instance creation, a failover replica is created for the instance. The name doesn&#x27;t include the project ID. This property is applicable only to Second Generation instances.
-  },
-  &quot;gceZone&quot;: &quot;A String&quot;, # The Compute Engine zone that the instance is currently serving from. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary zone.
-  &quot;installedVersion&quot;: &quot;A String&quot;, # installed_version stores the current fully resolved database version including minor version such as MySQL_5.6.50
-  &quot;instanceType&quot;: &quot;A String&quot;, # The instance type. This can be one of the following. *CLOUD_SQL_INSTANCE*: A Cloud SQL instance that is not replicating from a primary instance. *ON_PREMISES_INSTANCE*: An instance running on the customer&#x27;s premises. *READ_REPLICA_INSTANCE*: A Cloud SQL instance configured as a read-replica.
-  &quot;instanceUid&quot;: &quot;A String&quot;, # Uid of the Cloud SQL instance. Used by Pantheon to check instance is created
-  &quot;ipAddresses&quot;: [ # The assigned IP addresses for the instance.
-    { # Database instance IP Mapping.
-      &quot;ipAddress&quot;: &quot;A String&quot;, # The IP address assigned.
-      &quot;timeToRetire&quot;: &quot;A String&quot;, # The due time for this IP to be retired in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**. This field is only available when the IP is scheduled to be retired.
-      &quot;type&quot;: &quot;A String&quot;, # The type of this IP address. A **PRIMARY** address is a public address that can accept incoming connections. A **PRIVATE** address is a private address that can accept incoming connections. An **OUTGOING** address is the source address of connections originating from the instance, if supported.
-    },
-  ],
-  &quot;ipv6Address&quot;: &quot;A String&quot;, # The IPv6 address assigned to the instance. (Deprecated) This property was applicable only to First Generation instances.
-  &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#instance*.
-  &quot;masterInstance&quot;: { # Reference to another Cloud SQL instance. # The reference to the instance which will act as primary in the replication setup.
-    &quot;name&quot;: &quot;A String&quot;, # The name of the Cloud SQL instance being referenced.
-    &quot;region&quot;: &quot;A String&quot;, # The region of the Cloud SQL instance being referenced.
-  },
-  &quot;masterInstanceName&quot;: &quot;A String&quot;, # The name of the instance which will act as primary in the replication setup.
-  &quot;maxDiskSize&quot;: &quot;A String&quot;, # The maximum disk size of the instance in bytes.
-  &quot;name&quot;: &quot;A String&quot;, # Name of the Cloud SQL instance. This does not include the project ID.
-  &quot;onPremisesConfiguration&quot;: { # On-premises instance configuration. # Configuration specific to on-premises instances.
-    &quot;caCertificate&quot;: &quot;A String&quot;, # PEM representation of the trusted CA&#x27;s x509 certificate.
-    &quot;clientCertificate&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s x509 certificate.
-    &quot;clientKey&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s private key. The corresponsing public key is encoded in the client&#x27;s certificate.
-    &quot;dumpFilePath&quot;: &quot;A String&quot;, # The dump file to create the Cloud SQL replica.
-    &quot;hostPort&quot;: &quot;A String&quot;, # The host and port of the on-premises instance in host:port format
-    &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#onPremisesConfiguration*.
-    &quot;password&quot;: &quot;A String&quot;, # The password for connecting to on-premises instance.
-    &quot;username&quot;: &quot;A String&quot;, # The username for connecting to on-premises instance.
-  },
-  &quot;outOfDiskReport&quot;: { # This message wraps up the information written by out-of-disk detection job. # This field represents the report generated by the proactive database wellness job for OutOfDisk issues. Writers: -- the proactive database wellness job for OOD. Readers: -- the Pantheon frontend -- the proactive database wellness job
-    &quot;sqlMinRecommendedIncreaseSizeGb&quot;: 42, # The minimum recommended increase size in GigaBytes This field is consumed by the frontend Writers: -- the proactive database wellness job for OOD. Readers: -- the Pantheon frontend
-    &quot;sqlOutOfDiskState&quot;: &quot;A String&quot;, # This field represents the state generated by the proactive database wellness job for OutOfDisk issues. Writers: -- the proactive database wellness job for OOD. Readers: -- the Pantheon frontend -- the proactive database wellness job
-  },
-  &quot;project&quot;: &quot;A String&quot;, # The project ID of the project containing the Cloud SQL instance. The Google apps domain is prefixed if applicable.
-  &quot;region&quot;: &quot;A String&quot;, # The geographical region. Can be *us-central* (*FIRST_GEN* instances only) *us-central1* (*SECOND_GEN* instances only) *asia-east1* or *europe-west1*. Defaults to *us-central* or *us-central1* depending on the instance type. The region cannot be changed after instance creation.
-  &quot;replicaConfiguration&quot;: { # Read-replica configuration for connecting to the primary instance. # Configuration specific to failover replicas and read replicas.
-    &quot;failoverTarget&quot;: True or False, # Specifies if the replica is the failover target. If the field is set to *true* the replica will be designated as a failover replica. In case the primary instance fails, the replica instance will be promoted as the new primary instance. Only one replica can be specified as failover target, and the replica has to be in different zone with the primary instance.
-    &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#replicaConfiguration*.
-    &quot;mysqlReplicaConfiguration&quot;: { # Read-replica configuration specific to MySQL databases. # MySQL specific configuration when replicating from a MySQL on-premises primary instance. Replication configuration information such as the username, password, certificates, and keys are not stored in the instance metadata.The configuration information is used only to set up the replication connection and is stored by MySQL in a file named *master.info* in the data directory.
-      &quot;caCertificate&quot;: &quot;A String&quot;, # PEM representation of the trusted CA&#x27;s x509 certificate.
-      &quot;clientCertificate&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s x509 certificate.
-      &quot;clientKey&quot;: &quot;A String&quot;, # PEM representation of the replica&#x27;s private key. The corresponsing public key is encoded in the client&#x27;s certificate.
-      &quot;connectRetryInterval&quot;: 42, # Seconds to wait between connect retries. MySQL&#x27;s default is 60 seconds.
-      &quot;dumpFilePath&quot;: &quot;A String&quot;, # Path to a SQL dump file in Google Cloud Storage from which the replica instance is to be created. The URI is in the form gs://bucketName/fileName. Compressed gzip files (.gz) are also supported. Dumps have the binlog co-ordinates from which replication begins. This can be accomplished by setting --master-data to 1 when using mysqldump.
-      &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#mysqlReplicaConfiguration**.
-      &quot;masterHeartbeatPeriod&quot;: &quot;A String&quot;, # Interval in milliseconds between replication heartbeats.
-      &quot;password&quot;: &quot;A String&quot;, # The password for the replication connection.
-      &quot;sslCipher&quot;: &quot;A String&quot;, # A list of permissible ciphers to use for SSL encryption.
-      &quot;username&quot;: &quot;A String&quot;, # The username for the replication connection.
-      &quot;verifyServerCertificate&quot;: True or False, # Whether or not to check the primary instance&#x27;s Common Name value in the certificate that it sends during the SSL handshake.
-    },
-  },
-  &quot;replicaInstances&quot;: [ # The replicas of the instance.
-    { # Reference to another Cloud SQL instance.
-      &quot;name&quot;: &quot;A String&quot;, # The name of the Cloud SQL instance being referenced.
-      &quot;region&quot;: &quot;A String&quot;, # The region of the Cloud SQL instance being referenced.
-    },
-  ],
-  &quot;replicaNames&quot;: [ # The replicas of the instance.
-    &quot;A String&quot;,
-  ],
-  &quot;rootPassword&quot;: &quot;A String&quot;, # Initial root password. Use only on creation.
-  &quot;satisfiesPzs&quot;: True or False, # The status indicating if instance satisfiesPzs. Reserved for future use.
-  &quot;scheduledMaintenance&quot;: { # Any scheduled maintenancce for this instance. # The start time of any upcoming scheduled maintenance for this instance.
-    &quot;canDefer&quot;: True or False,
-    &quot;canReschedule&quot;: True or False, # If the scheduled maintenance can be rescheduled.
-    &quot;scheduleDeadlineTime&quot;: &quot;A String&quot;, # Maintenance cannot be rescheduled to start beyond this deadline.
-    &quot;startTime&quot;: &quot;A String&quot;, # The start time of any upcoming scheduled maintenance for this instance.
-  },
-  &quot;secondaryGceZone&quot;: &quot;A String&quot;, # The Compute Engine zone that the failover instance is currently serving from for a regional instance. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary/failover zone. Reserved for future use.
-  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
-  &quot;serverCaCert&quot;: { # SslCerts Resource # SSL configuration.
-    &quot;cert&quot;: &quot;A String&quot;, # PEM representation.
-    &quot;certSerialNumber&quot;: &quot;A String&quot;, # Serial number, as extracted from the certificate.
-    &quot;commonName&quot;: &quot;A String&quot;, # User supplied name. Constrained to [a-zA-Z.-_ ]+.
-    &quot;createTime&quot;: &quot;A String&quot;, # The time when the certificate was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**
-    &quot;expirationTime&quot;: &quot;A String&quot;, # The time when the certificate expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
-    &quot;instance&quot;: &quot;A String&quot;, # Name of the database instance.
-    &quot;kind&quot;: &quot;A String&quot;, # This is always sql#sslCert.
-    &quot;sha1Fingerprint&quot;: &quot;A String&quot;, # Sha1 Fingerprint.
-  },
-  &quot;serviceAccountEmailAddress&quot;: &quot;A String&quot;, # The service account email address assigned to the instance. This property is read-only.
-  &quot;settings&quot;: { # Database instance settings. # The user settings.
-    &quot;activationPolicy&quot;: &quot;A String&quot;, # The activation policy specifies when the instance is activated; it is applicable only when the instance state is RUNNABLE. Valid values: **ALWAYS**: The instance is on, and remains so even in the absence of connection requests. **NEVER**: The instance is off; it is not activated, even if a connection request arrives.
-    &quot;activeDirectoryConfig&quot;: { # Active Directory configuration, relevant only for Cloud SQL for SQL Server. # Active Directory configuration, relevant only for Cloud SQL for SQL Server.
-      &quot;domain&quot;: &quot;A String&quot;, # The name of the domain (e.g., mydomain.com).
-      &quot;kind&quot;: &quot;A String&quot;, # This is always sql#activeDirectoryConfig.
-    },
-    &quot;availabilityType&quot;: &quot;A String&quot;, # Availability type. Potential values: **ZONAL**: The instance serves data from only one zone. Outages in that zone affect data accessibility. **REGIONAL**: The instance can serve data from more than one zone in a region (it is highly available). For more information, see [Overview of the High Availability Configuration](/sql/docs/postgres/high-availability).
-    &quot;backupConfiguration&quot;: { # Database instance backup configuration. # The daily backup configuration for the instance.
-      &quot;backupRetentionSettings&quot;: { # We currently only support backup retention by specifying the number of backups we will retain. # Backup retention settings.
-        &quot;retainedBackups&quot;: 42, # Depending on the value of retention_unit, this is used to determine if a backup needs to be deleted. If retention_unit is &#x27;COUNT&#x27;, we will retain this many backups.
-        &quot;retentionUnit&quot;: &quot;A String&quot;, # The unit that &#x27;retained_backups&#x27; represents.
-      },
-      &quot;binaryLogEnabled&quot;: True or False, # (MySQL only) Whether binary log is enabled. If backup configuration is disabled, binarylog must be disabled as well.
-      &quot;enabled&quot;: True or False, # Whether this configuration is enabled.
-      &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupConfiguration**.
-      &quot;location&quot;: &quot;A String&quot;, # Location of the backup
-      &quot;pointInTimeRecoveryEnabled&quot;: True or False, # (Postgres only) Whether point in time recovery is enabled.
-      &quot;replicationLogArchivingEnabled&quot;: True or False, # Reserved for future use.
-      &quot;startTime&quot;: &quot;A String&quot;, # Start time for the daily backup configuration in UTC timezone in the 24 hour format - **HH:MM**.
-      &quot;transactionLogRetentionDays&quot;: 42, # The number of days of transaction logs we retain for point in time restore, from 1-7.
-    },
-    &quot;collation&quot;: &quot;A String&quot;, # The name of server Instance collation.
-    &quot;crashSafeReplicationEnabled&quot;: True or False, # Configuration specific to read replica instances. Indicates whether database flags for crash-safe replication are enabled. This property was only applicable to First Generation instances.
-    &quot;dataDiskSizeGb&quot;: &quot;A String&quot;, # The size of data disk, in GB. The data disk size minimum is 10GB.
-    &quot;dataDiskType&quot;: &quot;A String&quot;, # The type of data disk: **PD_SSD** (default) or **PD_HDD**.
-    &quot;databaseFlags&quot;: [ # The database flags passed to the instance at startup.
-      { # Database flags for Cloud SQL instances.
-        &quot;name&quot;: &quot;A String&quot;, # The name of the flag. These flags are passed at instance startup, so include both server options and system variables for MySQL. Flags are specified with underscores, not hyphens. For more information, see [Configuring Database Flags](/sql/docs/mysql/flags) in the Cloud SQL documentation.
-        &quot;value&quot;: &quot;A String&quot;, # The value of the flag. Booleans are set to **on** for true and **off** for false. This field must be omitted if the flag doesn&#x27;t take a value.
+  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
+    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
+      { # Database instance operation error.
+        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
       },
     ],
-    &quot;databaseReplicationEnabled&quot;: True or False, # Configuration specific to read replica instances. Indicates whether replication is enabled or not.
-    &quot;denyMaintenancePeriods&quot;: [ # Deny maintenance periods
-      { # Deny maintenance Periods. This specifies a date range during when all CSA rollout will be denied.
-        &quot;endDate&quot;: &quot;A String&quot;, # &quot;deny maintenance period&quot; end date. If the year of the end date is empty, the year of the start date also must be empty. In this case, it means the no maintenance interval recurs every year. The date is in format yyyy-mm-dd i.e., 2020-11-01, or mm-dd, i.e., 11-01
-        &quot;startDate&quot;: &quot;A String&quot;, # &quot;deny maintenance period&quot; start date. If the year of the start date is empty, the year of the end date also must be empty. In this case, it means the no maintenance interval recurs every year. The date is in format yyyy-mm-dd i.e., 2020-11-01, or mm-dd, i.e., 11-01
-        &quot;time&quot;: &quot;A String&quot;, # Time in UTC when the &quot;deny maintenance period&quot; starts on start_date and ends on end_date. The time is in format: HH:mm:SS, i.e., 00:00:00
-      },
-    ],
-    &quot;insightsConfig&quot;: { # Insights configuration. This specifies when Cloud SQL Insights feature is enabled and optional configuration. # Insights configuration, for now relevant only for Postgres.
-      &quot;queryInsightsEnabled&quot;: True or False, # Whether Query Insights feature is enabled.
-      &quot;queryPlansPerMinute&quot;: 42, # Number of query plans generated by Insights per minute. Default is 5. Changing this will restart the database.
-      &quot;queryStringLength&quot;: 42, # Maximum query length stored in bytes. Default value: 1024 bytes. Range: 256-4500 bytes. Query length more than this field value will be truncated to this value. When unset, query length will be the default value. Changing query length will restart the database.
-      &quot;recordApplicationTags&quot;: True or False, # Whether Query Insights will record application tags from query when enabled.
-      &quot;recordClientAddress&quot;: True or False, # Whether Query Insights will record client address when enabled.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationErrors**.
+  },
+  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
+    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. **MySQL** and **PostgreSQL** instances only.
+      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
     },
-    &quot;ipConfiguration&quot;: { # IP Management configuration. # The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled for Second Generation instances.
-      &quot;authorizedNetworks&quot;: [ # The list of external networks that are allowed to connect to the instance using the IP. In &#x27;CIDR&#x27; notation, also known as &#x27;slash&#x27; notation (for example: **192.168.100.0/24**).
-        { # An entry for an Access Control list.
-          &quot;expirationTime&quot;: &quot;A String&quot;, # The time when this access control entry expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
-          &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#aclEntry**.
-          &quot;name&quot;: &quot;A String&quot;, # Optional. A label to identify this entry.
-          &quot;value&quot;: &quot;A String&quot;, # The allowlisted value for the access control list.
-        },
+    &quot;databases&quot;: [ # Databases to be exported. **MySQL instances:** If **fileType** is **SQL** and no database is specified, all databases are exported, except for the **mysql** system database. If **fileType** is **CSV**, you can specify one database, either by using this property or by using the **csvExportOptions.selectQuery** property, which takes precedence over this property. **PostgreSQL instances:** You must specify one database to be exported. If **fileType** is **CSV**, this database must match the one specified in the **csvExportOptions.selectQuery** property. **SQL Server instances:** You must specify one database to be exported, and the **fileType** must be **BAK**.
+      &quot;A String&quot;,
+    ],
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data. **BAK**: The file contains backup data for a SQL Server instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#exportContext**.
+    &quot;offload&quot;: True or False, # Option for export offload.
+    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
+      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
+        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to **1**, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to **2**, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than **1**, --set-gtid-purged is set to OFF.
+      },
+      &quot;schemaOnly&quot;: True or False, # Export only schemas.
+      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
+        &quot;A String&quot;,
       ],
-      &quot;ipv4Enabled&quot;: True or False, # Whether the instance is assigned a public IP address or not.
-      &quot;privateNetwork&quot;: &quot;A String&quot;, # The resource link for the VPC network from which the Cloud SQL instance is accessible for private IP. For example, **/projects/myProject/global/networks/default**. This setting can be updated, but it cannot be removed after it is set.
-      &quot;requireSsl&quot;: True or False, # Whether SSL connections over IP are enforced or not.
     },
-    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#settings**.
-    &quot;locationPreference&quot;: { # Preferred location. This specifies where a Cloud SQL instance is located. Note that if the preferred location is not available, the instance will be located as close as possible within the region. Only one location may be specified. # The location preference settings. This allows the instance to be located as near as possible to Compute Engine zone for better performance.
-      &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#locationPreference**.
-      &quot;secondaryZone&quot;: &quot;A String&quot;, # The preferred Compute Engine zone for the secondary/failover (for example: us-central1-a, us-central1-b, etc.). Reserved for future use.
-      &quot;zone&quot;: &quot;A String&quot;, # The preferred Compute Engine zone (for example: us-central1-a, us-central1-b, etc.).
-    },
-    &quot;maintenanceWindow&quot;: { # Maintenance window. This specifies when a Cloud SQL instance is restarted for system maintenance purposes. # The maintenance window for this instance. This specifies when the instance can be restarted for maintenance purposes.
-      &quot;day&quot;: 42, # day of week (1-7), starting on Monday.
-      &quot;hour&quot;: 42, # hour of day - 0 to 23.
-      &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#maintenanceWindow**.
-      &quot;updateTrack&quot;: &quot;A String&quot;, # Maintenance timing setting: **canary** (Earlier) or **stable** (Later). [Learn more] (https://cloud.google.com/sql/docs/mysql/admin-api/rest/v1/instance-settings#maintenance-timing-2ndgen).
-    },
-    &quot;pricingPlan&quot;: &quot;A String&quot;, # The pricing plan for this instance. This can be either **PER_USE** or **PACKAGE**. Only **PER_USE** is supported for Second Generation instances.
-    &quot;replicationType&quot;: &quot;A String&quot;, # The type of replication this instance uses. This can be either **ASYNCHRONOUS** or **SYNCHRONOUS**. (Deprecated) This property was only applicable to First Generation instances.
-    &quot;settingsVersion&quot;: &quot;A String&quot;, # The version of instance settings. This is a required field for update method to make sure concurrent updates are handled properly. During update, use the most recent settingsVersion value for this instance and do not try to update this value.
-    &quot;storageAutoResize&quot;: True or False, # Configuration to increase storage size automatically. The default value is true.
-    &quot;storageAutoResizeLimit&quot;: &quot;A String&quot;, # The maximum size to which storage capacity can be automatically increased. The default value is 0, which specifies that there is no limit.
-    &quot;tier&quot;: &quot;A String&quot;, # The tier (or machine type) for this instance, for example **db-custom-1-3840**.
-    &quot;userLabels&quot;: { # User-provided labels, represented as a dictionary where each label is a single key value pair.
-      &quot;a_key&quot;: &quot;A String&quot;,
-    },
+    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form **gs://bucketName/fileName**. If the file already exists, the request succeeds, but the operation fails. If **fileType** is **SQL** and the filename ends with .gz, the contents are compressed.
   },
-  &quot;state&quot;: &quot;A String&quot;, # The current serving state of the Cloud SQL instance. This can be one of the following. *SQL_INSTANCE_STATE_UNSPECIFIED*: The state of the instance is unknown. *RUNNABLE*: The instance is running, or has been stopped by owner. *SUSPENDED*: The instance is not available, for example due to problems with billing. *PENDING_DELETE*: The instance is being deleted. *PENDING_CREATE*: The instance is being created. *MAINTENANCE*: The instance is down for maintenance. *FAILED*: The instance creation failed.
-  &quot;suspensionReason&quot;: [ # If the instance state is SUSPENDED, the reason for the suspension.
-    &quot;A String&quot;,
-  ],
+  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
+    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
+      &quot;encryptionOptions&quot;: {
+        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
+        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+      },
+    },
+    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
+      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
+        &quot;A String&quot;,
+      ],
+      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
+    },
+    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If **fileType** is **SQL**, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. If **fileType** is **CSV**, one database must be specified.
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data.
+    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#importContext**.
+    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form **gs://bucketName/fileName**. Compressed gzip files (.gz) are supported when **fileType** is **SQL**. The instance must have write permissions to the bucket and read access to the file.
+  },
+  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operation**.
+  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: **CREATE** **DELETE** **UPDATE** **RESTART** **IMPORT** **EXPORT** **BACKUP_VOLUME** **RESTORE_VOLUME** **CREATE_USER** **DELETE_USER** **CREATE_DATABASE** **DELETE_DATABASE**
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are: **PENDING** **RUNNING** **DONE** **SQL_OPERATION_STATUS_UNSPECIFIED**
+  &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
+  &quot;targetLink&quot;: &quot;A String&quot;,
+  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
+  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
 }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="getConnectSettings">getConnectSettings(project, instance, readTime=None, x__xgafv=None)</code>
-  <pre>Retrieves connect settings about a Cloud SQL instance.
+    <code class="details" id="verifyExternalSyncSettings">verifyExternalSyncSettings(project, instance, syncMode=None, verifyConnectionOnly=None, x__xgafv=None)</code>
+  <pre>Verify External primary instance external sync settings.
 
 Args:
   project: string, Project ID of the project that contains the instance. (required)
   instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
-  readTime: string, Optional. Optional snapshot read timestamp to trade freshness for performance.
+  syncMode: string, External sync mode
+    Allowed values
+      EXTERNAL_SYNC_MODE_UNSPECIFIED - Unknown external sync mode, will be defaulted to ONLINE mode
+      ONLINE - Online external sync will set up replication after initial data external sync
+      OFFLINE - Offline external sync only dumps and loads a one-time snapshot of the primary instance&#x27;s data
+  verifyConnectionOnly: boolean, Flag to enable verifying connection only
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -360,27 +301,22 @@
 Returns:
   An object of the form:
 
-    { # Connect settings retrieval response.
-  &quot;backendType&quot;: &quot;A String&quot;, # **SECOND_GEN**: Cloud SQL database instance. **EXTERNAL**: A database server that is not managed by Google. This property is read-only; use the **tier** property in the **settings** object to determine the database type.
-  &quot;databaseVersion&quot;: &quot;A String&quot;, # The database engine type and version. The **databaseVersion** field cannot be changed after instance creation. MySQL instances: **MYSQL_8_0**, **MYSQL_5_7** (default), or **MYSQL_5_6**. PostgreSQL instances: **POSTGRES_9_6**, **POSTGRES_10**, **POSTGRES_11** or **POSTGRES_12** (default). SQL Server instances: **SQLSERVER_2017_STANDARD** (default), **SQLSERVER_2017_ENTERPRISE**, **SQLSERVER_2017_EXPRESS**, or **SQLSERVER_2017_WEB**.
-  &quot;ipAddresses&quot;: [ # The assigned IP addresses for the instance.
-    { # Database instance IP Mapping.
-      &quot;ipAddress&quot;: &quot;A String&quot;, # The IP address assigned.
-      &quot;timeToRetire&quot;: &quot;A String&quot;, # The due time for this IP to be retired in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**. This field is only available when the IP is scheduled to be retired.
-      &quot;type&quot;: &quot;A String&quot;, # The type of this IP address. A **PRIMARY** address is a public address that can accept incoming connections. A **PRIVATE** address is a private address that can accept incoming connections. An **OUTGOING** address is the source address of connections originating from the instance, if supported.
+    { # Instance verify external sync settings response.
+  &quot;errors&quot;: [ # List of migration violations.
+    { # External primary instance migration setting error.
+      &quot;detail&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+      &quot;kind&quot;: &quot;A String&quot;, # Can be *sql#externalSyncSettingError* or *sql#externalSyncSettingWarning*.
+      &quot;type&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
     },
   ],
-  &quot;kind&quot;: &quot;A String&quot;, # This is always `sql#connectSettings`.
-  &quot;serverCaCert&quot;: { # SslCerts Resource # SSL configuration.
-    &quot;cert&quot;: &quot;A String&quot;, # PEM representation.
-    &quot;certSerialNumber&quot;: &quot;A String&quot;, # Serial number, as extracted from the certificate.
-    &quot;commonName&quot;: &quot;A String&quot;, # User supplied name. Constrained to [a-zA-Z.-_ ]+.
-    &quot;createTime&quot;: &quot;A String&quot;, # The time when the certificate was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**
-    &quot;expirationTime&quot;: &quot;A String&quot;, # The time when the certificate expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
-    &quot;instance&quot;: &quot;A String&quot;, # Name of the database instance.
-    &quot;kind&quot;: &quot;A String&quot;, # This is always sql#sslCert.
-    &quot;sha1Fingerprint&quot;: &quot;A String&quot;, # Sha1 Fingerprint.
-  },
+  &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#migrationSettingErrorList*.
+  &quot;warnings&quot;: [ # List of migration warnings.
+    { # External primary instance migration setting error.
+      &quot;detail&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+      &quot;kind&quot;: &quot;A String&quot;, # Can be *sql#externalSyncSettingError* or *sql#externalSyncSettingWarning*.
+      &quot;type&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+    },
+  ],
 }</pre>
 </div>
 
diff --git a/docs/dyn/sqladmin_v1.sslCerts.html b/docs/dyn/sqladmin_v1.sslCerts.html
new file mode 100644
index 0000000..8a5d946
--- /dev/null
+++ b/docs/dyn/sqladmin_v1.sslCerts.html
@@ -0,0 +1,407 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="sqladmin_v1.html">Cloud SQL Admin API</a> . <a href="sqladmin_v1.sslCerts.html">sslCerts</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#close">close()</a></code></p>
+<p class="firstline">Close httplib2 connections.</p>
+<p class="toc_element">
+  <code><a href="#createEphemeral">createEphemeral(project, instance, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Generates a short-lived X509 certificate containing the provided public key and signed by a private key specific to the target instance. Users may use the certificate to authenticate as themselves when connecting to the database.</p>
+<p class="toc_element">
+  <code><a href="#delete">delete(project, instance, sha1Fingerprint, x__xgafv=None)</a></code></p>
+<p class="firstline">Deletes the SSL certificate. For First Generation instances, the certificate remains valid until the instance is restarted.</p>
+<p class="toc_element">
+  <code><a href="#get">get(project, instance, sha1Fingerprint, x__xgafv=None)</a></code></p>
+<p class="firstline">Retrieves a particular SSL certificate. Does not include the private key (required for usage). The private key must be saved from the response to initial creation.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(project, instance, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Creates an SSL certificate and returns it along with the private key and server certificate authority. The new certificate will not be usable until the instance is restarted.</p>
+<p class="toc_element">
+  <code><a href="#list">list(project, instance, x__xgafv=None)</a></code></p>
+<p class="firstline">Lists all of the current SSL certificates for the instance.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="close">close()</code>
+  <pre>Close httplib2 connections.</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="createEphemeral">createEphemeral(project, instance, body=None, x__xgafv=None)</code>
+  <pre>Generates a short-lived X509 certificate containing the provided public key and signed by a private key specific to the target instance. Users may use the certificate to authenticate as themselves when connecting to the database.
+
+Args:
+  project: string, Project ID of the Cloud SQL project. (required)
+  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # SslCerts create ephemeral certificate request.
+  &quot;access_token&quot;: &quot;A String&quot;, # Access token to include in the signed certificate.
+  &quot;public_key&quot;: &quot;A String&quot;, # PEM encoded public key to include in the signed certificate.
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # SslCerts Resource
+  &quot;cert&quot;: &quot;A String&quot;, # PEM representation.
+  &quot;certSerialNumber&quot;: &quot;A String&quot;, # Serial number, as extracted from the certificate.
+  &quot;commonName&quot;: &quot;A String&quot;, # User supplied name. Constrained to [a-zA-Z.-_ ]+.
+  &quot;createTime&quot;: &quot;A String&quot;, # The time when the certificate was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**
+  &quot;expirationTime&quot;: &quot;A String&quot;, # The time when the certificate expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;instance&quot;: &quot;A String&quot;, # Name of the database instance.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always sql#sslCert.
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;sha1Fingerprint&quot;: &quot;A String&quot;, # Sha1 Fingerprint.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="delete">delete(project, instance, sha1Fingerprint, x__xgafv=None)</code>
+  <pre>Deletes the SSL certificate. For First Generation instances, the certificate remains valid until the instance is restarted.
+
+Args:
+  project: string, Project ID of the project that contains the instance. (required)
+  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
+  sha1Fingerprint: string, Sha1 FingerPrint. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
+  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
+    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupContext**.
+  },
+  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
+    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
+      { # Database instance operation error.
+        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+      },
+    ],
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationErrors**.
+  },
+  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
+    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. **MySQL** and **PostgreSQL** instances only.
+      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
+    },
+    &quot;databases&quot;: [ # Databases to be exported. **MySQL instances:** If **fileType** is **SQL** and no database is specified, all databases are exported, except for the **mysql** system database. If **fileType** is **CSV**, you can specify one database, either by using this property or by using the **csvExportOptions.selectQuery** property, which takes precedence over this property. **PostgreSQL instances:** You must specify one database to be exported. If **fileType** is **CSV**, this database must match the one specified in the **csvExportOptions.selectQuery** property. **SQL Server instances:** You must specify one database to be exported, and the **fileType** must be **BAK**.
+      &quot;A String&quot;,
+    ],
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data. **BAK**: The file contains backup data for a SQL Server instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#exportContext**.
+    &quot;offload&quot;: True or False, # Option for export offload.
+    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
+      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
+        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to **1**, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to **2**, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than **1**, --set-gtid-purged is set to OFF.
+      },
+      &quot;schemaOnly&quot;: True or False, # Export only schemas.
+      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form **gs://bucketName/fileName**. If the file already exists, the request succeeds, but the operation fails. If **fileType** is **SQL** and the filename ends with .gz, the contents are compressed.
+  },
+  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
+    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
+      &quot;encryptionOptions&quot;: {
+        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
+        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+      },
+    },
+    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
+      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
+        &quot;A String&quot;,
+      ],
+      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
+    },
+    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If **fileType** is **SQL**, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. If **fileType** is **CSV**, one database must be specified.
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data.
+    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#importContext**.
+    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form **gs://bucketName/fileName**. Compressed gzip files (.gz) are supported when **fileType** is **SQL**. The instance must have write permissions to the bucket and read access to the file.
+  },
+  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operation**.
+  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: **CREATE** **DELETE** **UPDATE** **RESTART** **IMPORT** **EXPORT** **BACKUP_VOLUME** **RESTORE_VOLUME** **CREATE_USER** **DELETE_USER** **CREATE_DATABASE** **DELETE_DATABASE**
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are: **PENDING** **RUNNING** **DONE** **SQL_OPERATION_STATUS_UNSPECIFIED**
+  &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
+  &quot;targetLink&quot;: &quot;A String&quot;,
+  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
+  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(project, instance, sha1Fingerprint, x__xgafv=None)</code>
+  <pre>Retrieves a particular SSL certificate. Does not include the private key (required for usage). The private key must be saved from the response to initial creation.
+
+Args:
+  project: string, Project ID of the project that contains the instance. (required)
+  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
+  sha1Fingerprint: string, Sha1 FingerPrint. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # SslCerts Resource
+  &quot;cert&quot;: &quot;A String&quot;, # PEM representation.
+  &quot;certSerialNumber&quot;: &quot;A String&quot;, # Serial number, as extracted from the certificate.
+  &quot;commonName&quot;: &quot;A String&quot;, # User supplied name. Constrained to [a-zA-Z.-_ ]+.
+  &quot;createTime&quot;: &quot;A String&quot;, # The time when the certificate was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**
+  &quot;expirationTime&quot;: &quot;A String&quot;, # The time when the certificate expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;instance&quot;: &quot;A String&quot;, # Name of the database instance.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always sql#sslCert.
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;sha1Fingerprint&quot;: &quot;A String&quot;, # Sha1 Fingerprint.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(project, instance, body=None, x__xgafv=None)</code>
+  <pre>Creates an SSL certificate and returns it along with the private key and server certificate authority. The new certificate will not be usable until the instance is restarted.
+
+Args:
+  project: string, Project ID of the project that contains the instance. (required)
+  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # SslCerts insert request.
+  &quot;commonName&quot;: &quot;A String&quot;, # User supplied name. Must be a distinct name from the other certificates for this instance.
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # SslCert insert response.
+  &quot;clientCert&quot;: { # SslCertDetail. # The new client certificate and private key.
+    &quot;certInfo&quot;: { # SslCerts Resource # The public information about the cert.
+      &quot;cert&quot;: &quot;A String&quot;, # PEM representation.
+      &quot;certSerialNumber&quot;: &quot;A String&quot;, # Serial number, as extracted from the certificate.
+      &quot;commonName&quot;: &quot;A String&quot;, # User supplied name. Constrained to [a-zA-Z.-_ ]+.
+      &quot;createTime&quot;: &quot;A String&quot;, # The time when the certificate was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**
+      &quot;expirationTime&quot;: &quot;A String&quot;, # The time when the certificate expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+      &quot;instance&quot;: &quot;A String&quot;, # Name of the database instance.
+      &quot;kind&quot;: &quot;A String&quot;, # This is always sql#sslCert.
+      &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+      &quot;sha1Fingerprint&quot;: &quot;A String&quot;, # Sha1 Fingerprint.
+    },
+    &quot;certPrivateKey&quot;: &quot;A String&quot;, # The private key for the client cert, in pem format. Keep private in order to protect your security.
+  },
+  &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#sslCertsInsert*.
+  &quot;operation&quot;: { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource. # The operation to track the ssl certs insert request.
+    &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
+      &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
+      &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupContext**.
+    },
+    &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+    &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
+      &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
+        { # Database instance operation error.
+          &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+          &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+          &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+        },
+      ],
+      &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationErrors**.
+    },
+    &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
+      &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. **MySQL** and **PostgreSQL** instances only.
+        &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
+      },
+      &quot;databases&quot;: [ # Databases to be exported. **MySQL instances:** If **fileType** is **SQL** and no database is specified, all databases are exported, except for the **mysql** system database. If **fileType** is **CSV**, you can specify one database, either by using this property or by using the **csvExportOptions.selectQuery** property, which takes precedence over this property. **PostgreSQL instances:** You must specify one database to be exported. If **fileType** is **CSV**, this database must match the one specified in the **csvExportOptions.selectQuery** property. **SQL Server instances:** You must specify one database to be exported, and the **fileType** must be **BAK**.
+        &quot;A String&quot;,
+      ],
+      &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data. **BAK**: The file contains backup data for a SQL Server instance.
+      &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#exportContext**.
+      &quot;offload&quot;: True or False, # Option for export offload.
+      &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
+        &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
+          &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to **1**, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to **2**, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than **1**, --set-gtid-purged is set to OFF.
+        },
+        &quot;schemaOnly&quot;: True or False, # Export only schemas.
+        &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
+          &quot;A String&quot;,
+        ],
+      },
+      &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form **gs://bucketName/fileName**. If the file already exists, the request succeeds, but the operation fails. If **fileType** is **SQL** and the filename ends with .gz, the contents are compressed.
+    },
+    &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
+      &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
+        &quot;encryptionOptions&quot;: {
+          &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+          &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
+          &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+        },
+      },
+      &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
+        &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
+          &quot;A String&quot;,
+        ],
+        &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
+      },
+      &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If **fileType** is **SQL**, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. If **fileType** is **CSV**, one database must be specified.
+      &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data.
+      &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
+      &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#importContext**.
+      &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form **gs://bucketName/fileName**. Compressed gzip files (.gz) are supported when **fileType** is **SQL**. The instance must have write permissions to the bucket and read access to the file.
+    },
+    &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operation**.
+    &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+    &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: **CREATE** **DELETE** **UPDATE** **RESTART** **IMPORT** **EXPORT** **BACKUP_VOLUME** **RESTORE_VOLUME** **CREATE_USER** **DELETE_USER** **CREATE_DATABASE** **DELETE_DATABASE**
+    &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+    &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+    &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are: **PENDING** **RUNNING** **DONE** **SQL_OPERATION_STATUS_UNSPECIFIED**
+    &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
+    &quot;targetLink&quot;: &quot;A String&quot;,
+    &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
+    &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
+  },
+  &quot;serverCaCert&quot;: { # SslCerts Resource # The server Certificate Authority&#x27;s certificate. If this is missing you can force a new one to be generated by calling resetSslConfig method on instances resource.
+    &quot;cert&quot;: &quot;A String&quot;, # PEM representation.
+    &quot;certSerialNumber&quot;: &quot;A String&quot;, # Serial number, as extracted from the certificate.
+    &quot;commonName&quot;: &quot;A String&quot;, # User supplied name. Constrained to [a-zA-Z.-_ ]+.
+    &quot;createTime&quot;: &quot;A String&quot;, # The time when the certificate was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**
+    &quot;expirationTime&quot;: &quot;A String&quot;, # The time when the certificate expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+    &quot;instance&quot;: &quot;A String&quot;, # Name of the database instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always sql#sslCert.
+    &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+    &quot;sha1Fingerprint&quot;: &quot;A String&quot;, # Sha1 Fingerprint.
+  },
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(project, instance, x__xgafv=None)</code>
+  <pre>Lists all of the current SSL certificates for the instance.
+
+Args:
+  project: string, Project ID of the project that contains the instance. (required)
+  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # SslCerts list response.
+  &quot;items&quot;: [ # List of client certificates for the instance.
+    { # SslCerts Resource
+      &quot;cert&quot;: &quot;A String&quot;, # PEM representation.
+      &quot;certSerialNumber&quot;: &quot;A String&quot;, # Serial number, as extracted from the certificate.
+      &quot;commonName&quot;: &quot;A String&quot;, # User supplied name. Constrained to [a-zA-Z.-_ ]+.
+      &quot;createTime&quot;: &quot;A String&quot;, # The time when the certificate was created in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**
+      &quot;expirationTime&quot;: &quot;A String&quot;, # The time when the certificate expires in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+      &quot;instance&quot;: &quot;A String&quot;, # Name of the database instance.
+      &quot;kind&quot;: &quot;A String&quot;, # This is always sql#sslCert.
+      &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+      &quot;sha1Fingerprint&quot;: &quot;A String&quot;, # Sha1 Fingerprint.
+    },
+  ],
+  &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#sslCertsList*.
+}</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/sqladmin_v1.tiers.html b/docs/dyn/sqladmin_v1.tiers.html
new file mode 100644
index 0000000..fa22853
--- /dev/null
+++ b/docs/dyn/sqladmin_v1.tiers.html
@@ -0,0 +1,119 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="sqladmin_v1.html">Cloud SQL Admin API</a> . <a href="sqladmin_v1.tiers.html">tiers</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#close">close()</a></code></p>
+<p class="firstline">Close httplib2 connections.</p>
+<p class="toc_element">
+  <code><a href="#list">list(project, x__xgafv=None)</a></code></p>
+<p class="firstline">Lists all available machine types (tiers) for Cloud SQL, for example, db-custom-1-3840. For more information, see https://cloud.google.com/sql/pricing.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="close">close()</code>
+  <pre>Close httplib2 connections.</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(project, x__xgafv=None)</code>
+  <pre>Lists all available machine types (tiers) for Cloud SQL, for example, db-custom-1-3840. For more information, see https://cloud.google.com/sql/pricing.
+
+Args:
+  project: string, Project ID of the project for which to list tiers. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Tiers list response.
+  &quot;items&quot;: [ # List of tiers.
+    { # A Google Cloud SQL service tier resource.
+      &quot;DiskQuota&quot;: &quot;A String&quot;, # The maximum disk size of this tier in bytes.
+      &quot;RAM&quot;: &quot;A String&quot;, # The maximum RAM usage of this tier in bytes.
+      &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#tier*.
+      &quot;region&quot;: [ # The applicable regions for this tier.
+        &quot;A String&quot;,
+      ],
+      &quot;tier&quot;: &quot;A String&quot;, # An identifier for the machine type, for example, db-custom-1-3840. For related information, see Pricing.
+    },
+  ],
+  &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#tiersList*.
+}</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/sqladmin_v1.users.html b/docs/dyn/sqladmin_v1.users.html
new file mode 100644
index 0000000..4222aa1
--- /dev/null
+++ b/docs/dyn/sqladmin_v1.users.html
@@ -0,0 +1,453 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="sqladmin_v1.html">Cloud SQL Admin API</a> . <a href="sqladmin_v1.users.html">users</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#close">close()</a></code></p>
+<p class="firstline">Close httplib2 connections.</p>
+<p class="toc_element">
+  <code><a href="#delete">delete(project, instance, host=None, name=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Deletes a user from a Cloud SQL instance.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(project, instance, body=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Creates a new user in a Cloud SQL instance.</p>
+<p class="toc_element">
+  <code><a href="#list">list(project, instance, body_etag=None, body_host=None, body_instance=None, body_kind=None, body_name=None, body_password=None, body_project=None, body_sqlserverUserDetails_disabled=None, body_sqlserverUserDetails_serverRoles=None, body_type=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Lists users in the specified Cloud SQL instance.</p>
+<p class="toc_element">
+  <code><a href="#update">update(project, instance, body=None, host=None, name=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Updates an existing user in a Cloud SQL instance.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="close">close()</code>
+  <pre>Close httplib2 connections.</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="delete">delete(project, instance, host=None, name=None, x__xgafv=None)</code>
+  <pre>Deletes a user from a Cloud SQL instance.
+
+Args:
+  project: string, Project ID of the project that contains the instance. (required)
+  instance: string, Database instance ID. This does not include the project ID. (required)
+  host: string, Host of the user in the instance.
+  name: string, Name of the user in the instance.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
+  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
+    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupContext**.
+  },
+  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
+    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
+      { # Database instance operation error.
+        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+      },
+    ],
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationErrors**.
+  },
+  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
+    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. **MySQL** and **PostgreSQL** instances only.
+      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
+    },
+    &quot;databases&quot;: [ # Databases to be exported. **MySQL instances:** If **fileType** is **SQL** and no database is specified, all databases are exported, except for the **mysql** system database. If **fileType** is **CSV**, you can specify one database, either by using this property or by using the **csvExportOptions.selectQuery** property, which takes precedence over this property. **PostgreSQL instances:** You must specify one database to be exported. If **fileType** is **CSV**, this database must match the one specified in the **csvExportOptions.selectQuery** property. **SQL Server instances:** You must specify one database to be exported, and the **fileType** must be **BAK**.
+      &quot;A String&quot;,
+    ],
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data. **BAK**: The file contains backup data for a SQL Server instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#exportContext**.
+    &quot;offload&quot;: True or False, # Option for export offload.
+    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
+      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
+        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to **1**, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to **2**, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than **1**, --set-gtid-purged is set to OFF.
+      },
+      &quot;schemaOnly&quot;: True or False, # Export only schemas.
+      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form **gs://bucketName/fileName**. If the file already exists, the request succeeds, but the operation fails. If **fileType** is **SQL** and the filename ends with .gz, the contents are compressed.
+  },
+  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
+    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
+      &quot;encryptionOptions&quot;: {
+        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
+        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+      },
+    },
+    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
+      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
+        &quot;A String&quot;,
+      ],
+      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
+    },
+    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If **fileType** is **SQL**, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. If **fileType** is **CSV**, one database must be specified.
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data.
+    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#importContext**.
+    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form **gs://bucketName/fileName**. Compressed gzip files (.gz) are supported when **fileType** is **SQL**. The instance must have write permissions to the bucket and read access to the file.
+  },
+  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operation**.
+  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: **CREATE** **DELETE** **UPDATE** **RESTART** **IMPORT** **EXPORT** **BACKUP_VOLUME** **RESTORE_VOLUME** **CREATE_USER** **DELETE_USER** **CREATE_DATABASE** **DELETE_DATABASE**
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are: **PENDING** **RUNNING** **DONE** **SQL_OPERATION_STATUS_UNSPECIFIED**
+  &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
+  &quot;targetLink&quot;: &quot;A String&quot;,
+  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
+  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(project, instance, body=None, x__xgafv=None)</code>
+  <pre>Creates a new user in a Cloud SQL instance.
+
+Args:
+  project: string, Project ID of the project that contains the instance. (required)
+  instance: string, Database instance ID. This does not include the project ID. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # A Cloud SQL user resource.
+  &quot;etag&quot;: &quot;A String&quot;, # This field is deprecated and will be removed from a future version of the API.
+  &quot;host&quot;: &quot;A String&quot;, # The host name from which the user can connect. For *insert* operations, host defaults to an empty string. For *update* operations, host is specified as part of the request URL. The host name cannot be updated after insertion.
+  &quot;instance&quot;: &quot;A String&quot;, # The name of the Cloud SQL instance. This does not include the project ID. Can be omitted for *update* since it is already specified on the URL.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#user*.
+  &quot;name&quot;: &quot;A String&quot;, # The name of the user in the Cloud SQL instance. Can be omitted for *update* since it is already specified in the URL.
+  &quot;password&quot;: &quot;A String&quot;, # The password for the user.
+  &quot;project&quot;: &quot;A String&quot;, # The project ID of the project containing the Cloud SQL database. The Google apps domain is prefixed if applicable. Can be omitted for *update* since it is already specified on the URL.
+  &quot;sqlserverUserDetails&quot;: { # Represents a Sql Server user on the Cloud SQL instance.
+    &quot;disabled&quot;: True or False, # If the user has been disabled
+    &quot;serverRoles&quot;: [ # The server roles for this user
+      &quot;A String&quot;,
+    ],
+  },
+  &quot;type&quot;: &quot;A String&quot;, # The user type. It determines the method to authenticate the user during login. The default is the database&#x27;s built-in user type.
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
+  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
+    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupContext**.
+  },
+  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
+    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
+      { # Database instance operation error.
+        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+      },
+    ],
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationErrors**.
+  },
+  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
+    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. **MySQL** and **PostgreSQL** instances only.
+      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
+    },
+    &quot;databases&quot;: [ # Databases to be exported. **MySQL instances:** If **fileType** is **SQL** and no database is specified, all databases are exported, except for the **mysql** system database. If **fileType** is **CSV**, you can specify one database, either by using this property or by using the **csvExportOptions.selectQuery** property, which takes precedence over this property. **PostgreSQL instances:** You must specify one database to be exported. If **fileType** is **CSV**, this database must match the one specified in the **csvExportOptions.selectQuery** property. **SQL Server instances:** You must specify one database to be exported, and the **fileType** must be **BAK**.
+      &quot;A String&quot;,
+    ],
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data. **BAK**: The file contains backup data for a SQL Server instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#exportContext**.
+    &quot;offload&quot;: True or False, # Option for export offload.
+    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
+      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
+        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to **1**, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to **2**, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than **1**, --set-gtid-purged is set to OFF.
+      },
+      &quot;schemaOnly&quot;: True or False, # Export only schemas.
+      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form **gs://bucketName/fileName**. If the file already exists, the request succeeds, but the operation fails. If **fileType** is **SQL** and the filename ends with .gz, the contents are compressed.
+  },
+  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
+    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
+      &quot;encryptionOptions&quot;: {
+        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
+        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+      },
+    },
+    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
+      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
+        &quot;A String&quot;,
+      ],
+      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
+    },
+    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If **fileType** is **SQL**, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. If **fileType** is **CSV**, one database must be specified.
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data.
+    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#importContext**.
+    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form **gs://bucketName/fileName**. Compressed gzip files (.gz) are supported when **fileType** is **SQL**. The instance must have write permissions to the bucket and read access to the file.
+  },
+  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operation**.
+  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: **CREATE** **DELETE** **UPDATE** **RESTART** **IMPORT** **EXPORT** **BACKUP_VOLUME** **RESTORE_VOLUME** **CREATE_USER** **DELETE_USER** **CREATE_DATABASE** **DELETE_DATABASE**
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are: **PENDING** **RUNNING** **DONE** **SQL_OPERATION_STATUS_UNSPECIFIED**
+  &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
+  &quot;targetLink&quot;: &quot;A String&quot;,
+  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
+  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(project, instance, body_etag=None, body_host=None, body_instance=None, body_kind=None, body_name=None, body_password=None, body_project=None, body_sqlserverUserDetails_disabled=None, body_sqlserverUserDetails_serverRoles=None, body_type=None, x__xgafv=None)</code>
+  <pre>Lists users in the specified Cloud SQL instance.
+
+Args:
+  project: string, Project ID of the project that contains the instance. (required)
+  instance: string, Database instance ID. This does not include the project ID. (required)
+  body_etag: string, This field is deprecated and will be removed from a future version of the API.
+  body_host: string, The host name from which the user can connect. For *insert* operations, host defaults to an empty string. For *update* operations, host is specified as part of the request URL. The host name cannot be updated after insertion.
+  body_instance: string, The name of the Cloud SQL instance. This does not include the project ID. Can be omitted for *update* since it is already specified on the URL.
+  body_kind: string, This is always *sql#user*.
+  body_name: string, The name of the user in the Cloud SQL instance. Can be omitted for *update* since it is already specified in the URL.
+  body_password: string, The password for the user.
+  body_project: string, The project ID of the project containing the Cloud SQL database. The Google apps domain is prefixed if applicable. Can be omitted for *update* since it is already specified on the URL.
+  body_sqlserverUserDetails_disabled: boolean, If the user has been disabled
+  body_sqlserverUserDetails_serverRoles: string, The server roles for this user (repeated)
+  body_type: string, The user type. It determines the method to authenticate the user during login. The default is the database&#x27;s built-in user type.
+    Allowed values
+      BUILT_IN - The database&#x27;s built-in user type.
+      CLOUD_IAM_USER - Cloud IAM user.
+      CLOUD_IAM_SERVICE_ACCOUNT - Cloud IAM service account.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # User list response.
+  &quot;items&quot;: [ # List of user resources in the instance.
+    { # A Cloud SQL user resource.
+      &quot;etag&quot;: &quot;A String&quot;, # This field is deprecated and will be removed from a future version of the API.
+      &quot;host&quot;: &quot;A String&quot;, # The host name from which the user can connect. For *insert* operations, host defaults to an empty string. For *update* operations, host is specified as part of the request URL. The host name cannot be updated after insertion.
+      &quot;instance&quot;: &quot;A String&quot;, # The name of the Cloud SQL instance. This does not include the project ID. Can be omitted for *update* since it is already specified on the URL.
+      &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#user*.
+      &quot;name&quot;: &quot;A String&quot;, # The name of the user in the Cloud SQL instance. Can be omitted for *update* since it is already specified in the URL.
+      &quot;password&quot;: &quot;A String&quot;, # The password for the user.
+      &quot;project&quot;: &quot;A String&quot;, # The project ID of the project containing the Cloud SQL database. The Google apps domain is prefixed if applicable. Can be omitted for *update* since it is already specified on the URL.
+      &quot;sqlserverUserDetails&quot;: { # Represents a Sql Server user on the Cloud SQL instance.
+        &quot;disabled&quot;: True or False, # If the user has been disabled
+        &quot;serverRoles&quot;: [ # The server roles for this user
+          &quot;A String&quot;,
+        ],
+      },
+      &quot;type&quot;: &quot;A String&quot;, # The user type. It determines the method to authenticate the user during login. The default is the database&#x27;s built-in user type.
+    },
+  ],
+  &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#usersList*.
+  &quot;nextPageToken&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+}</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="update">update(project, instance, body=None, host=None, name=None, x__xgafv=None)</code>
+  <pre>Updates an existing user in a Cloud SQL instance.
+
+Args:
+  project: string, Project ID of the project that contains the instance. (required)
+  instance: string, Database instance ID. This does not include the project ID. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # A Cloud SQL user resource.
+  &quot;etag&quot;: &quot;A String&quot;, # This field is deprecated and will be removed from a future version of the API.
+  &quot;host&quot;: &quot;A String&quot;, # The host name from which the user can connect. For *insert* operations, host defaults to an empty string. For *update* operations, host is specified as part of the request URL. The host name cannot be updated after insertion.
+  &quot;instance&quot;: &quot;A String&quot;, # The name of the Cloud SQL instance. This does not include the project ID. Can be omitted for *update* since it is already specified on the URL.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#user*.
+  &quot;name&quot;: &quot;A String&quot;, # The name of the user in the Cloud SQL instance. Can be omitted for *update* since it is already specified in the URL.
+  &quot;password&quot;: &quot;A String&quot;, # The password for the user.
+  &quot;project&quot;: &quot;A String&quot;, # The project ID of the project containing the Cloud SQL database. The Google apps domain is prefixed if applicable. Can be omitted for *update* since it is already specified on the URL.
+  &quot;sqlserverUserDetails&quot;: { # Represents a Sql Server user on the Cloud SQL instance.
+    &quot;disabled&quot;: True or False, # If the user has been disabled
+    &quot;serverRoles&quot;: [ # The server roles for this user
+      &quot;A String&quot;,
+    ],
+  },
+  &quot;type&quot;: &quot;A String&quot;, # The user type. It determines the method to authenticate the user during login. The default is the database&#x27;s built-in user type.
+}
+
+  host: string, Optional. Host of the user in the instance.
+  name: string, Name of the user in the instance.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource. For successful operations that return an Operation resource, only the fields relevant to the operation are populated in the resource.
+  &quot;backupContext&quot;: { # Backup context. # The context for backup operation, if applicable.
+    &quot;backupId&quot;: &quot;A String&quot;, # The identifier of the backup.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#backupContext**.
+  },
+  &quot;endTime&quot;: &quot;A String&quot;, # The time this operation finished in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;error&quot;: { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
+    &quot;errors&quot;: [ # The list of errors encountered while processing this operation.
+      { # Database instance operation error.
+        &quot;code&quot;: &quot;A String&quot;, # Identifies the specific error that occurred.
+        &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationError**.
+        &quot;message&quot;: &quot;A String&quot;, # Additional information about the error encountered.
+      },
+    ],
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operationErrors**.
+  },
+  &quot;exportContext&quot;: { # Database instance export context. # The context for export operation, if applicable.
+    &quot;csvExportOptions&quot;: { # Options for exporting data as CSV. **MySQL** and **PostgreSQL** instances only.
+      &quot;selectQuery&quot;: &quot;A String&quot;, # The select query used to extract the data.
+    },
+    &quot;databases&quot;: [ # Databases to be exported. **MySQL instances:** If **fileType** is **SQL** and no database is specified, all databases are exported, except for the **mysql** system database. If **fileType** is **CSV**, you can specify one database, either by using this property or by using the **csvExportOptions.selectQuery** property, which takes precedence over this property. **PostgreSQL instances:** You must specify one database to be exported. If **fileType** is **CSV**, this database must match the one specified in the **csvExportOptions.selectQuery** property. **SQL Server instances:** You must specify one database to be exported, and the **fileType** must be **BAK**.
+      &quot;A String&quot;,
+    ],
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data. **BAK**: The file contains backup data for a SQL Server instance.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#exportContext**.
+    &quot;offload&quot;: True or False, # Option for export offload.
+    &quot;sqlExportOptions&quot;: { # Options for exporting data as SQL statements.
+      &quot;mysqlExportOptions&quot;: { # Options for exporting from MySQL.
+        &quot;masterData&quot;: 42, # Option to include SQL statement required to set up replication. If set to **1**, the dump file includes a CHANGE MASTER TO statement with the binary log coordinates, and --set-gtid-purged is set to ON. If set to **2**, the CHANGE MASTER TO statement is written as a SQL comment and has no effect. If set to any value other than **1**, --set-gtid-purged is set to OFF.
+      },
+      &quot;schemaOnly&quot;: True or False, # Export only schemas.
+      &quot;tables&quot;: [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database. For PostgreSQL instances, you can specify only one table.
+        &quot;A String&quot;,
+      ],
+    },
+    &quot;uri&quot;: &quot;A String&quot;, # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form **gs://bucketName/fileName**. If the file already exists, the request succeeds, but the operation fails. If **fileType** is **SQL** and the filename ends with .gz, the contents are compressed.
+  },
+  &quot;importContext&quot;: { # Database instance import context. # The context for import operation, if applicable.
+    &quot;bakImportOptions&quot;: { # Import parameters specific to SQL Server .BAK files
+      &quot;encryptionOptions&quot;: {
+        &quot;certPath&quot;: &quot;A String&quot;, # Path to the Certificate (.cer) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+        &quot;pvkPassword&quot;: &quot;A String&quot;, # Password that encrypts the private key
+        &quot;pvkPath&quot;: &quot;A String&quot;, # Path to the Certificate Private Key (.pvk) in Cloud Storage, in the form **gs://bucketName/fileName**. The instance must have write permissions to the bucket and read access to the file.
+      },
+    },
+    &quot;csvImportOptions&quot;: { # Options for importing data as CSV.
+      &quot;columns&quot;: [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
+        &quot;A String&quot;,
+      ],
+      &quot;table&quot;: &quot;A String&quot;, # The table to which CSV data is imported.
+    },
+    &quot;database&quot;: &quot;A String&quot;, # The target database for the import. If **fileType** is **SQL**, this field is required only if the import file does not specify a database, and is overridden by any database specification in the import file. If **fileType** is **CSV**, one database must be specified.
+    &quot;fileType&quot;: &quot;A String&quot;, # The file type for the specified uri. **SQL**: The file contains SQL statements. **CSV**: The file contains CSV data.
+    &quot;importUser&quot;: &quot;A String&quot;, # The PostgreSQL user for this import operation. PostgreSQL instances only.
+    &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#importContext**.
+    &quot;uri&quot;: &quot;A String&quot;, # Path to the import file in Cloud Storage, in the form **gs://bucketName/fileName**. Compressed gzip files (.gz) are supported when **fileType** is **SQL**. The instance must have write permissions to the bucket and read access to the file.
+  },
+  &quot;insertTime&quot;: &quot;A String&quot;, # The time this operation was enqueued in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;kind&quot;: &quot;A String&quot;, # This is always **sql#operation**.
+  &quot;name&quot;: &quot;A String&quot;, # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+  &quot;operationType&quot;: &quot;A String&quot;, # The type of the operation. Valid values are: **CREATE** **DELETE** **UPDATE** **RESTART** **IMPORT** **EXPORT** **BACKUP_VOLUME** **RESTORE_VOLUME** **CREATE_USER** **DELETE_USER** **CREATE_DATABASE** **DELETE_DATABASE**
+  &quot;selfLink&quot;: &quot;A String&quot;, # The URI of this resource.
+  &quot;startTime&quot;: &quot;A String&quot;, # The time this operation actually started in UTC timezone in [RFC 3339](https://tools.ietf.org/html/rfc3339) format, for example **2012-11-15T16:19:00.094Z**.
+  &quot;status&quot;: &quot;A String&quot;, # The status of an operation. Valid values are: **PENDING** **RUNNING** **DONE** **SQL_OPERATION_STATUS_UNSPECIFIED**
+  &quot;targetId&quot;: &quot;A String&quot;, # Name of the database instance related to this operation.
+  &quot;targetLink&quot;: &quot;A String&quot;,
+  &quot;targetProject&quot;: &quot;A String&quot;, # The project ID of the target instance related to this operation.
+  &quot;user&quot;: &quot;A String&quot;, # The email address of the user who initiated this operation.
+}</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/sqladmin_v1beta4.backupRuns.html b/docs/dyn/sqladmin_v1beta4.backupRuns.html
index 8868eab..5a38d32 100644
--- a/docs/dyn/sqladmin_v1beta4.backupRuns.html
+++ b/docs/dyn/sqladmin_v1beta4.backupRuns.html
@@ -85,7 +85,7 @@
 <p class="firstline">Retrieves a resource containing information about a backup run.</p>
 <p class="toc_element">
   <code><a href="#insert">insert(project, instance, body=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Creates a new backup run on demand. This method is applicable only to Second Generation instances.</p>
+<p class="firstline">Creates a new backup run on demand.</p>
 <p class="toc_element">
   <code><a href="#list">list(project, instance, maxResults=None, pageToken=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Lists all backup runs associated with the project or a given instance and configuration in the reverse chronological order of the backup initiation time.</p>
@@ -105,7 +105,7 @@
 Args:
   project: string, Project ID of the project that contains the instance. (required)
   instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
-  id: string, The ID of the Backup Run to delete. To find a Backup Run ID, use the list method. (required)
+  id: string, The ID of the backup run to delete. To find a backup run ID, use the list method. (required)
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -192,7 +192,7 @@
 Args:
   project: string, Project ID of the project that contains the instance. (required)
   instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
-  id: string, The ID of this Backup Run. (required)
+  id: string, The ID of this backup run. (required)
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -204,11 +204,11 @@
     { # A BackupRun resource.
   &quot;backupKind&quot;: &quot;A String&quot;, # Specifies the kind of backup, PHYSICAL or DEFAULT_SNAPSHOT.
   &quot;description&quot;: &quot;A String&quot;, # The description of this run, only applicable to on-demand backups.
-  &quot;diskEncryptionConfiguration&quot;: { # Disk encryption configuration for an instance. # Encryption configuration specific to a backup. Applies only to Second Generation instances.
+  &quot;diskEncryptionConfiguration&quot;: { # Disk encryption configuration for an instance. # Encryption configuration specific to a backup.
     &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#diskEncryptionConfiguration*.
     &quot;kmsKeyName&quot;: &quot;A String&quot;, # Resource name of KMS key for disk encryption
   },
-  &quot;diskEncryptionStatus&quot;: { # Disk encryption status for an instance. # Encryption status specific to a backup. Applies only to Second Generation instances.
+  &quot;diskEncryptionStatus&quot;: { # Disk encryption status for an instance. # Encryption status specific to a backup.
     &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#diskEncryptionStatus*.
     &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # KMS key version used to encrypt the Cloud SQL instance resource
   },
@@ -233,7 +233,7 @@
 
 <div class="method">
     <code class="details" id="insert">insert(project, instance, body=None, x__xgafv=None)</code>
-  <pre>Creates a new backup run on demand. This method is applicable only to Second Generation instances.
+  <pre>Creates a new backup run on demand.
 
 Args:
   project: string, Project ID of the project that contains the instance. (required)
@@ -244,11 +244,11 @@
 { # A BackupRun resource.
   &quot;backupKind&quot;: &quot;A String&quot;, # Specifies the kind of backup, PHYSICAL or DEFAULT_SNAPSHOT.
   &quot;description&quot;: &quot;A String&quot;, # The description of this run, only applicable to on-demand backups.
-  &quot;diskEncryptionConfiguration&quot;: { # Disk encryption configuration for an instance. # Encryption configuration specific to a backup. Applies only to Second Generation instances.
+  &quot;diskEncryptionConfiguration&quot;: { # Disk encryption configuration for an instance. # Encryption configuration specific to a backup.
     &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#diskEncryptionConfiguration*.
     &quot;kmsKeyName&quot;: &quot;A String&quot;, # Resource name of KMS key for disk encryption
   },
-  &quot;diskEncryptionStatus&quot;: { # Disk encryption status for an instance. # Encryption status specific to a backup. Applies only to Second Generation instances.
+  &quot;diskEncryptionStatus&quot;: { # Disk encryption status for an instance. # Encryption status specific to a backup.
     &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#diskEncryptionStatus*.
     &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # KMS key version used to encrypt the Cloud SQL instance resource
   },
@@ -371,11 +371,11 @@
     { # A BackupRun resource.
       &quot;backupKind&quot;: &quot;A String&quot;, # Specifies the kind of backup, PHYSICAL or DEFAULT_SNAPSHOT.
       &quot;description&quot;: &quot;A String&quot;, # The description of this run, only applicable to on-demand backups.
-      &quot;diskEncryptionConfiguration&quot;: { # Disk encryption configuration for an instance. # Encryption configuration specific to a backup. Applies only to Second Generation instances.
+      &quot;diskEncryptionConfiguration&quot;: { # Disk encryption configuration for an instance. # Encryption configuration specific to a backup.
         &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#diskEncryptionConfiguration*.
         &quot;kmsKeyName&quot;: &quot;A String&quot;, # Resource name of KMS key for disk encryption
       },
-      &quot;diskEncryptionStatus&quot;: { # Disk encryption status for an instance. # Encryption status specific to a backup. Applies only to Second Generation instances.
+      &quot;diskEncryptionStatus&quot;: { # Disk encryption status for an instance. # Encryption status specific to a backup.
         &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#diskEncryptionStatus*.
         &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # KMS key version used to encrypt the Cloud SQL instance resource
       },
diff --git a/docs/dyn/sqladmin_v1beta4.flags.html b/docs/dyn/sqladmin_v1beta4.flags.html
index 1cee3b7..61b3099 100644
--- a/docs/dyn/sqladmin_v1beta4.flags.html
+++ b/docs/dyn/sqladmin_v1beta4.flags.html
@@ -79,7 +79,7 @@
 <p class="firstline">Close httplib2 connections.</p>
 <p class="toc_element">
   <code><a href="#list">list(databaseVersion=None, x__xgafv=None)</a></code></p>
-<p class="firstline">List all available database flags for Cloud SQL instances.</p>
+<p class="firstline">Lists all available database flags for Cloud SQL instances.</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="close">close()</code>
@@ -88,7 +88,7 @@
 
 <div class="method">
     <code class="details" id="list">list(databaseVersion=None, x__xgafv=None)</code>
-  <pre>List all available database flags for Cloud SQL instances.
+  <pre>Lists all available database flags for Cloud SQL instances.
 
 Args:
   databaseVersion: string, Database type and version you want to retrieve flags for. By default, this method returns flags for all database types and versions.
@@ -117,7 +117,7 @@
       &quot;maxValue&quot;: &quot;A String&quot;, # For *INTEGER* flags, the maximum allowed value.
       &quot;minValue&quot;: &quot;A String&quot;, # For *INTEGER* flags, the minimum allowed value.
       &quot;name&quot;: &quot;A String&quot;, # This is the name of the flag. Flag names always use underscores, not hyphens, for example: *max_allowed_packet*
-      &quot;requiresRestart&quot;: True or False, # Indicates whether changing this flag will trigger a database restart. Only applicable to Second Generation instances.
+      &quot;requiresRestart&quot;: True or False, # Indicates whether changing this flag will trigger a database restart.
       &quot;type&quot;: &quot;A String&quot;, # The type of the flag. Flags are typed to being *BOOLEAN*, *STRING*, *INTEGER* or *NONE*. *NONE* is used for flags which do not take a value, such as *skip_grant_tables*.
     },
   ],
diff --git a/docs/dyn/sqladmin_v1beta4.instances.html b/docs/dyn/sqladmin_v1beta4.instances.html
index 051036d..24802a6 100644
--- a/docs/dyn/sqladmin_v1beta4.instances.html
+++ b/docs/dyn/sqladmin_v1beta4.instances.html
@@ -94,7 +94,7 @@
 <p class="firstline">Exports data from a Cloud SQL instance to a Cloud Storage bucket as a SQL dump or CSV file.</p>
 <p class="toc_element">
   <code><a href="#failover">failover(project, instance, body=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Failover the instance to its failover replica instance. Using this operation might cause your instance to restart.</p>
+<p class="firstline">Initiates a manual failover of a high availability (HA) primary instance to a standby instance, which becomes the primary instance. Users are then rerouted to the new primary. For more information, see the Overview of high availability page in the Cloud SQL documentation. If using Legacy HA (MySQL only), this causes the instance to failover to its failover replica instance.</p>
 <p class="toc_element">
   <code><a href="#get">get(project, instance, x__xgafv=None)</a></code></p>
 <p class="firstline">Retrieves a resource containing information about a Cloud SQL instance.</p>
@@ -449,7 +449,7 @@
         &quot;username&quot;: &quot;A String&quot;, # The username for the replication connection.
       },
     },
-    &quot;verifyGtidConsistency&quot;: True or False, # Verify GTID consistency for demote operation. Default value: *True*. Second Generation instances only. Setting this flag to false enables you to bypass GTID consistency check between on-premises primary instance and Cloud SQL instance during the demotion operation but also exposes you to the risk of future replication failures. Change the value only if you know the reason for the GTID divergence and are confident that doing so will not cause any replication issues.
+    &quot;verifyGtidConsistency&quot;: True or False, # Verify GTID consistency for demote operation. Default value: *True*. Setting this flag to false enables you to bypass GTID consistency check between on-premises primary instance and Cloud SQL instance during the demotion operation but also exposes you to the risk of future replication failures. Change the value only if you know the reason for the GTID divergence and are confident that doing so will not cause any replication issues.
   },
 }
 
@@ -647,7 +647,7 @@
 
 <div class="method">
     <code class="details" id="failover">failover(project, instance, body=None, x__xgafv=None)</code>
-  <pre>Failover the instance to its failover replica instance. Using this operation might cause your instance to restart.
+  <pre>Initiates a manual failover of a high availability (HA) primary instance to a standby instance, which becomes the primary instance. Users are then rerouted to the new primary. For more information, see the Overview of high availability page in the Cloud SQL documentation. If using Legacy HA (MySQL only), this causes the instance to failover to its failover replica instance.
 
 Args:
   project: string, ID of the project that contains the read replica. (required)
@@ -760,19 +760,19 @@
   &quot;backendType&quot;: &quot;A String&quot;, #  *SECOND_GEN*: Cloud SQL database instance. *EXTERNAL*: A database server that is not managed by Google. This property is read-only; use the *tier* property in the *settings* object to determine the database type.
   &quot;connectionName&quot;: &quot;A String&quot;, # Connection name of the Cloud SQL instance used in connection strings.
   &quot;currentDiskSize&quot;: &quot;A String&quot;, # The current disk usage of the instance in bytes. This property has been deprecated. Use the &quot;cloudsql.googleapis.com/database/disk/bytes_used&quot; metric in Cloud Monitoring API instead. Please see this announcement for details.
-  &quot;databaseVersion&quot;: &quot;A String&quot;, # The database engine type and version. The *databaseVersion* field cannot be changed after instance creation. MySQL instances: *MYSQL_8_0*, *MYSQL_5_7* (default), or *MYSQL_5_6*. PostgreSQL instances: *POSTGRES_9_6*, *POSTGRES_10*, *POSTGRES_11*, *POSTGRES_12*, or *POSTGRES_13* (default). SQL Server instances: *SQLSERVER_2017_STANDARD* (default), *SQLSERVER_2017_ENTERPRISE*, *SQLSERVER_2017_EXPRESS*, or *SQLSERVER_2017_WEB*.
-  &quot;diskEncryptionConfiguration&quot;: { # Disk encryption configuration for an instance. # Disk encryption configuration specific to an instance. Applies only to Second Generation instances.
+  &quot;databaseVersion&quot;: &quot;A String&quot;, # The database engine type and version. The *databaseVersion* field cannot be changed after instance creation. MySQL instances: *MYSQL_8_0*, *MYSQL_5_7* (default), or *MYSQL_5_6*. PostgreSQL instances: *POSTGRES_9_6*, *POSTGRES_10*, *POSTGRES_11*, *POSTGRES_12*, *POSTGRES_13* (default). SQL Server instances: *SQLSERVER_2019_STANDARD*, *SQLSERVER_2019_ENTERPRISE*, *SQLSERVER_2019_EXPRESS*, or *SQLSERVER_2019_WEB*, *SQLSERVER_2017_STANDARD* (default), *SQLSERVER_2017_ENTERPRISE*, *SQLSERVER_2017_EXPRESS*, or *SQLSERVER_2017_WEB*.
+  &quot;diskEncryptionConfiguration&quot;: { # Disk encryption configuration for an instance. # Disk encryption configuration specific to an instance.
     &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#diskEncryptionConfiguration*.
     &quot;kmsKeyName&quot;: &quot;A String&quot;, # Resource name of KMS key for disk encryption
   },
-  &quot;diskEncryptionStatus&quot;: { # Disk encryption status for an instance. # Disk encryption status specific to an instance. Applies only to Second Generation instances.
+  &quot;diskEncryptionStatus&quot;: { # Disk encryption status for an instance. # Disk encryption status specific to an instance.
     &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#diskEncryptionStatus*.
     &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # KMS key version used to encrypt the Cloud SQL instance resource
   },
   &quot;etag&quot;: &quot;A String&quot;, # This field is deprecated and will be removed from a future version of the API. Use the *settings.settingsVersion* field instead.
-  &quot;failoverReplica&quot;: { # The name and status of the failover replica. This property is applicable only to Second Generation instances.
+  &quot;failoverReplica&quot;: { # The name and status of the failover replica.
     &quot;available&quot;: True or False, # The availability status of the failover replica. A false status indicates that the failover replica is out of sync. The primary instance can only failover to the failover replica when the status is true.
-    &quot;name&quot;: &quot;A String&quot;, # The name of the failover replica. If specified at instance creation, a failover replica is created for the instance. The name doesn&#x27;t include the project ID. This property is applicable only to Second Generation instances.
+    &quot;name&quot;: &quot;A String&quot;, # The name of the failover replica. If specified at instance creation, a failover replica is created for the instance. The name doesn&#x27;t include the project ID.
   },
   &quot;gceZone&quot;: &quot;A String&quot;, # The Compute Engine zone that the instance is currently serving from. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary zone.
   &quot;instanceType&quot;: &quot;A String&quot;, # The instance type. This can be one of the following. *CLOUD_SQL_INSTANCE*: A Cloud SQL instance that is not replicating from a primary instance. *ON_PREMISES_INSTANCE*: An instance running on the customer&#x27;s premises. *READ_REPLICA_INSTANCE*: A Cloud SQL instance configured as a read-replica.
@@ -876,7 +876,7 @@
     &quot;dataDiskType&quot;: &quot;A String&quot;, # The type of data disk: PD_SSD (default) or PD_HDD. Not used for First Generation instances.
     &quot;databaseFlags&quot;: [ # The database flags passed to the instance at startup.
       { # Database flags for Cloud SQL instances.
-        &quot;name&quot;: &quot;A String&quot;, # The name of the flag. These flags are passed at instance startup, so include both server options and system variables for MySQL. Flags are specified with underscores, not hyphens. For more information, see Configuring Database Flags in the Cloud SQL documentation.
+        &quot;name&quot;: &quot;A String&quot;, # The name of the flag. These flags are passed at instance startup, so include both server options and system variables. Flags are specified with underscores, not hyphens. For more information, see Configuring Database Flags in the Cloud SQL documentation.
         &quot;value&quot;: &quot;A String&quot;, # The value of the flag. Booleans are set to *on* for true and *off* for false. This field must be omitted if the flag doesn&#x27;t take a value.
       },
     ],
@@ -890,12 +890,12 @@
     ],
     &quot;insightsConfig&quot;: { # Insights configuration. This specifies when Cloud SQL Insights feature is enabled and optional configuration. # Insights configuration, for now relevant only for Postgres.
       &quot;queryInsightsEnabled&quot;: True or False, # Whether Query Insights feature is enabled.
-      &quot;queryPlansPerMinute&quot;: 42, # Number of query plans generated by Insights per minute. Default is 5. Changing this will restart the database.
+      &quot;queryPlansPerMinute&quot;: 42, # Number of query execution plans captured by Insights per minute for all queries combined. Default is 5.
       &quot;queryStringLength&quot;: 42, # Maximum query length stored in bytes. Default value: 1024 bytes. Range: 256-4500 bytes. Query length more than this field value will be truncated to this value. When unset, query length will be the default value. Changing query length will restart the database.
       &quot;recordApplicationTags&quot;: True or False, # Whether Query Insights will record application tags from query when enabled.
       &quot;recordClientAddress&quot;: True or False, # Whether Query Insights will record client address when enabled.
     },
-    &quot;ipConfiguration&quot;: { # IP Management configuration. # The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled for Second Generation instances.
+    &quot;ipConfiguration&quot;: { # IP Management configuration. # The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled.
       &quot;authorizedNetworks&quot;: [ # The list of external networks that are allowed to connect to the instance using the IP. In &#x27;CIDR&#x27; notation, also known as &#x27;slash&#x27; notation (for example: *192.168.100.0/24*).
         { # An entry for an Access Control list.
           &quot;expirationTime&quot;: &quot;A String&quot;, # The time when this access control entry expires in RFC 3339 format, for example *2012-11-15T16:19:00.094Z*.
@@ -1063,19 +1063,19 @@
   &quot;backendType&quot;: &quot;A String&quot;, #  *SECOND_GEN*: Cloud SQL database instance. *EXTERNAL*: A database server that is not managed by Google. This property is read-only; use the *tier* property in the *settings* object to determine the database type.
   &quot;connectionName&quot;: &quot;A String&quot;, # Connection name of the Cloud SQL instance used in connection strings.
   &quot;currentDiskSize&quot;: &quot;A String&quot;, # The current disk usage of the instance in bytes. This property has been deprecated. Use the &quot;cloudsql.googleapis.com/database/disk/bytes_used&quot; metric in Cloud Monitoring API instead. Please see this announcement for details.
-  &quot;databaseVersion&quot;: &quot;A String&quot;, # The database engine type and version. The *databaseVersion* field cannot be changed after instance creation. MySQL instances: *MYSQL_8_0*, *MYSQL_5_7* (default), or *MYSQL_5_6*. PostgreSQL instances: *POSTGRES_9_6*, *POSTGRES_10*, *POSTGRES_11*, *POSTGRES_12*, or *POSTGRES_13* (default). SQL Server instances: *SQLSERVER_2017_STANDARD* (default), *SQLSERVER_2017_ENTERPRISE*, *SQLSERVER_2017_EXPRESS*, or *SQLSERVER_2017_WEB*.
-  &quot;diskEncryptionConfiguration&quot;: { # Disk encryption configuration for an instance. # Disk encryption configuration specific to an instance. Applies only to Second Generation instances.
+  &quot;databaseVersion&quot;: &quot;A String&quot;, # The database engine type and version. The *databaseVersion* field cannot be changed after instance creation. MySQL instances: *MYSQL_8_0*, *MYSQL_5_7* (default), or *MYSQL_5_6*. PostgreSQL instances: *POSTGRES_9_6*, *POSTGRES_10*, *POSTGRES_11*, *POSTGRES_12*, *POSTGRES_13* (default). SQL Server instances: *SQLSERVER_2019_STANDARD*, *SQLSERVER_2019_ENTERPRISE*, *SQLSERVER_2019_EXPRESS*, or *SQLSERVER_2019_WEB*, *SQLSERVER_2017_STANDARD* (default), *SQLSERVER_2017_ENTERPRISE*, *SQLSERVER_2017_EXPRESS*, or *SQLSERVER_2017_WEB*.
+  &quot;diskEncryptionConfiguration&quot;: { # Disk encryption configuration for an instance. # Disk encryption configuration specific to an instance.
     &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#diskEncryptionConfiguration*.
     &quot;kmsKeyName&quot;: &quot;A String&quot;, # Resource name of KMS key for disk encryption
   },
-  &quot;diskEncryptionStatus&quot;: { # Disk encryption status for an instance. # Disk encryption status specific to an instance. Applies only to Second Generation instances.
+  &quot;diskEncryptionStatus&quot;: { # Disk encryption status for an instance. # Disk encryption status specific to an instance.
     &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#diskEncryptionStatus*.
     &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # KMS key version used to encrypt the Cloud SQL instance resource
   },
   &quot;etag&quot;: &quot;A String&quot;, # This field is deprecated and will be removed from a future version of the API. Use the *settings.settingsVersion* field instead.
-  &quot;failoverReplica&quot;: { # The name and status of the failover replica. This property is applicable only to Second Generation instances.
+  &quot;failoverReplica&quot;: { # The name and status of the failover replica.
     &quot;available&quot;: True or False, # The availability status of the failover replica. A false status indicates that the failover replica is out of sync. The primary instance can only failover to the failover replica when the status is true.
-    &quot;name&quot;: &quot;A String&quot;, # The name of the failover replica. If specified at instance creation, a failover replica is created for the instance. The name doesn&#x27;t include the project ID. This property is applicable only to Second Generation instances.
+    &quot;name&quot;: &quot;A String&quot;, # The name of the failover replica. If specified at instance creation, a failover replica is created for the instance. The name doesn&#x27;t include the project ID.
   },
   &quot;gceZone&quot;: &quot;A String&quot;, # The Compute Engine zone that the instance is currently serving from. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary zone.
   &quot;instanceType&quot;: &quot;A String&quot;, # The instance type. This can be one of the following. *CLOUD_SQL_INSTANCE*: A Cloud SQL instance that is not replicating from a primary instance. *ON_PREMISES_INSTANCE*: An instance running on the customer&#x27;s premises. *READ_REPLICA_INSTANCE*: A Cloud SQL instance configured as a read-replica.
@@ -1179,7 +1179,7 @@
     &quot;dataDiskType&quot;: &quot;A String&quot;, # The type of data disk: PD_SSD (default) or PD_HDD. Not used for First Generation instances.
     &quot;databaseFlags&quot;: [ # The database flags passed to the instance at startup.
       { # Database flags for Cloud SQL instances.
-        &quot;name&quot;: &quot;A String&quot;, # The name of the flag. These flags are passed at instance startup, so include both server options and system variables for MySQL. Flags are specified with underscores, not hyphens. For more information, see Configuring Database Flags in the Cloud SQL documentation.
+        &quot;name&quot;: &quot;A String&quot;, # The name of the flag. These flags are passed at instance startup, so include both server options and system variables. Flags are specified with underscores, not hyphens. For more information, see Configuring Database Flags in the Cloud SQL documentation.
         &quot;value&quot;: &quot;A String&quot;, # The value of the flag. Booleans are set to *on* for true and *off* for false. This field must be omitted if the flag doesn&#x27;t take a value.
       },
     ],
@@ -1193,12 +1193,12 @@
     ],
     &quot;insightsConfig&quot;: { # Insights configuration. This specifies when Cloud SQL Insights feature is enabled and optional configuration. # Insights configuration, for now relevant only for Postgres.
       &quot;queryInsightsEnabled&quot;: True or False, # Whether Query Insights feature is enabled.
-      &quot;queryPlansPerMinute&quot;: 42, # Number of query plans generated by Insights per minute. Default is 5. Changing this will restart the database.
+      &quot;queryPlansPerMinute&quot;: 42, # Number of query execution plans captured by Insights per minute for all queries combined. Default is 5.
       &quot;queryStringLength&quot;: 42, # Maximum query length stored in bytes. Default value: 1024 bytes. Range: 256-4500 bytes. Query length more than this field value will be truncated to this value. When unset, query length will be the default value. Changing query length will restart the database.
       &quot;recordApplicationTags&quot;: True or False, # Whether Query Insights will record application tags from query when enabled.
       &quot;recordClientAddress&quot;: True or False, # Whether Query Insights will record client address when enabled.
     },
-    &quot;ipConfiguration&quot;: { # IP Management configuration. # The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled for Second Generation instances.
+    &quot;ipConfiguration&quot;: { # IP Management configuration. # The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled.
       &quot;authorizedNetworks&quot;: [ # The list of external networks that are allowed to connect to the instance using the IP. In &#x27;CIDR&#x27; notation, also known as &#x27;slash&#x27; notation (for example: *192.168.100.0/24*).
         { # An entry for an Access Control list.
           &quot;expirationTime&quot;: &quot;A String&quot;, # The time when this access control entry expires in RFC 3339 format, for example *2012-11-15T16:19:00.094Z*.
@@ -1342,19 +1342,19 @@
       &quot;backendType&quot;: &quot;A String&quot;, #  *SECOND_GEN*: Cloud SQL database instance. *EXTERNAL*: A database server that is not managed by Google. This property is read-only; use the *tier* property in the *settings* object to determine the database type.
       &quot;connectionName&quot;: &quot;A String&quot;, # Connection name of the Cloud SQL instance used in connection strings.
       &quot;currentDiskSize&quot;: &quot;A String&quot;, # The current disk usage of the instance in bytes. This property has been deprecated. Use the &quot;cloudsql.googleapis.com/database/disk/bytes_used&quot; metric in Cloud Monitoring API instead. Please see this announcement for details.
-      &quot;databaseVersion&quot;: &quot;A String&quot;, # The database engine type and version. The *databaseVersion* field cannot be changed after instance creation. MySQL instances: *MYSQL_8_0*, *MYSQL_5_7* (default), or *MYSQL_5_6*. PostgreSQL instances: *POSTGRES_9_6*, *POSTGRES_10*, *POSTGRES_11*, *POSTGRES_12*, or *POSTGRES_13* (default). SQL Server instances: *SQLSERVER_2017_STANDARD* (default), *SQLSERVER_2017_ENTERPRISE*, *SQLSERVER_2017_EXPRESS*, or *SQLSERVER_2017_WEB*.
-      &quot;diskEncryptionConfiguration&quot;: { # Disk encryption configuration for an instance. # Disk encryption configuration specific to an instance. Applies only to Second Generation instances.
+      &quot;databaseVersion&quot;: &quot;A String&quot;, # The database engine type and version. The *databaseVersion* field cannot be changed after instance creation. MySQL instances: *MYSQL_8_0*, *MYSQL_5_7* (default), or *MYSQL_5_6*. PostgreSQL instances: *POSTGRES_9_6*, *POSTGRES_10*, *POSTGRES_11*, *POSTGRES_12*, *POSTGRES_13* (default). SQL Server instances: *SQLSERVER_2019_STANDARD*, *SQLSERVER_2019_ENTERPRISE*, *SQLSERVER_2019_EXPRESS*, or *SQLSERVER_2019_WEB*, *SQLSERVER_2017_STANDARD* (default), *SQLSERVER_2017_ENTERPRISE*, *SQLSERVER_2017_EXPRESS*, or *SQLSERVER_2017_WEB*.
+      &quot;diskEncryptionConfiguration&quot;: { # Disk encryption configuration for an instance. # Disk encryption configuration specific to an instance.
         &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#diskEncryptionConfiguration*.
         &quot;kmsKeyName&quot;: &quot;A String&quot;, # Resource name of KMS key for disk encryption
       },
-      &quot;diskEncryptionStatus&quot;: { # Disk encryption status for an instance. # Disk encryption status specific to an instance. Applies only to Second Generation instances.
+      &quot;diskEncryptionStatus&quot;: { # Disk encryption status for an instance. # Disk encryption status specific to an instance.
         &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#diskEncryptionStatus*.
         &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # KMS key version used to encrypt the Cloud SQL instance resource
       },
       &quot;etag&quot;: &quot;A String&quot;, # This field is deprecated and will be removed from a future version of the API. Use the *settings.settingsVersion* field instead.
-      &quot;failoverReplica&quot;: { # The name and status of the failover replica. This property is applicable only to Second Generation instances.
+      &quot;failoverReplica&quot;: { # The name and status of the failover replica.
         &quot;available&quot;: True or False, # The availability status of the failover replica. A false status indicates that the failover replica is out of sync. The primary instance can only failover to the failover replica when the status is true.
-        &quot;name&quot;: &quot;A String&quot;, # The name of the failover replica. If specified at instance creation, a failover replica is created for the instance. The name doesn&#x27;t include the project ID. This property is applicable only to Second Generation instances.
+        &quot;name&quot;: &quot;A String&quot;, # The name of the failover replica. If specified at instance creation, a failover replica is created for the instance. The name doesn&#x27;t include the project ID.
       },
       &quot;gceZone&quot;: &quot;A String&quot;, # The Compute Engine zone that the instance is currently serving from. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary zone.
       &quot;instanceType&quot;: &quot;A String&quot;, # The instance type. This can be one of the following. *CLOUD_SQL_INSTANCE*: A Cloud SQL instance that is not replicating from a primary instance. *ON_PREMISES_INSTANCE*: An instance running on the customer&#x27;s premises. *READ_REPLICA_INSTANCE*: A Cloud SQL instance configured as a read-replica.
@@ -1458,7 +1458,7 @@
         &quot;dataDiskType&quot;: &quot;A String&quot;, # The type of data disk: PD_SSD (default) or PD_HDD. Not used for First Generation instances.
         &quot;databaseFlags&quot;: [ # The database flags passed to the instance at startup.
           { # Database flags for Cloud SQL instances.
-            &quot;name&quot;: &quot;A String&quot;, # The name of the flag. These flags are passed at instance startup, so include both server options and system variables for MySQL. Flags are specified with underscores, not hyphens. For more information, see Configuring Database Flags in the Cloud SQL documentation.
+            &quot;name&quot;: &quot;A String&quot;, # The name of the flag. These flags are passed at instance startup, so include both server options and system variables. Flags are specified with underscores, not hyphens. For more information, see Configuring Database Flags in the Cloud SQL documentation.
             &quot;value&quot;: &quot;A String&quot;, # The value of the flag. Booleans are set to *on* for true and *off* for false. This field must be omitted if the flag doesn&#x27;t take a value.
           },
         ],
@@ -1472,12 +1472,12 @@
         ],
         &quot;insightsConfig&quot;: { # Insights configuration. This specifies when Cloud SQL Insights feature is enabled and optional configuration. # Insights configuration, for now relevant only for Postgres.
           &quot;queryInsightsEnabled&quot;: True or False, # Whether Query Insights feature is enabled.
-          &quot;queryPlansPerMinute&quot;: 42, # Number of query plans generated by Insights per minute. Default is 5. Changing this will restart the database.
+          &quot;queryPlansPerMinute&quot;: 42, # Number of query execution plans captured by Insights per minute for all queries combined. Default is 5.
           &quot;queryStringLength&quot;: 42, # Maximum query length stored in bytes. Default value: 1024 bytes. Range: 256-4500 bytes. Query length more than this field value will be truncated to this value. When unset, query length will be the default value. Changing query length will restart the database.
           &quot;recordApplicationTags&quot;: True or False, # Whether Query Insights will record application tags from query when enabled.
           &quot;recordClientAddress&quot;: True or False, # Whether Query Insights will record client address when enabled.
         },
-        &quot;ipConfiguration&quot;: { # IP Management configuration. # The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled for Second Generation instances.
+        &quot;ipConfiguration&quot;: { # IP Management configuration. # The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled.
           &quot;authorizedNetworks&quot;: [ # The list of external networks that are allowed to connect to the instance using the IP. In &#x27;CIDR&#x27; notation, also known as &#x27;slash&#x27; notation (for example: *192.168.100.0/24*).
             { # An entry for an Access Control list.
               &quot;expirationTime&quot;: &quot;A String&quot;, # The time when this access control entry expires in RFC 3339 format, for example *2012-11-15T16:19:00.094Z*.
@@ -1593,19 +1593,19 @@
   &quot;backendType&quot;: &quot;A String&quot;, #  *SECOND_GEN*: Cloud SQL database instance. *EXTERNAL*: A database server that is not managed by Google. This property is read-only; use the *tier* property in the *settings* object to determine the database type.
   &quot;connectionName&quot;: &quot;A String&quot;, # Connection name of the Cloud SQL instance used in connection strings.
   &quot;currentDiskSize&quot;: &quot;A String&quot;, # The current disk usage of the instance in bytes. This property has been deprecated. Use the &quot;cloudsql.googleapis.com/database/disk/bytes_used&quot; metric in Cloud Monitoring API instead. Please see this announcement for details.
-  &quot;databaseVersion&quot;: &quot;A String&quot;, # The database engine type and version. The *databaseVersion* field cannot be changed after instance creation. MySQL instances: *MYSQL_8_0*, *MYSQL_5_7* (default), or *MYSQL_5_6*. PostgreSQL instances: *POSTGRES_9_6*, *POSTGRES_10*, *POSTGRES_11*, *POSTGRES_12*, or *POSTGRES_13* (default). SQL Server instances: *SQLSERVER_2017_STANDARD* (default), *SQLSERVER_2017_ENTERPRISE*, *SQLSERVER_2017_EXPRESS*, or *SQLSERVER_2017_WEB*.
-  &quot;diskEncryptionConfiguration&quot;: { # Disk encryption configuration for an instance. # Disk encryption configuration specific to an instance. Applies only to Second Generation instances.
+  &quot;databaseVersion&quot;: &quot;A String&quot;, # The database engine type and version. The *databaseVersion* field cannot be changed after instance creation. MySQL instances: *MYSQL_8_0*, *MYSQL_5_7* (default), or *MYSQL_5_6*. PostgreSQL instances: *POSTGRES_9_6*, *POSTGRES_10*, *POSTGRES_11*, *POSTGRES_12*, *POSTGRES_13* (default). SQL Server instances: *SQLSERVER_2019_STANDARD*, *SQLSERVER_2019_ENTERPRISE*, *SQLSERVER_2019_EXPRESS*, or *SQLSERVER_2019_WEB*, *SQLSERVER_2017_STANDARD* (default), *SQLSERVER_2017_ENTERPRISE*, *SQLSERVER_2017_EXPRESS*, or *SQLSERVER_2017_WEB*.
+  &quot;diskEncryptionConfiguration&quot;: { # Disk encryption configuration for an instance. # Disk encryption configuration specific to an instance.
     &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#diskEncryptionConfiguration*.
     &quot;kmsKeyName&quot;: &quot;A String&quot;, # Resource name of KMS key for disk encryption
   },
-  &quot;diskEncryptionStatus&quot;: { # Disk encryption status for an instance. # Disk encryption status specific to an instance. Applies only to Second Generation instances.
+  &quot;diskEncryptionStatus&quot;: { # Disk encryption status for an instance. # Disk encryption status specific to an instance.
     &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#diskEncryptionStatus*.
     &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # KMS key version used to encrypt the Cloud SQL instance resource
   },
   &quot;etag&quot;: &quot;A String&quot;, # This field is deprecated and will be removed from a future version of the API. Use the *settings.settingsVersion* field instead.
-  &quot;failoverReplica&quot;: { # The name and status of the failover replica. This property is applicable only to Second Generation instances.
+  &quot;failoverReplica&quot;: { # The name and status of the failover replica.
     &quot;available&quot;: True or False, # The availability status of the failover replica. A false status indicates that the failover replica is out of sync. The primary instance can only failover to the failover replica when the status is true.
-    &quot;name&quot;: &quot;A String&quot;, # The name of the failover replica. If specified at instance creation, a failover replica is created for the instance. The name doesn&#x27;t include the project ID. This property is applicable only to Second Generation instances.
+    &quot;name&quot;: &quot;A String&quot;, # The name of the failover replica. If specified at instance creation, a failover replica is created for the instance. The name doesn&#x27;t include the project ID.
   },
   &quot;gceZone&quot;: &quot;A String&quot;, # The Compute Engine zone that the instance is currently serving from. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary zone.
   &quot;instanceType&quot;: &quot;A String&quot;, # The instance type. This can be one of the following. *CLOUD_SQL_INSTANCE*: A Cloud SQL instance that is not replicating from a primary instance. *ON_PREMISES_INSTANCE*: An instance running on the customer&#x27;s premises. *READ_REPLICA_INSTANCE*: A Cloud SQL instance configured as a read-replica.
@@ -1709,7 +1709,7 @@
     &quot;dataDiskType&quot;: &quot;A String&quot;, # The type of data disk: PD_SSD (default) or PD_HDD. Not used for First Generation instances.
     &quot;databaseFlags&quot;: [ # The database flags passed to the instance at startup.
       { # Database flags for Cloud SQL instances.
-        &quot;name&quot;: &quot;A String&quot;, # The name of the flag. These flags are passed at instance startup, so include both server options and system variables for MySQL. Flags are specified with underscores, not hyphens. For more information, see Configuring Database Flags in the Cloud SQL documentation.
+        &quot;name&quot;: &quot;A String&quot;, # The name of the flag. These flags are passed at instance startup, so include both server options and system variables. Flags are specified with underscores, not hyphens. For more information, see Configuring Database Flags in the Cloud SQL documentation.
         &quot;value&quot;: &quot;A String&quot;, # The value of the flag. Booleans are set to *on* for true and *off* for false. This field must be omitted if the flag doesn&#x27;t take a value.
       },
     ],
@@ -1723,12 +1723,12 @@
     ],
     &quot;insightsConfig&quot;: { # Insights configuration. This specifies when Cloud SQL Insights feature is enabled and optional configuration. # Insights configuration, for now relevant only for Postgres.
       &quot;queryInsightsEnabled&quot;: True or False, # Whether Query Insights feature is enabled.
-      &quot;queryPlansPerMinute&quot;: 42, # Number of query plans generated by Insights per minute. Default is 5. Changing this will restart the database.
+      &quot;queryPlansPerMinute&quot;: 42, # Number of query execution plans captured by Insights per minute for all queries combined. Default is 5.
       &quot;queryStringLength&quot;: 42, # Maximum query length stored in bytes. Default value: 1024 bytes. Range: 256-4500 bytes. Query length more than this field value will be truncated to this value. When unset, query length will be the default value. Changing query length will restart the database.
       &quot;recordApplicationTags&quot;: True or False, # Whether Query Insights will record application tags from query when enabled.
       &quot;recordClientAddress&quot;: True or False, # Whether Query Insights will record client address when enabled.
     },
-    &quot;ipConfiguration&quot;: { # IP Management configuration. # The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled for Second Generation instances.
+    &quot;ipConfiguration&quot;: { # IP Management configuration. # The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled.
       &quot;authorizedNetworks&quot;: [ # The list of external networks that are allowed to connect to the instance using the IP. In &#x27;CIDR&#x27; notation, also known as &#x27;slash&#x27; notation (for example: *192.168.100.0/24*).
         { # An entry for an Access Control list.
           &quot;expirationTime&quot;: &quot;A String&quot;, # The time when this access control entry expires in RFC 3339 format, for example *2012-11-15T16:19:00.094Z*.
@@ -2583,19 +2583,19 @@
   &quot;backendType&quot;: &quot;A String&quot;, #  *SECOND_GEN*: Cloud SQL database instance. *EXTERNAL*: A database server that is not managed by Google. This property is read-only; use the *tier* property in the *settings* object to determine the database type.
   &quot;connectionName&quot;: &quot;A String&quot;, # Connection name of the Cloud SQL instance used in connection strings.
   &quot;currentDiskSize&quot;: &quot;A String&quot;, # The current disk usage of the instance in bytes. This property has been deprecated. Use the &quot;cloudsql.googleapis.com/database/disk/bytes_used&quot; metric in Cloud Monitoring API instead. Please see this announcement for details.
-  &quot;databaseVersion&quot;: &quot;A String&quot;, # The database engine type and version. The *databaseVersion* field cannot be changed after instance creation. MySQL instances: *MYSQL_8_0*, *MYSQL_5_7* (default), or *MYSQL_5_6*. PostgreSQL instances: *POSTGRES_9_6*, *POSTGRES_10*, *POSTGRES_11*, *POSTGRES_12*, or *POSTGRES_13* (default). SQL Server instances: *SQLSERVER_2017_STANDARD* (default), *SQLSERVER_2017_ENTERPRISE*, *SQLSERVER_2017_EXPRESS*, or *SQLSERVER_2017_WEB*.
-  &quot;diskEncryptionConfiguration&quot;: { # Disk encryption configuration for an instance. # Disk encryption configuration specific to an instance. Applies only to Second Generation instances.
+  &quot;databaseVersion&quot;: &quot;A String&quot;, # The database engine type and version. The *databaseVersion* field cannot be changed after instance creation. MySQL instances: *MYSQL_8_0*, *MYSQL_5_7* (default), or *MYSQL_5_6*. PostgreSQL instances: *POSTGRES_9_6*, *POSTGRES_10*, *POSTGRES_11*, *POSTGRES_12*, *POSTGRES_13* (default). SQL Server instances: *SQLSERVER_2019_STANDARD*, *SQLSERVER_2019_ENTERPRISE*, *SQLSERVER_2019_EXPRESS*, or *SQLSERVER_2019_WEB*, *SQLSERVER_2017_STANDARD* (default), *SQLSERVER_2017_ENTERPRISE*, *SQLSERVER_2017_EXPRESS*, or *SQLSERVER_2017_WEB*.
+  &quot;diskEncryptionConfiguration&quot;: { # Disk encryption configuration for an instance. # Disk encryption configuration specific to an instance.
     &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#diskEncryptionConfiguration*.
     &quot;kmsKeyName&quot;: &quot;A String&quot;, # Resource name of KMS key for disk encryption
   },
-  &quot;diskEncryptionStatus&quot;: { # Disk encryption status for an instance. # Disk encryption status specific to an instance. Applies only to Second Generation instances.
+  &quot;diskEncryptionStatus&quot;: { # Disk encryption status for an instance. # Disk encryption status specific to an instance.
     &quot;kind&quot;: &quot;A String&quot;, # This is always *sql#diskEncryptionStatus*.
     &quot;kmsKeyVersionName&quot;: &quot;A String&quot;, # KMS key version used to encrypt the Cloud SQL instance resource
   },
   &quot;etag&quot;: &quot;A String&quot;, # This field is deprecated and will be removed from a future version of the API. Use the *settings.settingsVersion* field instead.
-  &quot;failoverReplica&quot;: { # The name and status of the failover replica. This property is applicable only to Second Generation instances.
+  &quot;failoverReplica&quot;: { # The name and status of the failover replica.
     &quot;available&quot;: True or False, # The availability status of the failover replica. A false status indicates that the failover replica is out of sync. The primary instance can only failover to the failover replica when the status is true.
-    &quot;name&quot;: &quot;A String&quot;, # The name of the failover replica. If specified at instance creation, a failover replica is created for the instance. The name doesn&#x27;t include the project ID. This property is applicable only to Second Generation instances.
+    &quot;name&quot;: &quot;A String&quot;, # The name of the failover replica. If specified at instance creation, a failover replica is created for the instance. The name doesn&#x27;t include the project ID.
   },
   &quot;gceZone&quot;: &quot;A String&quot;, # The Compute Engine zone that the instance is currently serving from. This value could be different from the zone that was specified when the instance was created if the instance has failed over to its secondary zone.
   &quot;instanceType&quot;: &quot;A String&quot;, # The instance type. This can be one of the following. *CLOUD_SQL_INSTANCE*: A Cloud SQL instance that is not replicating from a primary instance. *ON_PREMISES_INSTANCE*: An instance running on the customer&#x27;s premises. *READ_REPLICA_INSTANCE*: A Cloud SQL instance configured as a read-replica.
@@ -2699,7 +2699,7 @@
     &quot;dataDiskType&quot;: &quot;A String&quot;, # The type of data disk: PD_SSD (default) or PD_HDD. Not used for First Generation instances.
     &quot;databaseFlags&quot;: [ # The database flags passed to the instance at startup.
       { # Database flags for Cloud SQL instances.
-        &quot;name&quot;: &quot;A String&quot;, # The name of the flag. These flags are passed at instance startup, so include both server options and system variables for MySQL. Flags are specified with underscores, not hyphens. For more information, see Configuring Database Flags in the Cloud SQL documentation.
+        &quot;name&quot;: &quot;A String&quot;, # The name of the flag. These flags are passed at instance startup, so include both server options and system variables. Flags are specified with underscores, not hyphens. For more information, see Configuring Database Flags in the Cloud SQL documentation.
         &quot;value&quot;: &quot;A String&quot;, # The value of the flag. Booleans are set to *on* for true and *off* for false. This field must be omitted if the flag doesn&#x27;t take a value.
       },
     ],
@@ -2713,12 +2713,12 @@
     ],
     &quot;insightsConfig&quot;: { # Insights configuration. This specifies when Cloud SQL Insights feature is enabled and optional configuration. # Insights configuration, for now relevant only for Postgres.
       &quot;queryInsightsEnabled&quot;: True or False, # Whether Query Insights feature is enabled.
-      &quot;queryPlansPerMinute&quot;: 42, # Number of query plans generated by Insights per minute. Default is 5. Changing this will restart the database.
+      &quot;queryPlansPerMinute&quot;: 42, # Number of query execution plans captured by Insights per minute for all queries combined. Default is 5.
       &quot;queryStringLength&quot;: 42, # Maximum query length stored in bytes. Default value: 1024 bytes. Range: 256-4500 bytes. Query length more than this field value will be truncated to this value. When unset, query length will be the default value. Changing query length will restart the database.
       &quot;recordApplicationTags&quot;: True or False, # Whether Query Insights will record application tags from query when enabled.
       &quot;recordClientAddress&quot;: True or False, # Whether Query Insights will record client address when enabled.
     },
-    &quot;ipConfiguration&quot;: { # IP Management configuration. # The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled for Second Generation instances.
+    &quot;ipConfiguration&quot;: { # IP Management configuration. # The settings for IP Management. This allows to enable or disable the instance IP and manage which external networks can connect to the instance. The IPv4 address cannot be disabled.
       &quot;authorizedNetworks&quot;: [ # The list of external networks that are allowed to connect to the instance using the IP. In &#x27;CIDR&#x27; notation, also known as &#x27;slash&#x27; notation (for example: *192.168.100.0/24*).
         { # An entry for an Access Control list.
           &quot;expirationTime&quot;: &quot;A String&quot;, # The time when this access control entry expires in RFC 3339 format, for example *2012-11-15T16:19:00.094Z*.
diff --git a/docs/dyn/tagmanager_v2.accounts.containers.workspaces.built_in_variables.html b/docs/dyn/tagmanager_v2.accounts.containers.workspaces.built_in_variables.html
index 3b55984..89c8964 100644
--- a/docs/dyn/tagmanager_v2.accounts.containers.workspaces.built_in_variables.html
+++ b/docs/dyn/tagmanager_v2.accounts.containers.workspaces.built_in_variables.html
@@ -216,6 +216,9 @@
       requestMethod - 
       clientName - 
       queryString - 
+      serverPageLocationUrl - 
+      serverPageLocationPath - 
+      serverPageLocationHostname - 
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -356,6 +359,9 @@
       requestMethod - 
       clientName - 
       queryString - 
+      serverPageLocationUrl - 
+      serverPageLocationPath - 
+      serverPageLocationHostname - 
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -525,6 +531,9 @@
       requestMethod - 
       clientName - 
       queryString - 
+      serverPageLocationUrl - 
+      serverPageLocationPath - 
+      serverPageLocationHostname - 
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
