<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.filterSets.html">filterSets</a> . <a href="adexchangebuyer2_v2beta1.bidders.filterSets.filteredBids.html">filteredBids</a> . <a href="adexchangebuyer2_v2beta1.bidders.filterSets.filteredBids.creatives.html">creatives</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, creativeStatusId, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">List all creatives associated with a specific reason for which bids were filtered, with the number of bids filtered for each creative.</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, creativeStatusId, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>List all creatives associated with a specific reason for which bids were filtered, with the number of bids filtered for each creative.

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)
  creativeStatusId: integer, The ID of the creative status for which to retrieve a breakdown by creative. See [creative-status-codes](https://developers.google.com/authorized-buyers/rtb/downloads/creative-status-codes). (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 ListCreativeStatusBreakdownByCreativeResponse.nextPageToken returned from the previous call to the filteredBids.creatives.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 all creatives associated with a given filtered bid reason.
  &quot;filteredBidCreativeRows&quot;: [ # List of rows, with counts of bids with a given creative status aggregated by creative.
    { # The number of filtered bids with the specified dimension values that have the specified creative.
      &quot;bidCount&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 with the specified creative.
        &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;creativeId&quot;: &quot;A String&quot;, # The ID of the creative.
      &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;nextPageToken&quot;: &quot;A String&quot;, # A token to retrieve the next page of results. Pass this value in the ListCreativeStatusBreakdownByCreativeRequest.pageToken field in the subsequent call to the filteredBids.creatives.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>