<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.details.html">details</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 details associated with a specific reason for which bids were filtered, with the number of bids filtered for each detail.</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 details associated with a specific reason for which bids were filtered, with the number of bids filtered for each detail.

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 detail. See [creative-status-codes](https://developers.google.com/authorized-buyers/rtb/downloads/creative-status-codes). Details are only available for statuses 10, 14, 15, 17, 18, 19, 86, and 87. (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 ListCreativeStatusBreakdownByDetailResponse.nextPageToken returned from the previous call to the filteredBids.details.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 details associated with a given filtered bid reason.
  &quot;detailType&quot;: &quot;A String&quot;, # The type of detail that the detail IDs represent.
  &quot;filteredBidDetailRows&quot;: [ # List of rows, with counts of bids with a given creative status aggregated by detail.
    { # The number of filtered bids with the specified dimension values, among those filtered due to the requested filtering reason (i.e. creative status), that have the specified detail.
      &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 detail.
        &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;detail&quot;: &quot;A String&quot;, # The ID of the detail, can be numeric or text. The associated value can be looked up in the dictionary file corresponding to the DetailType in the response message.
      &quot;detailId&quot;: 42, # Note: this field will be deprecated, use &quot;detail&quot; field instead. When &quot;detail&quot; field represents an integer value, this field is populated as the same integer value &quot;detail&quot; field represents, otherwise this field will be 0. The ID of the detail. The associated value can be looked up in the dictionary file corresponding to the DetailType in the response message.
      &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 ListCreativeStatusBreakdownByDetailRequest.pageToken field in the subsequent call to the filteredBids.details.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>