<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="factchecktools_v1alpha1.html">Fact Check Tools API</a> . <a href="factchecktools_v1alpha1.claims.html">claims</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#search">search(maxAgeDays=None, languageCode=None, pageSize=None, query=None, x__xgafv=None, pageToken=None, reviewPublisherSiteFilter=None, offset=None)</a></code></p>
<p class="firstline">Search through fact-checked claims.</p>
<p class="toc_element">
  <code><a href="#search_next">search_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="search">search(maxAgeDays=None, languageCode=None, pageSize=None, query=None, x__xgafv=None, pageToken=None, reviewPublisherSiteFilter=None, offset=None)</code>
  <pre>Search through fact-checked claims.

Args:
  maxAgeDays: integer, The maximum age of the returned search results, in days.
Age is determined by either claim date or review date, whichever is newer.
  languageCode: string, The BCP-47 language code, such as "en-US" or "sr-Latn". Can be used to
restrict results by language, though we do not currently consider the
region.
  pageSize: integer, The pagination size. We will return up to that many results. Defaults to
10 if not set.
  query: string, Textual query string. Required unless `review_publisher_site_filter` is
specified.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
  pageToken: string, The pagination token. You may provide the `next_page_token` returned from a
previous List request, if any, in order to get the next page. All other
fields must have the same values as in the previous request.
  reviewPublisherSiteFilter: string, The review publisher site to filter results by, e.g. nytimes.com.
  offset: integer, An integer that specifies the current offset (that is, starting result
location) in search results. This field is only considered if `page_token`
is unset. For example, 0 means to return results starting from the first
matching result, and 10 means to return from the 11th result.

Returns:
  An object of the form:

    { # Response from searching fact-checked claims.
    "nextPageToken": "A String", # The next pagination token in the Search response. It should be used as the
        # `page_token` for the following request. An empty value means no more
        # results.
    "claims": [ # The list of claims and all of their associated information.
      { # Information about the claim.
        "claimDate": "A String", # The date that the claim was made.
        "claimReview": [ # One or more reviews of this claim (namely, a fact-checking article).
          { # Information about a claim review.
            "languageCode": "A String", # The language this review was written in. For instance, "en" or "de".
            "publisher": { # Information about the publisher. # The publisher of this claim review.
              "site": "A String", # Host-level site name, without the protocol or "www" prefix. For instance,
                  # "awesomefactchecks.com". This value of this field is based purely on the
                  # claim review URL.
              "name": "A String", # The name of this publisher. For instance, "Awesome Fact Checks".
            },
            "url": "A String", # The URL of this claim review.
            "reviewDate": "A String", # The date the claim was reviewed.
            "title": "A String", # The title of this claim review, if it can be determined.
            "textualRating": "A String", # Textual rating. For instance, "Mostly false".
          },
        ],
        "text": "A String", # The claim text. For instance, "Crime has doubled in the last 2 years."
        "claimant": "A String", # A person or organization stating the claim. For instance, "John Doe".
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="search_next">search_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>