<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="adexchangebuyer2_v2beta1.html">Ad Exchange Buyer API II</a> . <a href="adexchangebuyer2_v2beta1.bidders.html">bidders</a> . <a href="adexchangebuyer2_v2beta1.bidders.accounts.html">accounts</a> . <a href="adexchangebuyer2_v2beta1.bidders.accounts.filterSets.html">filterSets</a> . <a href="adexchangebuyer2_v2beta1.bidders.accounts.filterSets.bidMetrics.html">bidMetrics</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="#list">list(filterSetName, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all metrics that are measured in terms of number of bids.</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="list">list(filterSetName, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists all metrics that are measured in terms of number of bids.

Args:
  filterSetName: string, Name of the filter set that should be applied to the requested metrics. For example: - For a bidder-level filter set for bidder 123: `bidders/123/filterSets/abc` - For an account-level filter set for the buyer account representing bidder 123: `bidders/123/accounts/123/filterSets/abc` - For an account-level filter set for the child seat buyer account 456 whose bidder is 123: `bidders/123/accounts/456/filterSets/abc` (required)
  pageSize: integer, Requested page size. The server may return fewer results than requested. If unspecified, the server will pick an appropriate default.
  pageToken: string, A token identifying a page of results the server should return. Typically, this is the value of ListBidMetricsResponse.nextPageToken returned from the previous call to the bidMetrics.list method.
  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 listing the metrics that are measured in number of bids.
  &quot;bidMetricsRows&quot;: [ # List of rows, each containing a set of bid metrics.
    { # The set of metrics that are measured in numbers of bids, representing how many bids with the specified dimension values were considered eligible at each stage of the bidding funnel;
      &quot;bids&quot;: { # A metric value, with an expected value and a variance; represents a count that may be either exact or estimated (i.e. when sampled). # The number of bids that Ad Exchange received from the buyer.
        &quot;value&quot;: &quot;A String&quot;, # The expected value of the metric.
        &quot;variance&quot;: &quot;A String&quot;, # The variance (i.e. square of the standard deviation) of the metric value. If value is exact, variance is 0. Can be used to calculate margin of error as a percentage of value, using the following formula, where Z is the standard constant that depends on the desired size of the confidence interval (e.g. for 90% confidence interval, use Z = 1.645): marginOfError = 100 * Z * sqrt(variance) / value
      },
      &quot;bidsInAuction&quot;: { # A metric value, with an expected value and a variance; represents a count that may be either exact or estimated (i.e. when sampled). # The number of bids that were permitted to compete in the auction.
        &quot;value&quot;: &quot;A String&quot;, # The expected value of the metric.
        &quot;variance&quot;: &quot;A String&quot;, # The variance (i.e. square of the standard deviation) of the metric value. If value is exact, variance is 0. Can be used to calculate margin of error as a percentage of value, using the following formula, where Z is the standard constant that depends on the desired size of the confidence interval (e.g. for 90% confidence interval, use Z = 1.645): marginOfError = 100 * Z * sqrt(variance) / value
      },
      &quot;billedImpressions&quot;: { # A metric value, with an expected value and a variance; represents a count that may be either exact or estimated (i.e. when sampled). # The number of bids for which the buyer was billed.
        &quot;value&quot;: &quot;A String&quot;, # The expected value of the metric.
        &quot;variance&quot;: &quot;A String&quot;, # The variance (i.e. square of the standard deviation) of the metric value. If value is exact, variance is 0. Can be used to calculate margin of error as a percentage of value, using the following formula, where Z is the standard constant that depends on the desired size of the confidence interval (e.g. for 90% confidence interval, use Z = 1.645): marginOfError = 100 * Z * sqrt(variance) / value
      },
      &quot;impressionsWon&quot;: { # A metric value, with an expected value and a variance; represents a count that may be either exact or estimated (i.e. when sampled). # The number of bids that won the auction.
        &quot;value&quot;: &quot;A String&quot;, # The expected value of the metric.
        &quot;variance&quot;: &quot;A String&quot;, # The variance (i.e. square of the standard deviation) of the metric value. If value is exact, variance is 0. Can be used to calculate margin of error as a percentage of value, using the following formula, where Z is the standard constant that depends on the desired size of the confidence interval (e.g. for 90% confidence interval, use Z = 1.645): marginOfError = 100 * Z * sqrt(variance) / value
      },
      &quot;measurableImpressions&quot;: { # A metric value, with an expected value and a variance; represents a count that may be either exact or estimated (i.e. when sampled). # The number of bids for which the corresponding impression was measurable for viewability (as defined by Active View).
        &quot;value&quot;: &quot;A String&quot;, # The expected value of the metric.
        &quot;variance&quot;: &quot;A String&quot;, # The variance (i.e. square of the standard deviation) of the metric value. If value is exact, variance is 0. Can be used to calculate margin of error as a percentage of value, using the following formula, where Z is the standard constant that depends on the desired size of the confidence interval (e.g. for 90% confidence interval, use Z = 1.645): marginOfError = 100 * Z * sqrt(variance) / value
      },
      &quot;reachedQueries&quot;: { # A metric value, with an expected value and a variance; represents a count that may be either exact or estimated (i.e. when sampled). # The number of bids that won the auction and also won the mediation waterfall (if any).
        &quot;value&quot;: &quot;A String&quot;, # The expected value of the metric.
        &quot;variance&quot;: &quot;A String&quot;, # The variance (i.e. square of the standard deviation) of the metric value. If value is exact, variance is 0. Can be used to calculate margin of error as a percentage of value, using the following formula, where Z is the standard constant that depends on the desired size of the confidence interval (e.g. for 90% confidence interval, use Z = 1.645): marginOfError = 100 * Z * sqrt(variance) / value
      },
      &quot;rowDimensions&quot;: { # A response may include multiple rows, breaking down along various dimensions. Encapsulates the values of all dimensions for a given row. # The values of all dimensions associated with metric values in this row.
        &quot;publisherIdentifier&quot;: &quot;A String&quot;, # The publisher identifier for this row, if a breakdown by [BreakdownDimension.PUBLISHER_IDENTIFIER](https://developers.google.com/authorized-buyers/apis/reference/rest/v2beta1/bidders.accounts.filterSets#FilterSet.BreakdownDimension) was requested.
        &quot;timeInterval&quot;: { # An interval of time, with an absolute start and end. # The time interval that this row represents.
          &quot;endTime&quot;: &quot;A String&quot;, # The timestamp marking the end of the range (exclusive) for which data is included.
          &quot;startTime&quot;: &quot;A String&quot;, # The timestamp marking the start of the range (inclusive) for which data is included.
        },
      },
      &quot;viewableImpressions&quot;: { # A metric value, with an expected value and a variance; represents a count that may be either exact or estimated (i.e. when sampled). # The number of bids for which the corresponding impression was viewable (as defined by Active View).
        &quot;value&quot;: &quot;A String&quot;, # The expected value of the metric.
        &quot;variance&quot;: &quot;A String&quot;, # The variance (i.e. square of the standard deviation) of the metric value. If value is exact, variance is 0. Can be used to calculate margin of error as a percentage of value, using the following formula, where Z is the standard constant that depends on the desired size of the confidence interval (e.g. for 90% confidence interval, use Z = 1.645): marginOfError = 100 * Z * sqrt(variance) / value
      },
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token to retrieve the next page of results. Pass this value in the ListBidMetricsRequest.pageToken field in the subsequent call to the bidMetrics.list method to retrieve the next page of results.
}</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>