<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></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="adexchangebuyer2_v2beta1.bidders.accounts.filterSets.bidMetrics.html">bidMetrics()</a></code>
</p>
<p class="firstline">Returns the bidMetrics Resource.</p>

<p class="toc_element">
  <code><a href="adexchangebuyer2_v2beta1.bidders.accounts.filterSets.bidResponseErrors.html">bidResponseErrors()</a></code>
</p>
<p class="firstline">Returns the bidResponseErrors Resource.</p>

<p class="toc_element">
  <code><a href="adexchangebuyer2_v2beta1.bidders.accounts.filterSets.bidResponsesWithoutBids.html">bidResponsesWithoutBids()</a></code>
</p>
<p class="firstline">Returns the bidResponsesWithoutBids Resource.</p>

<p class="toc_element">
  <code><a href="adexchangebuyer2_v2beta1.bidders.accounts.filterSets.filteredBidRequests.html">filteredBidRequests()</a></code>
</p>
<p class="firstline">Returns the filteredBidRequests Resource.</p>

<p class="toc_element">
  <code><a href="adexchangebuyer2_v2beta1.bidders.accounts.filterSets.filteredBids.html">filteredBids()</a></code>
</p>
<p class="firstline">Returns the filteredBids Resource.</p>

<p class="toc_element">
  <code><a href="adexchangebuyer2_v2beta1.bidders.accounts.filterSets.impressionMetrics.html">impressionMetrics()</a></code>
</p>
<p class="firstline">Returns the impressionMetrics Resource.</p>

<p class="toc_element">
  <code><a href="adexchangebuyer2_v2beta1.bidders.accounts.filterSets.losingBids.html">losingBids()</a></code>
</p>
<p class="firstline">Returns the losingBids Resource.</p>

<p class="toc_element">
  <code><a href="adexchangebuyer2_v2beta1.bidders.accounts.filterSets.nonBillableWinningBids.html">nonBillableWinningBids()</a></code>
</p>
<p class="firstline">Returns the nonBillableWinningBids Resource.</p>

