<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="#list">list(pageToken=None, requestOptions_timeZone=None, requestOptions_debugOptions_enableDebugging=None, requestOptions_languageCode=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.</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="list">list(pageToken=None, requestOptions_timeZone=None, requestOptions_debugOptions_enableDebugging=None, requestOptions_languageCode=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:
  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_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.
  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;nextPageToken&quot;: &quot;A String&quot;,
    &quot;sources&quot;: [
      { # List of sources that the user can search using the query API.
        &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;operatorName&quot;: &quot;A String&quot;, # The name of the operator.
            &quot;isSortable&quot;: True or False, # Can this operator be used to sort results.
            &quot;isFacetable&quot;: True or False, # Can this operator be used to get facets.
            &quot;isReturnable&quot;: True or False, # Will the property associated with this facet be returned as part of search
                # results.
            &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;displayName&quot;: &quot;A String&quot;, # Display name of the operator
            &quot;isRepeatable&quot;: True or False, # Indicates if multiple values can be set for this property.
            &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;lessThanOperatorName&quot;: &quot;A String&quot;, # Indicates the operator name that can be used to  isolate the property using
                # the less-than operator.
            &quot;isSuggestable&quot;: True or False, # Can get suggestions for this field.
            &quot;type&quot;: &quot;A String&quot;, # Type 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;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;displayName&quot;: &quot;A String&quot;, # Display name of the data source.
        &quot;source&quot;: { # Defines sources for the suggest/search APIs. # Name of the source
          &quot;predefinedSource&quot;: &quot;A String&quot;, # Predefined content source for Google Apps.
          &quot;name&quot;: &quot;A String&quot;, # Source name for content indexed by the
              # Indexing API.
        },
      },
    ],
  }</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>