<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="realtimebidding_v1.html">Real-time Bidding API</a> . <a href="realtimebidding_v1.bidders.html">bidders</a> . <a href="realtimebidding_v1.bidders.pretargetingConfigs.html">pretargetingConfigs</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#activate">activate(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Activates a pretargeting configuration.</p>
<p class="toc_element">
  <code><a href="#addTargetedApps">addTargetedApps(pretargetingConfig, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Adds targeted apps to the pretargeting configuration.</p>
<p class="toc_element">
  <code><a href="#addTargetedPublishers">addTargetedPublishers(pretargetingConfig, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Adds targeted publishers to the pretargeting config.</p>
<p class="toc_element">
  <code><a href="#addTargetedSites">addTargetedSites(pretargetingConfig, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Adds targeted sites to the pretargeting configuration.</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(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a pretargeting configuration. A pretargeting configuration's state (PretargetingConfig.state) is active upon creation, and it will start to affect traffic shortly after. A bidder may create a maximum of 10 pretargeting configurations. Attempts to exceed this maximum results in a 400 bad request error.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a pretargeting configuration.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a pretargeting configuration.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all pretargeting configurations for a single bidder.</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>
<p class="toc_element">
  <code><a href="#patch">patch(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates a pretargeting configuration.</p>
<p class="toc_element">
  <code><a href="#removeTargetedApps">removeTargetedApps(pretargetingConfig, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Removes targeted apps from the pretargeting configuration.</p>
<p class="toc_element">
  <code><a href="#removeTargetedPublishers">removeTargetedPublishers(pretargetingConfig, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Removes targeted publishers from the pretargeting config.</p>
<p class="toc_element">
  <code><a href="#removeTargetedSites">removeTargetedSites(pretargetingConfig, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Removes targeted sites from the pretargeting configuration.</p>
<p class="toc_element">
  <code><a href="#suspend">suspend(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Suspends a pretargeting configuration.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="activate">activate(name, body=None, x__xgafv=None)</code>
  <pre>Activates a pretargeting configuration.

Args:
  name: string, Required. The name of the pretargeting configuration. Format: bidders/{bidderAccountId}/pretargetingConfig/{configId} (required)
  body: object, The request body.
    The object takes the form of:

{ # A request to activate a pretargeting configuration. Sets the configuration&#x27;s state to ACTIVE.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Pretargeting configuration: a set of targeting dimensions applied at the pretargeting stage of the RTB funnel. These control which inventory a bidder will receive bid requests for.
  &quot;allowedUserTargetingModes&quot;: [ # Targeting modes included by this configuration. A bid request must allow all the specified targeting modes. An unset value allows all bid requests to be sent, regardless of which targeting modes they allow.
    &quot;A String&quot;,
  ],
  &quot;appTargeting&quot;: { # A subset of app inventory to target. Bid requests that match criteria in at least one of the specified dimensions will be sent. # Targeting on a subset of app inventory. If APP is listed in targeted_environments, the specified targeting is applied. A maximum of 30,000 app IDs can be targeted. An unset value for targeting allows all app-based bid requests to be sent. Apps can either be targeting positively (bid requests will be sent only if the destination app is listed in the targeting dimension) or negatively (bid requests will be sent only if the destination app is not listed in the targeting dimension).
    &quot;mobileAppCategoryTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # Lists of included and excluded mobile app categories as defined in https://developers.google.com/adwords/api/docs/appendix/mobileappcategories.csv.
      &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
        &quot;A String&quot;,
      ],
      &quot;includedIds&quot;: [ # The IDs included in a configuration.
        &quot;A String&quot;,
      ],
    },
    &quot;mobileAppTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeted app IDs. App IDs can refer to those found in an app store or ones that are not published in an app store. A maximum of 30,000 app IDs can be targeted.
      &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
      &quot;values&quot;: [ # The values specified.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;billingId&quot;: &quot;A String&quot;, # Output only. The identifier that corresponds to this pretargeting configuration that helps buyers track and attribute their spend across their own arbitrary divisions. If a bid request matches more than one configuration, the buyer chooses which billing_id to attribute each of their bids.
  &quot;displayName&quot;: &quot;A String&quot;, # The diplay name associated with this configuration. This name must be unique among all the pretargeting configurations a bidder has.
  &quot;excludedContentLabelIds&quot;: [ # The sensitive content category label IDs excluded in this configuration. Bid requests for inventory with any of the specified content label IDs will not be sent. Refer to this file https://storage.googleapis.com/adx-rtb-dictionaries/content-labels.txt for category IDs.
    &quot;A String&quot;,
  ],
  &quot;geoTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The geos included or excluded in this configuration defined in https://storage.googleapis.com/adx-rtb-dictionaries/geo-table.csv
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;includedCreativeDimensions&quot;: [ # Creative dimensions included by this configuration. Only bid requests eligible for at least one of the specified creative dimensions will be sent. An unset value allows all bid requests to be sent, regardless of creative dimension.
    { # The dimensions of a creative. This applies to only HTML and Native creatives.
      &quot;height&quot;: &quot;A String&quot;, # The height of the creative in pixels.
      &quot;width&quot;: &quot;A String&quot;, # The width of the creative in pixels.
    },
  ],
  &quot;includedEnvironments&quot;: [ # Environments that are being included. Bid requests will not be sent for a given environment if it is not included. Further restrictions can be applied to included environments to target only a subset of its inventory. An unset value includes all environments.
    &quot;A String&quot;,
  ],
  &quot;includedFormats&quot;: [ # Creative formats included by this configuration. Only bid requests eligible for at least one of the specified creative formats will be sent. An unset value will allow all bid requests to be sent, regardless of format.
    &quot;A String&quot;,
  ],
  &quot;includedLanguages&quot;: [ # The languages included in this configuration, represented by their language code. See https://developers.google.com/adwords/api/docs/appendix/languagecodes.
    &quot;A String&quot;,
  ],
  &quot;includedMobileOperatingSystemIds&quot;: [ # The mobile operating systems included in this configuration as defined in https://storage.googleapis.com/adx-rtb-dictionaries/mobile-os.csv
    &quot;A String&quot;,
  ],
  &quot;includedPlatforms&quot;: [ # The platforms included by this configration. Bid requests for devices with the specified platform types will be sent. An unset value allows all bid requests to be sent, regardless of platform.
    &quot;A String&quot;,
  ],
  &quot;includedUserIdTypes&quot;: [ # User identifier types included in this configuration. At least one of the user identifier types specified in this list must be available for the bid request to be sent.
    &quot;A String&quot;,
  ],
  &quot;interstitialTargeting&quot;: &quot;A String&quot;, # The interstitial targeting specified for this configuration. The unset value will allow bid requests to be sent regardless of whether they are for interstitials or not.
  &quot;invalidGeoIds&quot;: [ # Output only. Existing included or excluded geos that are invalid. Previously targeted geos may become invalid due to privacy restrictions.
    &quot;A String&quot;,
  ],
  &quot;maximumQps&quot;: &quot;A String&quot;, # The maximum QPS threshold for this configuration. The bidder should receive no more than this number of bid requests matching this configuration per second across all their bidding endpoints among all trading locations. Further information available at https://developers.google.com/authorized-buyers/rtb/peer-guide
  &quot;minimumViewabilityDecile&quot;: 42, # The targeted minimum viewability decile, ranging in values [0, 10]. A value of 5 means that the configuration will only match adslots for which we predict at least 50% viewability. Values &gt; 10 will be rounded down to 10. An unset value or a value of 0 indicates that bid requests will be sent regardless of viewability.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Name of the pretargeting configuration that must follow the pattern `bidders/{bidder_account_id}/pretargetingConfigs/{config_id}`
  &quot;publisherTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeting on a subset of publisher inventory. Publishers can either be targeted positively (bid requests will be sent only if the publisher is listed in the targeting dimension) or negatively (bid requests will be sent only if the publisher is not listed in the targeting dimension). A maximum of 10,000 publisher IDs can be targeted. Publisher IDs are found in [ads.txt](https://iabtechlab.com/ads-txt/) / [app-ads.txt](https://iabtechlab.com/app-ads-txt/) and in bid requests in the `BidRequest.publisher_id` field on the [Google RTB protocol](https://developers.google.com/authorized-buyers/rtb/downloads/realtime-bidding-proto) or the `BidRequest.site.publisher.id` / `BidRequest.app.publisher.id` field on the [OpenRTB protocol](https://developers.google.com/authorized-buyers/rtb/downloads/openrtb-adx-proto).
    &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
    &quot;values&quot;: [ # The values specified.
      &quot;A String&quot;,
    ],
  },
  &quot;state&quot;: &quot;A String&quot;, # Output only. The state of this pretargeting configuration.
  &quot;userListTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The remarketing lists included or excluded in this configuration as defined in UserList.
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;verticalTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The verticals included or excluded in this configuration as defined in https://developers.google.com/authorized-buyers/rtb/downloads/publisher-verticals
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;webTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeting on a subset of site inventory. If WEB is listed in included_environments, the specified targeting is applied. A maximum of 50,000 site URLs can be targeted. An unset value for targeting allows all web-based bid requests to be sent. Sites can either be targeting positively (bid requests will be sent only if the destination site is listed in the targeting dimension) or negatively (bid requests will be sent only if the destination site is not listed in the pretargeting configuration).
    &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
    &quot;values&quot;: [ # The values specified.
      &quot;A String&quot;,
    ],
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="addTargetedApps">addTargetedApps(pretargetingConfig, body=None, x__xgafv=None)</code>
  <pre>Adds targeted apps to the pretargeting configuration.

Args:
  pretargetingConfig: string, Required. The name of the pretargeting configuration. Format: bidders/{bidderAccountId}/pretargetingConfig/{configId} (required)
  body: object, The request body.
    The object takes the form of:

{ # A request to start targeting the provided app IDs in a specific pretargeting configuration. The pretargeting configuration itself specifies how these apps are targeted. in PretargetingConfig.appTargeting.mobileAppTargeting.
  &quot;appIds&quot;: [ # A list of app IDs to target in the pretargeting configuration. These values will be added to the list of targeted app IDs in PretargetingConfig.appTargeting.mobileAppTargeting.values.
    &quot;A String&quot;,
  ],
  &quot;targetingMode&quot;: &quot;A String&quot;, # Required. The targeting mode that should be applied to the list of app IDs. If there are existing targeted app IDs, must be equal to the existing PretargetingConfig.appTargeting.mobileAppTargeting.targetingMode or a 400 bad request error will be returned.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Pretargeting configuration: a set of targeting dimensions applied at the pretargeting stage of the RTB funnel. These control which inventory a bidder will receive bid requests for.
  &quot;allowedUserTargetingModes&quot;: [ # Targeting modes included by this configuration. A bid request must allow all the specified targeting modes. An unset value allows all bid requests to be sent, regardless of which targeting modes they allow.
    &quot;A String&quot;,
  ],
  &quot;appTargeting&quot;: { # A subset of app inventory to target. Bid requests that match criteria in at least one of the specified dimensions will be sent. # Targeting on a subset of app inventory. If APP is listed in targeted_environments, the specified targeting is applied. A maximum of 30,000 app IDs can be targeted. An unset value for targeting allows all app-based bid requests to be sent. Apps can either be targeting positively (bid requests will be sent only if the destination app is listed in the targeting dimension) or negatively (bid requests will be sent only if the destination app is not listed in the targeting dimension).
    &quot;mobileAppCategoryTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # Lists of included and excluded mobile app categories as defined in https://developers.google.com/adwords/api/docs/appendix/mobileappcategories.csv.
      &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
        &quot;A String&quot;,
      ],
      &quot;includedIds&quot;: [ # The IDs included in a configuration.
        &quot;A String&quot;,
      ],
    },
    &quot;mobileAppTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeted app IDs. App IDs can refer to those found in an app store or ones that are not published in an app store. A maximum of 30,000 app IDs can be targeted.
      &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
      &quot;values&quot;: [ # The values specified.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;billingId&quot;: &quot;A String&quot;, # Output only. The identifier that corresponds to this pretargeting configuration that helps buyers track and attribute their spend across their own arbitrary divisions. If a bid request matches more than one configuration, the buyer chooses which billing_id to attribute each of their bids.
  &quot;displayName&quot;: &quot;A String&quot;, # The diplay name associated with this configuration. This name must be unique among all the pretargeting configurations a bidder has.
  &quot;excludedContentLabelIds&quot;: [ # The sensitive content category label IDs excluded in this configuration. Bid requests for inventory with any of the specified content label IDs will not be sent. Refer to this file https://storage.googleapis.com/adx-rtb-dictionaries/content-labels.txt for category IDs.
    &quot;A String&quot;,
  ],
  &quot;geoTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The geos included or excluded in this configuration defined in https://storage.googleapis.com/adx-rtb-dictionaries/geo-table.csv
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;includedCreativeDimensions&quot;: [ # Creative dimensions included by this configuration. Only bid requests eligible for at least one of the specified creative dimensions will be sent. An unset value allows all bid requests to be sent, regardless of creative dimension.
    { # The dimensions of a creative. This applies to only HTML and Native creatives.
      &quot;height&quot;: &quot;A String&quot;, # The height of the creative in pixels.
      &quot;width&quot;: &quot;A String&quot;, # The width of the creative in pixels.
    },
  ],
  &quot;includedEnvironments&quot;: [ # Environments that are being included. Bid requests will not be sent for a given environment if it is not included. Further restrictions can be applied to included environments to target only a subset of its inventory. An unset value includes all environments.
    &quot;A String&quot;,
  ],
  &quot;includedFormats&quot;: [ # Creative formats included by this configuration. Only bid requests eligible for at least one of the specified creative formats will be sent. An unset value will allow all bid requests to be sent, regardless of format.
    &quot;A String&quot;,
  ],
  &quot;includedLanguages&quot;: [ # The languages included in this configuration, represented by their language code. See https://developers.google.com/adwords/api/docs/appendix/languagecodes.
    &quot;A String&quot;,
  ],
  &quot;includedMobileOperatingSystemIds&quot;: [ # The mobile operating systems included in this configuration as defined in https://storage.googleapis.com/adx-rtb-dictionaries/mobile-os.csv
    &quot;A String&quot;,
  ],
  &quot;includedPlatforms&quot;: [ # The platforms included by this configration. Bid requests for devices with the specified platform types will be sent. An unset value allows all bid requests to be sent, regardless of platform.
    &quot;A String&quot;,
  ],
  &quot;includedUserIdTypes&quot;: [ # User identifier types included in this configuration. At least one of the user identifier types specified in this list must be available for the bid request to be sent.
    &quot;A String&quot;,
  ],
  &quot;interstitialTargeting&quot;: &quot;A String&quot;, # The interstitial targeting specified for this configuration. The unset value will allow bid requests to be sent regardless of whether they are for interstitials or not.
  &quot;invalidGeoIds&quot;: [ # Output only. Existing included or excluded geos that are invalid. Previously targeted geos may become invalid due to privacy restrictions.
    &quot;A String&quot;,
  ],
  &quot;maximumQps&quot;: &quot;A String&quot;, # The maximum QPS threshold for this configuration. The bidder should receive no more than this number of bid requests matching this configuration per second across all their bidding endpoints among all trading locations. Further information available at https://developers.google.com/authorized-buyers/rtb/peer-guide
  &quot;minimumViewabilityDecile&quot;: 42, # The targeted minimum viewability decile, ranging in values [0, 10]. A value of 5 means that the configuration will only match adslots for which we predict at least 50% viewability. Values &gt; 10 will be rounded down to 10. An unset value or a value of 0 indicates that bid requests will be sent regardless of viewability.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Name of the pretargeting configuration that must follow the pattern `bidders/{bidder_account_id}/pretargetingConfigs/{config_id}`
  &quot;publisherTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeting on a subset of publisher inventory. Publishers can either be targeted positively (bid requests will be sent only if the publisher is listed in the targeting dimension) or negatively (bid requests will be sent only if the publisher is not listed in the targeting dimension). A maximum of 10,000 publisher IDs can be targeted. Publisher IDs are found in [ads.txt](https://iabtechlab.com/ads-txt/) / [app-ads.txt](https://iabtechlab.com/app-ads-txt/) and in bid requests in the `BidRequest.publisher_id` field on the [Google RTB protocol](https://developers.google.com/authorized-buyers/rtb/downloads/realtime-bidding-proto) or the `BidRequest.site.publisher.id` / `BidRequest.app.publisher.id` field on the [OpenRTB protocol](https://developers.google.com/authorized-buyers/rtb/downloads/openrtb-adx-proto).
    &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
    &quot;values&quot;: [ # The values specified.
      &quot;A String&quot;,
    ],
  },
  &quot;state&quot;: &quot;A String&quot;, # Output only. The state of this pretargeting configuration.
  &quot;userListTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The remarketing lists included or excluded in this configuration as defined in UserList.
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;verticalTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The verticals included or excluded in this configuration as defined in https://developers.google.com/authorized-buyers/rtb/downloads/publisher-verticals
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;webTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeting on a subset of site inventory. If WEB is listed in included_environments, the specified targeting is applied. A maximum of 50,000 site URLs can be targeted. An unset value for targeting allows all web-based bid requests to be sent. Sites can either be targeting positively (bid requests will be sent only if the destination site is listed in the targeting dimension) or negatively (bid requests will be sent only if the destination site is not listed in the pretargeting configuration).
    &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
    &quot;values&quot;: [ # The values specified.
      &quot;A String&quot;,
    ],
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="addTargetedPublishers">addTargetedPublishers(pretargetingConfig, body=None, x__xgafv=None)</code>
  <pre>Adds targeted publishers to the pretargeting config.

Args:
  pretargetingConfig: string, Required. The name of the pretargeting configuration. Format: bidders/{bidderAccountId}/pretargetingConfig/{configId} (required)
  body: object, The request body.
    The object takes the form of:

{ # A request to start targeting the provided publishers in a specific pretargeting configuration. The pretargeting configuration itself specifies how these publishers are targeted in PretargetingConfig.publisherTargeting.
  &quot;publisherIds&quot;: [ # A list of publisher IDs to target in the pretargeting configuration. These values will be added to the list of targeted publisher IDs in PretargetingConfig.publisherTargeting.values. Publishers are identified by their publisher ID from ads.txt / app-ads.txt. See https://iabtechlab.com/ads-txt/ and https://iabtechlab.com/app-ads-txt/ for more details.
    &quot;A String&quot;,
  ],
  &quot;targetingMode&quot;: &quot;A String&quot;, # Required. The targeting mode that should be applied to the list of publisher IDs. If are existing publisher IDs, must be equal to the existing PretargetingConfig.publisherTargeting.targetingMode or a 400 bad request error will be returned.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Pretargeting configuration: a set of targeting dimensions applied at the pretargeting stage of the RTB funnel. These control which inventory a bidder will receive bid requests for.
  &quot;allowedUserTargetingModes&quot;: [ # Targeting modes included by this configuration. A bid request must allow all the specified targeting modes. An unset value allows all bid requests to be sent, regardless of which targeting modes they allow.
    &quot;A String&quot;,
  ],
  &quot;appTargeting&quot;: { # A subset of app inventory to target. Bid requests that match criteria in at least one of the specified dimensions will be sent. # Targeting on a subset of app inventory. If APP is listed in targeted_environments, the specified targeting is applied. A maximum of 30,000 app IDs can be targeted. An unset value for targeting allows all app-based bid requests to be sent. Apps can either be targeting positively (bid requests will be sent only if the destination app is listed in the targeting dimension) or negatively (bid requests will be sent only if the destination app is not listed in the targeting dimension).
    &quot;mobileAppCategoryTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # Lists of included and excluded mobile app categories as defined in https://developers.google.com/adwords/api/docs/appendix/mobileappcategories.csv.
      &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
        &quot;A String&quot;,
      ],
      &quot;includedIds&quot;: [ # The IDs included in a configuration.
        &quot;A String&quot;,
      ],
    },
    &quot;mobileAppTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeted app IDs. App IDs can refer to those found in an app store or ones that are not published in an app store. A maximum of 30,000 app IDs can be targeted.
      &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
      &quot;values&quot;: [ # The values specified.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;billingId&quot;: &quot;A String&quot;, # Output only. The identifier that corresponds to this pretargeting configuration that helps buyers track and attribute their spend across their own arbitrary divisions. If a bid request matches more than one configuration, the buyer chooses which billing_id to attribute each of their bids.
  &quot;displayName&quot;: &quot;A String&quot;, # The diplay name associated with this configuration. This name must be unique among all the pretargeting configurations a bidder has.
  &quot;excludedContentLabelIds&quot;: [ # The sensitive content category label IDs excluded in this configuration. Bid requests for inventory with any of the specified content label IDs will not be sent. Refer to this file https://storage.googleapis.com/adx-rtb-dictionaries/content-labels.txt for category IDs.
    &quot;A String&quot;,
  ],
  &quot;geoTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The geos included or excluded in this configuration defined in https://storage.googleapis.com/adx-rtb-dictionaries/geo-table.csv
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;includedCreativeDimensions&quot;: [ # Creative dimensions included by this configuration. Only bid requests eligible for at least one of the specified creative dimensions will be sent. An unset value allows all bid requests to be sent, regardless of creative dimension.
    { # The dimensions of a creative. This applies to only HTML and Native creatives.
      &quot;height&quot;: &quot;A String&quot;, # The height of the creative in pixels.
      &quot;width&quot;: &quot;A String&quot;, # The width of the creative in pixels.
    },
  ],
  &quot;includedEnvironments&quot;: [ # Environments that are being included. Bid requests will not be sent for a given environment if it is not included. Further restrictions can be applied to included environments to target only a subset of its inventory. An unset value includes all environments.
    &quot;A String&quot;,
  ],
  &quot;includedFormats&quot;: [ # Creative formats included by this configuration. Only bid requests eligible for at least one of the specified creative formats will be sent. An unset value will allow all bid requests to be sent, regardless of format.
    &quot;A String&quot;,
  ],
  &quot;includedLanguages&quot;: [ # The languages included in this configuration, represented by their language code. See https://developers.google.com/adwords/api/docs/appendix/languagecodes.
    &quot;A String&quot;,
  ],
  &quot;includedMobileOperatingSystemIds&quot;: [ # The mobile operating systems included in this configuration as defined in https://storage.googleapis.com/adx-rtb-dictionaries/mobile-os.csv
    &quot;A String&quot;,
  ],
  &quot;includedPlatforms&quot;: [ # The platforms included by this configration. Bid requests for devices with the specified platform types will be sent. An unset value allows all bid requests to be sent, regardless of platform.
    &quot;A String&quot;,
  ],
  &quot;includedUserIdTypes&quot;: [ # User identifier types included in this configuration. At least one of the user identifier types specified in this list must be available for the bid request to be sent.
    &quot;A String&quot;,
  ],
  &quot;interstitialTargeting&quot;: &quot;A String&quot;, # The interstitial targeting specified for this configuration. The unset value will allow bid requests to be sent regardless of whether they are for interstitials or not.
  &quot;invalidGeoIds&quot;: [ # Output only. Existing included or excluded geos that are invalid. Previously targeted geos may become invalid due to privacy restrictions.
    &quot;A String&quot;,
  ],
  &quot;maximumQps&quot;: &quot;A String&quot;, # The maximum QPS threshold for this configuration. The bidder should receive no more than this number of bid requests matching this configuration per second across all their bidding endpoints among all trading locations. Further information available at https://developers.google.com/authorized-buyers/rtb/peer-guide
  &quot;minimumViewabilityDecile&quot;: 42, # The targeted minimum viewability decile, ranging in values [0, 10]. A value of 5 means that the configuration will only match adslots for which we predict at least 50% viewability. Values &gt; 10 will be rounded down to 10. An unset value or a value of 0 indicates that bid requests will be sent regardless of viewability.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Name of the pretargeting configuration that must follow the pattern `bidders/{bidder_account_id}/pretargetingConfigs/{config_id}`
  &quot;publisherTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeting on a subset of publisher inventory. Publishers can either be targeted positively (bid requests will be sent only if the publisher is listed in the targeting dimension) or negatively (bid requests will be sent only if the publisher is not listed in the targeting dimension). A maximum of 10,000 publisher IDs can be targeted. Publisher IDs are found in [ads.txt](https://iabtechlab.com/ads-txt/) / [app-ads.txt](https://iabtechlab.com/app-ads-txt/) and in bid requests in the `BidRequest.publisher_id` field on the [Google RTB protocol](https://developers.google.com/authorized-buyers/rtb/downloads/realtime-bidding-proto) or the `BidRequest.site.publisher.id` / `BidRequest.app.publisher.id` field on the [OpenRTB protocol](https://developers.google.com/authorized-buyers/rtb/downloads/openrtb-adx-proto).
    &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
    &quot;values&quot;: [ # The values specified.
      &quot;A String&quot;,
    ],
  },
  &quot;state&quot;: &quot;A String&quot;, # Output only. The state of this pretargeting configuration.
  &quot;userListTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The remarketing lists included or excluded in this configuration as defined in UserList.
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;verticalTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The verticals included or excluded in this configuration as defined in https://developers.google.com/authorized-buyers/rtb/downloads/publisher-verticals
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;webTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeting on a subset of site inventory. If WEB is listed in included_environments, the specified targeting is applied. A maximum of 50,000 site URLs can be targeted. An unset value for targeting allows all web-based bid requests to be sent. Sites can either be targeting positively (bid requests will be sent only if the destination site is listed in the targeting dimension) or negatively (bid requests will be sent only if the destination site is not listed in the pretargeting configuration).
    &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
    &quot;values&quot;: [ # The values specified.
      &quot;A String&quot;,
    ],
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="addTargetedSites">addTargetedSites(pretargetingConfig, body=None, x__xgafv=None)</code>
  <pre>Adds targeted sites to the pretargeting configuration.

Args:
  pretargetingConfig: string, Required. The name of the pretargeting configuration. Format: bidders/{bidderAccountId}/pretargetingConfig/{configId} (required)
  body: object, The request body.
    The object takes the form of:

{ # A request to start targeting the provided sites in a specific pretargeting configuration. The pretargeting configuration itself specifies how these sites are targeted in PretargetingConfig.webTargeting.
  &quot;sites&quot;: [ # A list of site URLs to target in the pretargeting configuration. These values will be added to the list of targeted URLs in PretargetingConfig.webTargeting.values.
    &quot;A String&quot;,
  ],
  &quot;targetingMode&quot;: &quot;A String&quot;, # Required. The targeting mode that should be applied to the list of site URLs. If there are existing targeted sites, must be equal to the existing PretargetingConfig.webTargeting.targetingMode or a 400 bad request error will be returned.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Pretargeting configuration: a set of targeting dimensions applied at the pretargeting stage of the RTB funnel. These control which inventory a bidder will receive bid requests for.
  &quot;allowedUserTargetingModes&quot;: [ # Targeting modes included by this configuration. A bid request must allow all the specified targeting modes. An unset value allows all bid requests to be sent, regardless of which targeting modes they allow.
    &quot;A String&quot;,
  ],
  &quot;appTargeting&quot;: { # A subset of app inventory to target. Bid requests that match criteria in at least one of the specified dimensions will be sent. # Targeting on a subset of app inventory. If APP is listed in targeted_environments, the specified targeting is applied. A maximum of 30,000 app IDs can be targeted. An unset value for targeting allows all app-based bid requests to be sent. Apps can either be targeting positively (bid requests will be sent only if the destination app is listed in the targeting dimension) or negatively (bid requests will be sent only if the destination app is not listed in the targeting dimension).
    &quot;mobileAppCategoryTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # Lists of included and excluded mobile app categories as defined in https://developers.google.com/adwords/api/docs/appendix/mobileappcategories.csv.
      &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
        &quot;A String&quot;,
      ],
      &quot;includedIds&quot;: [ # The IDs included in a configuration.
        &quot;A String&quot;,
      ],
    },
    &quot;mobileAppTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeted app IDs. App IDs can refer to those found in an app store or ones that are not published in an app store. A maximum of 30,000 app IDs can be targeted.
      &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
      &quot;values&quot;: [ # The values specified.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;billingId&quot;: &quot;A String&quot;, # Output only. The identifier that corresponds to this pretargeting configuration that helps buyers track and attribute their spend across their own arbitrary divisions. If a bid request matches more than one configuration, the buyer chooses which billing_id to attribute each of their bids.
  &quot;displayName&quot;: &quot;A String&quot;, # The diplay name associated with this configuration. This name must be unique among all the pretargeting configurations a bidder has.
  &quot;excludedContentLabelIds&quot;: [ # The sensitive content category label IDs excluded in this configuration. Bid requests for inventory with any of the specified content label IDs will not be sent. Refer to this file https://storage.googleapis.com/adx-rtb-dictionaries/content-labels.txt for category IDs.
    &quot;A String&quot;,
  ],
  &quot;geoTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The geos included or excluded in this configuration defined in https://storage.googleapis.com/adx-rtb-dictionaries/geo-table.csv
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;includedCreativeDimensions&quot;: [ # Creative dimensions included by this configuration. Only bid requests eligible for at least one of the specified creative dimensions will be sent. An unset value allows all bid requests to be sent, regardless of creative dimension.
    { # The dimensions of a creative. This applies to only HTML and Native creatives.
      &quot;height&quot;: &quot;A String&quot;, # The height of the creative in pixels.
      &quot;width&quot;: &quot;A String&quot;, # The width of the creative in pixels.
    },
  ],
  &quot;includedEnvironments&quot;: [ # Environments that are being included. Bid requests will not be sent for a given environment if it is not included. Further restrictions can be applied to included environments to target only a subset of its inventory. An unset value includes all environments.
    &quot;A String&quot;,
  ],
  &quot;includedFormats&quot;: [ # Creative formats included by this configuration. Only bid requests eligible for at least one of the specified creative formats will be sent. An unset value will allow all bid requests to be sent, regardless of format.
    &quot;A String&quot;,
  ],
  &quot;includedLanguages&quot;: [ # The languages included in this configuration, represented by their language code. See https://developers.google.com/adwords/api/docs/appendix/languagecodes.
    &quot;A String&quot;,
  ],
  &quot;includedMobileOperatingSystemIds&quot;: [ # The mobile operating systems included in this configuration as defined in https://storage.googleapis.com/adx-rtb-dictionaries/mobile-os.csv
    &quot;A String&quot;,
  ],
  &quot;includedPlatforms&quot;: [ # The platforms included by this configration. Bid requests for devices with the specified platform types will be sent. An unset value allows all bid requests to be sent, regardless of platform.
    &quot;A String&quot;,
  ],
  &quot;includedUserIdTypes&quot;: [ # User identifier types included in this configuration. At least one of the user identifier types specified in this list must be available for the bid request to be sent.
    &quot;A String&quot;,
  ],
  &quot;interstitialTargeting&quot;: &quot;A String&quot;, # The interstitial targeting specified for this configuration. The unset value will allow bid requests to be sent regardless of whether they are for interstitials or not.
  &quot;invalidGeoIds&quot;: [ # Output only. Existing included or excluded geos that are invalid. Previously targeted geos may become invalid due to privacy restrictions.
    &quot;A String&quot;,
  ],
  &quot;maximumQps&quot;: &quot;A String&quot;, # The maximum QPS threshold for this configuration. The bidder should receive no more than this number of bid requests matching this configuration per second across all their bidding endpoints among all trading locations. Further information available at https://developers.google.com/authorized-buyers/rtb/peer-guide
  &quot;minimumViewabilityDecile&quot;: 42, # The targeted minimum viewability decile, ranging in values [0, 10]. A value of 5 means that the configuration will only match adslots for which we predict at least 50% viewability. Values &gt; 10 will be rounded down to 10. An unset value or a value of 0 indicates that bid requests will be sent regardless of viewability.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Name of the pretargeting configuration that must follow the pattern `bidders/{bidder_account_id}/pretargetingConfigs/{config_id}`
  &quot;publisherTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeting on a subset of publisher inventory. Publishers can either be targeted positively (bid requests will be sent only if the publisher is listed in the targeting dimension) or negatively (bid requests will be sent only if the publisher is not listed in the targeting dimension). A maximum of 10,000 publisher IDs can be targeted. Publisher IDs are found in [ads.txt](https://iabtechlab.com/ads-txt/) / [app-ads.txt](https://iabtechlab.com/app-ads-txt/) and in bid requests in the `BidRequest.publisher_id` field on the [Google RTB protocol](https://developers.google.com/authorized-buyers/rtb/downloads/realtime-bidding-proto) or the `BidRequest.site.publisher.id` / `BidRequest.app.publisher.id` field on the [OpenRTB protocol](https://developers.google.com/authorized-buyers/rtb/downloads/openrtb-adx-proto).
    &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
    &quot;values&quot;: [ # The values specified.
      &quot;A String&quot;,
    ],
  },
  &quot;state&quot;: &quot;A String&quot;, # Output only. The state of this pretargeting configuration.
  &quot;userListTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The remarketing lists included or excluded in this configuration as defined in UserList.
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;verticalTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The verticals included or excluded in this configuration as defined in https://developers.google.com/authorized-buyers/rtb/downloads/publisher-verticals
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;webTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeting on a subset of site inventory. If WEB is listed in included_environments, the specified targeting is applied. A maximum of 50,000 site URLs can be targeted. An unset value for targeting allows all web-based bid requests to be sent. Sites can either be targeting positively (bid requests will be sent only if the destination site is listed in the targeting dimension) or negatively (bid requests will be sent only if the destination site is not listed in the pretargeting configuration).
    &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
    &quot;values&quot;: [ # The values specified.
      &quot;A String&quot;,
    ],
  },
}</pre>
</div>

<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(parent, body=None, x__xgafv=None)</code>
  <pre>Creates a pretargeting configuration. A pretargeting configuration&#x27;s state (PretargetingConfig.state) is active upon creation, and it will start to affect traffic shortly after. A bidder may create a maximum of 10 pretargeting configurations. Attempts to exceed this maximum results in a 400 bad request error.

Args:
  parent: string, Required. Name of the bidder to create the pretargeting configuration for. Format: bidders/{bidderAccountId} (required)
  body: object, The request body.
    The object takes the form of:

{ # Pretargeting configuration: a set of targeting dimensions applied at the pretargeting stage of the RTB funnel. These control which inventory a bidder will receive bid requests for.
  &quot;allowedUserTargetingModes&quot;: [ # Targeting modes included by this configuration. A bid request must allow all the specified targeting modes. An unset value allows all bid requests to be sent, regardless of which targeting modes they allow.
    &quot;A String&quot;,
  ],
  &quot;appTargeting&quot;: { # A subset of app inventory to target. Bid requests that match criteria in at least one of the specified dimensions will be sent. # Targeting on a subset of app inventory. If APP is listed in targeted_environments, the specified targeting is applied. A maximum of 30,000 app IDs can be targeted. An unset value for targeting allows all app-based bid requests to be sent. Apps can either be targeting positively (bid requests will be sent only if the destination app is listed in the targeting dimension) or negatively (bid requests will be sent only if the destination app is not listed in the targeting dimension).
    &quot;mobileAppCategoryTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # Lists of included and excluded mobile app categories as defined in https://developers.google.com/adwords/api/docs/appendix/mobileappcategories.csv.
      &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
        &quot;A String&quot;,
      ],
      &quot;includedIds&quot;: [ # The IDs included in a configuration.
        &quot;A String&quot;,
      ],
    },
    &quot;mobileAppTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeted app IDs. App IDs can refer to those found in an app store or ones that are not published in an app store. A maximum of 30,000 app IDs can be targeted.
      &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
      &quot;values&quot;: [ # The values specified.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;billingId&quot;: &quot;A String&quot;, # Output only. The identifier that corresponds to this pretargeting configuration that helps buyers track and attribute their spend across their own arbitrary divisions. If a bid request matches more than one configuration, the buyer chooses which billing_id to attribute each of their bids.
  &quot;displayName&quot;: &quot;A String&quot;, # The diplay name associated with this configuration. This name must be unique among all the pretargeting configurations a bidder has.
  &quot;excludedContentLabelIds&quot;: [ # The sensitive content category label IDs excluded in this configuration. Bid requests for inventory with any of the specified content label IDs will not be sent. Refer to this file https://storage.googleapis.com/adx-rtb-dictionaries/content-labels.txt for category IDs.
    &quot;A String&quot;,
  ],
  &quot;geoTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The geos included or excluded in this configuration defined in https://storage.googleapis.com/adx-rtb-dictionaries/geo-table.csv
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;includedCreativeDimensions&quot;: [ # Creative dimensions included by this configuration. Only bid requests eligible for at least one of the specified creative dimensions will be sent. An unset value allows all bid requests to be sent, regardless of creative dimension.
    { # The dimensions of a creative. This applies to only HTML and Native creatives.
      &quot;height&quot;: &quot;A String&quot;, # The height of the creative in pixels.
      &quot;width&quot;: &quot;A String&quot;, # The width of the creative in pixels.
    },
  ],
  &quot;includedEnvironments&quot;: [ # Environments that are being included. Bid requests will not be sent for a given environment if it is not included. Further restrictions can be applied to included environments to target only a subset of its inventory. An unset value includes all environments.
    &quot;A String&quot;,
  ],
  &quot;includedFormats&quot;: [ # Creative formats included by this configuration. Only bid requests eligible for at least one of the specified creative formats will be sent. An unset value will allow all bid requests to be sent, regardless of format.
    &quot;A String&quot;,
  ],
  &quot;includedLanguages&quot;: [ # The languages included in this configuration, represented by their language code. See https://developers.google.com/adwords/api/docs/appendix/languagecodes.
    &quot;A String&quot;,
  ],
  &quot;includedMobileOperatingSystemIds&quot;: [ # The mobile operating systems included in this configuration as defined in https://storage.googleapis.com/adx-rtb-dictionaries/mobile-os.csv
    &quot;A String&quot;,
  ],
  &quot;includedPlatforms&quot;: [ # The platforms included by this configration. Bid requests for devices with the specified platform types will be sent. An unset value allows all bid requests to be sent, regardless of platform.
    &quot;A String&quot;,
  ],
  &quot;includedUserIdTypes&quot;: [ # User identifier types included in this configuration. At least one of the user identifier types specified in this list must be available for the bid request to be sent.
    &quot;A String&quot;,
  ],
  &quot;interstitialTargeting&quot;: &quot;A String&quot;, # The interstitial targeting specified for this configuration. The unset value will allow bid requests to be sent regardless of whether they are for interstitials or not.
  &quot;invalidGeoIds&quot;: [ # Output only. Existing included or excluded geos that are invalid. Previously targeted geos may become invalid due to privacy restrictions.
    &quot;A String&quot;,
  ],
  &quot;maximumQps&quot;: &quot;A String&quot;, # The maximum QPS threshold for this configuration. The bidder should receive no more than this number of bid requests matching this configuration per second across all their bidding endpoints among all trading locations. Further information available at https://developers.google.com/authorized-buyers/rtb/peer-guide
  &quot;minimumViewabilityDecile&quot;: 42, # The targeted minimum viewability decile, ranging in values [0, 10]. A value of 5 means that the configuration will only match adslots for which we predict at least 50% viewability. Values &gt; 10 will be rounded down to 10. An unset value or a value of 0 indicates that bid requests will be sent regardless of viewability.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Name of the pretargeting configuration that must follow the pattern `bidders/{bidder_account_id}/pretargetingConfigs/{config_id}`
  &quot;publisherTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeting on a subset of publisher inventory. Publishers can either be targeted positively (bid requests will be sent only if the publisher is listed in the targeting dimension) or negatively (bid requests will be sent only if the publisher is not listed in the targeting dimension). A maximum of 10,000 publisher IDs can be targeted. Publisher IDs are found in [ads.txt](https://iabtechlab.com/ads-txt/) / [app-ads.txt](https://iabtechlab.com/app-ads-txt/) and in bid requests in the `BidRequest.publisher_id` field on the [Google RTB protocol](https://developers.google.com/authorized-buyers/rtb/downloads/realtime-bidding-proto) or the `BidRequest.site.publisher.id` / `BidRequest.app.publisher.id` field on the [OpenRTB protocol](https://developers.google.com/authorized-buyers/rtb/downloads/openrtb-adx-proto).
    &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
    &quot;values&quot;: [ # The values specified.
      &quot;A String&quot;,
    ],
  },
  &quot;state&quot;: &quot;A String&quot;, # Output only. The state of this pretargeting configuration.
  &quot;userListTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The remarketing lists included or excluded in this configuration as defined in UserList.
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;verticalTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The verticals included or excluded in this configuration as defined in https://developers.google.com/authorized-buyers/rtb/downloads/publisher-verticals
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;webTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeting on a subset of site inventory. If WEB is listed in included_environments, the specified targeting is applied. A maximum of 50,000 site URLs can be targeted. An unset value for targeting allows all web-based bid requests to be sent. Sites can either be targeting positively (bid requests will be sent only if the destination site is listed in the targeting dimension) or negatively (bid requests will be sent only if the destination site is not listed in the pretargeting configuration).
    &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
    &quot;values&quot;: [ # The values specified.
      &quot;A String&quot;,
    ],
  },
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Pretargeting configuration: a set of targeting dimensions applied at the pretargeting stage of the RTB funnel. These control which inventory a bidder will receive bid requests for.
  &quot;allowedUserTargetingModes&quot;: [ # Targeting modes included by this configuration. A bid request must allow all the specified targeting modes. An unset value allows all bid requests to be sent, regardless of which targeting modes they allow.
    &quot;A String&quot;,
  ],
  &quot;appTargeting&quot;: { # A subset of app inventory to target. Bid requests that match criteria in at least one of the specified dimensions will be sent. # Targeting on a subset of app inventory. If APP is listed in targeted_environments, the specified targeting is applied. A maximum of 30,000 app IDs can be targeted. An unset value for targeting allows all app-based bid requests to be sent. Apps can either be targeting positively (bid requests will be sent only if the destination app is listed in the targeting dimension) or negatively (bid requests will be sent only if the destination app is not listed in the targeting dimension).
    &quot;mobileAppCategoryTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # Lists of included and excluded mobile app categories as defined in https://developers.google.com/adwords/api/docs/appendix/mobileappcategories.csv.
      &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
        &quot;A String&quot;,
      ],
      &quot;includedIds&quot;: [ # The IDs included in a configuration.
        &quot;A String&quot;,
      ],
    },
    &quot;mobileAppTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeted app IDs. App IDs can refer to those found in an app store or ones that are not published in an app store. A maximum of 30,000 app IDs can be targeted.
      &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
      &quot;values&quot;: [ # The values specified.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;billingId&quot;: &quot;A String&quot;, # Output only. The identifier that corresponds to this pretargeting configuration that helps buyers track and attribute their spend across their own arbitrary divisions. If a bid request matches more than one configuration, the buyer chooses which billing_id to attribute each of their bids.
  &quot;displayName&quot;: &quot;A String&quot;, # The diplay name associated with this configuration. This name must be unique among all the pretargeting configurations a bidder has.
  &quot;excludedContentLabelIds&quot;: [ # The sensitive content category label IDs excluded in this configuration. Bid requests for inventory with any of the specified content label IDs will not be sent. Refer to this file https://storage.googleapis.com/adx-rtb-dictionaries/content-labels.txt for category IDs.
    &quot;A String&quot;,
  ],
  &quot;geoTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The geos included or excluded in this configuration defined in https://storage.googleapis.com/adx-rtb-dictionaries/geo-table.csv
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;includedCreativeDimensions&quot;: [ # Creative dimensions included by this configuration. Only bid requests eligible for at least one of the specified creative dimensions will be sent. An unset value allows all bid requests to be sent, regardless of creative dimension.
    { # The dimensions of a creative. This applies to only HTML and Native creatives.
      &quot;height&quot;: &quot;A String&quot;, # The height of the creative in pixels.
      &quot;width&quot;: &quot;A String&quot;, # The width of the creative in pixels.
    },
  ],
  &quot;includedEnvironments&quot;: [ # Environments that are being included. Bid requests will not be sent for a given environment if it is not included. Further restrictions can be applied to included environments to target only a subset of its inventory. An unset value includes all environments.
    &quot;A String&quot;,
  ],
  &quot;includedFormats&quot;: [ # Creative formats included by this configuration. Only bid requests eligible for at least one of the specified creative formats will be sent. An unset value will allow all bid requests to be sent, regardless of format.
    &quot;A String&quot;,
  ],
  &quot;includedLanguages&quot;: [ # The languages included in this configuration, represented by their language code. See https://developers.google.com/adwords/api/docs/appendix/languagecodes.
    &quot;A String&quot;,
  ],
  &quot;includedMobileOperatingSystemIds&quot;: [ # The mobile operating systems included in this configuration as defined in https://storage.googleapis.com/adx-rtb-dictionaries/mobile-os.csv
    &quot;A String&quot;,
  ],
  &quot;includedPlatforms&quot;: [ # The platforms included by this configration. Bid requests for devices with the specified platform types will be sent. An unset value allows all bid requests to be sent, regardless of platform.
    &quot;A String&quot;,
  ],
  &quot;includedUserIdTypes&quot;: [ # User identifier types included in this configuration. At least one of the user identifier types specified in this list must be available for the bid request to be sent.
    &quot;A String&quot;,
  ],
  &quot;interstitialTargeting&quot;: &quot;A String&quot;, # The interstitial targeting specified for this configuration. The unset value will allow bid requests to be sent regardless of whether they are for interstitials or not.
  &quot;invalidGeoIds&quot;: [ # Output only. Existing included or excluded geos that are invalid. Previously targeted geos may become invalid due to privacy restrictions.
    &quot;A String&quot;,
  ],
  &quot;maximumQps&quot;: &quot;A String&quot;, # The maximum QPS threshold for this configuration. The bidder should receive no more than this number of bid requests matching this configuration per second across all their bidding endpoints among all trading locations. Further information available at https://developers.google.com/authorized-buyers/rtb/peer-guide
  &quot;minimumViewabilityDecile&quot;: 42, # The targeted minimum viewability decile, ranging in values [0, 10]. A value of 5 means that the configuration will only match adslots for which we predict at least 50% viewability. Values &gt; 10 will be rounded down to 10. An unset value or a value of 0 indicates that bid requests will be sent regardless of viewability.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Name of the pretargeting configuration that must follow the pattern `bidders/{bidder_account_id}/pretargetingConfigs/{config_id}`
  &quot;publisherTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeting on a subset of publisher inventory. Publishers can either be targeted positively (bid requests will be sent only if the publisher is listed in the targeting dimension) or negatively (bid requests will be sent only if the publisher is not listed in the targeting dimension). A maximum of 10,000 publisher IDs can be targeted. Publisher IDs are found in [ads.txt](https://iabtechlab.com/ads-txt/) / [app-ads.txt](https://iabtechlab.com/app-ads-txt/) and in bid requests in the `BidRequest.publisher_id` field on the [Google RTB protocol](https://developers.google.com/authorized-buyers/rtb/downloads/realtime-bidding-proto) or the `BidRequest.site.publisher.id` / `BidRequest.app.publisher.id` field on the [OpenRTB protocol](https://developers.google.com/authorized-buyers/rtb/downloads/openrtb-adx-proto).
    &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
    &quot;values&quot;: [ # The values specified.
      &quot;A String&quot;,
    ],
  },
  &quot;state&quot;: &quot;A String&quot;, # Output only. The state of this pretargeting configuration.
  &quot;userListTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The remarketing lists included or excluded in this configuration as defined in UserList.
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;verticalTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The verticals included or excluded in this configuration as defined in https://developers.google.com/authorized-buyers/rtb/downloads/publisher-verticals
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;webTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeting on a subset of site inventory. If WEB is listed in included_environments, the specified targeting is applied. A maximum of 50,000 site URLs can be targeted. An unset value for targeting allows all web-based bid requests to be sent. Sites can either be targeting positively (bid requests will be sent only if the destination site is listed in the targeting dimension) or negatively (bid requests will be sent only if the destination site is not listed in the pretargeting configuration).
    &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
    &quot;values&quot;: [ # The values specified.
      &quot;A String&quot;,
    ],
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes a pretargeting configuration.

Args:
  name: string, Required. The name of the pretargeting configuration to delete. Format: bidders/{bidderAccountId}/pretargetingConfig/{configId} (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>Gets a pretargeting configuration.

Args:
  name: string, Required. Name of the pretargeting configuration to get. Format: bidders/{bidderAccountId}/pretargetingConfig/{configId} (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Pretargeting configuration: a set of targeting dimensions applied at the pretargeting stage of the RTB funnel. These control which inventory a bidder will receive bid requests for.
  &quot;allowedUserTargetingModes&quot;: [ # Targeting modes included by this configuration. A bid request must allow all the specified targeting modes. An unset value allows all bid requests to be sent, regardless of which targeting modes they allow.
    &quot;A String&quot;,
  ],
  &quot;appTargeting&quot;: { # A subset of app inventory to target. Bid requests that match criteria in at least one of the specified dimensions will be sent. # Targeting on a subset of app inventory. If APP is listed in targeted_environments, the specified targeting is applied. A maximum of 30,000 app IDs can be targeted. An unset value for targeting allows all app-based bid requests to be sent. Apps can either be targeting positively (bid requests will be sent only if the destination app is listed in the targeting dimension) or negatively (bid requests will be sent only if the destination app is not listed in the targeting dimension).
    &quot;mobileAppCategoryTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # Lists of included and excluded mobile app categories as defined in https://developers.google.com/adwords/api/docs/appendix/mobileappcategories.csv.
      &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
        &quot;A String&quot;,
      ],
      &quot;includedIds&quot;: [ # The IDs included in a configuration.
        &quot;A String&quot;,
      ],
    },
    &quot;mobileAppTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeted app IDs. App IDs can refer to those found in an app store or ones that are not published in an app store. A maximum of 30,000 app IDs can be targeted.
      &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
      &quot;values&quot;: [ # The values specified.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;billingId&quot;: &quot;A String&quot;, # Output only. The identifier that corresponds to this pretargeting configuration that helps buyers track and attribute their spend across their own arbitrary divisions. If a bid request matches more than one configuration, the buyer chooses which billing_id to attribute each of their bids.
  &quot;displayName&quot;: &quot;A String&quot;, # The diplay name associated with this configuration. This name must be unique among all the pretargeting configurations a bidder has.
  &quot;excludedContentLabelIds&quot;: [ # The sensitive content category label IDs excluded in this configuration. Bid requests for inventory with any of the specified content label IDs will not be sent. Refer to this file https://storage.googleapis.com/adx-rtb-dictionaries/content-labels.txt for category IDs.
    &quot;A String&quot;,
  ],
  &quot;geoTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The geos included or excluded in this configuration defined in https://storage.googleapis.com/adx-rtb-dictionaries/geo-table.csv
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;includedCreativeDimensions&quot;: [ # Creative dimensions included by this configuration. Only bid requests eligible for at least one of the specified creative dimensions will be sent. An unset value allows all bid requests to be sent, regardless of creative dimension.
    { # The dimensions of a creative. This applies to only HTML and Native creatives.
      &quot;height&quot;: &quot;A String&quot;, # The height of the creative in pixels.
      &quot;width&quot;: &quot;A String&quot;, # The width of the creative in pixels.
    },
  ],
  &quot;includedEnvironments&quot;: [ # Environments that are being included. Bid requests will not be sent for a given environment if it is not included. Further restrictions can be applied to included environments to target only a subset of its inventory. An unset value includes all environments.
    &quot;A String&quot;,
  ],
  &quot;includedFormats&quot;: [ # Creative formats included by this configuration. Only bid requests eligible for at least one of the specified creative formats will be sent. An unset value will allow all bid requests to be sent, regardless of format.
    &quot;A String&quot;,
  ],
  &quot;includedLanguages&quot;: [ # The languages included in this configuration, represented by their language code. See https://developers.google.com/adwords/api/docs/appendix/languagecodes.
    &quot;A String&quot;,
  ],
  &quot;includedMobileOperatingSystemIds&quot;: [ # The mobile operating systems included in this configuration as defined in https://storage.googleapis.com/adx-rtb-dictionaries/mobile-os.csv
    &quot;A String&quot;,
  ],
  &quot;includedPlatforms&quot;: [ # The platforms included by this configration. Bid requests for devices with the specified platform types will be sent. An unset value allows all bid requests to be sent, regardless of platform.
    &quot;A String&quot;,
  ],
  &quot;includedUserIdTypes&quot;: [ # User identifier types included in this configuration. At least one of the user identifier types specified in this list must be available for the bid request to be sent.
    &quot;A String&quot;,
  ],
  &quot;interstitialTargeting&quot;: &quot;A String&quot;, # The interstitial targeting specified for this configuration. The unset value will allow bid requests to be sent regardless of whether they are for interstitials or not.
  &quot;invalidGeoIds&quot;: [ # Output only. Existing included or excluded geos that are invalid. Previously targeted geos may become invalid due to privacy restrictions.
    &quot;A String&quot;,
  ],
  &quot;maximumQps&quot;: &quot;A String&quot;, # The maximum QPS threshold for this configuration. The bidder should receive no more than this number of bid requests matching this configuration per second across all their bidding endpoints among all trading locations. Further information available at https://developers.google.com/authorized-buyers/rtb/peer-guide
  &quot;minimumViewabilityDecile&quot;: 42, # The targeted minimum viewability decile, ranging in values [0, 10]. A value of 5 means that the configuration will only match adslots for which we predict at least 50% viewability. Values &gt; 10 will be rounded down to 10. An unset value or a value of 0 indicates that bid requests will be sent regardless of viewability.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Name of the pretargeting configuration that must follow the pattern `bidders/{bidder_account_id}/pretargetingConfigs/{config_id}`
  &quot;publisherTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeting on a subset of publisher inventory. Publishers can either be targeted positively (bid requests will be sent only if the publisher is listed in the targeting dimension) or negatively (bid requests will be sent only if the publisher is not listed in the targeting dimension). A maximum of 10,000 publisher IDs can be targeted. Publisher IDs are found in [ads.txt](https://iabtechlab.com/ads-txt/) / [app-ads.txt](https://iabtechlab.com/app-ads-txt/) and in bid requests in the `BidRequest.publisher_id` field on the [Google RTB protocol](https://developers.google.com/authorized-buyers/rtb/downloads/realtime-bidding-proto) or the `BidRequest.site.publisher.id` / `BidRequest.app.publisher.id` field on the [OpenRTB protocol](https://developers.google.com/authorized-buyers/rtb/downloads/openrtb-adx-proto).
    &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
    &quot;values&quot;: [ # The values specified.
      &quot;A String&quot;,
    ],
  },
  &quot;state&quot;: &quot;A String&quot;, # Output only. The state of this pretargeting configuration.
  &quot;userListTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The remarketing lists included or excluded in this configuration as defined in UserList.
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;verticalTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The verticals included or excluded in this configuration as defined in https://developers.google.com/authorized-buyers/rtb/downloads/publisher-verticals
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;webTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeting on a subset of site inventory. If WEB is listed in included_environments, the specified targeting is applied. A maximum of 50,000 site URLs can be targeted. An unset value for targeting allows all web-based bid requests to be sent. Sites can either be targeting positively (bid requests will be sent only if the destination site is listed in the targeting dimension) or negatively (bid requests will be sent only if the destination site is not listed in the pretargeting configuration).
    &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
    &quot;values&quot;: [ # The values specified.
      &quot;A String&quot;,
    ],
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists all pretargeting configurations for a single bidder.

Args:
  parent: string, Required. Name of the bidder whose pretargeting configurations will be listed. Format: bidders/{bidderAccountId} (required)
  pageSize: integer, The maximum number of pretargeting configurations to return. If unspecified, at most 10 pretargeting configurations will be returned. The maximum value is 100; values above 100 will be coerced to 100.
  pageToken: string, A token identifying a page of results the server should return. This value is received from a previous `ListPretargetingConfigs` call in ListPretargetingConfigsResponse.nextPageToken.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A response containing pretargeting configurations.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token which can be passed to a subsequent call to the `ListPretargetingConfigs` method to retrieve the next page of results in ListPretargetingConfigsRequest.pageToken.
  &quot;pretargetingConfigs&quot;: [ # List of pretargeting configurations.
    { # Pretargeting configuration: a set of targeting dimensions applied at the pretargeting stage of the RTB funnel. These control which inventory a bidder will receive bid requests for.
      &quot;allowedUserTargetingModes&quot;: [ # Targeting modes included by this configuration. A bid request must allow all the specified targeting modes. An unset value allows all bid requests to be sent, regardless of which targeting modes they allow.
        &quot;A String&quot;,
      ],
      &quot;appTargeting&quot;: { # A subset of app inventory to target. Bid requests that match criteria in at least one of the specified dimensions will be sent. # Targeting on a subset of app inventory. If APP is listed in targeted_environments, the specified targeting is applied. A maximum of 30,000 app IDs can be targeted. An unset value for targeting allows all app-based bid requests to be sent. Apps can either be targeting positively (bid requests will be sent only if the destination app is listed in the targeting dimension) or negatively (bid requests will be sent only if the destination app is not listed in the targeting dimension).
        &quot;mobileAppCategoryTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # Lists of included and excluded mobile app categories as defined in https://developers.google.com/adwords/api/docs/appendix/mobileappcategories.csv.
          &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
            &quot;A String&quot;,
          ],
          &quot;includedIds&quot;: [ # The IDs included in a configuration.
            &quot;A String&quot;,
          ],
        },
        &quot;mobileAppTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeted app IDs. App IDs can refer to those found in an app store or ones that are not published in an app store. A maximum of 30,000 app IDs can be targeted.
          &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
          &quot;values&quot;: [ # The values specified.
            &quot;A String&quot;,
          ],
        },
      },
      &quot;billingId&quot;: &quot;A String&quot;, # Output only. The identifier that corresponds to this pretargeting configuration that helps buyers track and attribute their spend across their own arbitrary divisions. If a bid request matches more than one configuration, the buyer chooses which billing_id to attribute each of their bids.
      &quot;displayName&quot;: &quot;A String&quot;, # The diplay name associated with this configuration. This name must be unique among all the pretargeting configurations a bidder has.
      &quot;excludedContentLabelIds&quot;: [ # The sensitive content category label IDs excluded in this configuration. Bid requests for inventory with any of the specified content label IDs will not be sent. Refer to this file https://storage.googleapis.com/adx-rtb-dictionaries/content-labels.txt for category IDs.
        &quot;A String&quot;,
      ],
      &quot;geoTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The geos included or excluded in this configuration defined in https://storage.googleapis.com/adx-rtb-dictionaries/geo-table.csv
        &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
          &quot;A String&quot;,
        ],
        &quot;includedIds&quot;: [ # The IDs included in a configuration.
          &quot;A String&quot;,
        ],
      },
      &quot;includedCreativeDimensions&quot;: [ # Creative dimensions included by this configuration. Only bid requests eligible for at least one of the specified creative dimensions will be sent. An unset value allows all bid requests to be sent, regardless of creative dimension.
        { # The dimensions of a creative. This applies to only HTML and Native creatives.
          &quot;height&quot;: &quot;A String&quot;, # The height of the creative in pixels.
          &quot;width&quot;: &quot;A String&quot;, # The width of the creative in pixels.
        },
      ],
      &quot;includedEnvironments&quot;: [ # Environments that are being included. Bid requests will not be sent for a given environment if it is not included. Further restrictions can be applied to included environments to target only a subset of its inventory. An unset value includes all environments.
        &quot;A String&quot;,
      ],
      &quot;includedFormats&quot;: [ # Creative formats included by this configuration. Only bid requests eligible for at least one of the specified creative formats will be sent. An unset value will allow all bid requests to be sent, regardless of format.
        &quot;A String&quot;,
      ],
      &quot;includedLanguages&quot;: [ # The languages included in this configuration, represented by their language code. See https://developers.google.com/adwords/api/docs/appendix/languagecodes.
        &quot;A String&quot;,
      ],
      &quot;includedMobileOperatingSystemIds&quot;: [ # The mobile operating systems included in this configuration as defined in https://storage.googleapis.com/adx-rtb-dictionaries/mobile-os.csv
        &quot;A String&quot;,
      ],
      &quot;includedPlatforms&quot;: [ # The platforms included by this configration. Bid requests for devices with the specified platform types will be sent. An unset value allows all bid requests to be sent, regardless of platform.
        &quot;A String&quot;,
      ],
      &quot;includedUserIdTypes&quot;: [ # User identifier types included in this configuration. At least one of the user identifier types specified in this list must be available for the bid request to be sent.
        &quot;A String&quot;,
      ],
      &quot;interstitialTargeting&quot;: &quot;A String&quot;, # The interstitial targeting specified for this configuration. The unset value will allow bid requests to be sent regardless of whether they are for interstitials or not.
      &quot;invalidGeoIds&quot;: [ # Output only. Existing included or excluded geos that are invalid. Previously targeted geos may become invalid due to privacy restrictions.
        &quot;A String&quot;,
      ],
      &quot;maximumQps&quot;: &quot;A String&quot;, # The maximum QPS threshold for this configuration. The bidder should receive no more than this number of bid requests matching this configuration per second across all their bidding endpoints among all trading locations. Further information available at https://developers.google.com/authorized-buyers/rtb/peer-guide
      &quot;minimumViewabilityDecile&quot;: 42, # The targeted minimum viewability decile, ranging in values [0, 10]. A value of 5 means that the configuration will only match adslots for which we predict at least 50% viewability. Values &gt; 10 will be rounded down to 10. An unset value or a value of 0 indicates that bid requests will be sent regardless of viewability.
      &quot;name&quot;: &quot;A String&quot;, # Output only. Name of the pretargeting configuration that must follow the pattern `bidders/{bidder_account_id}/pretargetingConfigs/{config_id}`
      &quot;publisherTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeting on a subset of publisher inventory. Publishers can either be targeted positively (bid requests will be sent only if the publisher is listed in the targeting dimension) or negatively (bid requests will be sent only if the publisher is not listed in the targeting dimension). A maximum of 10,000 publisher IDs can be targeted. Publisher IDs are found in [ads.txt](https://iabtechlab.com/ads-txt/) / [app-ads.txt](https://iabtechlab.com/app-ads-txt/) and in bid requests in the `BidRequest.publisher_id` field on the [Google RTB protocol](https://developers.google.com/authorized-buyers/rtb/downloads/realtime-bidding-proto) or the `BidRequest.site.publisher.id` / `BidRequest.app.publisher.id` field on the [OpenRTB protocol](https://developers.google.com/authorized-buyers/rtb/downloads/openrtb-adx-proto).
        &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
        &quot;values&quot;: [ # The values specified.
          &quot;A String&quot;,
        ],
      },
      &quot;state&quot;: &quot;A String&quot;, # Output only. The state of this pretargeting configuration.
      &quot;userListTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The remarketing lists included or excluded in this configuration as defined in UserList.
        &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
          &quot;A String&quot;,
        ],
        &quot;includedIds&quot;: [ # The IDs included in a configuration.
          &quot;A String&quot;,
        ],
      },
      &quot;verticalTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The verticals included or excluded in this configuration as defined in https://developers.google.com/authorized-buyers/rtb/downloads/publisher-verticals
        &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
          &quot;A String&quot;,
        ],
        &quot;includedIds&quot;: [ # The IDs included in a configuration.
          &quot;A String&quot;,
        ],
      },
      &quot;webTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeting on a subset of site inventory. If WEB is listed in included_environments, the specified targeting is applied. A maximum of 50,000 site URLs can be targeted. An unset value for targeting allows all web-based bid requests to be sent. Sites can either be targeting positively (bid requests will be sent only if the destination site is listed in the targeting dimension) or negatively (bid requests will be sent only if the destination site is not listed in the pretargeting configuration).
        &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
        &quot;values&quot;: [ # The values specified.
          &quot;A String&quot;,
        ],
      },
    },
  ],
}</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>

<div class="method">
    <code class="details" id="patch">patch(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates a pretargeting configuration.

Args:
  name: string, Output only. Name of the pretargeting configuration that must follow the pattern `bidders/{bidder_account_id}/pretargetingConfigs/{config_id}` (required)
  body: object, The request body.
    The object takes the form of:

{ # Pretargeting configuration: a set of targeting dimensions applied at the pretargeting stage of the RTB funnel. These control which inventory a bidder will receive bid requests for.
  &quot;allowedUserTargetingModes&quot;: [ # Targeting modes included by this configuration. A bid request must allow all the specified targeting modes. An unset value allows all bid requests to be sent, regardless of which targeting modes they allow.
    &quot;A String&quot;,
  ],
  &quot;appTargeting&quot;: { # A subset of app inventory to target. Bid requests that match criteria in at least one of the specified dimensions will be sent. # Targeting on a subset of app inventory. If APP is listed in targeted_environments, the specified targeting is applied. A maximum of 30,000 app IDs can be targeted. An unset value for targeting allows all app-based bid requests to be sent. Apps can either be targeting positively (bid requests will be sent only if the destination app is listed in the targeting dimension) or negatively (bid requests will be sent only if the destination app is not listed in the targeting dimension).
    &quot;mobileAppCategoryTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # Lists of included and excluded mobile app categories as defined in https://developers.google.com/adwords/api/docs/appendix/mobileappcategories.csv.
      &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
        &quot;A String&quot;,
      ],
      &quot;includedIds&quot;: [ # The IDs included in a configuration.
        &quot;A String&quot;,
      ],
    },
    &quot;mobileAppTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeted app IDs. App IDs can refer to those found in an app store or ones that are not published in an app store. A maximum of 30,000 app IDs can be targeted.
      &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
      &quot;values&quot;: [ # The values specified.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;billingId&quot;: &quot;A String&quot;, # Output only. The identifier that corresponds to this pretargeting configuration that helps buyers track and attribute their spend across their own arbitrary divisions. If a bid request matches more than one configuration, the buyer chooses which billing_id to attribute each of their bids.
  &quot;displayName&quot;: &quot;A String&quot;, # The diplay name associated with this configuration. This name must be unique among all the pretargeting configurations a bidder has.
  &quot;excludedContentLabelIds&quot;: [ # The sensitive content category label IDs excluded in this configuration. Bid requests for inventory with any of the specified content label IDs will not be sent. Refer to this file https://storage.googleapis.com/adx-rtb-dictionaries/content-labels.txt for category IDs.
    &quot;A String&quot;,
  ],
  &quot;geoTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The geos included or excluded in this configuration defined in https://storage.googleapis.com/adx-rtb-dictionaries/geo-table.csv
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;includedCreativeDimensions&quot;: [ # Creative dimensions included by this configuration. Only bid requests eligible for at least one of the specified creative dimensions will be sent. An unset value allows all bid requests to be sent, regardless of creative dimension.
    { # The dimensions of a creative. This applies to only HTML and Native creatives.
      &quot;height&quot;: &quot;A String&quot;, # The height of the creative in pixels.
      &quot;width&quot;: &quot;A String&quot;, # The width of the creative in pixels.
    },
  ],
  &quot;includedEnvironments&quot;: [ # Environments that are being included. Bid requests will not be sent for a given environment if it is not included. Further restrictions can be applied to included environments to target only a subset of its inventory. An unset value includes all environments.
    &quot;A String&quot;,
  ],
  &quot;includedFormats&quot;: [ # Creative formats included by this configuration. Only bid requests eligible for at least one of the specified creative formats will be sent. An unset value will allow all bid requests to be sent, regardless of format.
    &quot;A String&quot;,
  ],
  &quot;includedLanguages&quot;: [ # The languages included in this configuration, represented by their language code. See https://developers.google.com/adwords/api/docs/appendix/languagecodes.
    &quot;A String&quot;,
  ],
  &quot;includedMobileOperatingSystemIds&quot;: [ # The mobile operating systems included in this configuration as defined in https://storage.googleapis.com/adx-rtb-dictionaries/mobile-os.csv
    &quot;A String&quot;,
  ],
  &quot;includedPlatforms&quot;: [ # The platforms included by this configration. Bid requests for devices with the specified platform types will be sent. An unset value allows all bid requests to be sent, regardless of platform.
    &quot;A String&quot;,
  ],
  &quot;includedUserIdTypes&quot;: [ # User identifier types included in this configuration. At least one of the user identifier types specified in this list must be available for the bid request to be sent.
    &quot;A String&quot;,
  ],
  &quot;interstitialTargeting&quot;: &quot;A String&quot;, # The interstitial targeting specified for this configuration. The unset value will allow bid requests to be sent regardless of whether they are for interstitials or not.
  &quot;invalidGeoIds&quot;: [ # Output only. Existing included or excluded geos that are invalid. Previously targeted geos may become invalid due to privacy restrictions.
    &quot;A String&quot;,
  ],
  &quot;maximumQps&quot;: &quot;A String&quot;, # The maximum QPS threshold for this configuration. The bidder should receive no more than this number of bid requests matching this configuration per second across all their bidding endpoints among all trading locations. Further information available at https://developers.google.com/authorized-buyers/rtb/peer-guide
  &quot;minimumViewabilityDecile&quot;: 42, # The targeted minimum viewability decile, ranging in values [0, 10]. A value of 5 means that the configuration will only match adslots for which we predict at least 50% viewability. Values &gt; 10 will be rounded down to 10. An unset value or a value of 0 indicates that bid requests will be sent regardless of viewability.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Name of the pretargeting configuration that must follow the pattern `bidders/{bidder_account_id}/pretargetingConfigs/{config_id}`
  &quot;publisherTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeting on a subset of publisher inventory. Publishers can either be targeted positively (bid requests will be sent only if the publisher is listed in the targeting dimension) or negatively (bid requests will be sent only if the publisher is not listed in the targeting dimension). A maximum of 10,000 publisher IDs can be targeted. Publisher IDs are found in [ads.txt](https://iabtechlab.com/ads-txt/) / [app-ads.txt](https://iabtechlab.com/app-ads-txt/) and in bid requests in the `BidRequest.publisher_id` field on the [Google RTB protocol](https://developers.google.com/authorized-buyers/rtb/downloads/realtime-bidding-proto) or the `BidRequest.site.publisher.id` / `BidRequest.app.publisher.id` field on the [OpenRTB protocol](https://developers.google.com/authorized-buyers/rtb/downloads/openrtb-adx-proto).
    &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
    &quot;values&quot;: [ # The values specified.
      &quot;A String&quot;,
    ],
  },
  &quot;state&quot;: &quot;A String&quot;, # Output only. The state of this pretargeting configuration.
  &quot;userListTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The remarketing lists included or excluded in this configuration as defined in UserList.
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;verticalTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The verticals included or excluded in this configuration as defined in https://developers.google.com/authorized-buyers/rtb/downloads/publisher-verticals
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;webTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeting on a subset of site inventory. If WEB is listed in included_environments, the specified targeting is applied. A maximum of 50,000 site URLs can be targeted. An unset value for targeting allows all web-based bid requests to be sent. Sites can either be targeting positively (bid requests will be sent only if the destination site is listed in the targeting dimension) or negatively (bid requests will be sent only if the destination site is not listed in the pretargeting configuration).
    &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
    &quot;values&quot;: [ # The values specified.
      &quot;A String&quot;,
    ],
  },
}

  updateMask: string, Field mask to use for partial in-place updates.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Pretargeting configuration: a set of targeting dimensions applied at the pretargeting stage of the RTB funnel. These control which inventory a bidder will receive bid requests for.
  &quot;allowedUserTargetingModes&quot;: [ # Targeting modes included by this configuration. A bid request must allow all the specified targeting modes. An unset value allows all bid requests to be sent, regardless of which targeting modes they allow.
    &quot;A String&quot;,
  ],
  &quot;appTargeting&quot;: { # A subset of app inventory to target. Bid requests that match criteria in at least one of the specified dimensions will be sent. # Targeting on a subset of app inventory. If APP is listed in targeted_environments, the specified targeting is applied. A maximum of 30,000 app IDs can be targeted. An unset value for targeting allows all app-based bid requests to be sent. Apps can either be targeting positively (bid requests will be sent only if the destination app is listed in the targeting dimension) or negatively (bid requests will be sent only if the destination app is not listed in the targeting dimension).
    &quot;mobileAppCategoryTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # Lists of included and excluded mobile app categories as defined in https://developers.google.com/adwords/api/docs/appendix/mobileappcategories.csv.
      &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
        &quot;A String&quot;,
      ],
      &quot;includedIds&quot;: [ # The IDs included in a configuration.
        &quot;A String&quot;,
      ],
    },
    &quot;mobileAppTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeted app IDs. App IDs can refer to those found in an app store or ones that are not published in an app store. A maximum of 30,000 app IDs can be targeted.
      &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
      &quot;values&quot;: [ # The values specified.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;billingId&quot;: &quot;A String&quot;, # Output only. The identifier that corresponds to this pretargeting configuration that helps buyers track and attribute their spend across their own arbitrary divisions. If a bid request matches more than one configuration, the buyer chooses which billing_id to attribute each of their bids.
  &quot;displayName&quot;: &quot;A String&quot;, # The diplay name associated with this configuration. This name must be unique among all the pretargeting configurations a bidder has.
  &quot;excludedContentLabelIds&quot;: [ # The sensitive content category label IDs excluded in this configuration. Bid requests for inventory with any of the specified content label IDs will not be sent. Refer to this file https://storage.googleapis.com/adx-rtb-dictionaries/content-labels.txt for category IDs.
    &quot;A String&quot;,
  ],
  &quot;geoTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The geos included or excluded in this configuration defined in https://storage.googleapis.com/adx-rtb-dictionaries/geo-table.csv
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;includedCreativeDimensions&quot;: [ # Creative dimensions included by this configuration. Only bid requests eligible for at least one of the specified creative dimensions will be sent. An unset value allows all bid requests to be sent, regardless of creative dimension.
    { # The dimensions of a creative. This applies to only HTML and Native creatives.
      &quot;height&quot;: &quot;A String&quot;, # The height of the creative in pixels.
      &quot;width&quot;: &quot;A String&quot;, # The width of the creative in pixels.
    },
  ],
  &quot;includedEnvironments&quot;: [ # Environments that are being included. Bid requests will not be sent for a given environment if it is not included. Further restrictions can be applied to included environments to target only a subset of its inventory. An unset value includes all environments.
    &quot;A String&quot;,
  ],
  &quot;includedFormats&quot;: [ # Creative formats included by this configuration. Only bid requests eligible for at least one of the specified creative formats will be sent. An unset value will allow all bid requests to be sent, regardless of format.
    &quot;A String&quot;,
  ],
  &quot;includedLanguages&quot;: [ # The languages included in this configuration, represented by their language code. See https://developers.google.com/adwords/api/docs/appendix/languagecodes.
    &quot;A String&quot;,
  ],
  &quot;includedMobileOperatingSystemIds&quot;: [ # The mobile operating systems included in this configuration as defined in https://storage.googleapis.com/adx-rtb-dictionaries/mobile-os.csv
    &quot;A String&quot;,
  ],
  &quot;includedPlatforms&quot;: [ # The platforms included by this configration. Bid requests for devices with the specified platform types will be sent. An unset value allows all bid requests to be sent, regardless of platform.
    &quot;A String&quot;,
  ],
  &quot;includedUserIdTypes&quot;: [ # User identifier types included in this configuration. At least one of the user identifier types specified in this list must be available for the bid request to be sent.
    &quot;A String&quot;,
  ],
  &quot;interstitialTargeting&quot;: &quot;A String&quot;, # The interstitial targeting specified for this configuration. The unset value will allow bid requests to be sent regardless of whether they are for interstitials or not.
  &quot;invalidGeoIds&quot;: [ # Output only. Existing included or excluded geos that are invalid. Previously targeted geos may become invalid due to privacy restrictions.
    &quot;A String&quot;,
  ],
  &quot;maximumQps&quot;: &quot;A String&quot;, # The maximum QPS threshold for this configuration. The bidder should receive no more than this number of bid requests matching this configuration per second across all their bidding endpoints among all trading locations. Further information available at https://developers.google.com/authorized-buyers/rtb/peer-guide
  &quot;minimumViewabilityDecile&quot;: 42, # The targeted minimum viewability decile, ranging in values [0, 10]. A value of 5 means that the configuration will only match adslots for which we predict at least 50% viewability. Values &gt; 10 will be rounded down to 10. An unset value or a value of 0 indicates that bid requests will be sent regardless of viewability.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Name of the pretargeting configuration that must follow the pattern `bidders/{bidder_account_id}/pretargetingConfigs/{config_id}`
  &quot;publisherTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeting on a subset of publisher inventory. Publishers can either be targeted positively (bid requests will be sent only if the publisher is listed in the targeting dimension) or negatively (bid requests will be sent only if the publisher is not listed in the targeting dimension). A maximum of 10,000 publisher IDs can be targeted. Publisher IDs are found in [ads.txt](https://iabtechlab.com/ads-txt/) / [app-ads.txt](https://iabtechlab.com/app-ads-txt/) and in bid requests in the `BidRequest.publisher_id` field on the [Google RTB protocol](https://developers.google.com/authorized-buyers/rtb/downloads/realtime-bidding-proto) or the `BidRequest.site.publisher.id` / `BidRequest.app.publisher.id` field on the [OpenRTB protocol](https://developers.google.com/authorized-buyers/rtb/downloads/openrtb-adx-proto).
    &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
    &quot;values&quot;: [ # The values specified.
      &quot;A String&quot;,
    ],
  },
  &quot;state&quot;: &quot;A String&quot;, # Output only. The state of this pretargeting configuration.
  &quot;userListTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The remarketing lists included or excluded in this configuration as defined in UserList.
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;verticalTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The verticals included or excluded in this configuration as defined in https://developers.google.com/authorized-buyers/rtb/downloads/publisher-verticals
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;webTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeting on a subset of site inventory. If WEB is listed in included_environments, the specified targeting is applied. A maximum of 50,000 site URLs can be targeted. An unset value for targeting allows all web-based bid requests to be sent. Sites can either be targeting positively (bid requests will be sent only if the destination site is listed in the targeting dimension) or negatively (bid requests will be sent only if the destination site is not listed in the pretargeting configuration).
    &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
    &quot;values&quot;: [ # The values specified.
      &quot;A String&quot;,
    ],
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="removeTargetedApps">removeTargetedApps(pretargetingConfig, body=None, x__xgafv=None)</code>
  <pre>Removes targeted apps from the pretargeting configuration.

Args:
  pretargetingConfig: string, Required. The name of the pretargeting configuration. Format: bidders/{bidderAccountId}/pretargetingConfig/{configId} (required)
  body: object, The request body.
    The object takes the form of:

{ # A request to stop targeting the provided apps in a specific pretargeting configuration. The pretargeting configuration itself specifies how these apps are targeted. in PretargetingConfig.appTargeting.mobileAppTargeting.
  &quot;appIds&quot;: [ # A list of app IDs to stop targeting in the pretargeting configuration. These values will be removed from the list of targeted app IDs in PretargetingConfig.appTargeting.mobileAppTargeting.values.
    &quot;A String&quot;,
  ],
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Pretargeting configuration: a set of targeting dimensions applied at the pretargeting stage of the RTB funnel. These control which inventory a bidder will receive bid requests for.
  &quot;allowedUserTargetingModes&quot;: [ # Targeting modes included by this configuration. A bid request must allow all the specified targeting modes. An unset value allows all bid requests to be sent, regardless of which targeting modes they allow.
    &quot;A String&quot;,
  ],
  &quot;appTargeting&quot;: { # A subset of app inventory to target. Bid requests that match criteria in at least one of the specified dimensions will be sent. # Targeting on a subset of app inventory. If APP is listed in targeted_environments, the specified targeting is applied. A maximum of 30,000 app IDs can be targeted. An unset value for targeting allows all app-based bid requests to be sent. Apps can either be targeting positively (bid requests will be sent only if the destination app is listed in the targeting dimension) or negatively (bid requests will be sent only if the destination app is not listed in the targeting dimension).
    &quot;mobileAppCategoryTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # Lists of included and excluded mobile app categories as defined in https://developers.google.com/adwords/api/docs/appendix/mobileappcategories.csv.
      &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
        &quot;A String&quot;,
      ],
      &quot;includedIds&quot;: [ # The IDs included in a configuration.
        &quot;A String&quot;,
      ],
    },
    &quot;mobileAppTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeted app IDs. App IDs can refer to those found in an app store or ones that are not published in an app store. A maximum of 30,000 app IDs can be targeted.
      &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
      &quot;values&quot;: [ # The values specified.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;billingId&quot;: &quot;A String&quot;, # Output only. The identifier that corresponds to this pretargeting configuration that helps buyers track and attribute their spend across their own arbitrary divisions. If a bid request matches more than one configuration, the buyer chooses which billing_id to attribute each of their bids.
  &quot;displayName&quot;: &quot;A String&quot;, # The diplay name associated with this configuration. This name must be unique among all the pretargeting configurations a bidder has.
  &quot;excludedContentLabelIds&quot;: [ # The sensitive content category label IDs excluded in this configuration. Bid requests for inventory with any of the specified content label IDs will not be sent. Refer to this file https://storage.googleapis.com/adx-rtb-dictionaries/content-labels.txt for category IDs.
    &quot;A String&quot;,
  ],
  &quot;geoTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The geos included or excluded in this configuration defined in https://storage.googleapis.com/adx-rtb-dictionaries/geo-table.csv
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;includedCreativeDimensions&quot;: [ # Creative dimensions included by this configuration. Only bid requests eligible for at least one of the specified creative dimensions will be sent. An unset value allows all bid requests to be sent, regardless of creative dimension.
    { # The dimensions of a creative. This applies to only HTML and Native creatives.
      &quot;height&quot;: &quot;A String&quot;, # The height of the creative in pixels.
      &quot;width&quot;: &quot;A String&quot;, # The width of the creative in pixels.
    },
  ],
  &quot;includedEnvironments&quot;: [ # Environments that are being included. Bid requests will not be sent for a given environment if it is not included. Further restrictions can be applied to included environments to target only a subset of its inventory. An unset value includes all environments.
    &quot;A String&quot;,
  ],
  &quot;includedFormats&quot;: [ # Creative formats included by this configuration. Only bid requests eligible for at least one of the specified creative formats will be sent. An unset value will allow all bid requests to be sent, regardless of format.
    &quot;A String&quot;,
  ],
  &quot;includedLanguages&quot;: [ # The languages included in this configuration, represented by their language code. See https://developers.google.com/adwords/api/docs/appendix/languagecodes.
    &quot;A String&quot;,
  ],
  &quot;includedMobileOperatingSystemIds&quot;: [ # The mobile operating systems included in this configuration as defined in https://storage.googleapis.com/adx-rtb-dictionaries/mobile-os.csv
    &quot;A String&quot;,
  ],
  &quot;includedPlatforms&quot;: [ # The platforms included by this configration. Bid requests for devices with the specified platform types will be sent. An unset value allows all bid requests to be sent, regardless of platform.
    &quot;A String&quot;,
  ],
  &quot;includedUserIdTypes&quot;: [ # User identifier types included in this configuration. At least one of the user identifier types specified in this list must be available for the bid request to be sent.
    &quot;A String&quot;,
  ],
  &quot;interstitialTargeting&quot;: &quot;A String&quot;, # The interstitial targeting specified for this configuration. The unset value will allow bid requests to be sent regardless of whether they are for interstitials or not.
  &quot;invalidGeoIds&quot;: [ # Output only. Existing included or excluded geos that are invalid. Previously targeted geos may become invalid due to privacy restrictions.
    &quot;A String&quot;,
  ],
  &quot;maximumQps&quot;: &quot;A String&quot;, # The maximum QPS threshold for this configuration. The bidder should receive no more than this number of bid requests matching this configuration per second across all their bidding endpoints among all trading locations. Further information available at https://developers.google.com/authorized-buyers/rtb/peer-guide
  &quot;minimumViewabilityDecile&quot;: 42, # The targeted minimum viewability decile, ranging in values [0, 10]. A value of 5 means that the configuration will only match adslots for which we predict at least 50% viewability. Values &gt; 10 will be rounded down to 10. An unset value or a value of 0 indicates that bid requests will be sent regardless of viewability.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Name of the pretargeting configuration that must follow the pattern `bidders/{bidder_account_id}/pretargetingConfigs/{config_id}`
  &quot;publisherTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeting on a subset of publisher inventory. Publishers can either be targeted positively (bid requests will be sent only if the publisher is listed in the targeting dimension) or negatively (bid requests will be sent only if the publisher is not listed in the targeting dimension). A maximum of 10,000 publisher IDs can be targeted. Publisher IDs are found in [ads.txt](https://iabtechlab.com/ads-txt/) / [app-ads.txt](https://iabtechlab.com/app-ads-txt/) and in bid requests in the `BidRequest.publisher_id` field on the [Google RTB protocol](https://developers.google.com/authorized-buyers/rtb/downloads/realtime-bidding-proto) or the `BidRequest.site.publisher.id` / `BidRequest.app.publisher.id` field on the [OpenRTB protocol](https://developers.google.com/authorized-buyers/rtb/downloads/openrtb-adx-proto).
    &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
    &quot;values&quot;: [ # The values specified.
      &quot;A String&quot;,
    ],
  },
  &quot;state&quot;: &quot;A String&quot;, # Output only. The state of this pretargeting configuration.
  &quot;userListTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The remarketing lists included or excluded in this configuration as defined in UserList.
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;verticalTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The verticals included or excluded in this configuration as defined in https://developers.google.com/authorized-buyers/rtb/downloads/publisher-verticals
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;webTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeting on a subset of site inventory. If WEB is listed in included_environments, the specified targeting is applied. A maximum of 50,000 site URLs can be targeted. An unset value for targeting allows all web-based bid requests to be sent. Sites can either be targeting positively (bid requests will be sent only if the destination site is listed in the targeting dimension) or negatively (bid requests will be sent only if the destination site is not listed in the pretargeting configuration).
    &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
    &quot;values&quot;: [ # The values specified.
      &quot;A String&quot;,
    ],
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="removeTargetedPublishers">removeTargetedPublishers(pretargetingConfig, body=None, x__xgafv=None)</code>
  <pre>Removes targeted publishers from the pretargeting config.

Args:
  pretargetingConfig: string, Required. The name of the pretargeting configuration. Format: bidders/{bidderAccountId}/pretargetingConfig/{configId} (required)
  body: object, The request body.
    The object takes the form of:

{ # A request to stop targeting publishers in a specific configuration. The pretargeting configuration itself specifies how these publishers are targeted in PretargetingConfig.publisherTargeting.
  &quot;publisherIds&quot;: [ # A list of publisher IDs to stop targeting in the pretargeting configuration. These values will be removed from the list of targeted publisher IDs in PretargetingConfig.publisherTargeting.values. Publishers are identified by their publisher ID from ads.txt / app-ads.txt. See https://iabtechlab.com/ads-txt/ and https://iabtechlab.com/app-ads-txt/ for more details.
    &quot;A String&quot;,
  ],
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Pretargeting configuration: a set of targeting dimensions applied at the pretargeting stage of the RTB funnel. These control which inventory a bidder will receive bid requests for.
  &quot;allowedUserTargetingModes&quot;: [ # Targeting modes included by this configuration. A bid request must allow all the specified targeting modes. An unset value allows all bid requests to be sent, regardless of which targeting modes they allow.
    &quot;A String&quot;,
  ],
  &quot;appTargeting&quot;: { # A subset of app inventory to target. Bid requests that match criteria in at least one of the specified dimensions will be sent. # Targeting on a subset of app inventory. If APP is listed in targeted_environments, the specified targeting is applied. A maximum of 30,000 app IDs can be targeted. An unset value for targeting allows all app-based bid requests to be sent. Apps can either be targeting positively (bid requests will be sent only if the destination app is listed in the targeting dimension) or negatively (bid requests will be sent only if the destination app is not listed in the targeting dimension).
    &quot;mobileAppCategoryTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # Lists of included and excluded mobile app categories as defined in https://developers.google.com/adwords/api/docs/appendix/mobileappcategories.csv.
      &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
        &quot;A String&quot;,
      ],
      &quot;includedIds&quot;: [ # The IDs included in a configuration.
        &quot;A String&quot;,
      ],
    },
    &quot;mobileAppTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeted app IDs. App IDs can refer to those found in an app store or ones that are not published in an app store. A maximum of 30,000 app IDs can be targeted.
      &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
      &quot;values&quot;: [ # The values specified.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;billingId&quot;: &quot;A String&quot;, # Output only. The identifier that corresponds to this pretargeting configuration that helps buyers track and attribute their spend across their own arbitrary divisions. If a bid request matches more than one configuration, the buyer chooses which billing_id to attribute each of their bids.
  &quot;displayName&quot;: &quot;A String&quot;, # The diplay name associated with this configuration. This name must be unique among all the pretargeting configurations a bidder has.
  &quot;excludedContentLabelIds&quot;: [ # The sensitive content category label IDs excluded in this configuration. Bid requests for inventory with any of the specified content label IDs will not be sent. Refer to this file https://storage.googleapis.com/adx-rtb-dictionaries/content-labels.txt for category IDs.
    &quot;A String&quot;,
  ],
  &quot;geoTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The geos included or excluded in this configuration defined in https://storage.googleapis.com/adx-rtb-dictionaries/geo-table.csv
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;includedCreativeDimensions&quot;: [ # Creative dimensions included by this configuration. Only bid requests eligible for at least one of the specified creative dimensions will be sent. An unset value allows all bid requests to be sent, regardless of creative dimension.
    { # The dimensions of a creative. This applies to only HTML and Native creatives.
      &quot;height&quot;: &quot;A String&quot;, # The height of the creative in pixels.
      &quot;width&quot;: &quot;A String&quot;, # The width of the creative in pixels.
    },
  ],
  &quot;includedEnvironments&quot;: [ # Environments that are being included. Bid requests will not be sent for a given environment if it is not included. Further restrictions can be applied to included environments to target only a subset of its inventory. An unset value includes all environments.
    &quot;A String&quot;,
  ],
  &quot;includedFormats&quot;: [ # Creative formats included by this configuration. Only bid requests eligible for at least one of the specified creative formats will be sent. An unset value will allow all bid requests to be sent, regardless of format.
    &quot;A String&quot;,
  ],
  &quot;includedLanguages&quot;: [ # The languages included in this configuration, represented by their language code. See https://developers.google.com/adwords/api/docs/appendix/languagecodes.
    &quot;A String&quot;,
  ],
  &quot;includedMobileOperatingSystemIds&quot;: [ # The mobile operating systems included in this configuration as defined in https://storage.googleapis.com/adx-rtb-dictionaries/mobile-os.csv
    &quot;A String&quot;,
  ],
  &quot;includedPlatforms&quot;: [ # The platforms included by this configration. Bid requests for devices with the specified platform types will be sent. An unset value allows all bid requests to be sent, regardless of platform.
    &quot;A String&quot;,
  ],
  &quot;includedUserIdTypes&quot;: [ # User identifier types included in this configuration. At least one of the user identifier types specified in this list must be available for the bid request to be sent.
    &quot;A String&quot;,
  ],
  &quot;interstitialTargeting&quot;: &quot;A String&quot;, # The interstitial targeting specified for this configuration. The unset value will allow bid requests to be sent regardless of whether they are for interstitials or not.
  &quot;invalidGeoIds&quot;: [ # Output only. Existing included or excluded geos that are invalid. Previously targeted geos may become invalid due to privacy restrictions.
    &quot;A String&quot;,
  ],
  &quot;maximumQps&quot;: &quot;A String&quot;, # The maximum QPS threshold for this configuration. The bidder should receive no more than this number of bid requests matching this configuration per second across all their bidding endpoints among all trading locations. Further information available at https://developers.google.com/authorized-buyers/rtb/peer-guide
  &quot;minimumViewabilityDecile&quot;: 42, # The targeted minimum viewability decile, ranging in values [0, 10]. A value of 5 means that the configuration will only match adslots for which we predict at least 50% viewability. Values &gt; 10 will be rounded down to 10. An unset value or a value of 0 indicates that bid requests will be sent regardless of viewability.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Name of the pretargeting configuration that must follow the pattern `bidders/{bidder_account_id}/pretargetingConfigs/{config_id}`
  &quot;publisherTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeting on a subset of publisher inventory. Publishers can either be targeted positively (bid requests will be sent only if the publisher is listed in the targeting dimension) or negatively (bid requests will be sent only if the publisher is not listed in the targeting dimension). A maximum of 10,000 publisher IDs can be targeted. Publisher IDs are found in [ads.txt](https://iabtechlab.com/ads-txt/) / [app-ads.txt](https://iabtechlab.com/app-ads-txt/) and in bid requests in the `BidRequest.publisher_id` field on the [Google RTB protocol](https://developers.google.com/authorized-buyers/rtb/downloads/realtime-bidding-proto) or the `BidRequest.site.publisher.id` / `BidRequest.app.publisher.id` field on the [OpenRTB protocol](https://developers.google.com/authorized-buyers/rtb/downloads/openrtb-adx-proto).
    &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
    &quot;values&quot;: [ # The values specified.
      &quot;A String&quot;,
    ],
  },
  &quot;state&quot;: &quot;A String&quot;, # Output only. The state of this pretargeting configuration.
  &quot;userListTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The remarketing lists included or excluded in this configuration as defined in UserList.
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;verticalTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The verticals included or excluded in this configuration as defined in https://developers.google.com/authorized-buyers/rtb/downloads/publisher-verticals
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;webTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeting on a subset of site inventory. If WEB is listed in included_environments, the specified targeting is applied. A maximum of 50,000 site URLs can be targeted. An unset value for targeting allows all web-based bid requests to be sent. Sites can either be targeting positively (bid requests will be sent only if the destination site is listed in the targeting dimension) or negatively (bid requests will be sent only if the destination site is not listed in the pretargeting configuration).
    &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
    &quot;values&quot;: [ # The values specified.
      &quot;A String&quot;,
    ],
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="removeTargetedSites">removeTargetedSites(pretargetingConfig, body=None, x__xgafv=None)</code>
  <pre>Removes targeted sites from the pretargeting configuration.

Args:
  pretargetingConfig: string, Required. The name of the pretargeting configuration. Format: bidders/{bidderAccountId}/pretargetingConfig/{configId} (required)
  body: object, The request body.
    The object takes the form of:

{ # A request to stop targeting sites in a specific pretargeting configuration. The pretargeting configuration itself specifies how these sites are targeted in PretargetingConfig.webTargeting.
  &quot;sites&quot;: [ # A list of site URLs to stop targeting in the pretargeting configuration. These values will be removed from the list of targeted URLs in PretargetingConfig.webTargeting.values.
    &quot;A String&quot;,
  ],
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Pretargeting configuration: a set of targeting dimensions applied at the pretargeting stage of the RTB funnel. These control which inventory a bidder will receive bid requests for.
  &quot;allowedUserTargetingModes&quot;: [ # Targeting modes included by this configuration. A bid request must allow all the specified targeting modes. An unset value allows all bid requests to be sent, regardless of which targeting modes they allow.
    &quot;A String&quot;,
  ],
  &quot;appTargeting&quot;: { # A subset of app inventory to target. Bid requests that match criteria in at least one of the specified dimensions will be sent. # Targeting on a subset of app inventory. If APP is listed in targeted_environments, the specified targeting is applied. A maximum of 30,000 app IDs can be targeted. An unset value for targeting allows all app-based bid requests to be sent. Apps can either be targeting positively (bid requests will be sent only if the destination app is listed in the targeting dimension) or negatively (bid requests will be sent only if the destination app is not listed in the targeting dimension).
    &quot;mobileAppCategoryTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # Lists of included and excluded mobile app categories as defined in https://developers.google.com/adwords/api/docs/appendix/mobileappcategories.csv.
      &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
        &quot;A String&quot;,
      ],
      &quot;includedIds&quot;: [ # The IDs included in a configuration.
        &quot;A String&quot;,
      ],
    },
    &quot;mobileAppTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeted app IDs. App IDs can refer to those found in an app store or ones that are not published in an app store. A maximum of 30,000 app IDs can be targeted.
      &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
      &quot;values&quot;: [ # The values specified.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;billingId&quot;: &quot;A String&quot;, # Output only. The identifier that corresponds to this pretargeting configuration that helps buyers track and attribute their spend across their own arbitrary divisions. If a bid request matches more than one configuration, the buyer chooses which billing_id to attribute each of their bids.
  &quot;displayName&quot;: &quot;A String&quot;, # The diplay name associated with this configuration. This name must be unique among all the pretargeting configurations a bidder has.
  &quot;excludedContentLabelIds&quot;: [ # The sensitive content category label IDs excluded in this configuration. Bid requests for inventory with any of the specified content label IDs will not be sent. Refer to this file https://storage.googleapis.com/adx-rtb-dictionaries/content-labels.txt for category IDs.
    &quot;A String&quot;,
  ],
  &quot;geoTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The geos included or excluded in this configuration defined in https://storage.googleapis.com/adx-rtb-dictionaries/geo-table.csv
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;includedCreativeDimensions&quot;: [ # Creative dimensions included by this configuration. Only bid requests eligible for at least one of the specified creative dimensions will be sent. An unset value allows all bid requests to be sent, regardless of creative dimension.
    { # The dimensions of a creative. This applies to only HTML and Native creatives.
      &quot;height&quot;: &quot;A String&quot;, # The height of the creative in pixels.
      &quot;width&quot;: &quot;A String&quot;, # The width of the creative in pixels.
    },
  ],
  &quot;includedEnvironments&quot;: [ # Environments that are being included. Bid requests will not be sent for a given environment if it is not included. Further restrictions can be applied to included environments to target only a subset of its inventory. An unset value includes all environments.
    &quot;A String&quot;,
  ],
  &quot;includedFormats&quot;: [ # Creative formats included by this configuration. Only bid requests eligible for at least one of the specified creative formats will be sent. An unset value will allow all bid requests to be sent, regardless of format.
    &quot;A String&quot;,
  ],
  &quot;includedLanguages&quot;: [ # The languages included in this configuration, represented by their language code. See https://developers.google.com/adwords/api/docs/appendix/languagecodes.
    &quot;A String&quot;,
  ],
  &quot;includedMobileOperatingSystemIds&quot;: [ # The mobile operating systems included in this configuration as defined in https://storage.googleapis.com/adx-rtb-dictionaries/mobile-os.csv
    &quot;A String&quot;,
  ],
  &quot;includedPlatforms&quot;: [ # The platforms included by this configration. Bid requests for devices with the specified platform types will be sent. An unset value allows all bid requests to be sent, regardless of platform.
    &quot;A String&quot;,
  ],
  &quot;includedUserIdTypes&quot;: [ # User identifier types included in this configuration. At least one of the user identifier types specified in this list must be available for the bid request to be sent.
    &quot;A String&quot;,
  ],
  &quot;interstitialTargeting&quot;: &quot;A String&quot;, # The interstitial targeting specified for this configuration. The unset value will allow bid requests to be sent regardless of whether they are for interstitials or not.
  &quot;invalidGeoIds&quot;: [ # Output only. Existing included or excluded geos that are invalid. Previously targeted geos may become invalid due to privacy restrictions.
    &quot;A String&quot;,
  ],
  &quot;maximumQps&quot;: &quot;A String&quot;, # The maximum QPS threshold for this configuration. The bidder should receive no more than this number of bid requests matching this configuration per second across all their bidding endpoints among all trading locations. Further information available at https://developers.google.com/authorized-buyers/rtb/peer-guide
  &quot;minimumViewabilityDecile&quot;: 42, # The targeted minimum viewability decile, ranging in values [0, 10]. A value of 5 means that the configuration will only match adslots for which we predict at least 50% viewability. Values &gt; 10 will be rounded down to 10. An unset value or a value of 0 indicates that bid requests will be sent regardless of viewability.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Name of the pretargeting configuration that must follow the pattern `bidders/{bidder_account_id}/pretargetingConfigs/{config_id}`
  &quot;publisherTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeting on a subset of publisher inventory. Publishers can either be targeted positively (bid requests will be sent only if the publisher is listed in the targeting dimension) or negatively (bid requests will be sent only if the publisher is not listed in the targeting dimension). A maximum of 10,000 publisher IDs can be targeted. Publisher IDs are found in [ads.txt](https://iabtechlab.com/ads-txt/) / [app-ads.txt](https://iabtechlab.com/app-ads-txt/) and in bid requests in the `BidRequest.publisher_id` field on the [Google RTB protocol](https://developers.google.com/authorized-buyers/rtb/downloads/realtime-bidding-proto) or the `BidRequest.site.publisher.id` / `BidRequest.app.publisher.id` field on the [OpenRTB protocol](https://developers.google.com/authorized-buyers/rtb/downloads/openrtb-adx-proto).
    &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
    &quot;values&quot;: [ # The values specified.
      &quot;A String&quot;,
    ],
  },
  &quot;state&quot;: &quot;A String&quot;, # Output only. The state of this pretargeting configuration.
  &quot;userListTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The remarketing lists included or excluded in this configuration as defined in UserList.
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;verticalTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The verticals included or excluded in this configuration as defined in https://developers.google.com/authorized-buyers/rtb/downloads/publisher-verticals
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;webTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeting on a subset of site inventory. If WEB is listed in included_environments, the specified targeting is applied. A maximum of 50,000 site URLs can be targeted. An unset value for targeting allows all web-based bid requests to be sent. Sites can either be targeting positively (bid requests will be sent only if the destination site is listed in the targeting dimension) or negatively (bid requests will be sent only if the destination site is not listed in the pretargeting configuration).
    &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
    &quot;values&quot;: [ # The values specified.
      &quot;A String&quot;,
    ],
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="suspend">suspend(name, body=None, x__xgafv=None)</code>
  <pre>Suspends a pretargeting configuration.

Args:
  name: string, Required. The name of the pretargeting configuration. Format: bidders/{bidderAccountId}/pretargetingConfig/{configId} (required)
  body: object, The request body.
    The object takes the form of:

{ # A request to suspend a pretargeting configuration. Sets the configuration&#x27;s state to SUSPENDED.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Pretargeting configuration: a set of targeting dimensions applied at the pretargeting stage of the RTB funnel. These control which inventory a bidder will receive bid requests for.
  &quot;allowedUserTargetingModes&quot;: [ # Targeting modes included by this configuration. A bid request must allow all the specified targeting modes. An unset value allows all bid requests to be sent, regardless of which targeting modes they allow.
    &quot;A String&quot;,
  ],
  &quot;appTargeting&quot;: { # A subset of app inventory to target. Bid requests that match criteria in at least one of the specified dimensions will be sent. # Targeting on a subset of app inventory. If APP is listed in targeted_environments, the specified targeting is applied. A maximum of 30,000 app IDs can be targeted. An unset value for targeting allows all app-based bid requests to be sent. Apps can either be targeting positively (bid requests will be sent only if the destination app is listed in the targeting dimension) or negatively (bid requests will be sent only if the destination app is not listed in the targeting dimension).
    &quot;mobileAppCategoryTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # Lists of included and excluded mobile app categories as defined in https://developers.google.com/adwords/api/docs/appendix/mobileappcategories.csv.
      &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
        &quot;A String&quot;,
      ],
      &quot;includedIds&quot;: [ # The IDs included in a configuration.
        &quot;A String&quot;,
      ],
    },
    &quot;mobileAppTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeted app IDs. App IDs can refer to those found in an app store or ones that are not published in an app store. A maximum of 30,000 app IDs can be targeted.
      &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
      &quot;values&quot;: [ # The values specified.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;billingId&quot;: &quot;A String&quot;, # Output only. The identifier that corresponds to this pretargeting configuration that helps buyers track and attribute their spend across their own arbitrary divisions. If a bid request matches more than one configuration, the buyer chooses which billing_id to attribute each of their bids.
  &quot;displayName&quot;: &quot;A String&quot;, # The diplay name associated with this configuration. This name must be unique among all the pretargeting configurations a bidder has.
  &quot;excludedContentLabelIds&quot;: [ # The sensitive content category label IDs excluded in this configuration. Bid requests for inventory with any of the specified content label IDs will not be sent. Refer to this file https://storage.googleapis.com/adx-rtb-dictionaries/content-labels.txt for category IDs.
    &quot;A String&quot;,
  ],
  &quot;geoTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The geos included or excluded in this configuration defined in https://storage.googleapis.com/adx-rtb-dictionaries/geo-table.csv
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;includedCreativeDimensions&quot;: [ # Creative dimensions included by this configuration. Only bid requests eligible for at least one of the specified creative dimensions will be sent. An unset value allows all bid requests to be sent, regardless of creative dimension.
    { # The dimensions of a creative. This applies to only HTML and Native creatives.
      &quot;height&quot;: &quot;A String&quot;, # The height of the creative in pixels.
      &quot;width&quot;: &quot;A String&quot;, # The width of the creative in pixels.
    },
  ],
  &quot;includedEnvironments&quot;: [ # Environments that are being included. Bid requests will not be sent for a given environment if it is not included. Further restrictions can be applied to included environments to target only a subset of its inventory. An unset value includes all environments.
    &quot;A String&quot;,
  ],
  &quot;includedFormats&quot;: [ # Creative formats included by this configuration. Only bid requests eligible for at least one of the specified creative formats will be sent. An unset value will allow all bid requests to be sent, regardless of format.
    &quot;A String&quot;,
  ],
  &quot;includedLanguages&quot;: [ # The languages included in this configuration, represented by their language code. See https://developers.google.com/adwords/api/docs/appendix/languagecodes.
    &quot;A String&quot;,
  ],
  &quot;includedMobileOperatingSystemIds&quot;: [ # The mobile operating systems included in this configuration as defined in https://storage.googleapis.com/adx-rtb-dictionaries/mobile-os.csv
    &quot;A String&quot;,
  ],
  &quot;includedPlatforms&quot;: [ # The platforms included by this configration. Bid requests for devices with the specified platform types will be sent. An unset value allows all bid requests to be sent, regardless of platform.
    &quot;A String&quot;,
  ],
  &quot;includedUserIdTypes&quot;: [ # User identifier types included in this configuration. At least one of the user identifier types specified in this list must be available for the bid request to be sent.
    &quot;A String&quot;,
  ],
  &quot;interstitialTargeting&quot;: &quot;A String&quot;, # The interstitial targeting specified for this configuration. The unset value will allow bid requests to be sent regardless of whether they are for interstitials or not.
  &quot;invalidGeoIds&quot;: [ # Output only. Existing included or excluded geos that are invalid. Previously targeted geos may become invalid due to privacy restrictions.
    &quot;A String&quot;,
  ],
  &quot;maximumQps&quot;: &quot;A String&quot;, # The maximum QPS threshold for this configuration. The bidder should receive no more than this number of bid requests matching this configuration per second across all their bidding endpoints among all trading locations. Further information available at https://developers.google.com/authorized-buyers/rtb/peer-guide
  &quot;minimumViewabilityDecile&quot;: 42, # The targeted minimum viewability decile, ranging in values [0, 10]. A value of 5 means that the configuration will only match adslots for which we predict at least 50% viewability. Values &gt; 10 will be rounded down to 10. An unset value or a value of 0 indicates that bid requests will be sent regardless of viewability.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Name of the pretargeting configuration that must follow the pattern `bidders/{bidder_account_id}/pretargetingConfigs/{config_id}`
  &quot;publisherTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeting on a subset of publisher inventory. Publishers can either be targeted positively (bid requests will be sent only if the publisher is listed in the targeting dimension) or negatively (bid requests will be sent only if the publisher is not listed in the targeting dimension). A maximum of 10,000 publisher IDs can be targeted. Publisher IDs are found in [ads.txt](https://iabtechlab.com/ads-txt/) / [app-ads.txt](https://iabtechlab.com/app-ads-txt/) and in bid requests in the `BidRequest.publisher_id` field on the [Google RTB protocol](https://developers.google.com/authorized-buyers/rtb/downloads/realtime-bidding-proto) or the `BidRequest.site.publisher.id` / `BidRequest.app.publisher.id` field on the [OpenRTB protocol](https://developers.google.com/authorized-buyers/rtb/downloads/openrtb-adx-proto).
    &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
    &quot;values&quot;: [ # The values specified.
      &quot;A String&quot;,
    ],
  },
  &quot;state&quot;: &quot;A String&quot;, # Output only. The state of this pretargeting configuration.
  &quot;userListTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The remarketing lists included or excluded in this configuration as defined in UserList.
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;verticalTargeting&quot;: { # Generic targeting used for targeting dimensions that contain a list of included and excluded numeric IDs used in app, user list, geo, and vertical id targeting. # The verticals included or excluded in this configuration as defined in https://developers.google.com/authorized-buyers/rtb/downloads/publisher-verticals
    &quot;excludedIds&quot;: [ # The IDs excluded in a configuration.
      &quot;A String&quot;,
    ],
    &quot;includedIds&quot;: [ # The IDs included in a configuration.
      &quot;A String&quot;,
    ],
  },
  &quot;webTargeting&quot;: { # Generic targeting with string values used in app, website and publisher targeting. # Targeting on a subset of site inventory. If WEB is listed in included_environments, the specified targeting is applied. A maximum of 50,000 site URLs can be targeted. An unset value for targeting allows all web-based bid requests to be sent. Sites can either be targeting positively (bid requests will be sent only if the destination site is listed in the targeting dimension) or negatively (bid requests will be sent only if the destination site is not listed in the pretargeting configuration).
    &quot;targetingMode&quot;: &quot;A String&quot;, # How the items in this list should be targeted.
    &quot;values&quot;: [ # The values specified.
      &quot;A String&quot;,
    ],
  },
}</pre>
</div>

</body></html>