<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="gmailpostmastertools_v1beta1.html">Gmail Postmaster Tools API</a> . <a href="gmailpostmastertools_v1beta1.domains.html">domains</a> . <a href="gmailpostmastertools_v1beta1.domains.trafficStats.html">trafficStats</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, x__xgafv=None)</a></code></p>
<p class="firstline">Get traffic statistics for a domain on a specific date. Returns PERMISSION_DENIED if user does not have permission to access TrafficStats for the domain.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, pageToken=None, endDate_month=None, endDate_day=None, pageSize=None, startDate_month=None, startDate_year=None, startDate_day=None, endDate_year=None, x__xgafv=None)</a></code></p>
<p class="firstline">List traffic statistics for all available days. Returns PERMISSION_DENIED if user does not have permission to access TrafficStats for the domain.</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="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Get traffic statistics for a domain on a specific date. Returns PERMISSION_DENIED if user does not have permission to access TrafficStats for the domain.

Args:
  name: string, The resource name of the traffic statistics to get. E.g., domains/mymail.mydomain.com/trafficStats/20160807. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Email traffic statistics pertaining to a specific date.
    &quot;ipReputations&quot;: [ # Reputation information pertaining to the IP addresses of the email servers for the domain. There is exactly one entry for each reputation category except REPUTATION_CATEGORY_UNSPECIFIED.
      { # IP Reputation information for a set of IPs in a specific reputation category.
        &quot;numIps&quot;: &quot;A String&quot;, # Total number of unique IPs in this reputation category. This metric only pertains to traffic that passed [SPF](http://www.openspf.org/) or [DKIM](http://www.dkim.org/).
        &quot;reputation&quot;: &quot;A String&quot;, # The reputation category this IP reputation represents.
        &quot;sampleIps&quot;: [ # A sample of IPs in this reputation category.
          &quot;A String&quot;,
        ],
      },
    ],
    &quot;dmarcSuccessRatio&quot;: 3.14, # The ratio of mail that passed [DMARC](https://dmarc.org/) alignment checks vs all mail received from the domain that successfully authenticated with either of [SPF](http://www.openspf.org/) or [DKIM](http://www.dkim.org/).
    &quot;deliveryErrors&quot;: [ # Delivery errors for the domain. This metric only pertains to traffic that passed [SPF](http://www.openspf.org/) or [DKIM](http://www.dkim.org/).
      { # Metric on a particular delivery error type.
        &quot;errorClass&quot;: &quot;A String&quot;, # The class of delivery error.
        &quot;errorRatio&quot;: 3.14, # The ratio of messages where the error occurred vs all authenticated traffic.
        &quot;errorType&quot;: &quot;A String&quot;, # The type of delivery error.
      },
    ],
    &quot;inboundEncryptionRatio&quot;: 3.14, # The ratio of incoming mail (to Gmail), that passed secure transport (TLS) vs all mail received from that domain. This metric only pertains to traffic that passed [SPF](http://www.openspf.org/) or [DKIM](http://www.dkim.org/).
    &quot;name&quot;: &quot;A String&quot;, # The resource name of the traffic statistics. Traffic statistic names have the form `domains/{domain}/trafficStats/{date}`, where domain_name is the fully qualified domain name (i.e., mymail.mydomain.com) of the domain this traffic statistics pertains to and date is the date in yyyymmdd format that these statistics corresponds to. For example: domains/mymail.mydomain.com/trafficStats/20160807
    &quot;userReportedSpamRatio&quot;: 3.14, # The ratio of user-report spam vs. email that was sent to the inbox. This metric only pertains to emails authenticated by [DKIM](http://www.dkim.org/).
    &quot;domainReputation&quot;: &quot;A String&quot;, # Reputation of the domain.
    &quot;spfSuccessRatio&quot;: 3.14, # The ratio of mail that successfully authenticated with SPF vs. all mail that attempted to authenticate with [SPF](http://www.openspf.org/). Spoofed mail is excluded.
    &quot;spammyFeedbackLoops&quot;: [ # Spammy [Feedback loop identifiers] (https://support.google.com/mail/answer/6254652) with their individual spam rates. This metric only pertains to traffic that is authenticated by [DKIM](http://www.dkim.org/).
      { # [Feedback loop](https://support.google.com/mail/answer/6254652) identifier information.
        &quot;spamRatio&quot;: 3.14, # The ratio of user marked spam messages with the identifier vs the total number of inboxed messages with that identifier.
        &quot;id&quot;: &quot;A String&quot;, # Feedback loop identifier that uniquely identifies individual campaigns.
      },
    ],
    &quot;dkimSuccessRatio&quot;: 3.14, # The ratio of mail that successfully authenticated with DKIM vs. all mail that attempted to authenticate with [DKIM](http://www.dkim.org/). Spoofed mail is excluded.
    &quot;outboundEncryptionRatio&quot;: 3.14, # The ratio of outgoing mail (from Gmail) that was accepted over secure transport (TLS).
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageToken=None, endDate_month=None, endDate_day=None, pageSize=None, startDate_month=None, startDate_year=None, startDate_day=None, endDate_year=None, x__xgafv=None)</code>
  <pre>List traffic statistics for all available days. Returns PERMISSION_DENIED if user does not have permission to access TrafficStats for the domain.

