<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="adexchangebuyer_v1_4.html">Ad Exchange Buyer API</a> . <a href="adexchangebuyer_v1_4.pretargetingConfig.html">pretargetingConfig</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#delete">delete(accountId, configId)</a></code></p>
<p class="firstline">Deletes an existing pretargeting config.</p>
<p class="toc_element">
  <code><a href="#get">get(accountId, configId)</a></code></p>
<p class="firstline">Gets a specific pretargeting configuration</p>
<p class="toc_element">
  <code><a href="#insert">insert(accountId, body=None)</a></code></p>
<p class="firstline">Inserts a new pretargeting configuration.</p>
<p class="toc_element">
  <code><a href="#list">list(accountId)</a></code></p>
<p class="firstline">Retrieves a list of the authenticated user's pretargeting configurations.</p>
<p class="toc_element">
  <code><a href="#patch">patch(accountId, configId, body=None)</a></code></p>
<p class="firstline">Updates an existing pretargeting config. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#update">update(accountId, configId, body=None)</a></code></p>
<p class="firstline">Updates an existing pretargeting config.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(accountId, configId)</code>
  <pre>Deletes an existing pretargeting config.

Args:
  accountId: string, The account id to delete the pretargeting config for. (required)
  configId: string, The specific id of the configuration to delete. (required)
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(accountId, configId)</code>
  <pre>Gets a specific pretargeting configuration

Args:
  accountId: string, The account id to get the pretargeting config for. (required)
  configId: string, The specific id of the configuration to retrieve. (required)

