<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> . <a href="cloudsearch_v1.stats.index.html">index</a> . <a href="cloudsearch_v1.stats.index.datasources.html">datasources</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="#get">get(name, fromDate_day=None, fromDate_month=None, fromDate_year=None, toDate_day=None, toDate_month=None, toDate_year=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets indexed item statistics for a single data source. **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="get">get(name, fromDate_day=None, fromDate_month=None, fromDate_year=None, toDate_day=None, toDate_month=None, toDate_year=None, x__xgafv=None)</code>
  <pre>Gets indexed item statistics for a single data source. **Note:** This API requires a standard end user account to execute.

Args:
  name: string, The resource id of the data source to retrieve statistics for, in the following format: &quot;datasources/{source_id}&quot; (required)
  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.
  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.
  toDate_month: integer, Month of date. Must be from 1 to 12.
  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;averageIndexedItemCount&quot;: &quot;A String&quot;, # Average item count for the given date range for which billing is done.
  &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 index stats were calculated. If the date of request is not the current date then stats calculated on the next day are returned. Stats are calculated close to mid night in this case. If date of request is current date, then real time stats 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;itemCountByStatus&quot;: [ # Number of items aggregrated by status code.
        {
          &quot;count&quot;: &quot;A String&quot;, # Number of items matching the status code.
          &quot;indexedItemsCount&quot;: &quot;A String&quot;, # Number of items matching the status code for which billing is done. This excludes virtual container items from the total count. This count would not be applicable for items with ERROR or NEW_ITEM status code.
          &quot;statusCode&quot;: &quot;A String&quot;, # Status of the items.
        },
      ],
    },
  ],
}</pre>
</div>

</body></html>