<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.stats.html">stats</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="cloudsearch_v1.stats.index.html">index()</a></code>
</p>
<p class="firstline">Returns the index Resource.</p>

<p class="toc_element">
  <code><a href="cloudsearch_v1.stats.query.html">query()</a></code>
</p>
<p class="firstline">Returns the query Resource.</p>

<p class="toc_element">
  <code><a href="cloudsearch_v1.stats.session.html">session()</a></code>
</p>
<p class="firstline">Returns the session Resource.</p>

<p class="toc_element">
  <code><a href="cloudsearch_v1.stats.user.html">user()</a></code>
</p>
<p class="firstline">Returns the user Resource.</p>

<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="#getIndex">getIndex(toDate_day=None, toDate_year=None, fromDate_year=None, fromDate_day=None, fromDate_month=None, toDate_month=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets indexed item statistics aggreggated across all data sources. This API only returns statistics for previous dates; it doesn't return statistics for the current day. **Note:** This API requires a standard end user account to execute.</p>
<p class="toc_element">
  <code><a href="#getQuery">getQuery(toDate_month=None, fromDate_day=None, fromDate_year=None, toDate_year=None, fromDate_month=None, toDate_day=None, x__xgafv=None)</a></code></p>
<p class="firstline">Get the query statistics for customer. **Note:** This API requires a standard end user account to execute.</p>
<p class="toc_element">
  <code><a href="#getSession">getSession(toDate_day=None, fromDate_year=None, toDate_month=None, fromDate_month=None, fromDate_day=None, toDate_year=None, x__xgafv=None)</a></code></p>
<p class="firstline">Get the # of search sessions, % of successful sessions with a click query statistics for customer. **Note:** This API requires a standard end user account to execute.</p>
<p class="toc_element">
  <code><a href="#getUser">getUser(fromDate_month=None, toDate_year=None, toDate_month=None, fromDate_day=None, fromDate_year=None, toDate_day=None, x__xgafv=None)</a></code></p>
<p class="firstline">Get the users statistics for customer. **Note:** This API requires a standard end user account to execute.</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="getIndex">getIndex(toDate_day=None, toDate_year=None, fromDate_year=None, fromDate_day=None, fromDate_month=None, toDate_month=None, x__xgafv=None)</code>
  <pre>Gets indexed item statistics aggreggated across all data sources. This API only returns statistics for previous dates; it doesn&#x27;t return statistics for the current day. **Note:** This API requires a standard end user account to execute.

Args:
  toDate_day: integer, Day of month. Must be from 1 to 31 and valid for the year and month.
  toDate_year: integer, Year of date. Must be from 1 to 9999.
  fromDate_year: integer, Year of date. Must be from 1 to 9999.
  fromDate_day: integer, Day of month. Must be from 1 to 31 and valid for the year and month.
  fromDate_month: integer, Month of date. Must be from 1 to 12.
  toDate_month: integer, Month of date. Must be from 1 to 12.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;stats&quot;: [ # Summary of indexed item counts, one for each day in the requested range.
      { # Aggregation of items by status code as of the specified date.
        &quot;date&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. # Date for which statistics were calculated.
          &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month.
          &quot;month&quot;: 42, # Month of date. Must be from 1 to 12.
          &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999.
        },
        &quot;itemCountByStatus&quot;: [ # Number of items aggregrated by status code.
          {
            &quot;statusCode&quot;: &quot;A String&quot;, # Status of the items.
            &quot;count&quot;: &quot;A String&quot;, # Number of items matching the status code.
          },
        ],
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="getQuery">getQuery(toDate_month=None, fromDate_day=None, fromDate_year=None, toDate_year=None, fromDate_month=None, toDate_day=None, x__xgafv=None)</code>
  <pre>Get the query statistics for customer. **Note:** This API requires a standard end user account to execute.

Args:
  toDate_month: integer, Month of date. Must be from 1 to 12.
  fromDate_day: integer, Day of month. Must be from 1 to 31 and valid for the year and month.
  fromDate_year: integer, Year of date. Must be from 1 to 9999.
  toDate_year: integer, Year of date. Must be from 1 to 9999.
  fromDate_month: integer, Month of date. Must be from 1 to 12.
  toDate_day: integer, Day of month. Must be from 1 to 31 and valid for the year and month.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;stats&quot;: [
      {
        &quot;queryCountByStatus&quot;: [
          {
            &quot;statusCode&quot;: 42, # This represents the http status code.
            &quot;count&quot;: &quot;A String&quot;,
          },
        ],
        &quot;date&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. # Date for which query stats were calculated. Stats calculated on the next day close to midnight are returned.
          &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month.
          &quot;month&quot;: 42, # Month of date. Must be from 1 to 12.
          &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999.
        },
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="getSession">getSession(toDate_day=None, fromDate_year=None, toDate_month=None, fromDate_month=None, fromDate_day=None, toDate_year=None, x__xgafv=None)</code>
  <pre>Get the # of search sessions, % of successful sessions with a click query statistics for customer. **Note:** This API requires a standard end user account to execute.

Args:
  toDate_day: integer, Day of month. Must be from 1 to 31 and valid for the year and month.
  fromDate_year: integer, Year of date. Must be from 1 to 9999.
  toDate_month: integer, Month of date. Must be from 1 to 12.
  fromDate_month: integer, Month of date. Must be from 1 to 12.
  fromDate_day: integer, Day of month. Must be from 1 to 31 and valid for the year and month.
  toDate_year: integer, Year of date. Must be from 1 to 9999.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;stats&quot;: [
      {
        &quot;date&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. # Date for which session stats were calculated. Stats calculated on the next day close to midnight are returned.
          &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month.
          &quot;month&quot;: 42, # Month of date. Must be from 1 to 12.
          &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999.
        },
        &quot;searchSessionsCount&quot;: &quot;A String&quot;, # The count of search sessions on the day
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="getUser">getUser(fromDate_month=None, toDate_year=None, toDate_month=None, fromDate_day=None, fromDate_year=None, toDate_day=None, x__xgafv=None)</code>
  <pre>Get the users statistics for customer. **Note:** This API requires a standard end user account to execute.

Args:
  fromDate_month: integer, Month of date. Must be from 1 to 12.
  toDate_year: integer, Year of date. Must be from 1 to 9999.
  toDate_month: integer, Month of date. Must be from 1 to 12.
  fromDate_day: integer, Day of month. Must be from 1 to 31 and valid for the year and month.
  fromDate_year: integer, Year of date. Must be from 1 to 9999.
  toDate_day: integer, Day of month. Must be from 1 to 31 and valid for the year and month.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;stats&quot;: [
      {
        &quot;sevenDaysActiveUsersCount&quot;: &quot;A String&quot;, # The count of unique active users in the past seven days
        &quot;thirtyDaysActiveUsersCount&quot;: &quot;A String&quot;, # The count of unique active users in the past thirty days
        &quot;date&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. # Date for which session stats were calculated. Stats calculated on the next day close to midnight are returned.
          &quot;day&quot;: 42, # Day of month. Must be from 1 to 31 and valid for the year and month.
          &quot;month&quot;: 42, # Month of date. Must be from 1 to 12.
          &quot;year&quot;: 42, # Year of date. Must be from 1 to 9999.
        },
        &quot;oneDayActiveUsersCount&quot;: &quot;A String&quot;, # The count of unique active users in the past one day
      },
    ],
  }</pre>
</div>

</body></html>