<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(requestOptions_timeZone=None, pageToken=None, requestOptions_debugOptions_enableDebugging=None, requestOptions_searchApplicationId=None, requestOptions_languageCode=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(requestOptions_timeZone=None, pageToken=None, requestOptions_debugOptions_enableDebugging=None, requestOptions_searchApplicationId=None, requestOptions_languageCode=None, x__xgafv=None)</code>
  <pre>Returns list of sources that user can use for Search and Suggest APIs.

Args:
  requestOptions_timeZone: string, Current user's time zone id, such as "America/Los_Angeles" or
"Australia/Sydney". 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)
  pageToken: string, Number of sources to return in the response.
  requestOptions_debugOptions_enableDebugging: boolean, If you are asked by Google to help with debugging, set this field.
Otherwise, ignore this field.
  requestOptions_searchApplicationId: string, Id of the application created using SearchApplicationsService.
  requestOptions_languageCode: string, The BCP-47 language code, such as "en-US" or "sr-Latn".
For more information, see
http://www.unicode.org/reports/tr35/#Unicode_locale_identifier.
For translations.

When specified, the documents in search results are biased towards the
specified language.
Suggest API does not use this parameter. It autocompletes only based on
characters 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:

    { # List sources response.
    "nextPageToken": "A String",
    "sources": [
      { # List of sources that the user can search using the query API.
        "source": { # Defines sources for the suggest/search APIs. # Name of the source
          "predefinedSource": "A String", # Predefined content source for Google Apps.
          "name": "A String", # Source name for content indexed by the
              # Indexing API.
        },
        "shortName": "A String", # A short name or alias for the source.  This value can be used with the
            # 'source' operator.
        "displayName": "A String", # Display name of the data source.
        "operators": [ # List of all operators applicable for this source.
          { # The definition of a operator that can be used in a Search/Suggest request.
            "enumValues": [ # 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.
              "A String",
            ],
            "displayName": "A String", # Display name of the operator
            "greaterThanOperatorName": "A String", # Indicates the operator name that can be used to  isolate the property using
                # the greater-than operator.
            "isReturnable": True or False, # Will the property associated with this facet be returned as part of search
                # results.
            "lessThanOperatorName": "A String", # Indicates the operator name that can be used to  isolate the property using
                # the less-than operator.
            "isRepeatable": True or False, # Indicates if multiple values can be set for this property.
            "isFacetable": True or False, # Can this operator be used to get facets.
            "type": "A String", # Type of the operator.
            "operatorName": "A String", # The name of the operator.
            "isSortable": True or False, # Can this operator be used to sort results.
            "isSuggestable": True or False, # Can get suggestions for this field.
          },
        ],
      },
    ],
  }</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 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>