<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="#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="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;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;, # 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 [Cloud search Cheat Sheet](https://support.google.com/a/users/answer/9299929)
  &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;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 does not use this parameter. Instead, suggest autocompletes only based on characters in the query.
    &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;, # 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.
        { # 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;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;, # 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;emailAddress&quot;: &quot;A String&quot;, # The email address.
            },
          ],
          &quot;name&quot;: &quot;A String&quot;, # The resource name of the person to provide information about. See People.get from 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;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;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. 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;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;emailAddress&quot;: &quot;A String&quot;, # The email address.
          },
        ],
        &quot;name&quot;: &quot;A String&quot;, # The resource name of the person to provide information about. See People.get from 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;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 does not use this parameter. Instead, suggest autocompletes only based on characters in the query.
    &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;emailAddress&quot;: &quot;A String&quot;, # The email address.
            },
          ],
          &quot;name&quot;: &quot;A String&quot;, # The resource name of the person to provide information about. See People.get from 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;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>