<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 G Suite 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 [G Suite 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 [G Suite 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 G Suite 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 [G Suite 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;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. Can be empty.
          &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 [G Suite 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>