Args:
  parent: string, The resource name of the domain whose traffic statistics we&#x27;d like to list. It should have the form `domains/{domain_name}`, where domain_name is the fully qualified domain name. (required)
  pageToken: string, The next_page_token value returned from a previous List request, if any. This is the value of ListTrafficStatsResponse.next_page_token returned from the previous call to `ListTrafficStats` method.
  endDate_month: integer, Month of year. Must be from 1 to 12, or 0 if specifying a year without a month and day.
  endDate_day: integer, Day of month. Must be from 1 to 31 and valid for the year and month, or 0 if specifying a year by itself or a year and month where the day is not significant.
  pageSize: integer, Requested page size. Server may return fewer TrafficStats than requested. If unspecified, server will pick an appropriate default.
  startDate_month: integer, Month of year. Must be from 1 to 12, or 0 if specifying a year without a month and day.
  startDate_year: integer, Year of date. Must be from 1 to 9999, or 0 if specifying a date without a year.
  startDate_day: integer, Day of month. Must be from 1 to 31 and valid for the year and month, or 0 if specifying a year by itself or a year and month where the day is not significant.
  endDate_year: integer, Year of date. Must be from 1 to 9999, or 0 if specifying a date without a year.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for ListTrafficStats.
    &quot;nextPageToken&quot;: &quot;A String&quot;, # Token to retrieve the next page of results, or empty if there are no more results in the list.
    &quot;trafficStats&quot;: [ # The list of TrafficStats.
      { # Email traffic statistics pertaining to a specific date.
        &quot;ipReputations&quot;: [ # Reputation information pertaining to the IP addresses of the email servers for the domain. There is exactly one entry for each reputation category except REPUTATION_CATEGORY_UNSPECIFIED.
          { # IP Reputation information for a set of IPs in a specific reputation category.
            &quot;numIps&quot;: &quot;A String&quot;, # Total number of unique IPs in this reputation category. This metric only pertains to traffic that passed [SPF](http://www.openspf.org/) or [DKIM](http://www.dkim.org/).
            &quot;reputation&quot;: &quot;A String&quot;, # The reputation category this IP reputation represents.
            &quot;sampleIps&quot;: [ # A sample of IPs in this reputation category.
              &quot;A String&quot;,
            ],
          },
        ],
        &quot;dmarcSuccessRatio&quot;: 3.14, # The ratio of mail that passed [DMARC](https://dmarc.org/) alignment checks vs all mail received from the domain that successfully authenticated with either of [SPF](http://www.openspf.org/) or [DKIM](http://www.dkim.org/).
        &quot;deliveryErrors&quot;: [ # Delivery errors for the domain. This metric only pertains to traffic that passed [SPF](http://www.openspf.org/) or [DKIM](http://www.dkim.org/).
          { # Metric on a particular delivery error type.
            &quot;errorClass&quot;: &quot;A String&quot;, # The class of delivery error.
            &quot;errorRatio&quot;: 3.14, # The ratio of messages where the error occurred vs all authenticated traffic.
            &quot;errorType&quot;: &quot;A String&quot;, # The type of delivery error.
          },
        ],
        &quot;inboundEncryptionRatio&quot;: 3.14, # The ratio of incoming mail (to Gmail), that passed secure transport (TLS) vs all mail received from that domain. This metric only pertains to traffic that passed [SPF](http://www.openspf.org/) or [DKIM](http://www.dkim.org/).
        &quot;name&quot;: &quot;A String&quot;, # The resource name of the traffic statistics. Traffic statistic names have the form `domains/{domain}/trafficStats/{date}`, where domain_name is the fully qualified domain name (i.e., mymail.mydomain.com) of the domain this traffic statistics pertains to and date is the date in yyyymmdd format that these statistics corresponds to. For example: domains/mymail.mydomain.com/trafficStats/20160807
        &quot;userReportedSpamRatio&quot;: 3.14, # The ratio of user-report spam vs. email that was sent to the inbox. This metric only pertains to emails authenticated by [DKIM](http://www.dkim.org/).
        &quot;domainReputation&quot;: &quot;A String&quot;, # Reputation of the domain.
        &quot;spfSuccessRatio&quot;: 3.14, # The ratio of mail that successfully authenticated with SPF vs. all mail that attempted to authenticate with [SPF](http://www.openspf.org/). Spoofed mail is excluded.
        &quot;spammyFeedbackLoops&quot;: [ # Spammy [Feedback loop identifiers] (https://support.google.com/mail/answer/6254652) with their individual spam rates. This metric only pertains to traffic that is authenticated by [DKIM](http://www.dkim.org/).
          { # [Feedback loop](https://support.google.com/mail/answer/6254652) identifier information.
            &quot;spamRatio&quot;: 3.14, # The ratio of user marked spam messages with the identifier vs the total number of inboxed messages with that identifier.
            &quot;id&quot;: &quot;A String&quot;, # Feedback loop identifier that uniquely identifies individual campaigns.
          },
        ],
        &quot;dkimSuccessRatio&quot;: 3.14, # The ratio of mail that successfully authenticated with DKIM vs. all mail that attempted to authenticate with [DKIM](http://www.dkim.org/). Spoofed mail is excluded.
        &quot;outboundEncryptionRatio&quot;: 3.14, # The ratio of outgoing mail (from Gmail) that was accepted over secure transport (TLS).
      },
    ],
  }</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>