<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="#create">create(ownerName, body=None, isTransient=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates the specified filter set for the account with the given account ID.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes the requested filter set from the account with the given account ID.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves the requested filter set for the account with the given account ID.</p>
<p class="toc_element">
  <code><a href="#list">list(ownerName, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all filter sets for the account with the given account ID.</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="create">create(ownerName, body=None, isTransient=None, x__xgafv=None)</code>
  <pre>Creates the specified filter set for the account with the given account ID.

Args:
  ownerName: string, Name of the owner (bidder or account) of the filter set to be created. For example: - For a bidder-level filter set for bidder 123: `bidders/123` - For an account-level filter set for the buyer account representing bidder 123: `bidders/123/accounts/123` - For an account-level filter set for the child seat buyer account 456 whose bidder is 123: `bidders/123/accounts/456` (required)
  body: object, The request body.
    The object takes the form of:

{ # A set of filters that is applied to a request for data. Within a filter set, an AND operation is performed across the filters represented by each field. An OR operation is performed across the filters represented by the multiple values of a repeated field, e.g., &quot;format=VIDEO AND deal_id=12 AND (seller_network_id=34 OR seller_network_id=56)&quot;.
  &quot;absoluteDateRange&quot;: { # An absolute date range, specified by its start date and end date. The supported range of dates begins 30 days before today and ends today. Validity checked upon filter set creation. If a filter set with an absolute date range is run at a later date more than 30 days after start_date, it will fail. # An absolute date range, defined by a start date and an end date. Interpreted relative to Pacific time zone.
    &quot;endDate&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # The end date of the range (inclusive). Must be within the 30 days leading up to current date, and must be equal to or after start_date.
      &quot;day&quot;: 42, # 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.
      &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
      &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
    },
    &quot;startDate&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # The start date of the range (inclusive). Must be within the 30 days leading up to current date, and must be equal to or before end_date.
      &quot;day&quot;: 42, # 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.
      &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
      &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
    },
  },
  &quot;breakdownDimensions&quot;: [ # The set of dimensions along which to break down the response; may be empty. If multiple dimensions are requested, the breakdown is along the Cartesian product of the requested dimensions.
    &quot;A String&quot;,
  ],
  &quot;creativeId&quot;: &quot;A String&quot;, # The ID of the creative on which to filter; optional. This field may be set only for a filter set that accesses account-level troubleshooting data, i.e., one whose name matches the `bidders/*/accounts/*/filterSets/*` pattern.
  &quot;dealId&quot;: &quot;A String&quot;, # The ID of the deal on which to filter; optional. This field may be set only for a filter set that accesses account-level troubleshooting data, i.e., one whose name matches the `bidders/*/accounts/*/filterSets/*` pattern.
  &quot;environment&quot;: &quot;A String&quot;, # The environment on which to filter; optional.
  &quot;format&quot;: &quot;A String&quot;, # Creative format bidded on or allowed to bid on, can be empty.
  &quot;formats&quot;: [ # Creative formats bidded on or allowed to bid on, can be empty. Although this field is a list, it can only be populated with a single item. A HTTP 400 bad request error will be returned in the response if you specify multiple items.
    &quot;A String&quot;,
  ],
  &quot;name&quot;: &quot;A String&quot;, # A user-defined name of the filter set. Filter set names must be unique globally and match one of the patterns: - `bidders/*/filterSets/*` (for accessing bidder-level troubleshooting data) - `bidders/*/accounts/*/filterSets/*` (for accessing account-level troubleshooting data) This field is required in create operations.
  &quot;platforms&quot;: [ # The list of platforms on which to filter; may be empty. The filters represented by multiple platforms are ORed together (i.e., if non-empty, results must match any one of the platforms).
    &quot;A String&quot;,
  ],
  &quot;publisherIdentifiers&quot;: [ # For Open Bidding partners only. The list of publisher identifiers on which to filter; may be empty. The filters represented by multiple publisher identifiers are ORed together.
    &quot;A String&quot;,
  ],
  &quot;realtimeTimeRange&quot;: { # An open-ended realtime time range specified by the start timestamp. For filter sets that specify a realtime time range RTB metrics continue to be aggregated throughout the lifetime of the filter set. # An open-ended realtime time range, defined by the aggregation start timestamp.
    &quot;startTimestamp&quot;: &quot;A String&quot;, # The start timestamp of the real-time RTB metrics aggregation.
  },
  &quot;relativeDateRange&quot;: { # A relative date range, specified by an offset and a duration. The supported range of dates begins 30 days before today and ends today, i.e., the limits for these values are: offset_days &gt;= 0 duration_days &gt;= 1 offset_days + duration_days &lt;= 30 # A relative date range, defined by an offset from today and a duration. Interpreted relative to Pacific time zone.
    &quot;durationDays&quot;: 42, # The number of days in the requested date range, e.g., for a range spanning today: 1. For a range spanning the last 7 days: 7.
    &quot;offsetDays&quot;: 42, # The end date of the filter set, specified as the number of days before today, e.g., for a range where the last date is today: 0.
  },
  &quot;sellerNetworkIds&quot;: [ # For Authorized Buyers only. The list of IDs of the seller (publisher) networks on which to filter; may be empty. The filters represented by multiple seller network IDs are ORed together (i.e., if non-empty, results must match any one of the publisher networks). See [seller-network-ids](https://developers.google.com/authorized-buyers/rtb/downloads/seller-network-ids) file for the set of existing seller network IDs.
    42,
  ],
  &quot;timeSeriesGranularity&quot;: &quot;A String&quot;, # The granularity of time intervals if a time series breakdown is desired; optional.
}

  isTransient: boolean, Whether the filter set is transient, or should be persisted indefinitely. By default, filter sets are not transient. If transient, it will be available for at least 1 hour after creation.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A set of filters that is applied to a request for data. Within a filter set, an AND operation is performed across the filters represented by each field. An OR operation is performed across the filters represented by the multiple values of a repeated field, e.g., &quot;format=VIDEO AND deal_id=12 AND (seller_network_id=34 OR seller_network_id=56)&quot;.
  &quot;absoluteDateRange&quot;: { # An absolute date range, specified by its start date and end date. The supported range of dates begins 30 days before today and ends today. Validity checked upon filter set creation. If a filter set with an absolute date range is run at a later date more than 30 days after start_date, it will fail. # An absolute date range, defined by a start date and an end date. Interpreted relative to Pacific time zone.
    &quot;endDate&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # The end date of the range (inclusive). Must be within the 30 days leading up to current date, and must be equal to or after start_date.
      &quot;day&quot;: 42, # 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.
      &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
      &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
    },
    &quot;startDate&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # The start date of the range (inclusive). Must be within the 30 days leading up to current date, and must be equal to or before end_date.
      &quot;day&quot;: 42, # 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.
      &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
      &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
    },
  },
  &quot;breakdownDimensions&quot;: [ # The set of dimensions along which to break down the response; may be empty. If multiple dimensions are requested, the breakdown is along the Cartesian product of the requested dimensions.
    &quot;A String&quot;,
  ],
  &quot;creativeId&quot;: &quot;A String&quot;, # The ID of the creative on which to filter; optional. This field may be set only for a filter set that accesses account-level troubleshooting data, i.e., one whose name matches the `bidders/*/accounts/*/filterSets/*` pattern.
  &quot;dealId&quot;: &quot;A String&quot;, # The ID of the deal on which to filter; optional. This field may be set only for a filter set that accesses account-level troubleshooting data, i.e., one whose name matches the `bidders/*/accounts/*/filterSets/*` pattern.
  &quot;environment&quot;: &quot;A String&quot;, # The environment on which to filter; optional.
  &quot;format&quot;: &quot;A String&quot;, # Creative format bidded on or allowed to bid on, can be empty.
  &quot;formats&quot;: [ # Creative formats bidded on or allowed to bid on, can be empty. Although this field is a list, it can only be populated with a single item. A HTTP 400 bad request error will be returned in the response if you specify multiple items.
    &quot;A String&quot;,
  ],
  &quot;name&quot;: &quot;A String&quot;, # A user-defined name of the filter set. Filter set names must be unique globally and match one of the patterns: - `bidders/*/filterSets/*` (for accessing bidder-level troubleshooting data) - `bidders/*/accounts/*/filterSets/*` (for accessing account-level troubleshooting data) This field is required in create operations.
  &quot;platforms&quot;: [ # The list of platforms on which to filter; may be empty. The filters represented by multiple platforms are ORed together (i.e., if non-empty, results must match any one of the platforms).
    &quot;A String&quot;,
  ],
  &quot;publisherIdentifiers&quot;: [ # For Open Bidding partners only. The list of publisher identifiers on which to filter; may be empty. The filters represented by multiple publisher identifiers are ORed together.
    &quot;A String&quot;,
  ],
  &quot;realtimeTimeRange&quot;: { # An open-ended realtime time range specified by the start timestamp. For filter sets that specify a realtime time range RTB metrics continue to be aggregated throughout the lifetime of the filter set. # An open-ended realtime time range, defined by the aggregation start timestamp.
    &quot;startTimestamp&quot;: &quot;A String&quot;, # The start timestamp of the real-time RTB metrics aggregation.
  },
  &quot;relativeDateRange&quot;: { # A relative date range, specified by an offset and a duration. The supported range of dates begins 30 days before today and ends today, i.e., the limits for these values are: offset_days &gt;= 0 duration_days &gt;= 1 offset_days + duration_days &lt;= 30 # A relative date range, defined by an offset from today and a duration. Interpreted relative to Pacific time zone.
    &quot;durationDays&quot;: 42, # The number of days in the requested date range, e.g., for a range spanning today: 1. For a range spanning the last 7 days: 7.
    &quot;offsetDays&quot;: 42, # The end date of the filter set, specified as the number of days before today, e.g., for a range where the last date is today: 0.
  },
  &quot;sellerNetworkIds&quot;: [ # For Authorized Buyers only. The list of IDs of the seller (publisher) networks on which to filter; may be empty. The filters represented by multiple seller network IDs are ORed together (i.e., if non-empty, results must match any one of the publisher networks). See [seller-network-ids](https://developers.google.com/authorized-buyers/rtb/downloads/seller-network-ids) file for the set of existing seller network IDs.
    42,
  ],
  &quot;timeSeriesGranularity&quot;: &quot;A String&quot;, # The granularity of time intervals if a time series breakdown is desired; optional.
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes the requested filter set from the account with the given account ID.

