<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> . <a href="cloudsearch_v1.query.sources.html">sources</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#list">list(requestOptions_languageCode=None, pageToken=None, requestOptions_timeZone=None, requestOptions_debugOptions_enableDebugging=None, requestOptions_searchApplicationId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns list of sources that user can use for Search and Suggest APIs. **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="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="list">list(requestOptions_languageCode=None, pageToken=None, requestOptions_timeZone=None, requestOptions_debugOptions_enableDebugging=None, requestOptions_searchApplicationId=None, x__xgafv=None)</code>
  <pre>Returns list of sources that user can use for Search and Suggest APIs. **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:
  requestOptions_languageCode: string, 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.
  pageToken: string, Number of sources to return in the response.
  requestOptions_timeZone: string, 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.
  requestOptions_debugOptions_enableDebugging: boolean, If you are asked by Google to help with debugging, set this field. Otherwise, ignore this field.
  requestOptions_searchApplicationId: string, The ID generated when you create a search application using the [admin console](https://support.google.com/a/answer/9043922).
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # List sources response.
    &quot;sources&quot;: [
      { # List of sources that the user can search using the query API.
        &quot;displayName&quot;: &quot;A String&quot;, # Display name of the data source.
        &quot;operators&quot;: [ # List of all operators applicable for this source.
          { # The definition of a operator that can be used in a Search/Suggest request.
            &quot;isRepeatable&quot;: True or False, # Indicates if multiple values can be set for this property.
            &quot;isSortable&quot;: True or False, # Can this operator be used to sort results.
            &quot;type&quot;: &quot;A String&quot;, # Type of the operator.
            &quot;isSuggestable&quot;: True or False, # Can get suggestions for this field.
            &quot;isFacetable&quot;: True or False, # Can this operator be used to get facets.
            &quot;lessThanOperatorName&quot;: &quot;A String&quot;, # Indicates the operator name that can be used to isolate the property using the less-than operator.
            &quot;isReturnable&quot;: True or False, # Will the property associated with this facet be returned as part of search results.
            &quot;enumValues&quot;: [ # Potential list of values for the opeatror field. This field is only filled when we can safely enumerate all the possible values of this operator.
              &quot;A String&quot;,
            ],
            &quot;operatorName&quot;: &quot;A String&quot;, # The name of the operator.
            &quot;objectType&quot;: &quot;A String&quot;, # Name of the object corresponding to the operator. This field is only filled for schema-specific operators, and is unset for common operators.
            &quot;displayName&quot;: &quot;A String&quot;, # Display name of the operator
            &quot;greaterThanOperatorName&quot;: &quot;A String&quot;, # Indicates the operator name that can be used to isolate the property using the greater-than operator.
          },
        ],
        &quot;source&quot;: { # Defines sources for the suggest/search APIs. # Name of the source
          &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;shortName&quot;: &quot;A String&quot;, # A short name or alias for the source. This value can be used with the &#x27;source&#x27; operator.
      },
    ],
    &quot;nextPageToken&quot;: &quot;A String&quot;,
  }</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>