<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_v1.html">Gmail Postmaster Tools API</a> . <a href="gmailpostmastertools_v1.domains.html">domains</a> . <a href="gmailpostmastertools_v1.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, endDate_day=None, endDate_month=None, endDate_year=None, pageSize=None, pageToken=None, startDate_day=None, startDate_month=None, startDate_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;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;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;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;domainReputation&quot;: &quot;A String&quot;, # Reputation of the domain.
  &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;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;ipCount&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;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;outboundEncryptionRatio&quot;: 3.14, # The ratio of outgoing mail (from Gmail) that was accepted over secure transport (TLS).
  &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;id&quot;: &quot;A String&quot;, # Feedback loop identifier that uniquely identifies individual campaigns.
      &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;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;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/).
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, endDate_day=None, endDate_month=None, endDate_year=None, pageSize=None, pageToken=None, startDate_day=None, startDate_month=None, startDate_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)
  endDate_day: integer, Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn&#x27;t significant.
  endDate_month: integer, Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
  endDate_year: integer, Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
  pageSize: integer, Requested page size. Server may return fewer TrafficStats than requested. If unspecified, server will pick an appropriate default.
  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.
  startDate_day: integer, Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn&#x27;t significant.
  startDate_month: integer, Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
  startDate_year: integer, Year of the date. Must be from 1 to 9999, or 0 to specify 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;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;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;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;domainReputation&quot;: &quot;A String&quot;, # Reputation of the domain.
      &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;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;ipCount&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;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;outboundEncryptionRatio&quot;: 3.14, # The ratio of outgoing mail (from Gmail) that was accepted over secure transport (TLS).
      &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;id&quot;: &quot;A String&quot;, # Feedback loop identifier that uniquely identifies individual campaigns.
          &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;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;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/).
    },
  ],
}</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>