Args:
  name: string, Full name of the resource to delete. 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)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for `Empty` is empty JSON object `{}`.
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Retrieves the requested filter set for the account with the given account ID.

Args:
  name: string, Full name of the resource being requested. 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)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A set of filters that is applied to a request for data. Within a filter set, an AND operation is performed across the filters represented by each field. An OR operation is performed across the filters represented by the multiple values of a repeated field, e.g., &quot;format=VIDEO AND deal_id=12 AND (seller_network_id=34 OR seller_network_id=56)&quot;.
  &quot;absoluteDateRange&quot;: { # An absolute date range, specified by its start date and end date. The supported range of dates begins 30 days before today and ends today. Validity checked upon filter set creation. If a filter set with an absolute date range is run at a later date more than 30 days after start_date, it will fail. # An absolute date range, defined by a start date and an end date. Interpreted relative to Pacific time zone.
    &quot;endDate&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # The end date of the range (inclusive). Must be within the 30 days leading up to current date, and must be equal to or after start_date.
      &quot;day&quot;: 42, # 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.
      &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
      &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
    },
    &quot;startDate&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # The start date of the range (inclusive). Must be within the 30 days leading up to current date, and must be equal to or before end_date.
      &quot;day&quot;: 42, # 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.
      &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
      &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
    },
  },
  &quot;breakdownDimensions&quot;: [ # The set of dimensions along which to break down the response; may be empty. If multiple dimensions are requested, the breakdown is along the Cartesian product of the requested dimensions.
    &quot;A String&quot;,
  ],
  &quot;creativeId&quot;: &quot;A String&quot;, # The ID of the creative on which to filter; optional. This field may be set only for a filter set that accesses account-level troubleshooting data, i.e., one whose name matches the `bidders/*/accounts/*/filterSets/*` pattern.
  &quot;dealId&quot;: &quot;A String&quot;, # The ID of the deal on which to filter; optional. This field may be set only for a filter set that accesses account-level troubleshooting data, i.e., one whose name matches the `bidders/*/accounts/*/filterSets/*` pattern.
  &quot;environment&quot;: &quot;A String&quot;, # The environment on which to filter; optional.
  &quot;format&quot;: &quot;A String&quot;, # Creative format bidded on or allowed to bid on, can be empty.
  &quot;formats&quot;: [ # Creative formats bidded on or allowed to bid on, can be empty. Although this field is a list, it can only be populated with a single item. A HTTP 400 bad request error will be returned in the response if you specify multiple items.
    &quot;A String&quot;,
  ],
  &quot;name&quot;: &quot;A String&quot;, # A user-defined name of the filter set. Filter set names must be unique globally and match one of the patterns: - `bidders/*/filterSets/*` (for accessing bidder-level troubleshooting data) - `bidders/*/accounts/*/filterSets/*` (for accessing account-level troubleshooting data) This field is required in create operations.
  &quot;platforms&quot;: [ # The list of platforms on which to filter; may be empty. The filters represented by multiple platforms are ORed together (i.e., if non-empty, results must match any one of the platforms).
    &quot;A String&quot;,
  ],
  &quot;publisherIdentifiers&quot;: [ # For Open Bidding partners only. The list of publisher identifiers on which to filter; may be empty. The filters represented by multiple publisher identifiers are ORed together.
    &quot;A String&quot;,
  ],
  &quot;realtimeTimeRange&quot;: { # An open-ended realtime time range specified by the start timestamp. For filter sets that specify a realtime time range RTB metrics continue to be aggregated throughout the lifetime of the filter set. # An open-ended realtime time range, defined by the aggregation start timestamp.
    &quot;startTimestamp&quot;: &quot;A String&quot;, # The start timestamp of the real-time RTB metrics aggregation.
  },
  &quot;relativeDateRange&quot;: { # A relative date range, specified by an offset and a duration. The supported range of dates begins 30 days before today and ends today, i.e., the limits for these values are: offset_days &gt;= 0 duration_days &gt;= 1 offset_days + duration_days &lt;= 30 # A relative date range, defined by an offset from today and a duration. Interpreted relative to Pacific time zone.
    &quot;durationDays&quot;: 42, # The number of days in the requested date range, e.g., for a range spanning today: 1. For a range spanning the last 7 days: 7.
    &quot;offsetDays&quot;: 42, # The end date of the filter set, specified as the number of days before today, e.g., for a range where the last date is today: 0.
  },
  &quot;sellerNetworkIds&quot;: [ # For Authorized Buyers only. The list of IDs of the seller (publisher) networks on which to filter; may be empty. The filters represented by multiple seller network IDs are ORed together (i.e., if non-empty, results must match any one of the publisher networks). See [seller-network-ids](https://developers.google.com/authorized-buyers/rtb/downloads/seller-network-ids) file for the set of existing seller network IDs.
    42,
  ],
  &quot;timeSeriesGranularity&quot;: &quot;A String&quot;, # The granularity of time intervals if a time series breakdown is desired; optional.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(ownerName, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists all filter sets for the account with the given account ID.