Returns:
  An object of the form:

    {
  &quot;billingId&quot;: &quot;A String&quot;, # The id for billing purposes, provided for reference. Leave this field blank for insert requests; the id will be generated automatically.
  &quot;configId&quot;: &quot;A String&quot;, # The config id; generated automatically. Leave this field blank for insert requests.
  &quot;configName&quot;: &quot;A String&quot;, # The name of the config. Must be unique. Required for all requests.
  &quot;creativeType&quot;: [ # List must contain exactly one of PRETARGETING_CREATIVE_TYPE_HTML or PRETARGETING_CREATIVE_TYPE_VIDEO.
    &quot;A String&quot;,
  ],
  &quot;dimensions&quot;: [ # Requests which allow one of these (width, height) pairs will match. All pairs must be supported ad dimensions.
    {
      &quot;height&quot;: &quot;A String&quot;, # Height in pixels.
      &quot;width&quot;: &quot;A String&quot;, # Width in pixels.
    },
  ],
  &quot;excludedContentLabels&quot;: [ # Requests with any of these content labels will not match. Values are from content-labels.txt in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;excludedGeoCriteriaIds&quot;: [ # Requests containing any of these geo criteria ids will not match.
    &quot;A String&quot;,
  ],
  &quot;excludedPlacements&quot;: [ # Requests containing any of these placements will not match.
    {
      &quot;token&quot;: &quot;A String&quot;, # The value of the placement. Interpretation depends on the placement type, e.g. URL for a site placement, channel name for a channel placement, app id for a mobile app placement.
      &quot;type&quot;: &quot;A String&quot;, # The type of the placement.
    },
  ],
  &quot;excludedUserLists&quot;: [ # Requests containing any of these users list ids will not match.
    &quot;A String&quot;,
  ],
  &quot;excludedVerticals&quot;: [ # Requests containing any of these vertical ids will not match. Values are from the publisher-verticals.txt file in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;geoCriteriaIds&quot;: [ # Requests containing any of these geo criteria ids will match.
    &quot;A String&quot;,
  ],
  &quot;isActive&quot;: True or False, # Whether this config is active. Required for all requests.
  &quot;kind&quot;: &quot;adexchangebuyer#pretargetingConfig&quot;, # The kind of the resource, i.e. &quot;adexchangebuyer#pretargetingConfig&quot;.
  &quot;languages&quot;: [ # Request containing any of these language codes will match.
    &quot;A String&quot;,
  ],
  &quot;maximumQps&quot;: &quot;A String&quot;, # The maximum QPS allocated to this pretargeting configuration, used for pretargeting-level QPS limits. By default, this is not set, which indicates that there is no QPS limit at the configuration level (a global or account-level limit may still be imposed).
  &quot;minimumViewabilityDecile&quot;: 42, # Requests where the predicted viewability is below the specified decile will not match. E.g. if the buyer sets this value to 5, requests from slots where the predicted viewability is below 50% will not match. If the predicted viewability is unknown this field will be ignored.
  &quot;mobileCarriers&quot;: [ # Requests containing any of these mobile carrier ids will match. Values are from mobile-carriers.csv in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;mobileDevices&quot;: [ # Requests containing any of these mobile device ids will match. Values are from mobile-devices.csv in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;mobileOperatingSystemVersions&quot;: [ # Requests containing any of these mobile operating system version ids will match. Values are from mobile-os.csv in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;placements&quot;: [ # Requests containing any of these placements will match.
    {
      &quot;token&quot;: &quot;A String&quot;, # The value of the placement. Interpretation depends on the placement type, e.g. URL for a site placement, channel name for a channel placement, app id for a mobile app placement.
      &quot;type&quot;: &quot;A String&quot;, # The type of the placement.
    },
  ],
  &quot;platforms&quot;: [ # Requests matching any of these platforms will match. Possible values are PRETARGETING_PLATFORM_MOBILE, PRETARGETING_PLATFORM_DESKTOP, and PRETARGETING_PLATFORM_TABLET.
    &quot;A String&quot;,
  ],
  &quot;supportedCreativeAttributes&quot;: [ # Creative attributes should be declared here if all creatives corresponding to this pretargeting configuration have that creative attribute. Values are from pretargetable-creative-attributes.txt in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;userIdentifierDataRequired&quot;: [ # Requests containing the specified type of user data will match. Possible values are HOSTED_MATCH_DATA, which means the request is cookie-targetable and has a match in the buyer&#x27;s hosted match table, and COOKIE_OR_IDFA, which means the request has either a targetable cookie or an iOS IDFA.
    &quot;A String&quot;,
  ],
  &quot;userLists&quot;: [ # Requests containing any of these user list ids will match.
    &quot;A String&quot;,
  ],
  &quot;vendorTypes&quot;: [ # Requests that allow any of these vendor ids will match. Values are from vendors.txt in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;verticals&quot;: [ # Requests containing any of these vertical ids will match.
    &quot;A String&quot;,
  ],
  &quot;videoPlayerSizes&quot;: [ # Video requests satisfying any of these player size constraints will match.
    {
      &quot;aspectRatio&quot;: &quot;A String&quot;, # The type of aspect ratio. Leave this field blank to match all aspect ratios.
      &quot;minHeight&quot;: &quot;A String&quot;, # The minimum player height in pixels. Leave this field blank to match any player height.
      &quot;minWidth&quot;: &quot;A String&quot;, # The minimum player width in pixels. Leave this field blank to match any player width.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(accountId, body=None)</code>
  <pre>Inserts a new pretargeting configuration.

Args:
  accountId: string, The account id to insert the pretargeting config for. (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;billingId&quot;: &quot;A String&quot;, # The id for billing purposes, provided for reference. Leave this field blank for insert requests; the id will be generated automatically.
  &quot;configId&quot;: &quot;A String&quot;, # The config id; generated automatically. Leave this field blank for insert requests.
  &quot;configName&quot;: &quot;A String&quot;, # The name of the config. Must be unique. Required for all requests.
  &quot;creativeType&quot;: [ # List must contain exactly one of PRETARGETING_CREATIVE_TYPE_HTML or PRETARGETING_CREATIVE_TYPE_VIDEO.
    &quot;A String&quot;,
  ],
  &quot;dimensions&quot;: [ # Requests which allow one of these (width, height) pairs will match. All pairs must be supported ad dimensions.
    {
      &quot;height&quot;: &quot;A String&quot;, # Height in pixels.
      &quot;width&quot;: &quot;A String&quot;, # Width in pixels.
    },
  ],
  &quot;excludedContentLabels&quot;: [ # Requests with any of these content labels will not match. Values are from content-labels.txt in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;excludedGeoCriteriaIds&quot;: [ # Requests containing any of these geo criteria ids will not match.
    &quot;A String&quot;,
  ],
  &quot;excludedPlacements&quot;: [ # Requests containing any of these placements will not match.
    {
      &quot;token&quot;: &quot;A String&quot;, # The value of the placement. Interpretation depends on the placement type, e.g. URL for a site placement, channel name for a channel placement, app id for a mobile app placement.
      &quot;type&quot;: &quot;A String&quot;, # The type of the placement.
    },
  ],
  &quot;excludedUserLists&quot;: [ # Requests containing any of these users list ids will not match.
    &quot;A String&quot;,
  ],
  &quot;excludedVerticals&quot;: [ # Requests containing any of these vertical ids will not match. Values are from the publisher-verticals.txt file in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;geoCriteriaIds&quot;: [ # Requests containing any of these geo criteria ids will match.
    &quot;A String&quot;,
  ],
  &quot;isActive&quot;: True or False, # Whether this config is active. Required for all requests.
  &quot;kind&quot;: &quot;adexchangebuyer#pretargetingConfig&quot;, # The kind of the resource, i.e. &quot;adexchangebuyer#pretargetingConfig&quot;.
  &quot;languages&quot;: [ # Request containing any of these language codes will match.
    &quot;A String&quot;,
  ],
  &quot;maximumQps&quot;: &quot;A String&quot;, # The maximum QPS allocated to this pretargeting configuration, used for pretargeting-level QPS limits. By default, this is not set, which indicates that there is no QPS limit at the configuration level (a global or account-level limit may still be imposed).
  &quot;minimumViewabilityDecile&quot;: 42, # Requests where the predicted viewability is below the specified decile will not match. E.g. if the buyer sets this value to 5, requests from slots where the predicted viewability is below 50% will not match. If the predicted viewability is unknown this field will be ignored.
  &quot;mobileCarriers&quot;: [ # Requests containing any of these mobile carrier ids will match. Values are from mobile-carriers.csv in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;mobileDevices&quot;: [ # Requests containing any of these mobile device ids will match. Values are from mobile-devices.csv in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;mobileOperatingSystemVersions&quot;: [ # Requests containing any of these mobile operating system version ids will match. Values are from mobile-os.csv in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;placements&quot;: [ # Requests containing any of these placements will match.
    {
      &quot;token&quot;: &quot;A String&quot;, # The value of the placement. Interpretation depends on the placement type, e.g. URL for a site placement, channel name for a channel placement, app id for a mobile app placement.
      &quot;type&quot;: &quot;A String&quot;, # The type of the placement.
    },
  ],
  &quot;platforms&quot;: [ # Requests matching any of these platforms will match. Possible values are PRETARGETING_PLATFORM_MOBILE, PRETARGETING_PLATFORM_DESKTOP, and PRETARGETING_PLATFORM_TABLET.
    &quot;A String&quot;,
  ],
  &quot;supportedCreativeAttributes&quot;: [ # Creative attributes should be declared here if all creatives corresponding to this pretargeting configuration have that creative attribute. Values are from pretargetable-creative-attributes.txt in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;userIdentifierDataRequired&quot;: [ # Requests containing the specified type of user data will match. Possible values are HOSTED_MATCH_DATA, which means the request is cookie-targetable and has a match in the buyer&#x27;s hosted match table, and COOKIE_OR_IDFA, which means the request has either a targetable cookie or an iOS IDFA.
    &quot;A String&quot;,
  ],
  &quot;userLists&quot;: [ # Requests containing any of these user list ids will match.
    &quot;A String&quot;,
  ],
  &quot;vendorTypes&quot;: [ # Requests that allow any of these vendor ids will match. Values are from vendors.txt in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;verticals&quot;: [ # Requests containing any of these vertical ids will match.
    &quot;A String&quot;,
  ],
  &quot;videoPlayerSizes&quot;: [ # Video requests satisfying any of these player size constraints will match.
    {
      &quot;aspectRatio&quot;: &quot;A String&quot;, # The type of aspect ratio. Leave this field blank to match all aspect ratios.
      &quot;minHeight&quot;: &quot;A String&quot;, # The minimum player height in pixels. Leave this field blank to match any player height.
      &quot;minWidth&quot;: &quot;A String&quot;, # The minimum player width in pixels. Leave this field blank to match any player width.
    },
  ],
}


Returns:
  An object of the form:

    {
  &quot;billingId&quot;: &quot;A String&quot;, # The id for billing purposes, provided for reference. Leave this field blank for insert requests; the id will be generated automatically.
  &quot;configId&quot;: &quot;A String&quot;, # The config id; generated automatically. Leave this field blank for insert requests.
  &quot;configName&quot;: &quot;A String&quot;, # The name of the config. Must be unique. Required for all requests.
  &quot;creativeType&quot;: [ # List must contain exactly one of PRETARGETING_CREATIVE_TYPE_HTML or PRETARGETING_CREATIVE_TYPE_VIDEO.
    &quot;A String&quot;,
  ],
  &quot;dimensions&quot;: [ # Requests which allow one of these (width, height) pairs will match. All pairs must be supported ad dimensions.
    {
      &quot;height&quot;: &quot;A String&quot;, # Height in pixels.
      &quot;width&quot;: &quot;A String&quot;, # Width in pixels.
    },
  ],
  &quot;excludedContentLabels&quot;: [ # Requests with any of these content labels will not match. Values are from content-labels.txt in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;excludedGeoCriteriaIds&quot;: [ # Requests containing any of these geo criteria ids will not match.
    &quot;A String&quot;,
  ],
  &quot;excludedPlacements&quot;: [ # Requests containing any of these placements will not match.
    {
      &quot;token&quot;: &quot;A String&quot;, # The value of the placement. Interpretation depends on the placement type, e.g. URL for a site placement, channel name for a channel placement, app id for a mobile app placement.
      &quot;type&quot;: &quot;A String&quot;, # The type of the placement.
    },
  ],
  &quot;excludedUserLists&quot;: [ # Requests containing any of these users list ids will not match.
    &quot;A String&quot;,
  ],
  &quot;excludedVerticals&quot;: [ # Requests containing any of these vertical ids will not match. Values are from the publisher-verticals.txt file in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;geoCriteriaIds&quot;: [ # Requests containing any of these geo criteria ids will match.
    &quot;A String&quot;,
  ],
  &quot;isActive&quot;: True or False, # Whether this config is active. Required for all requests.
  &quot;kind&quot;: &quot;adexchangebuyer#pretargetingConfig&quot;, # The kind of the resource, i.e. &quot;adexchangebuyer#pretargetingConfig&quot;.
  &quot;languages&quot;: [ # Request containing any of these language codes will match.
    &quot;A String&quot;,
  ],
  &quot;maximumQps&quot;: &quot;A String&quot;, # The maximum QPS allocated to this pretargeting configuration, used for pretargeting-level QPS limits. By default, this is not set, which indicates that there is no QPS limit at the configuration level (a global or account-level limit may still be imposed).
  &quot;minimumViewabilityDecile&quot;: 42, # Requests where the predicted viewability is below the specified decile will not match. E.g. if the buyer sets this value to 5, requests from slots where the predicted viewability is below 50% will not match. If the predicted viewability is unknown this field will be ignored.
  &quot;mobileCarriers&quot;: [ # Requests containing any of these mobile carrier ids will match. Values are from mobile-carriers.csv in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;mobileDevices&quot;: [ # Requests containing any of these mobile device ids will match. Values are from mobile-devices.csv in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;mobileOperatingSystemVersions&quot;: [ # Requests containing any of these mobile operating system version ids will match. Values are from mobile-os.csv in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;placements&quot;: [ # Requests containing any of these placements will match.
    {
      &quot;token&quot;: &quot;A String&quot;, # The value of the placement. Interpretation depends on the placement type, e.g. URL for a site placement, channel name for a channel placement, app id for a mobile app placement.
      &quot;type&quot;: &quot;A String&quot;, # The type of the placement.
    },
  ],
  &quot;platforms&quot;: [ # Requests matching any of these platforms will match. Possible values are PRETARGETING_PLATFORM_MOBILE, PRETARGETING_PLATFORM_DESKTOP, and PRETARGETING_PLATFORM_TABLET.
    &quot;A String&quot;,
  ],
  &quot;supportedCreativeAttributes&quot;: [ # Creative attributes should be declared here if all creatives corresponding to this pretargeting configuration have that creative attribute. Values are from pretargetable-creative-attributes.txt in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;userIdentifierDataRequired&quot;: [ # Requests containing the specified type of user data will match. Possible values are HOSTED_MATCH_DATA, which means the request is cookie-targetable and has a match in the buyer&#x27;s hosted match table, and COOKIE_OR_IDFA, which means the request has either a targetable cookie or an iOS IDFA.
    &quot;A String&quot;,
  ],
  &quot;userLists&quot;: [ # Requests containing any of these user list ids will match.
    &quot;A String&quot;,
  ],
  &quot;vendorTypes&quot;: [ # Requests that allow any of these vendor ids will match. Values are from vendors.txt in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;verticals&quot;: [ # Requests containing any of these vertical ids will match.
    &quot;A String&quot;,
  ],
  &quot;videoPlayerSizes&quot;: [ # Video requests satisfying any of these player size constraints will match.
    {
      &quot;aspectRatio&quot;: &quot;A String&quot;, # The type of aspect ratio. Leave this field blank to match all aspect ratios.
      &quot;minHeight&quot;: &quot;A String&quot;, # The minimum player height in pixels. Leave this field blank to match any player height.
      &quot;minWidth&quot;: &quot;A String&quot;, # The minimum player width in pixels. Leave this field blank to match any player width.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(accountId)</code>
  <pre>Retrieves a list of the authenticated user&#x27;s pretargeting configurations.

Args:
  accountId: string, The account id to get the pretargeting configs for. (required)

Returns:
  An object of the form:

    {
  &quot;items&quot;: [ # A list of pretargeting configs
    {
      &quot;billingId&quot;: &quot;A String&quot;, # The id for billing purposes, provided for reference. Leave this field blank for insert requests; the id will be generated automatically.
      &quot;configId&quot;: &quot;A String&quot;, # The config id; generated automatically. Leave this field blank for insert requests.
      &quot;configName&quot;: &quot;A String&quot;, # The name of the config. Must be unique. Required for all requests.
      &quot;creativeType&quot;: [ # List must contain exactly one of PRETARGETING_CREATIVE_TYPE_HTML or PRETARGETING_CREATIVE_TYPE_VIDEO.
        &quot;A String&quot;,
      ],
      &quot;dimensions&quot;: [ # Requests which allow one of these (width, height) pairs will match. All pairs must be supported ad dimensions.
        {
          &quot;height&quot;: &quot;A String&quot;, # Height in pixels.
          &quot;width&quot;: &quot;A String&quot;, # Width in pixels.
        },
      ],
      &quot;excludedContentLabels&quot;: [ # Requests with any of these content labels will not match. Values are from content-labels.txt in the downloadable files section.
        &quot;A String&quot;,
      ],
      &quot;excludedGeoCriteriaIds&quot;: [ # Requests containing any of these geo criteria ids will not match.
        &quot;A String&quot;,
      ],
      &quot;excludedPlacements&quot;: [ # Requests containing any of these placements will not match.
        {
          &quot;token&quot;: &quot;A String&quot;, # The value of the placement. Interpretation depends on the placement type, e.g. URL for a site placement, channel name for a channel placement, app id for a mobile app placement.
          &quot;type&quot;: &quot;A String&quot;, # The type of the placement.
        },
      ],
      &quot;excludedUserLists&quot;: [ # Requests containing any of these users list ids will not match.
        &quot;A String&quot;,
      ],
      &quot;excludedVerticals&quot;: [ # Requests containing any of these vertical ids will not match. Values are from the publisher-verticals.txt file in the downloadable files section.
        &quot;A String&quot;,
      ],
      &quot;geoCriteriaIds&quot;: [ # Requests containing any of these geo criteria ids will match.
        &quot;A String&quot;,
      ],
      &quot;isActive&quot;: True or False, # Whether this config is active. Required for all requests.
      &quot;kind&quot;: &quot;adexchangebuyer#pretargetingConfig&quot;, # The kind of the resource, i.e. &quot;adexchangebuyer#pretargetingConfig&quot;.
      &quot;languages&quot;: [ # Request containing any of these language codes will match.
        &quot;A String&quot;,
      ],
      &quot;maximumQps&quot;: &quot;A String&quot;, # The maximum QPS allocated to this pretargeting configuration, used for pretargeting-level QPS limits. By default, this is not set, which indicates that there is no QPS limit at the configuration level (a global or account-level limit may still be imposed).
      &quot;minimumViewabilityDecile&quot;: 42, # Requests where the predicted viewability is below the specified decile will not match. E.g. if the buyer sets this value to 5, requests from slots where the predicted viewability is below 50% will not match. If the predicted viewability is unknown this field will be ignored.
      &quot;mobileCarriers&quot;: [ # Requests containing any of these mobile carrier ids will match. Values are from mobile-carriers.csv in the downloadable files section.
        &quot;A String&quot;,
      ],
      &quot;mobileDevices&quot;: [ # Requests containing any of these mobile device ids will match. Values are from mobile-devices.csv in the downloadable files section.
        &quot;A String&quot;,
      ],
      &quot;mobileOperatingSystemVersions&quot;: [ # Requests containing any of these mobile operating system version ids will match. Values are from mobile-os.csv in the downloadable files section.
        &quot;A String&quot;,
      ],
      &quot;placements&quot;: [ # Requests containing any of these placements will match.
        {
          &quot;token&quot;: &quot;A String&quot;, # The value of the placement. Interpretation depends on the placement type, e.g. URL for a site placement, channel name for a channel placement, app id for a mobile app placement.
          &quot;type&quot;: &quot;A String&quot;, # The type of the placement.
        },
      ],
      &quot;platforms&quot;: [ # Requests matching any of these platforms will match. Possible values are PRETARGETING_PLATFORM_MOBILE, PRETARGETING_PLATFORM_DESKTOP, and PRETARGETING_PLATFORM_TABLET.
        &quot;A String&quot;,
      ],
      &quot;supportedCreativeAttributes&quot;: [ # Creative attributes should be declared here if all creatives corresponding to this pretargeting configuration have that creative attribute. Values are from pretargetable-creative-attributes.txt in the downloadable files section.
        &quot;A String&quot;,
      ],
      &quot;userIdentifierDataRequired&quot;: [ # Requests containing the specified type of user data will match. Possible values are HOSTED_MATCH_DATA, which means the request is cookie-targetable and has a match in the buyer&#x27;s hosted match table, and COOKIE_OR_IDFA, which means the request has either a targetable cookie or an iOS IDFA.
        &quot;A String&quot;,
      ],
      &quot;userLists&quot;: [ # Requests containing any of these user list ids will match.
        &quot;A String&quot;,
      ],
      &quot;vendorTypes&quot;: [ # Requests that allow any of these vendor ids will match. Values are from vendors.txt in the downloadable files section.
        &quot;A String&quot;,
      ],
      &quot;verticals&quot;: [ # Requests containing any of these vertical ids will match.
        &quot;A String&quot;,
      ],
      &quot;videoPlayerSizes&quot;: [ # Video requests satisfying any of these player size constraints will match.
        {
          &quot;aspectRatio&quot;: &quot;A String&quot;, # The type of aspect ratio. Leave this field blank to match all aspect ratios.
          &quot;minHeight&quot;: &quot;A String&quot;, # The minimum player height in pixels. Leave this field blank to match any player height.
          &quot;minWidth&quot;: &quot;A String&quot;, # The minimum player width in pixels. Leave this field blank to match any player width.
        },
      ],
    },
  ],
  &quot;kind&quot;: &quot;adexchangebuyer#pretargetingConfigList&quot;, # Resource type.
}</pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(accountId, configId, body=None)</code>
  <pre>Updates an existing pretargeting config. This method supports patch semantics.

Args:
  accountId: string, The account id to update the pretargeting config for. (required)
  configId: string, The specific id of the configuration to update. (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;billingId&quot;: &quot;A String&quot;, # The id for billing purposes, provided for reference. Leave this field blank for insert requests; the id will be generated automatically.
  &quot;configId&quot;: &quot;A String&quot;, # The config id; generated automatically. Leave this field blank for insert requests.
  &quot;configName&quot;: &quot;A String&quot;, # The name of the config. Must be unique. Required for all requests.
  &quot;creativeType&quot;: [ # List must contain exactly one of PRETARGETING_CREATIVE_TYPE_HTML or PRETARGETING_CREATIVE_TYPE_VIDEO.
    &quot;A String&quot;,
  ],
  &quot;dimensions&quot;: [ # Requests which allow one of these (width, height) pairs will match. All pairs must be supported ad dimensions.
    {
      &quot;height&quot;: &quot;A String&quot;, # Height in pixels.
      &quot;width&quot;: &quot;A String&quot;, # Width in pixels.
    },
  ],
  &quot;excludedContentLabels&quot;: [ # Requests with any of these content labels will not match. Values are from content-labels.txt in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;excludedGeoCriteriaIds&quot;: [ # Requests containing any of these geo criteria ids will not match.
    &quot;A String&quot;,
  ],
  &quot;excludedPlacements&quot;: [ # Requests containing any of these placements will not match.
    {
      &quot;token&quot;: &quot;A String&quot;, # The value of the placement. Interpretation depends on the placement type, e.g. URL for a site placement, channel name for a channel placement, app id for a mobile app placement.
      &quot;type&quot;: &quot;A String&quot;, # The type of the placement.
    },
  ],
  &quot;excludedUserLists&quot;: [ # Requests containing any of these users list ids will not match.
    &quot;A String&quot;,
  ],
  &quot;excludedVerticals&quot;: [ # Requests containing any of these vertical ids will not match. Values are from the publisher-verticals.txt file in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;geoCriteriaIds&quot;: [ # Requests containing any of these geo criteria ids will match.
    &quot;A String&quot;,
  ],
  &quot;isActive&quot;: True or False, # Whether this config is active. Required for all requests.
  &quot;kind&quot;: &quot;adexchangebuyer#pretargetingConfig&quot;, # The kind of the resource, i.e. &quot;adexchangebuyer#pretargetingConfig&quot;.
  &quot;languages&quot;: [ # Request containing any of these language codes will match.
    &quot;A String&quot;,
  ],
  &quot;maximumQps&quot;: &quot;A String&quot;, # The maximum QPS allocated to this pretargeting configuration, used for pretargeting-level QPS limits. By default, this is not set, which indicates that there is no QPS limit at the configuration level (a global or account-level limit may still be imposed).
  &quot;minimumViewabilityDecile&quot;: 42, # Requests where the predicted viewability is below the specified decile will not match. E.g. if the buyer sets this value to 5, requests from slots where the predicted viewability is below 50% will not match. If the predicted viewability is unknown this field will be ignored.
  &quot;mobileCarriers&quot;: [ # Requests containing any of these mobile carrier ids will match. Values are from mobile-carriers.csv in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;mobileDevices&quot;: [ # Requests containing any of these mobile device ids will match. Values are from mobile-devices.csv in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;mobileOperatingSystemVersions&quot;: [ # Requests containing any of these mobile operating system version ids will match. Values are from mobile-os.csv in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;placements&quot;: [ # Requests containing any of these placements will match.
    {
      &quot;token&quot;: &quot;A String&quot;, # The value of the placement. Interpretation depends on the placement type, e.g. URL for a site placement, channel name for a channel placement, app id for a mobile app placement.
      &quot;type&quot;: &quot;A String&quot;, # The type of the placement.
    },
  ],
  &quot;platforms&quot;: [ # Requests matching any of these platforms will match. Possible values are PRETARGETING_PLATFORM_MOBILE, PRETARGETING_PLATFORM_DESKTOP, and PRETARGETING_PLATFORM_TABLET.
    &quot;A String&quot;,
  ],
  &quot;supportedCreativeAttributes&quot;: [ # Creative attributes should be declared here if all creatives corresponding to this pretargeting configuration have that creative attribute. Values are from pretargetable-creative-attributes.txt in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;userIdentifierDataRequired&quot;: [ # Requests containing the specified type of user data will match. Possible values are HOSTED_MATCH_DATA, which means the request is cookie-targetable and has a match in the buyer&#x27;s hosted match table, and COOKIE_OR_IDFA, which means the request has either a targetable cookie or an iOS IDFA.
    &quot;A String&quot;,
  ],
  &quot;userLists&quot;: [ # Requests containing any of these user list ids will match.
    &quot;A String&quot;,
  ],
  &quot;vendorTypes&quot;: [ # Requests that allow any of these vendor ids will match. Values are from vendors.txt in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;verticals&quot;: [ # Requests containing any of these vertical ids will match.
    &quot;A String&quot;,
  ],
  &quot;videoPlayerSizes&quot;: [ # Video requests satisfying any of these player size constraints will match.
    {
      &quot;aspectRatio&quot;: &quot;A String&quot;, # The type of aspect ratio. Leave this field blank to match all aspect ratios.
      &quot;minHeight&quot;: &quot;A String&quot;, # The minimum player height in pixels. Leave this field blank to match any player height.
      &quot;minWidth&quot;: &quot;A String&quot;, # The minimum player width in pixels. Leave this field blank to match any player width.
    },
  ],
}


Returns:
  An object of the form:

    {
  &quot;billingId&quot;: &quot;A String&quot;, # The id for billing purposes, provided for reference. Leave this field blank for insert requests; the id will be generated automatically.
  &quot;configId&quot;: &quot;A String&quot;, # The config id; generated automatically. Leave this field blank for insert requests.
  &quot;configName&quot;: &quot;A String&quot;, # The name of the config. Must be unique. Required for all requests.
  &quot;creativeType&quot;: [ # List must contain exactly one of PRETARGETING_CREATIVE_TYPE_HTML or PRETARGETING_CREATIVE_TYPE_VIDEO.
    &quot;A String&quot;,
  ],
  &quot;dimensions&quot;: [ # Requests which allow one of these (width, height) pairs will match. All pairs must be supported ad dimensions.
    {
      &quot;height&quot;: &quot;A String&quot;, # Height in pixels.
      &quot;width&quot;: &quot;A String&quot;, # Width in pixels.
    },
  ],
  &quot;excludedContentLabels&quot;: [ # Requests with any of these content labels will not match. Values are from content-labels.txt in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;excludedGeoCriteriaIds&quot;: [ # Requests containing any of these geo criteria ids will not match.
    &quot;A String&quot;,
  ],
  &quot;excludedPlacements&quot;: [ # Requests containing any of these placements will not match.
    {
      &quot;token&quot;: &quot;A String&quot;, # The value of the placement. Interpretation depends on the placement type, e.g. URL for a site placement, channel name for a channel placement, app id for a mobile app placement.
      &quot;type&quot;: &quot;A String&quot;, # The type of the placement.
    },
  ],
  &quot;excludedUserLists&quot;: [ # Requests containing any of these users list ids will not match.
    &quot;A String&quot;,
  ],
  &quot;excludedVerticals&quot;: [ # Requests containing any of these vertical ids will not match. Values are from the publisher-verticals.txt file in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;geoCriteriaIds&quot;: [ # Requests containing any of these geo criteria ids will match.
    &quot;A String&quot;,
  ],
  &quot;isActive&quot;: True or False, # Whether this config is active. Required for all requests.
  &quot;kind&quot;: &quot;adexchangebuyer#pretargetingConfig&quot;, # The kind of the resource, i.e. &quot;adexchangebuyer#pretargetingConfig&quot;.
  &quot;languages&quot;: [ # Request containing any of these language codes will match.
    &quot;A String&quot;,
  ],
  &quot;maximumQps&quot;: &quot;A String&quot;, # The maximum QPS allocated to this pretargeting configuration, used for pretargeting-level QPS limits. By default, this is not set, which indicates that there is no QPS limit at the configuration level (a global or account-level limit may still be imposed).
  &quot;minimumViewabilityDecile&quot;: 42, # Requests where the predicted viewability is below the specified decile will not match. E.g. if the buyer sets this value to 5, requests from slots where the predicted viewability is below 50% will not match. If the predicted viewability is unknown this field will be ignored.
  &quot;mobileCarriers&quot;: [ # Requests containing any of these mobile carrier ids will match. Values are from mobile-carriers.csv in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;mobileDevices&quot;: [ # Requests containing any of these mobile device ids will match. Values are from mobile-devices.csv in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;mobileOperatingSystemVersions&quot;: [ # Requests containing any of these mobile operating system version ids will match. Values are from mobile-os.csv in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;placements&quot;: [ # Requests containing any of these placements will match.
    {
      &quot;token&quot;: &quot;A String&quot;, # The value of the placement. Interpretation depends on the placement type, e.g. URL for a site placement, channel name for a channel placement, app id for a mobile app placement.
      &quot;type&quot;: &quot;A String&quot;, # The type of the placement.
    },
  ],
  &quot;platforms&quot;: [ # Requests matching any of these platforms will match. Possible values are PRETARGETING_PLATFORM_MOBILE, PRETARGETING_PLATFORM_DESKTOP, and PRETARGETING_PLATFORM_TABLET.
    &quot;A String&quot;,
  ],
  &quot;supportedCreativeAttributes&quot;: [ # Creative attributes should be declared here if all creatives corresponding to this pretargeting configuration have that creative attribute. Values are from pretargetable-creative-attributes.txt in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;userIdentifierDataRequired&quot;: [ # Requests containing the specified type of user data will match. Possible values are HOSTED_MATCH_DATA, which means the request is cookie-targetable and has a match in the buyer&#x27;s hosted match table, and COOKIE_OR_IDFA, which means the request has either a targetable cookie or an iOS IDFA.
    &quot;A String&quot;,
  ],
  &quot;userLists&quot;: [ # Requests containing any of these user list ids will match.
    &quot;A String&quot;,
  ],
  &quot;vendorTypes&quot;: [ # Requests that allow any of these vendor ids will match. Values are from vendors.txt in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;verticals&quot;: [ # Requests containing any of these vertical ids will match.
    &quot;A String&quot;,
  ],
  &quot;videoPlayerSizes&quot;: [ # Video requests satisfying any of these player size constraints will match.
    {
      &quot;aspectRatio&quot;: &quot;A String&quot;, # The type of aspect ratio. Leave this field blank to match all aspect ratios.
      &quot;minHeight&quot;: &quot;A String&quot;, # The minimum player height in pixels. Leave this field blank to match any player height.
      &quot;minWidth&quot;: &quot;A String&quot;, # The minimum player width in pixels. Leave this field blank to match any player width.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="update">update(accountId, configId, body=None)</code>
  <pre>Updates an existing pretargeting config.

Args:
  accountId: string, The account id to update the pretargeting config for. (required)
  configId: string, The specific id of the configuration to update. (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;billingId&quot;: &quot;A String&quot;, # The id for billing purposes, provided for reference. Leave this field blank for insert requests; the id will be generated automatically.
  &quot;configId&quot;: &quot;A String&quot;, # The config id; generated automatically. Leave this field blank for insert requests.
  &quot;configName&quot;: &quot;A String&quot;, # The name of the config. Must be unique. Required for all requests.
  &quot;creativeType&quot;: [ # List must contain exactly one of PRETARGETING_CREATIVE_TYPE_HTML or PRETARGETING_CREATIVE_TYPE_VIDEO.
    &quot;A String&quot;,
  ],
  &quot;dimensions&quot;: [ # Requests which allow one of these (width, height) pairs will match. All pairs must be supported ad dimensions.
    {
      &quot;height&quot;: &quot;A String&quot;, # Height in pixels.
      &quot;width&quot;: &quot;A String&quot;, # Width in pixels.
    },
  ],
  &quot;excludedContentLabels&quot;: [ # Requests with any of these content labels will not match. Values are from content-labels.txt in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;excludedGeoCriteriaIds&quot;: [ # Requests containing any of these geo criteria ids will not match.
    &quot;A String&quot;,
  ],
  &quot;excludedPlacements&quot;: [ # Requests containing any of these placements will not match.
    {
      &quot;token&quot;: &quot;A String&quot;, # The value of the placement. Interpretation depends on the placement type, e.g. URL for a site placement, channel name for a channel placement, app id for a mobile app placement.
      &quot;type&quot;: &quot;A String&quot;, # The type of the placement.
    },
  ],
  &quot;excludedUserLists&quot;: [ # Requests containing any of these users list ids will not match.
    &quot;A String&quot;,
  ],
  &quot;excludedVerticals&quot;: [ # Requests containing any of these vertical ids will not match. Values are from the publisher-verticals.txt file in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;geoCriteriaIds&quot;: [ # Requests containing any of these geo criteria ids will match.
    &quot;A String&quot;,
  ],
  &quot;isActive&quot;: True or False, # Whether this config is active. Required for all requests.
  &quot;kind&quot;: &quot;adexchangebuyer#pretargetingConfig&quot;, # The kind of the resource, i.e. &quot;adexchangebuyer#pretargetingConfig&quot;.
  &quot;languages&quot;: [ # Request containing any of these language codes will match.
    &quot;A String&quot;,
  ],
  &quot;maximumQps&quot;: &quot;A String&quot;, # The maximum QPS allocated to this pretargeting configuration, used for pretargeting-level QPS limits. By default, this is not set, which indicates that there is no QPS limit at the configuration level (a global or account-level limit may still be imposed).
  &quot;minimumViewabilityDecile&quot;: 42, # Requests where the predicted viewability is below the specified decile will not match. E.g. if the buyer sets this value to 5, requests from slots where the predicted viewability is below 50% will not match. If the predicted viewability is unknown this field will be ignored.
  &quot;mobileCarriers&quot;: [ # Requests containing any of these mobile carrier ids will match. Values are from mobile-carriers.csv in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;mobileDevices&quot;: [ # Requests containing any of these mobile device ids will match. Values are from mobile-devices.csv in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;mobileOperatingSystemVersions&quot;: [ # Requests containing any of these mobile operating system version ids will match. Values are from mobile-os.csv in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;placements&quot;: [ # Requests containing any of these placements will match.
    {
      &quot;token&quot;: &quot;A String&quot;, # The value of the placement. Interpretation depends on the placement type, e.g. URL for a site placement, channel name for a channel placement, app id for a mobile app placement.
      &quot;type&quot;: &quot;A String&quot;, # The type of the placement.
    },
  ],
  &quot;platforms&quot;: [ # Requests matching any of these platforms will match. Possible values are PRETARGETING_PLATFORM_MOBILE, PRETARGETING_PLATFORM_DESKTOP, and PRETARGETING_PLATFORM_TABLET.
    &quot;A String&quot;,
  ],
  &quot;supportedCreativeAttributes&quot;: [ # Creative attributes should be declared here if all creatives corresponding to this pretargeting configuration have that creative attribute. Values are from pretargetable-creative-attributes.txt in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;userIdentifierDataRequired&quot;: [ # Requests containing the specified type of user data will match. Possible values are HOSTED_MATCH_DATA, which means the request is cookie-targetable and has a match in the buyer&#x27;s hosted match table, and COOKIE_OR_IDFA, which means the request has either a targetable cookie or an iOS IDFA.
    &quot;A String&quot;,
  ],
  &quot;userLists&quot;: [ # Requests containing any of these user list ids will match.
    &quot;A String&quot;,
  ],
  &quot;vendorTypes&quot;: [ # Requests that allow any of these vendor ids will match. Values are from vendors.txt in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;verticals&quot;: [ # Requests containing any of these vertical ids will match.
    &quot;A String&quot;,
  ],
  &quot;videoPlayerSizes&quot;: [ # Video requests satisfying any of these player size constraints will match.
    {
      &quot;aspectRatio&quot;: &quot;A String&quot;, # The type of aspect ratio. Leave this field blank to match all aspect ratios.
      &quot;minHeight&quot;: &quot;A String&quot;, # The minimum player height in pixels. Leave this field blank to match any player height.
      &quot;minWidth&quot;: &quot;A String&quot;, # The minimum player width in pixels. Leave this field blank to match any player width.
    },
  ],
}


Returns:
  An object of the form:

    {
  &quot;billingId&quot;: &quot;A String&quot;, # The id for billing purposes, provided for reference. Leave this field blank for insert requests; the id will be generated automatically.
  &quot;configId&quot;: &quot;A String&quot;, # The config id; generated automatically. Leave this field blank for insert requests.
  &quot;configName&quot;: &quot;A String&quot;, # The name of the config. Must be unique. Required for all requests.
  &quot;creativeType&quot;: [ # List must contain exactly one of PRETARGETING_CREATIVE_TYPE_HTML or PRETARGETING_CREATIVE_TYPE_VIDEO.
    &quot;A String&quot;,
  ],
  &quot;dimensions&quot;: [ # Requests which allow one of these (width, height) pairs will match. All pairs must be supported ad dimensions.
    {
      &quot;height&quot;: &quot;A String&quot;, # Height in pixels.
      &quot;width&quot;: &quot;A String&quot;, # Width in pixels.
    },
  ],
  &quot;excludedContentLabels&quot;: [ # Requests with any of these content labels will not match. Values are from content-labels.txt in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;excludedGeoCriteriaIds&quot;: [ # Requests containing any of these geo criteria ids will not match.
    &quot;A String&quot;,
  ],
  &quot;excludedPlacements&quot;: [ # Requests containing any of these placements will not match.
    {
      &quot;token&quot;: &quot;A String&quot;, # The value of the placement. Interpretation depends on the placement type, e.g. URL for a site placement, channel name for a channel placement, app id for a mobile app placement.
      &quot;type&quot;: &quot;A String&quot;, # The type of the placement.
    },
  ],
  &quot;excludedUserLists&quot;: [ # Requests containing any of these users list ids will not match.
    &quot;A String&quot;,
  ],
  &quot;excludedVerticals&quot;: [ # Requests containing any of these vertical ids will not match. Values are from the publisher-verticals.txt file in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;geoCriteriaIds&quot;: [ # Requests containing any of these geo criteria ids will match.
    &quot;A String&quot;,
  ],
  &quot;isActive&quot;: True or False, # Whether this config is active. Required for all requests.
  &quot;kind&quot;: &quot;adexchangebuyer#pretargetingConfig&quot;, # The kind of the resource, i.e. &quot;adexchangebuyer#pretargetingConfig&quot;.
  &quot;languages&quot;: [ # Request containing any of these language codes will match.
    &quot;A String&quot;,
  ],
  &quot;maximumQps&quot;: &quot;A String&quot;, # The maximum QPS allocated to this pretargeting configuration, used for pretargeting-level QPS limits. By default, this is not set, which indicates that there is no QPS limit at the configuration level (a global or account-level limit may still be imposed).
  &quot;minimumViewabilityDecile&quot;: 42, # Requests where the predicted viewability is below the specified decile will not match. E.g. if the buyer sets this value to 5, requests from slots where the predicted viewability is below 50% will not match. If the predicted viewability is unknown this field will be ignored.
  &quot;mobileCarriers&quot;: [ # Requests containing any of these mobile carrier ids will match. Values are from mobile-carriers.csv in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;mobileDevices&quot;: [ # Requests containing any of these mobile device ids will match. Values are from mobile-devices.csv in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;mobileOperatingSystemVersions&quot;: [ # Requests containing any of these mobile operating system version ids will match. Values are from mobile-os.csv in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;placements&quot;: [ # Requests containing any of these placements will match.
    {
      &quot;token&quot;: &quot;A String&quot;, # The value of the placement. Interpretation depends on the placement type, e.g. URL for a site placement, channel name for a channel placement, app id for a mobile app placement.
      &quot;type&quot;: &quot;A String&quot;, # The type of the placement.
    },
  ],
  &quot;platforms&quot;: [ # Requests matching any of these platforms will match. Possible values are PRETARGETING_PLATFORM_MOBILE, PRETARGETING_PLATFORM_DESKTOP, and PRETARGETING_PLATFORM_TABLET.
    &quot;A String&quot;,
  ],
  &quot;supportedCreativeAttributes&quot;: [ # Creative attributes should be declared here if all creatives corresponding to this pretargeting configuration have that creative attribute. Values are from pretargetable-creative-attributes.txt in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;userIdentifierDataRequired&quot;: [ # Requests containing the specified type of user data will match. Possible values are HOSTED_MATCH_DATA, which means the request is cookie-targetable and has a match in the buyer&#x27;s hosted match table, and COOKIE_OR_IDFA, which means the request has either a targetable cookie or an iOS IDFA.
    &quot;A String&quot;,
  ],
  &quot;userLists&quot;: [ # Requests containing any of these user list ids will match.
    &quot;A String&quot;,
  ],
  &quot;vendorTypes&quot;: [ # Requests that allow any of these vendor ids will match. Values are from vendors.txt in the downloadable files section.
    &quot;A String&quot;,
  ],
  &quot;verticals&quot;: [ # Requests containing any of these vertical ids will match.
    &quot;A String&quot;,
  ],
  &quot;videoPlayerSizes&quot;: [ # Video requests satisfying any of these player size constraints will match.
    {
      &quot;aspectRatio&quot;: &quot;A String&quot;, # The type of aspect ratio. Leave this field blank to match all aspect ratios.
      &quot;minHeight&quot;: &quot;A String&quot;, # The minimum player height in pixels. Leave this field blank to match any player height.
      &quot;minWidth&quot;: &quot;A String&quot;, # The minimum player width in pixels. Leave this field blank to match any player width.
    },
  ],
}</pre>
</div>

</body></html>