<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="cloudsearch_v1.html">Cloud Search API</a> . <a href="cloudsearch_v1.query.html">query</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="cloudsearch_v1.query.sources.html">sources()</a></code>
</p>
<p class="firstline">Returns the sources 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="#removeActivity">removeActivity(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Provides functionality to remove logged activity for a user. Currently to be used only for Chat 1p clients **Note:** This API requires a standard end user account to execute. A service account can't perform Remove Activity requests directly; to use a service account to perform queries, set up [Google Workspace domain-wide delegation of authority](https://developers.google.com/cloud-search/docs/guides/delegation/).</p>
<p class="toc_element">
  <code><a href="#search">search(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">The Cloud Search Query API provides the search method, which returns the most relevant results from a user query. The results can come from Google Workspace apps, such as Gmail or Google Drive, or they can come from data that you have indexed from a third party. **Note:** This API requires a standard end user account to execute. A service account can't perform Query API requests directly; to use a service account to perform queries, set up [Google Workspace domain-wide delegation of authority](https://developers.google.com/cloud-search/docs/guides/delegation/).</p>
<p class="toc_element">
  <code><a href="#suggest">suggest(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Provides suggestions for autocompleting the query. **Note:** This API requires a standard end user account to execute. A service account can't perform Query API requests directly; to use a service account to perform queries, set up [Google Workspace domain-wide delegation of authority](https://developers.google.com/cloud-search/docs/guides/delegation/).</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="removeActivity">removeActivity(body=None, x__xgafv=None)</code>
  <pre>Provides functionality to remove logged activity for a user. Currently to be used only for Chat 1p clients **Note:** This API requires a standard end user account to execute. A service account can&#x27;t perform Remove Activity requests directly; to use a service account to perform queries, set up [Google Workspace domain-wide delegation of authority](https://developers.google.com/cloud-search/docs/guides/delegation/).

Args:
  body: object, The request body.
    The object takes the form of:

{ # Remove Logged Activity Request.
  &quot;requestOptions&quot;: { # Shared request options for all RPC methods. # Request options, such as the search application and clientId.
    &quot;debugOptions&quot;: { # Shared request debug options for all cloudsearch RPC methods. # Debug options of the request
      &quot;enableDebugging&quot;: True or False, # If you are asked by Google to help with debugging, set this field. Otherwise, ignore this field.
    },
    &quot;languageCode&quot;: &quot;A String&quot;, # The BCP-47 language code, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier. For translations. Set this field using the language set in browser or for the page. In the event that the user&#x27;s language preference is known, set this field to the known user language. When specified, the documents in search results are biased towards the specified language. The Suggest API uses this field as a hint to make better third-party autocomplete predictions.
    &quot;searchApplicationId&quot;: &quot;A String&quot;, # The ID generated when you create a search application using the [admin console](https://support.google.com/a/answer/9043922).
    &quot;timeZone&quot;: &quot;A String&quot;, # Current user&#x27;s time zone id, such as &quot;America/Los_Angeles&quot; or &quot;Australia/Sydney&quot;. These IDs are defined by [Unicode Common Locale Data Repository (CLDR)](http://cldr.unicode.org/) project, and currently available in the file [timezone.xml](http://unicode.org/repos/cldr/trunk/common/bcp47/timezone.xml). This field is used to correctly interpret date and time queries. If this field is not specified, the default time zone (UTC) is used.
  },
  &quot;userActivity&quot;: { # User&#x27;s single or bulk query activity. This can be a logging query or deletion query. # User Activity containing the data to be deleted.
    &quot;queryActivity&quot;: { # Details about a user&#x27;s query activity. # Contains data which needs to be logged/removed.
      &quot;query&quot;: &quot;A String&quot;, # User input query to be logged/removed.
    },
  },
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Remove Logged Activity Response. will return an empty response for now. Will be revisited in later phases.
}</pre>
</div>

<div class="method">
    <code class="details" id="search">search(body=None, x__xgafv=None)</code>
  <pre>The Cloud Search Query API provides the search method, which returns the most relevant results from a user query. The results can come from Google Workspace apps, such as Gmail or Google Drive, or they can come from data that you have indexed from a third party. **Note:** This API requires a standard end user account to execute. A service account can&#x27;t perform Query API requests directly; to use a service account to perform queries, set up [Google Workspace domain-wide delegation of authority](https://developers.google.com/cloud-search/docs/guides/delegation/).

Args:
  body: object, The request body.
    The object takes the form of:

{ # The search API request.
  &quot;contextAttributes&quot;: [ # Context attributes for the request which will be used to adjust ranking of search results. The maximum number of elements is 10.
    { # A named attribute associated with an item which can be used for influencing the ranking of the item based on the context in the request.
      &quot;name&quot;: &quot;A String&quot;, # The name of the attribute. It should not be empty. The maximum length is 32 characters. The name must start with a letter and can only contain letters (A-Z, a-z) or numbers (0-9). The name will be normalized (lower-cased) before being matched.
      &quot;values&quot;: [ # Text values of the attribute. The maximum number of elements is 10. The maximum length of an element in the array is 32 characters. The value will be normalized (lower-cased) before being matched.
        &quot;A String&quot;,
      ],
    },
  ],
  &quot;dataSourceRestrictions&quot;: [ # The sources to use for querying. If not specified, all data sources from the current search application are used.
    { # Restriction on Datasource.
      &quot;filterOptions&quot;: [ # Filter options restricting the results. If multiple filters are present, they are grouped by object type before joining. Filters with the same object type are joined conjunctively, then the resulting expressions are joined disjunctively. The maximum number of elements is 20. NOTE: Suggest API supports only few filters at the moment: &quot;objecttype&quot;, &quot;type&quot; and &quot;mimetype&quot;. For now, schema specific filters cannot be used to filter suggestions.
        { # Filter options to be applied on query.
          &quot;filter&quot;: { # A generic way of expressing filters in a query, which supports two approaches: **1. Setting a ValueFilter.** The name must match an operator_name defined in the schema for your data source. **2. Setting a CompositeFilter.** The filters are evaluated using the logical operator. The top-level operators can only be either an AND or a NOT. AND can appear only at the top-most level. OR can appear only under a top-level AND. # Generic filter to restrict the search, such as `lang:en`, `site:xyz`.
            &quot;compositeFilter&quot;: {
              &quot;logicOperator&quot;: &quot;A String&quot;, # The logic operator of the sub filter.
              &quot;subFilters&quot;: [ # Sub filters.
                # Object with schema name: Filter
              ],
            },
            &quot;valueFilter&quot;: {
              &quot;operatorName&quot;: &quot;A String&quot;, # The `operator_name` applied to the query, such as *price_greater_than*. The filter can work against both types of filters defined in the schema for your data source: 1. `operator_name`, where the query filters results by the property that matches the value. 2. `greater_than_operator_name` or `less_than_operator_name` in your schema. The query filters the results for the property values that are greater than or less than the supplied value in the query.
              &quot;value&quot;: { # Definition of a single value with generic type. # The value to be compared with.
                &quot;booleanValue&quot;: True or False,
                &quot;dateValue&quot;: { # Represents a whole calendar date, for example a date of birth. The time of day and time zone are either specified elsewhere or are not significant. The date is relative to the [Proleptic Gregorian Calendar](https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar). The date must be a valid calendar date between the year 1 and 9999.
                  &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month.
                  &quot;month&quot;: 42, # Month of date. Must be from 1 to 12.
                  &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999.
                },
                &quot;doubleValue&quot;: 3.14,
                &quot;integerValue&quot;: &quot;A String&quot;,
                &quot;stringValue&quot;: &quot;A String&quot;,
                &quot;timestampValue&quot;: &quot;A String&quot;,
              },
            },
          },
          &quot;objectType&quot;: &quot;A String&quot;, # If object_type is set, only objects of that type are returned. This should correspond to the name of the object that was registered within the definition of schema. The maximum length is 256 characters.
        },
      ],
      &quot;source&quot;: { # Defines sources for the suggest/search APIs. # The source of restriction.
        &quot;name&quot;: &quot;A String&quot;, # Source name for content indexed by the Indexing API.
        &quot;predefinedSource&quot;: &quot;A String&quot;, # Predefined content source for Google Apps.
      },
    },
  ],
  &quot;facetOptions&quot;: [
    { # Specifies operators to return facet results for. There will be one FacetResult for every source_name/object_type/operator_name combination.
      &quot;integerFacetingOptions&quot;: { # Used to specify integer faceting options. # If set, describes integer faceting options for the given integer property. The corresponding integer property in the schema should be marked isFacetable. The number of buckets returned would be minimum of this and num_facet_buckets.
        &quot;integerBuckets&quot;: [ # Buckets for given integer values should be in strictly ascending order. For example, if values supplied are (1,5,10,100), the following facet buckets will be formed {&lt;1, [1,5), [5-10), [10-100), &gt;=100}.
          &quot;A String&quot;,
        ],
      },
      &quot;numFacetBuckets&quot;: 42, # Maximum number of facet buckets that should be returned for this facet. Defaults to 10. Maximum value is 100.
      &quot;objectType&quot;: &quot;A String&quot;, # If object_type is set, only those objects of that type will be used to compute facets. If empty, then all objects will be used to compute facets.
      &quot;operatorName&quot;: &quot;A String&quot;, # The name of the operator chosen for faceting. @see cloudsearch.SchemaPropertyOptions
      &quot;sourceName&quot;: &quot;A String&quot;, # Source name to facet on. Format: datasources/{source_id} If empty, all data sources will be used.
    },
  ],
  &quot;pageSize&quot;: 42, # Maximum number of search results to return in one page. Valid values are between 1 and 100, inclusive. Default value is 10. Minimum value is 50 when results beyond 2000 are requested.
  &quot;query&quot;: &quot;A String&quot;, # The raw query string. See supported search operators in the [Narrow your search with operators](https://support.google.com/cloudsearch/answer/6172299)
  &quot;queryInterpretationOptions&quot;: { # Options to interpret user query. # Options to interpret the user query.
    &quot;disableNlInterpretation&quot;: True or False, # Flag to disable natural language (NL) interpretation of queries. Default is false, Set to true to disable natural language interpretation. NL interpretation only applies to predefined datasources.
    &quot;disableSupplementalResults&quot;: True or False, # Use this flag to disable supplemental results for a query. Supplemental results setting chosen at SearchApplication level will take precedence if set to True.
    &quot;enableVerbatimMode&quot;: True or False, # Enable this flag to turn off all internal optimizations like natural language (NL) interpretation of queries, supplemental result retrieval, and usage of synonyms including custom ones. Nl interpretation will be disabled if either one of the two flags is true.
  },
  &quot;requestOptions&quot;: { # Shared request options for all RPC methods. # Request options, such as the search application and user timezone.
    &quot;debugOptions&quot;: { # Shared request debug options for all cloudsearch RPC methods. # Debug options of the request
      &quot;enableDebugging&quot;: True or False, # If you are asked by Google to help with debugging, set this field. Otherwise, ignore this field.
    },
    &quot;languageCode&quot;: &quot;A String&quot;, # The BCP-47 language code, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier. For translations. Set this field using the language set in browser or for the page. In the event that the user&#x27;s language preference is known, set this field to the known user language. When specified, the documents in search results are biased towards the specified language. The Suggest API uses this field as a hint to make better third-party autocomplete predictions.
    &quot;searchApplicationId&quot;: &quot;A String&quot;, # The ID generated when you create a search application using the [admin console](https://support.google.com/a/answer/9043922).
    &quot;timeZone&quot;: &quot;A String&quot;, # Current user&#x27;s time zone id, such as &quot;America/Los_Angeles&quot; or &quot;Australia/Sydney&quot;. These IDs are defined by [Unicode Common Locale Data Repository (CLDR)](http://cldr.unicode.org/) project, and currently available in the file [timezone.xml](http://unicode.org/repos/cldr/trunk/common/bcp47/timezone.xml). This field is used to correctly interpret date and time queries. If this field is not specified, the default time zone (UTC) is used.
  },
  &quot;sortOptions&quot;: { # The options for sorting the search results
    &quot;operatorName&quot;: &quot;A String&quot;, # The name of the operator corresponding to the field to sort on. The corresponding property must be marked as sortable.
    &quot;sortOrder&quot;: &quot;A String&quot;, # Ascending is the default sort order
  },
  &quot;start&quot;: 42, # Starting index of the results.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The search API response.
  &quot;debugInfo&quot;: { # Debugging information about the response. # Debugging information about the response.
    &quot;formattedDebugInfo&quot;: &quot;A String&quot;, # General debug info formatted for display.
  },
  &quot;errorInfo&quot;: { # Error information about the response. # Error information about the response.
    &quot;errorMessages&quot;: [
      { # Error message per source response.
        &quot;errorMessage&quot;: &quot;A String&quot;,
        &quot;source&quot;: { # Defines sources for the suggest/search APIs.
          &quot;name&quot;: &quot;A String&quot;, # Source name for content indexed by the Indexing API.
          &quot;predefinedSource&quot;: &quot;A String&quot;, # Predefined content source for Google Apps.
        },
      },
    ],
  },
  &quot;facetResults&quot;: [ # Repeated facet results.
    { # Source specific facet response
      &quot;buckets&quot;: [ # FacetBuckets for values in response containing at least a single result with the corresponding filter.
        { # A bucket in a facet is the basic unit of operation. A bucket can comprise either a single value OR a contiguous range of values, depending on the type of the field bucketed. FacetBucket is currently used only for returning the response object.
          &quot;count&quot;: 42, # Number of results that match the bucket value. Counts are only returned for searches when count accuracy is ensured. Cloud Search does not guarantee facet counts for any query and facet counts might be present only intermittently, even for identical queries. Do not build dependencies on facet count existence; instead use facet ount percentages which are always returned.
          &quot;filter&quot;: { # A generic way of expressing filters in a query, which supports two approaches: **1. Setting a ValueFilter.** The name must match an operator_name defined in the schema for your data source. **2. Setting a CompositeFilter.** The filters are evaluated using the logical operator. The top-level operators can only be either an AND or a NOT. AND can appear only at the top-most level. OR can appear only under a top-level AND. # Filter to be passed in the search request if the corresponding bucket is selected.
            &quot;compositeFilter&quot;: {
              &quot;logicOperator&quot;: &quot;A String&quot;, # The logic operator of the sub filter.
              &quot;subFilters&quot;: [ # Sub filters.
                # Object with schema name: Filter
              ],
            },
            &quot;valueFilter&quot;: {
              &quot;operatorName&quot;: &quot;A String&quot;, # The `operator_name` applied to the query, such as *price_greater_than*. The filter can work against both types of filters defined in the schema for your data source: 1. `operator_name`, where the query filters results by the property that matches the value. 2. `greater_than_operator_name` or `less_than_operator_name` in your schema. The query filters the results for the property values that are greater than or less than the supplied value in the query.
              &quot;value&quot;: { # Definition of a single value with generic type. # The value to be compared with.
                &quot;booleanValue&quot;: True or False,
                &quot;dateValue&quot;: { # Represents a whole calendar date, for example a date of birth. The time of day and time zone are either specified elsewhere or are not significant. The date is relative to the [Proleptic Gregorian Calendar](https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar). The date must be a valid calendar date between the year 1 and 9999.
                  &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month.
                  &quot;month&quot;: 42, # Month of date. Must be from 1 to 12.
                  &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999.
                },
                &quot;doubleValue&quot;: 3.14,
                &quot;integerValue&quot;: &quot;A String&quot;,
                &quot;stringValue&quot;: &quot;A String&quot;,
                &quot;timestampValue&quot;: &quot;A String&quot;,
              },
            },
          },
          &quot;percentage&quot;: 42, # Percent of results that match the bucket value. The returned value is between (0-100], and is rounded down to an integer if fractional. If the value is not explicitly returned, it represents a percentage value that rounds to 0. Percentages are returned for all searches, but are an estimate. Because percentages are always returned, you should render percentages instead of counts.
          &quot;value&quot;: { # Definition of a single value with generic type.
            &quot;booleanValue&quot;: True or False,
            &quot;dateValue&quot;: { # Represents a whole calendar date, for example a date of birth. The time of day and time zone are either specified elsewhere or are not significant. The date is relative to the [Proleptic Gregorian Calendar](https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar). The date must be a valid calendar date between the year 1 and 9999.
              &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month.
              &quot;month&quot;: 42, # Month of date. Must be from 1 to 12.
              &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999.
            },
            &quot;doubleValue&quot;: 3.14,
            &quot;integerValue&quot;: &quot;A String&quot;,
            &quot;stringValue&quot;: &quot;A String&quot;,
            &quot;timestampValue&quot;: &quot;A String&quot;,
          },
        },
      ],
      &quot;objectType&quot;: &quot;A String&quot;, # Object type for which facet results are returned. Can be empty.
      &quot;operatorName&quot;: &quot;A String&quot;, # The name of the operator chosen for faceting. @see cloudsearch.SchemaPropertyOptions
      &quot;sourceName&quot;: &quot;A String&quot;, # Source name for which facet results are returned. Will not be empty.
    },
  ],
  &quot;hasMoreResults&quot;: True or False, # Whether there are more search results matching the query.
  &quot;queryInterpretation&quot;: { # Query interpretation result for user query. Empty if query interpretation is disabled.
    &quot;interpretationType&quot;: &quot;A String&quot;,
    &quot;interpretedQuery&quot;: &quot;A String&quot;, # The interpretation of the query used in search. For example, queries with natural language intent like &quot;email from john&quot; will be interpreted as &quot;from:john source:mail&quot;. This field will not be filled when the reason is NOT_ENOUGH_RESULTS_FOUND_FOR_USER_QUERY.
    &quot;reason&quot;: &quot;A String&quot;, # The reason for interpretation of the query. This field will not be UNSPECIFIED if the interpretation type is not NONE.
  },
  &quot;resultCountEstimate&quot;: &quot;A String&quot;, # The estimated result count for this query.
  &quot;resultCountExact&quot;: &quot;A String&quot;, # The exact result count for this query.
  &quot;resultCounts&quot;: { # Result count information # Expanded result count information.
    &quot;sourceResultCounts&quot;: [ # Result count information for each source with results.
      { # Per source result count information.
        &quot;hasMoreResults&quot;: True or False, # Whether there are more search results for this source.
        &quot;resultCountEstimate&quot;: &quot;A String&quot;, # The estimated result count for this source.
        &quot;resultCountExact&quot;: &quot;A String&quot;, # The exact result count for this source.
        &quot;source&quot;: { # Defines sources for the suggest/search APIs. # The source the result count information is associated with.
          &quot;name&quot;: &quot;A String&quot;, # Source name for content indexed by the Indexing API.
          &quot;predefinedSource&quot;: &quot;A String&quot;, # Predefined content source for Google Apps.
        },
      },
    ],
  },
  &quot;results&quot;: [ # Results from a search query.
    { # Results containing indexed information for a document.
      &quot;clusteredResults&quot;: [ # If source is clustered, provide list of clustered results. There will only be one level of clustered results. If current source is not enabled for clustering, this field will be empty.
        # Object with schema name: SearchResult
      ],
      &quot;debugInfo&quot;: { # Debugging information about the result. # Debugging information about this search result.
        &quot;formattedDebugInfo&quot;: &quot;A String&quot;, # General debug info formatted for display.
      },
      &quot;metadata&quot;: { # Metadata of a matched search result. # Metadata of the search result.
        &quot;createTime&quot;: &quot;A String&quot;, # The creation time for this document or object in the search result.
        &quot;displayOptions&quot;: { # Options that specify how to display a structured data search result.
          &quot;metalines&quot;: [ # The metalines content to be displayed with the result.
            { # The collection of fields that make up a displayed line
              &quot;fields&quot;: [
                { # Display Fields for Search Results
                  &quot;label&quot;: &quot;A String&quot;, # The display label for the property.
                  &quot;operatorName&quot;: &quot;A String&quot;, # The operator name of the property.
                  &quot;property&quot;: { # A typed name-value pair for structured data. The type of the value should be the same as the registered type for the `name` property in the object definition of `objectType`. # The name value pair for the property.
                    &quot;booleanValue&quot;: True or False,
                    &quot;dateValues&quot;: { # List of date values.
                      &quot;values&quot;: [
                        { # Represents a whole calendar date, for example a date of birth. The time of day and time zone are either specified elsewhere or are not significant. The date is relative to the [Proleptic Gregorian Calendar](https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar). The date must be a valid calendar date between the year 1 and 9999.
                          &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month.
                          &quot;month&quot;: 42, # Month of date. Must be from 1 to 12.
                          &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999.
                        },
                      ],
                    },
                    &quot;doubleValues&quot;: { # List of double values.
                      &quot;values&quot;: [
                        3.14,
                      ],
                    },
                    &quot;enumValues&quot;: { # List of enum values.
                      &quot;values&quot;: [ # The maximum allowable length for string values is 32 characters.
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;htmlValues&quot;: { # List of html values.
                      &quot;values&quot;: [ # The maximum allowable length for html values is 2048 characters.
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;integerValues&quot;: { # List of integer values.
                      &quot;values&quot;: [
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;name&quot;: &quot;A String&quot;, # The name of the property. This name should correspond to the name of the property that was registered for object definition in the schema. The maximum allowable length for this property is 256 characters.
                    &quot;objectValues&quot;: { # List of object values.
                      &quot;values&quot;: [
                        # Object with schema name: StructuredDataObject
                      ],
                    },
                    &quot;textValues&quot;: { # List of text values.
                      &quot;values&quot;: [ # The maximum allowable length for text values is 2048 characters.
                        &quot;A String&quot;,
                      ],
                    },
                    &quot;timestampValues&quot;: { # List of timestamp values.
                      &quot;values&quot;: [
                        &quot;A String&quot;,
                      ],
                    },
                  },
                },
              ],
            },
          ],
          &quot;objectTypeLabel&quot;: &quot;A String&quot;, # The display label for the object.
        },
        &quot;fields&quot;: [ # Indexed fields in structured data, returned as a generic named property.
          { # A typed name-value pair for structured data. The type of the value should be the same as the registered type for the `name` property in the object definition of `objectType`.
            &quot;booleanValue&quot;: True or False,
            &quot;dateValues&quot;: { # List of date values.
              &quot;values&quot;: [
                { # Represents a whole calendar date, for example a date of birth. The time of day and time zone are either specified elsewhere or are not significant. The date is relative to the [Proleptic Gregorian Calendar](https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar). The date must be a valid calendar date between the year 1 and 9999.
                  &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month.
                  &quot;month&quot;: 42, # Month of date. Must be from 1 to 12.
                  &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999.
                },
              ],
            },
            &quot;doubleValues&quot;: { # List of double values.
              &quot;values&quot;: [
                3.14,
              ],
            },
            &quot;enumValues&quot;: { # List of enum values.
              &quot;values&quot;: [ # The maximum allowable length for string values is 32 characters.
                &quot;A String&quot;,
              ],
            },
            &quot;htmlValues&quot;: { # List of html values.
              &quot;values&quot;: [ # The maximum allowable length for html values is 2048 characters.
                &quot;A String&quot;,
              ],
            },
            &quot;integerValues&quot;: { # List of integer values.
              &quot;values&quot;: [
                &quot;A String&quot;,
              ],
            },
            &quot;name&quot;: &quot;A String&quot;, # The name of the property. This name should correspond to the name of the property that was registered for object definition in the schema. The maximum allowable length for this property is 256 characters.
            &quot;objectValues&quot;: { # List of object values.
              &quot;values&quot;: [
                # Object with schema name: StructuredDataObject
              ],
            },
            &quot;textValues&quot;: { # List of text values.
              &quot;values&quot;: [ # The maximum allowable length for text values is 2048 characters.
                &quot;A String&quot;,
              ],
            },
            &quot;timestampValues&quot;: { # List of timestamp values.
              &quot;values&quot;: [
                &quot;A String&quot;,
              ],
            },
          },
        ],
        &quot;mimeType&quot;: &quot;A String&quot;, # Mime type of the search result.
        &quot;objectType&quot;: &quot;A String&quot;, # Object type of the search result.
        &quot;owner&quot;: { # Object to represent a person. # Owner (usually creator) of the document or object of the search result.
          &quot;emailAddresses&quot;: [ # The person&#x27;s email addresses
            { # A person&#x27;s email address.
              &quot;customType&quot;: &quot;A String&quot;, # If the value of type is custom, this property contains the custom type string.
              &quot;emailAddress&quot;: &quot;A String&quot;, # The email address.
              &quot;emailUrl&quot;: &quot;A String&quot;, # The URL to send email.
              &quot;primary&quot;: True or False, # Indicates if this is the user&#x27;s primary email. Only one entry can be marked as primary.
              &quot;type&quot;: &quot;A String&quot;, # The type of the email account. Acceptable values are: &quot;custom&quot;, &quot;home&quot;, &quot;other&quot;, &quot;work&quot;.
            },
          ],
          &quot;name&quot;: &quot;A String&quot;, # The resource name of the person to provide information about. See [`People.get`](https://developers.google.com/people/api/rest/v1/people/get) from the Google People API.
          &quot;obfuscatedId&quot;: &quot;A String&quot;, # Obfuscated ID of a person.
          &quot;personNames&quot;: [ # The person&#x27;s name
            { # A person&#x27;s name.
              &quot;displayName&quot;: &quot;A String&quot;, # The read-only display name formatted according to the locale specified by the viewer&#x27;s account or the `Accept-Language` HTTP header.
            },
          ],
          &quot;phoneNumbers&quot;: [ # The person&#x27;s phone numbers
            { # A person&#x27;s Phone Number
              &quot;phoneNumber&quot;: &quot;A String&quot;, # The phone number of the person.
              &quot;type&quot;: &quot;A String&quot;,
            },
          ],
          &quot;photos&quot;: [ # A person&#x27;s read-only photo. A picture shown next to the person&#x27;s name to help others recognize the person in search results.
            { # A person&#x27;s photo.
              &quot;url&quot;: &quot;A String&quot;, # The URL of the photo.
            },
          ],
        },
        &quot;source&quot;: { # Defines sources for the suggest/search APIs. # The named source for the result, such as Gmail.
          &quot;name&quot;: &quot;A String&quot;, # Source name for content indexed by the Indexing API.
          &quot;predefinedSource&quot;: &quot;A String&quot;, # Predefined content source for Google Apps.
        },
        &quot;thumbnailUrl&quot;: &quot;A String&quot;, # The thumbnail URL of the result.
        &quot;updateTime&quot;: &quot;A String&quot;, # The last modified date for the object in the search result. If not set in the item, the value returned here is empty. When `updateTime` is used for calculating freshness and is not set, this value defaults to 2 years from the current time.
      },
      &quot;snippet&quot;: { # Snippet of the search result, which summarizes the content of the resulting page. # The concatenation of all snippets (summaries) available for this result.
        &quot;matchRanges&quot;: [ # The matched ranges in the snippet.
          { # Matched range of a snippet [start, end).
            &quot;end&quot;: 42, # End of the match in the snippet.
            &quot;start&quot;: 42, # Starting position of the match in the snippet.
          },
        ],
        &quot;snippet&quot;: &quot;A String&quot;, # The snippet of the document. May contain escaped HTML character that should be unescaped prior to rendering.
      },
      &quot;title&quot;: &quot;A String&quot;, # Title of the search result.
      &quot;url&quot;: &quot;A String&quot;, # The URL of the search result. The URL contains a Google redirect to the actual item. This URL is signed and shouldn&#x27;t be changed.
    },
  ],
  &quot;spellResults&quot;: [ # Suggested spelling for the query.
    {
      &quot;suggestedQuery&quot;: &quot;A String&quot;, # The suggested spelling of the query.
      &quot;suggestedQueryHtml&quot;: { # IMPORTANT: It is unsafe to accept this message from an untrusted source, since it&#x27;s trivial for an attacker to forge serialized messages that don&#x27;t fulfill the type&#x27;s safety contract -- for example, it could contain attacker controlled script. A system which receives a SafeHtmlProto implicitly trusts the producer of the SafeHtmlProto. So, it&#x27;s generally safe to return this message in RPC responses, but generally unsafe to accept it in RPC requests. # The sanitized HTML representing the spell corrected query that can be used in the UI. This usually has language-specific tags to mark up parts of the query that are spell checked.
        &quot;privateDoNotAccessOrElseSafeHtmlWrappedValue&quot;: &quot;A String&quot;, # IMPORTANT: Never set or read this field, even from tests, it is private. See documentation at the top of .proto file for programming language packages with which to create or read this message.
      },
      &quot;suggestionType&quot;: &quot;A String&quot;, # Suggestion triggered for the current query.
    },
  ],
  &quot;structuredResults&quot;: [ # Structured results for the user query. These results are not counted against the page_size.
    { # Structured results that are returned as part of search request.
      &quot;person&quot;: { # Object to represent a person. # Representation of a person
        &quot;emailAddresses&quot;: [ # The person&#x27;s email addresses
          { # A person&#x27;s email address.
            &quot;customType&quot;: &quot;A String&quot;, # If the value of type is custom, this property contains the custom type string.
            &quot;emailAddress&quot;: &quot;A String&quot;, # The email address.
            &quot;emailUrl&quot;: &quot;A String&quot;, # The URL to send email.
            &quot;primary&quot;: True or False, # Indicates if this is the user&#x27;s primary email. Only one entry can be marked as primary.
            &quot;type&quot;: &quot;A String&quot;, # The type of the email account. Acceptable values are: &quot;custom&quot;, &quot;home&quot;, &quot;other&quot;, &quot;work&quot;.
          },
        ],
        &quot;name&quot;: &quot;A String&quot;, # The resource name of the person to provide information about. See [`People.get`](https://developers.google.com/people/api/rest/v1/people/get) from the Google People API.
        &quot;obfuscatedId&quot;: &quot;A String&quot;, # Obfuscated ID of a person.
        &quot;personNames&quot;: [ # The person&#x27;s name
          { # A person&#x27;s name.
            &quot;displayName&quot;: &quot;A String&quot;, # The read-only display name formatted according to the locale specified by the viewer&#x27;s account or the `Accept-Language` HTTP header.
          },
        ],
        &quot;phoneNumbers&quot;: [ # The person&#x27;s phone numbers
          { # A person&#x27;s Phone Number
            &quot;phoneNumber&quot;: &quot;A String&quot;, # The phone number of the person.
            &quot;type&quot;: &quot;A String&quot;,
          },
        ],
        &quot;photos&quot;: [ # A person&#x27;s read-only photo. A picture shown next to the person&#x27;s name to help others recognize the person in search results.
          { # A person&#x27;s photo.
            &quot;url&quot;: &quot;A String&quot;, # The URL of the photo.
          },
        ],
      },
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="suggest">suggest(body=None, x__xgafv=None)</code>
  <pre>Provides suggestions for autocompleting the query. **Note:** This API requires a standard end user account to execute. A service account can&#x27;t perform Query API requests directly; to use a service account to perform queries, set up [Google Workspace domain-wide delegation of authority](https://developers.google.com/cloud-search/docs/guides/delegation/).

Args:
  body: object, The request body.
    The object takes the form of:

{ # Request of suggest API.
  &quot;dataSourceRestrictions&quot;: [ # The sources to use for suggestions. If not specified, the data sources are taken from the current search application. NOTE: Suggestions are only supported for the following sources: * Third-party data sources * PredefinedSource.PERSON * PredefinedSource.GOOGLE_DRIVE
    { # Restriction on Datasource.
      &quot;filterOptions&quot;: [ # Filter options restricting the results. If multiple filters are present, they are grouped by object type before joining. Filters with the same object type are joined conjunctively, then the resulting expressions are joined disjunctively. The maximum number of elements is 20. NOTE: Suggest API supports only few filters at the moment: &quot;objecttype&quot;, &quot;type&quot; and &quot;mimetype&quot;. For now, schema specific filters cannot be used to filter suggestions.
        { # Filter options to be applied on query.
          &quot;filter&quot;: { # A generic way of expressing filters in a query, which supports two approaches: **1. Setting a ValueFilter.** The name must match an operator_name defined in the schema for your data source. **2. Setting a CompositeFilter.** The filters are evaluated using the logical operator. The top-level operators can only be either an AND or a NOT. AND can appear only at the top-most level. OR can appear only under a top-level AND. # Generic filter to restrict the search, such as `lang:en`, `site:xyz`.
            &quot;compositeFilter&quot;: {
              &quot;logicOperator&quot;: &quot;A String&quot;, # The logic operator of the sub filter.
              &quot;subFilters&quot;: [ # Sub filters.
                # Object with schema name: Filter
              ],
            },
            &quot;valueFilter&quot;: {
              &quot;operatorName&quot;: &quot;A String&quot;, # The `operator_name` applied to the query, such as *price_greater_than*. The filter can work against both types of filters defined in the schema for your data source: 1. `operator_name`, where the query filters results by the property that matches the value. 2. `greater_than_operator_name` or `less_than_operator_name` in your schema. The query filters the results for the property values that are greater than or less than the supplied value in the query.
              &quot;value&quot;: { # Definition of a single value with generic type. # The value to be compared with.
                &quot;booleanValue&quot;: True or False,
                &quot;dateValue&quot;: { # Represents a whole calendar date, for example a date of birth. The time of day and time zone are either specified elsewhere or are not significant. The date is relative to the [Proleptic Gregorian Calendar](https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar). The date must be a valid calendar date between the year 1 and 9999.
                  &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month.
                  &quot;month&quot;: 42, # Month of date. Must be from 1 to 12.
                  &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999.
                },
                &quot;doubleValue&quot;: 3.14,
                &quot;integerValue&quot;: &quot;A String&quot;,
                &quot;stringValue&quot;: &quot;A String&quot;,
                &quot;timestampValue&quot;: &quot;A String&quot;,
              },
            },
          },
          &quot;objectType&quot;: &quot;A String&quot;, # If object_type is set, only objects of that type are returned. This should correspond to the name of the object that was registered within the definition of schema. The maximum length is 256 characters.
        },
      ],
      &quot;source&quot;: { # Defines sources for the suggest/search APIs. # The source of restriction.
        &quot;name&quot;: &quot;A String&quot;, # Source name for content indexed by the Indexing API.
        &quot;predefinedSource&quot;: &quot;A String&quot;, # Predefined content source for Google Apps.
      },
    },
  ],
  &quot;query&quot;: &quot;A String&quot;, # Partial query for which autocomplete suggestions will be shown. For example, if the query is &quot;sea&quot;, then the server might return &quot;season&quot;, &quot;search&quot;, &quot;seagull&quot; and so on.
  &quot;requestOptions&quot;: { # Shared request options for all RPC methods. # Request options, such as the search application and user timezone.
    &quot;debugOptions&quot;: { # Shared request debug options for all cloudsearch RPC methods. # Debug options of the request
      &quot;enableDebugging&quot;: True or False, # If you are asked by Google to help with debugging, set this field. Otherwise, ignore this field.
    },
    &quot;languageCode&quot;: &quot;A String&quot;, # The BCP-47 language code, such as &quot;en-US&quot; or &quot;sr-Latn&quot;. For more information, see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier. For translations. Set this field using the language set in browser or for the page. In the event that the user&#x27;s language preference is known, set this field to the known user language. When specified, the documents in search results are biased towards the specified language. The Suggest API uses this field as a hint to make better third-party autocomplete predictions.
    &quot;searchApplicationId&quot;: &quot;A String&quot;, # The ID generated when you create a search application using the [admin console](https://support.google.com/a/answer/9043922).
    &quot;timeZone&quot;: &quot;A String&quot;, # Current user&#x27;s time zone id, such as &quot;America/Los_Angeles&quot; or &quot;Australia/Sydney&quot;. These IDs are defined by [Unicode Common Locale Data Repository (CLDR)](http://cldr.unicode.org/) project, and currently available in the file [timezone.xml](http://unicode.org/repos/cldr/trunk/common/bcp47/timezone.xml). This field is used to correctly interpret date and time queries. If this field is not specified, the default time zone (UTC) is used.
  },
}

  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 suggest API.
  &quot;suggestResults&quot;: [ # List of suggestions.
    { # One suggestion result.
      &quot;peopleSuggestion&quot;: { # This field contains information about the person being suggested. # This is present when the suggestion indicates a person. It contains more information about the person - like their email ID, name etc.
        &quot;person&quot;: { # Object to represent a person. # Suggested person. All fields of the person object might not be populated.
          &quot;emailAddresses&quot;: [ # The person&#x27;s email addresses
            { # A person&#x27;s email address.
              &quot;customType&quot;: &quot;A String&quot;, # If the value of type is custom, this property contains the custom type string.
              &quot;emailAddress&quot;: &quot;A String&quot;, # The email address.
              &quot;emailUrl&quot;: &quot;A String&quot;, # The URL to send email.
              &quot;primary&quot;: True or False, # Indicates if this is the user&#x27;s primary email. Only one entry can be marked as primary.
              &quot;type&quot;: &quot;A String&quot;, # The type of the email account. Acceptable values are: &quot;custom&quot;, &quot;home&quot;, &quot;other&quot;, &quot;work&quot;.
            },
          ],
          &quot;name&quot;: &quot;A String&quot;, # The resource name of the person to provide information about. See [`People.get`](https://developers.google.com/people/api/rest/v1/people/get) from the Google People API.
          &quot;obfuscatedId&quot;: &quot;A String&quot;, # Obfuscated ID of a person.
          &quot;personNames&quot;: [ # The person&#x27;s name
            { # A person&#x27;s name.
              &quot;displayName&quot;: &quot;A String&quot;, # The read-only display name formatted according to the locale specified by the viewer&#x27;s account or the `Accept-Language` HTTP header.
            },
          ],
          &quot;phoneNumbers&quot;: [ # The person&#x27;s phone numbers
            { # A person&#x27;s Phone Number
              &quot;phoneNumber&quot;: &quot;A String&quot;, # The phone number of the person.
              &quot;type&quot;: &quot;A String&quot;,
            },
          ],
          &quot;photos&quot;: [ # A person&#x27;s read-only photo. A picture shown next to the person&#x27;s name to help others recognize the person in search results.
            { # A person&#x27;s photo.
              &quot;url&quot;: &quot;A String&quot;, # The URL of the photo.
            },
          ],
        },
      },
      &quot;querySuggestion&quot;: { # This field does not contain anything as of now and is just used as an indicator that the suggest result was a phrase completion. # This field will be present if the suggested query is a word/phrase completion.
      },
      &quot;source&quot;: { # Defines sources for the suggest/search APIs. # The source of the suggestion.
        &quot;name&quot;: &quot;A String&quot;, # Source name for content indexed by the Indexing API.
        &quot;predefinedSource&quot;: &quot;A String&quot;, # Predefined content source for Google Apps.
      },
      &quot;suggestedQuery&quot;: &quot;A String&quot;, # The suggested query that will be used for search, when the user clicks on the suggestion
    },
  ],
}</pre>
</div>

</body></html>