Args:
  ownerName: string, Name of the owner (bidder or account) of the filter sets to be listed. For example: - For a bidder-level filter set for bidder 123: `bidders/123` - For an account-level filter set for the buyer account representing bidder 123: `bidders/123/accounts/123` - For an account-level filter set for the child seat buyer account 456 whose bidder is 123: `bidders/123/accounts/456` (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 ListFilterSetsResponse.nextPageToken returned from the previous call to the accounts.filterSets.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 filter sets.
  &quot;filterSets&quot;: [ # The filter sets belonging to the buyer.
    { # A set of filters that is applied to a request for data. Within a filter set, an AND operation is performed across the filters represented by each field. An OR operation is performed across the filters represented by the multiple values of a repeated field, e.g., &quot;format=VIDEO AND deal_id=12 AND (seller_network_id=34 OR seller_network_id=56)&quot;.
      &quot;absoluteDateRange&quot;: { # An absolute date range, specified by its start date and end date. The supported range of dates begins 30 days before today and ends today. Validity checked upon filter set creation. If a filter set with an absolute date range is run at a later date more than 30 days after start_date, it will fail. # An absolute date range, defined by a start date and an end date. Interpreted relative to Pacific time zone.
        &quot;endDate&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # The end date of the range (inclusive). Must be within the 30 days leading up to current date, and must be equal to or after start_date.
          &quot;day&quot;: 42, # 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.
          &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
          &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
        },
        &quot;startDate&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # The start date of the range (inclusive). Must be within the 30 days leading up to current date, and must be equal to or before end_date.
          &quot;day&quot;: 42, # 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.
          &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
          &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
        },
      },
      &quot;breakdownDimensions&quot;: [ # The set of dimensions along which to break down the response; may be empty. If multiple dimensions are requested, the breakdown is along the Cartesian product of the requested dimensions.
        &quot;A String&quot;,
      ],
      &quot;creativeId&quot;: &quot;A String&quot;, # The ID of the creative on which to filter; optional. This field may be set only for a filter set that accesses account-level troubleshooting data, i.e., one whose name matches the `bidders/*/accounts/*/filterSets/*` pattern.
      &quot;dealId&quot;: &quot;A String&quot;, # The ID of the deal on which to filter; optional. This field may be set only for a filter set that accesses account-level troubleshooting data, i.e., one whose name matches the `bidders/*/accounts/*/filterSets/*` pattern.
      &quot;environment&quot;: &quot;A String&quot;, # The environment on which to filter; optional.
      &quot;format&quot;: &quot;A String&quot;, # Creative format bidded on or allowed to bid on, can be empty.
      &quot;formats&quot;: [ # Creative formats bidded on or allowed to bid on, can be empty. Although this field is a list, it can only be populated with a single item. A HTTP 400 bad request error will be returned in the response if you specify multiple items.
        &quot;A String&quot;,
      ],
      &quot;name&quot;: &quot;A String&quot;, # A user-defined name of the filter set. Filter set names must be unique globally and match one of the patterns: - `bidders/*/filterSets/*` (for accessing bidder-level troubleshooting data) - `bidders/*/accounts/*/filterSets/*` (for accessing account-level troubleshooting data) This field is required in create operations.
      &quot;platforms&quot;: [ # The list of platforms on which to filter; may be empty. The filters represented by multiple platforms are ORed together (i.e., if non-empty, results must match any one of the platforms).
        &quot;A String&quot;,
      ],
      &quot;publisherIdentifiers&quot;: [ # For Open Bidding partners only. The list of publisher identifiers on which to filter; may be empty. The filters represented by multiple publisher identifiers are ORed together.
        &quot;A String&quot;,
      ],
      &quot;realtimeTimeRange&quot;: { # An open-ended realtime time range specified by the start timestamp. For filter sets that specify a realtime time range RTB metrics continue to be aggregated throughout the lifetime of the filter set. # An open-ended realtime time range, defined by the aggregation start timestamp.
        &quot;startTimestamp&quot;: &quot;A String&quot;, # The start timestamp of the real-time RTB metrics aggregation.
      },
      &quot;relativeDateRange&quot;: { # A relative date range, specified by an offset and a duration. The supported range of dates begins 30 days before today and ends today, i.e., the limits for these values are: offset_days &gt;= 0 duration_days &gt;= 1 offset_days + duration_days &lt;= 30 # A relative date range, defined by an offset from today and a duration. Interpreted relative to Pacific time zone.
        &quot;durationDays&quot;: 42, # The number of days in the requested date range, e.g., for a range spanning today: 1. For a range spanning the last 7 days: 7.
        &quot;offsetDays&quot;: 42, # The end date of the filter set, specified as the number of days before today, e.g., for a range where the last date is today: 0.
      },
      &quot;sellerNetworkIds&quot;: [ # For Authorized Buyers only. The list of IDs of the seller (publisher) networks on which to filter; may be empty. The filters represented by multiple seller network IDs are ORed together (i.e., if non-empty, results must match any one of the publisher networks). See [seller-network-ids](https://developers.google.com/authorized-buyers/rtb/downloads/seller-network-ids) file for the set of existing seller network IDs.
        42,
      ],
      &quot;timeSeriesGranularity&quot;: &quot;A String&quot;, # The granularity of time intervals if a time series breakdown is desired; optional.
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token to retrieve the next page of results. Pass this value in the ListFilterSetsRequest.pageToken field in the subsequent call to the accounts.filterSets.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>