<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="#search">search(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">The Cloud Search Query API provides the search method, which returns</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.</p>
<h3>Method Details</h3>
<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;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;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;operatorName&quot;: &quot;A String&quot;, # Name of the operator chosen for faceting. @see
            # cloudsearch.SchemaPropertyOptions
        &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;sourceName&quot;: &quot;A String&quot;, # Source name to facet on. Format: datasources/{source_id}
            # If empty, all data sources will be used.
      },
    ],
    &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;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;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;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;filter&quot;: { # A generic way of expressing filters in a query, which supports two # Generic filter to restrict the search, such as `lang:en`, `site:xyz`.
                # approaches: &lt;br/&gt;&lt;br/&gt;
                # **1. Setting a ValueFilter.** The name must match an operator_name defined in
                # the schema for your data source.
                # &lt;br/&gt;
                # **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.
              &quot;compositeFilter&quot;: {
                &quot;subFilters&quot;: [ # Sub filters.
                  # Object with schema name: Filter
                ],
                &quot;logicOperator&quot;: &quot;A String&quot;, # The logic operator of the sub filter.
              },
              &quot;valueFilter&quot;: {
                &quot;value&quot;: { # Definition of a single value with generic type. # The value to be compared with.
                  &quot;integerValue&quot;: &quot;A String&quot;,
                  &quot;stringValue&quot;: &quot;A String&quot;,
                  &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;year&quot;: 42, # Year of date. Must be from 1 to 9999.
                    &quot;month&quot;: 42, # Month of date. Must be from 1 to 12.
                    &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month.
                  },
                  &quot;timestampValue&quot;: &quot;A String&quot;,
                  &quot;doubleValue&quot;: 3.14,
                },
                &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:
                    # &lt;br/&gt;&lt;br/&gt;
                    # 1. `operator_name`, where the query filters results by the property
                    # that matches the value.
                    # &lt;br/&gt;
                    # 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;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.
    &quot;start&quot;: 42, # Starting index of the results.
    &quot;queryInterpretationOptions&quot;: { # Options to interpret user query. # Options to interpret the user query.
      &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;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;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;query&quot;: &quot;A String&quot;, # The raw query string.
        # See supported search operators in the [Cloud search
        # Cheat
        # Sheet](https://gsuite.google.com/learning-center/products/cloudsearch/cheat-sheet/)
  }

  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;resultCountExact&quot;: &quot;A String&quot;, # The exact result count for this query.
    &quot;errorInfo&quot;: { # Error information about the response. # Error information about the response.
      &quot;errorMessages&quot;: [
        { # Error message per source response.
          &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;errorMessage&quot;: &quot;A String&quot;,
        },
      ],
    },
    &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;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;resultCountExact&quot;: &quot;A String&quot;, # The exact result count for this source.
          &quot;resultCountEstimate&quot;: &quot;A String&quot;, # The estimated result count for this source.
          &quot;hasMoreResults&quot;: True or False, # Whether there are more search results 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;metadata&quot;: { # Metadata of a matched search result. # Metadata of the search result.
          &quot;objectType&quot;: &quot;A String&quot;, # Object type of the search result.
          &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;mimeType&quot;: &quot;A String&quot;, # Mime 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;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;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 &lt;code&gt;Accept-Language&lt;/code&gt; HTTP header.
              },
            ],
            &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 &lt;a href=&quot;https://developers.google.com/people/api/rest/v1/people/get&quot;&gt;
                # People.get&lt;/a&gt; from Google People API.
            &quot;obfuscatedId&quot;: &quot;A String&quot;, # Obfuscated ID of a person.
          },
          &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;property&quot;: { # A typed name-value pair for structured data.  The type of the value should # The name value pair for the property.
                        # be the same as the registered type for the `name` property in the object
                        # definition of `objectType`.
                      &quot;timestampValues&quot;: { # List of timestamp values.
                        &quot;values&quot;: [
                          &quot;A String&quot;,
                        ],
                      },
                      &quot;doubleValues&quot;: { # List of double values.
                        &quot;values&quot;: [
                          3.14,
                        ],
                      },
                      &quot;integerValues&quot;: { # List of integer values.
                        &quot;values&quot;: [
                          &quot;A String&quot;,
                        ],
                      },
                      &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;year&quot;: 42, # Year of date. Must be from 1 to 9999.
                            &quot;month&quot;: 42, # Month of date. Must be from 1 to 12.
                            &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month.
                          },
                        ],
                      },
                      &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;textValues&quot;: { # List of text values.
                        &quot;values&quot;: [ # The maximum allowable length for text values is 2048 characters.
                          &quot;A String&quot;,
                        ],
                      },
                      &quot;booleanValue&quot;: True or False,
                      &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;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;operatorName&quot;: &quot;A String&quot;, # The operator name of the property.
                  },
                ],
              },
            ],
            &quot;objectTypeLabel&quot;: &quot;A String&quot;, # The display label for the object.
          },
          &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;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;timestampValues&quot;: { # List of timestamp values.
                &quot;values&quot;: [
                  &quot;A String&quot;,
                ],
              },
              &quot;doubleValues&quot;: { # List of double values.
                &quot;values&quot;: [
                  3.14,
                ],
              },
              &quot;integerValues&quot;: { # List of integer values.
                &quot;values&quot;: [
                  &quot;A String&quot;,
                ],
              },
              &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;year&quot;: 42, # Year of date. Must be from 1 to 9999.
                    &quot;month&quot;: 42, # Month of date. Must be from 1 to 12.
                    &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month.
                  },
                ],
              },
              &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;textValues&quot;: { # List of text values.
                &quot;values&quot;: [ # The maximum allowable length for text values is 2048 characters.
                  &quot;A String&quot;,
                ],
              },
              &quot;booleanValue&quot;: True or False,
              &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;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;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;snippet&quot;: { # Snippet of the search result, which summarizes the content of the resulting # The concatenation of all snippets (summaries) available for this result.
            # page.
          &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;matchRanges&quot;: [ # The matched ranges in the snippet.
            { # Matched range of a snippet [start, end).
              &quot;start&quot;: 42, # Starting position of the match in the snippet.
              &quot;end&quot;: 42, # End of the match in the snippet.
            },
          ],
        },
        &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;hasMoreResults&quot;: True or False, # Whether there are more search results matching the query.
    &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;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;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 &lt;code&gt;Accept-Language&lt;/code&gt; HTTP header.
            },
          ],
          &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 &lt;a href=&quot;https://developers.google.com/people/api/rest/v1/people/get&quot;&gt;
              # People.get&lt;/a&gt; from Google People API.
          &quot;obfuscatedId&quot;: &quot;A String&quot;, # Obfuscated ID of a person.
        },
      },
    ],
    &quot;facetResults&quot;: [ # Repeated facet results.
      { # Source specific facet response
        &quot;sourceName&quot;: &quot;A String&quot;, # Source name for which facet results are returned. Will not be empty.
        &quot;objectType&quot;: &quot;A String&quot;, # Object type for which facet results are returned. Can be empty.
        &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;value&quot;: { # Definition of a single value with generic type.
              &quot;integerValue&quot;: &quot;A String&quot;,
              &quot;stringValue&quot;: &quot;A String&quot;,
              &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;year&quot;: 42, # Year of date. Must be from 1 to 9999.
                &quot;month&quot;: 42, # Month of date. Must be from 1 to 12.
                &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month.
              },
              &quot;timestampValue&quot;: &quot;A String&quot;,
              &quot;doubleValue&quot;: 3.14,
            },
            &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;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;operatorName&quot;: &quot;A String&quot;, # Name of the operator chosen for faceting. @see
            # cloudsearch.SchemaPropertyOptions
      },
    ],
    &quot;resultCountEstimate&quot;: &quot;A String&quot;, # The estimated result count for this query.
    &quot;queryInterpretation&quot;: { # Query interpretation result for user query. Empty if query interpretation
        # is disabled.
      &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;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.
    },
  }</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;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.
    },
    &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 supported only for third party data sources and
        # people (i.e. PredefinedSource.PERSON).
      { # Restriction on Datasource.
        &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;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;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;filter&quot;: { # A generic way of expressing filters in a query, which supports two # Generic filter to restrict the search, such as `lang:en`, `site:xyz`.
                # approaches: &lt;br/&gt;&lt;br/&gt;
                # **1. Setting a ValueFilter.** The name must match an operator_name defined in
                # the schema for your data source.
                # &lt;br/&gt;
                # **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.
              &quot;compositeFilter&quot;: {
                &quot;subFilters&quot;: [ # Sub filters.
                  # Object with schema name: Filter
                ],
                &quot;logicOperator&quot;: &quot;A String&quot;, # The logic operator of the sub filter.
              },
              &quot;valueFilter&quot;: {
                &quot;value&quot;: { # Definition of a single value with generic type. # The value to be compared with.
                  &quot;integerValue&quot;: &quot;A String&quot;,
                  &quot;stringValue&quot;: &quot;A String&quot;,
                  &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;year&quot;: 42, # Year of date. Must be from 1 to 9999.
                    &quot;month&quot;: 42, # Month of date. Must be from 1 to 12.
                    &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month.
                  },
                  &quot;timestampValue&quot;: &quot;A String&quot;,
                  &quot;doubleValue&quot;: 3.14,
                },
                &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:
                    # &lt;br/&gt;&lt;br/&gt;
                    # 1. `operator_name`, where the query filters results by the property
                    # that matches the value.
                    # &lt;br/&gt;
                    # 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.
              },
            },
          },
        ],
      },
    ],
  }

  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;suggestedQuery&quot;: &quot;A String&quot;, # The suggested query that will be used for search, when the user
            # clicks on the suggestion
        &quot;querySuggestion&quot;: { # This field does not contain anything as of now and is just used as an # This field will be present if the suggested query is a word/phrase
            # completion.
            # indicator that the suggest result was a 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;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;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;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 &lt;code&gt;Accept-Language&lt;/code&gt; HTTP header.
              },
            ],
            &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 &lt;a href=&quot;https://developers.google.com/people/api/rest/v1/people/get&quot;&gt;
                # People.get&lt;/a&gt; from Google People API.
            &quot;obfuscatedId&quot;: &quot;A String&quot;, # Obfuscated ID of a person.
          },
        },
      },
    ],
  }</pre>
</div>

</body></html>