<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_3.html">Ad Exchange Buyer API</a> . <a href="adexchangebuyer_v1_3.pretargetingConfig.html">pretargetingConfig</a></h1>
<h2>Instance Methods</h2>
<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)</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)</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)</a></code></p>
<p class="firstline">Updates an existing pretargeting config.</p>
<h3>Method Details</h3>
<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:

    {
      "verticals": [ # Requests containing any of these vertical ids will match.
        "A String",
      ],
      "platforms": [ # Requests matching any of these platforms will match. Possible values are PRETARGETING_PLATFORM_MOBILE, PRETARGETING_PLATFORM_DESKTOP, and PRETARGETING_PLATFORM_TABLET.
        "A String",
      ],
      "configId": "A String", # The config id; generated automatically. Leave this field blank for insert requests.
      "excludedVerticals": [ # Requests containing any of these vertical ids will not match. Values are from the publisher-verticals.txt file in the downloadable files section.
        "A String",
      ],
      "configName": "A String", # The name of the config. Must be unique. Required for all requests.
      "excludedGeoCriteriaIds": [ # Requests containing any of these geo criteria ids will not match.
        "A String",
      ],
      "excludedContentLabels": [ # Requests with any of these content labels will not match. Values are from content-labels.txt in the downloadable files section.
        "A String",
      ],
      "languages": [ # Request containing any of these language codes will match.
        "A String",
      ],
      "mobileDevices": [ # Requests containing any of these mobile device ids will match. Values are from mobile-devices.csv in the downloadable files section.
        "A String",
      ],
      "mobileCarriers": [ # Requests containing any of these mobile carrier ids will match. Values are from mobile-carriers.csv in the downloadable files section.
        "A String",
      ],
      "excludedPlacements": [ # Requests containing any of these placements will not match.
        {
          "token": "A String", # 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.
          "type": "A String", # The type of the placement.
        },
      ],
      "billingId": "A String", # The id for billing purposes, provided for reference. Leave this field blank for insert requests; the id will be generated automatically.
      "geoCriteriaIds": [ # Requests containing any of these geo criteria ids will match.
        "A String",
      ],
      "mobileOperatingSystemVersions": [ # Requests containing any of these mobile operating system version ids will match. Values are from mobile-os.csv in the downloadable files section.
        "A String",
      ],
      "excludedUserLists": [ # Requests containing any of these users list ids will not match.
        "A String",
      ],
      "isActive": True or False, # Whether this config is active. Required for all requests.
      "dimensions": [ # Requests which allow one of these (width, height) pairs will match. All pairs must be supported ad dimensions.
        {
          "width": "A String", # Width in pixels.
          "height": "A String", # Height in pixels.
        },
      ],
      "kind": "adexchangebuyer#pretargetingConfig", # The kind of the resource, i.e. "adexchangebuyer#pretargetingConfig".
      "supportedCreativeAttributes": [ # 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.
        "A String",
      ],
      "vendorTypes": [ # Requests that allow any of these vendor ids will match. Values are from vendors.txt in the downloadable files section.
        "A String",
      ],
      "userLists": [ # Requests containing any of these user list ids will match.
        "A String",
      ],
      "creativeType": [ # List must contain exactly one of PRETARGETING_CREATIVE_TYPE_HTML or PRETARGETING_CREATIVE_TYPE_VIDEO.
        "A String",
      ],
      "placements": [ # Requests containing any of these placements will match.
        {
          "token": "A String", # 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.
          "type": "A String", # The type of the placement.
        },
      ],
    }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(accountId, body)</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. (required)
    The object takes the form of:

{
    "verticals": [ # Requests containing any of these vertical ids will match.
      "A String",
    ],
    "platforms": [ # Requests matching any of these platforms will match. Possible values are PRETARGETING_PLATFORM_MOBILE, PRETARGETING_PLATFORM_DESKTOP, and PRETARGETING_PLATFORM_TABLET.
      "A String",
    ],
    "configId": "A String", # The config id; generated automatically. Leave this field blank for insert requests.
    "excludedVerticals": [ # Requests containing any of these vertical ids will not match. Values are from the publisher-verticals.txt file in the downloadable files section.
      "A String",
    ],
    "configName": "A String", # The name of the config. Must be unique. Required for all requests.
    "excludedGeoCriteriaIds": [ # Requests containing any of these geo criteria ids will not match.
      "A String",
    ],
    "excludedContentLabels": [ # Requests with any of these content labels will not match. Values are from content-labels.txt in the downloadable files section.
      "A String",
    ],
    "languages": [ # Request containing any of these language codes will match.
      "A String",
    ],
    "mobileDevices": [ # Requests containing any of these mobile device ids will match. Values are from mobile-devices.csv in the downloadable files section.
      "A String",
    ],
    "mobileCarriers": [ # Requests containing any of these mobile carrier ids will match. Values are from mobile-carriers.csv in the downloadable files section.
      "A String",
    ],
    "excludedPlacements": [ # Requests containing any of these placements will not match.
      {
        "token": "A String", # 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.
        "type": "A String", # The type of the placement.
      },
    ],
    "billingId": "A String", # The id for billing purposes, provided for reference. Leave this field blank for insert requests; the id will be generated automatically.
    "geoCriteriaIds": [ # Requests containing any of these geo criteria ids will match.
      "A String",
    ],
    "mobileOperatingSystemVersions": [ # Requests containing any of these mobile operating system version ids will match. Values are from mobile-os.csv in the downloadable files section.
      "A String",
    ],
    "excludedUserLists": [ # Requests containing any of these users list ids will not match.
      "A String",
    ],
    "isActive": True or False, # Whether this config is active. Required for all requests.
    "dimensions": [ # Requests which allow one of these (width, height) pairs will match. All pairs must be supported ad dimensions.
      {
        "width": "A String", # Width in pixels.
        "height": "A String", # Height in pixels.
      },
    ],
    "kind": "adexchangebuyer#pretargetingConfig", # The kind of the resource, i.e. "adexchangebuyer#pretargetingConfig".
    "supportedCreativeAttributes": [ # 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.
      "A String",
    ],
    "vendorTypes": [ # Requests that allow any of these vendor ids will match. Values are from vendors.txt in the downloadable files section.
      "A String",
    ],
    "userLists": [ # Requests containing any of these user list ids will match.
      "A String",
    ],
    "creativeType": [ # List must contain exactly one of PRETARGETING_CREATIVE_TYPE_HTML or PRETARGETING_CREATIVE_TYPE_VIDEO.
      "A String",
    ],
    "placements": [ # Requests containing any of these placements will match.
      {
        "token": "A String", # 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.
        "type": "A String", # The type of the placement.
      },
    ],
  }


Returns:
  An object of the form:

    {
      "verticals": [ # Requests containing any of these vertical ids will match.
        "A String",
      ],
      "platforms": [ # Requests matching any of these platforms will match. Possible values are PRETARGETING_PLATFORM_MOBILE, PRETARGETING_PLATFORM_DESKTOP, and PRETARGETING_PLATFORM_TABLET.
        "A String",
      ],
      "configId": "A String", # The config id; generated automatically. Leave this field blank for insert requests.
      "excludedVerticals": [ # Requests containing any of these vertical ids will not match. Values are from the publisher-verticals.txt file in the downloadable files section.
        "A String",
      ],
      "configName": "A String", # The name of the config. Must be unique. Required for all requests.
      "excludedGeoCriteriaIds": [ # Requests containing any of these geo criteria ids will not match.
        "A String",
      ],
      "excludedContentLabels": [ # Requests with any of these content labels will not match. Values are from content-labels.txt in the downloadable files section.
        "A String",
      ],
      "languages": [ # Request containing any of these language codes will match.
        "A String",
      ],
      "mobileDevices": [ # Requests containing any of these mobile device ids will match. Values are from mobile-devices.csv in the downloadable files section.
        "A String",
      ],
      "mobileCarriers": [ # Requests containing any of these mobile carrier ids will match. Values are from mobile-carriers.csv in the downloadable files section.
        "A String",
      ],
      "excludedPlacements": [ # Requests containing any of these placements will not match.
        {
          "token": "A String", # 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.
          "type": "A String", # The type of the placement.
        },
      ],
      "billingId": "A String", # The id for billing purposes, provided for reference. Leave this field blank for insert requests; the id will be generated automatically.
      "geoCriteriaIds": [ # Requests containing any of these geo criteria ids will match.
        "A String",
      ],
      "mobileOperatingSystemVersions": [ # Requests containing any of these mobile operating system version ids will match. Values are from mobile-os.csv in the downloadable files section.
        "A String",
      ],
      "excludedUserLists": [ # Requests containing any of these users list ids will not match.
        "A String",
      ],
      "isActive": True or False, # Whether this config is active. Required for all requests.
      "dimensions": [ # Requests which allow one of these (width, height) pairs will match. All pairs must be supported ad dimensions.
        {
          "width": "A String", # Width in pixels.
          "height": "A String", # Height in pixels.
        },
      ],
      "kind": "adexchangebuyer#pretargetingConfig", # The kind of the resource, i.e. "adexchangebuyer#pretargetingConfig".
      "supportedCreativeAttributes": [ # 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.
        "A String",
      ],
      "vendorTypes": [ # Requests that allow any of these vendor ids will match. Values are from vendors.txt in the downloadable files section.
        "A String",
      ],
      "userLists": [ # Requests containing any of these user list ids will match.
        "A String",
      ],
      "creativeType": [ # List must contain exactly one of PRETARGETING_CREATIVE_TYPE_HTML or PRETARGETING_CREATIVE_TYPE_VIDEO.
        "A String",
      ],
      "placements": [ # Requests containing any of these placements will match.
        {
          "token": "A String", # 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.
          "type": "A String", # The type of the placement.
        },
      ],
    }</pre>
</div>

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

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

Returns:
  An object of the form:

    {
    "items": [ # A list of pretargeting configs
      {
          "verticals": [ # Requests containing any of these vertical ids will match.
            "A String",
          ],
          "platforms": [ # Requests matching any of these platforms will match. Possible values are PRETARGETING_PLATFORM_MOBILE, PRETARGETING_PLATFORM_DESKTOP, and PRETARGETING_PLATFORM_TABLET.
            "A String",
          ],
          "configId": "A String", # The config id; generated automatically. Leave this field blank for insert requests.
          "excludedVerticals": [ # Requests containing any of these vertical ids will not match. Values are from the publisher-verticals.txt file in the downloadable files section.
            "A String",
          ],
          "configName": "A String", # The name of the config. Must be unique. Required for all requests.
          "excludedGeoCriteriaIds": [ # Requests containing any of these geo criteria ids will not match.
            "A String",
          ],
          "excludedContentLabels": [ # Requests with any of these content labels will not match. Values are from content-labels.txt in the downloadable files section.
            "A String",
          ],
          "languages": [ # Request containing any of these language codes will match.
            "A String",
          ],
          "mobileDevices": [ # Requests containing any of these mobile device ids will match. Values are from mobile-devices.csv in the downloadable files section.
            "A String",
          ],
          "mobileCarriers": [ # Requests containing any of these mobile carrier ids will match. Values are from mobile-carriers.csv in the downloadable files section.
            "A String",
          ],
          "excludedPlacements": [ # Requests containing any of these placements will not match.
            {
              "token": "A String", # 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.
              "type": "A String", # The type of the placement.
            },
          ],
          "billingId": "A String", # The id for billing purposes, provided for reference. Leave this field blank for insert requests; the id will be generated automatically.
          "geoCriteriaIds": [ # Requests containing any of these geo criteria ids will match.
            "A String",
          ],
          "mobileOperatingSystemVersions": [ # Requests containing any of these mobile operating system version ids will match. Values are from mobile-os.csv in the downloadable files section.
            "A String",
          ],
          "excludedUserLists": [ # Requests containing any of these users list ids will not match.
            "A String",
          ],
          "isActive": True or False, # Whether this config is active. Required for all requests.
          "dimensions": [ # Requests which allow one of these (width, height) pairs will match. All pairs must be supported ad dimensions.
            {
              "width": "A String", # Width in pixels.
              "height": "A String", # Height in pixels.
            },
          ],
          "kind": "adexchangebuyer#pretargetingConfig", # The kind of the resource, i.e. "adexchangebuyer#pretargetingConfig".
          "supportedCreativeAttributes": [ # 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.
            "A String",
          ],
          "vendorTypes": [ # Requests that allow any of these vendor ids will match. Values are from vendors.txt in the downloadable files section.
            "A String",
          ],
          "userLists": [ # Requests containing any of these user list ids will match.
            "A String",
          ],
          "creativeType": [ # List must contain exactly one of PRETARGETING_CREATIVE_TYPE_HTML or PRETARGETING_CREATIVE_TYPE_VIDEO.
            "A String",
          ],
          "placements": [ # Requests containing any of these placements will match.
            {
              "token": "A String", # 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.
              "type": "A String", # The type of the placement.
            },
          ],
        },
    ],
    "kind": "adexchangebuyer#pretargetingConfigList", # Resource type.
  }</pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(accountId, configId, body)</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. (required)
    The object takes the form of:

{
    "verticals": [ # Requests containing any of these vertical ids will match.
      "A String",
    ],
    "platforms": [ # Requests matching any of these platforms will match. Possible values are PRETARGETING_PLATFORM_MOBILE, PRETARGETING_PLATFORM_DESKTOP, and PRETARGETING_PLATFORM_TABLET.
      "A String",
    ],
    "configId": "A String", # The config id; generated automatically. Leave this field blank for insert requests.
    "excludedVerticals": [ # Requests containing any of these vertical ids will not match. Values are from the publisher-verticals.txt file in the downloadable files section.
      "A String",
    ],
    "configName": "A String", # The name of the config. Must be unique. Required for all requests.
    "excludedGeoCriteriaIds": [ # Requests containing any of these geo criteria ids will not match.
      "A String",
    ],
    "excludedContentLabels": [ # Requests with any of these content labels will not match. Values are from content-labels.txt in the downloadable files section.
      "A String",
    ],
    "languages": [ # Request containing any of these language codes will match.
      "A String",
    ],
    "mobileDevices": [ # Requests containing any of these mobile device ids will match. Values are from mobile-devices.csv in the downloadable files section.
      "A String",
    ],
    "mobileCarriers": [ # Requests containing any of these mobile carrier ids will match. Values are from mobile-carriers.csv in the downloadable files section.
      "A String",
    ],
    "excludedPlacements": [ # Requests containing any of these placements will not match.
      {
        "token": "A String", # 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.
        "type": "A String", # The type of the placement.
      },
    ],
    "billingId": "A String", # The id for billing purposes, provided for reference. Leave this field blank for insert requests; the id will be generated automatically.
    "geoCriteriaIds": [ # Requests containing any of these geo criteria ids will match.
      "A String",
    ],
    "mobileOperatingSystemVersions": [ # Requests containing any of these mobile operating system version ids will match. Values are from mobile-os.csv in the downloadable files section.
      "A String",
    ],
    "excludedUserLists": [ # Requests containing any of these users list ids will not match.
      "A String",
    ],
    "isActive": True or False, # Whether this config is active. Required for all requests.
    "dimensions": [ # Requests which allow one of these (width, height) pairs will match. All pairs must be supported ad dimensions.
      {
        "width": "A String", # Width in pixels.
        "height": "A String", # Height in pixels.
      },
    ],
    "kind": "adexchangebuyer#pretargetingConfig", # The kind of the resource, i.e. "adexchangebuyer#pretargetingConfig".
    "supportedCreativeAttributes": [ # 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.
      "A String",
    ],
    "vendorTypes": [ # Requests that allow any of these vendor ids will match. Values are from vendors.txt in the downloadable files section.
      "A String",
    ],
    "userLists": [ # Requests containing any of these user list ids will match.
      "A String",
    ],
    "creativeType": [ # List must contain exactly one of PRETARGETING_CREATIVE_TYPE_HTML or PRETARGETING_CREATIVE_TYPE_VIDEO.
      "A String",
    ],
    "placements": [ # Requests containing any of these placements will match.
      {
        "token": "A String", # 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.
        "type": "A String", # The type of the placement.
      },
    ],
  }


Returns:
  An object of the form:

    {
      "verticals": [ # Requests containing any of these vertical ids will match.
        "A String",
      ],
      "platforms": [ # Requests matching any of these platforms will match. Possible values are PRETARGETING_PLATFORM_MOBILE, PRETARGETING_PLATFORM_DESKTOP, and PRETARGETING_PLATFORM_TABLET.
        "A String",
      ],
      "configId": "A String", # The config id; generated automatically. Leave this field blank for insert requests.
      "excludedVerticals": [ # Requests containing any of these vertical ids will not match. Values are from the publisher-verticals.txt file in the downloadable files section.
        "A String",
      ],
      "configName": "A String", # The name of the config. Must be unique. Required for all requests.
      "excludedGeoCriteriaIds": [ # Requests containing any of these geo criteria ids will not match.
        "A String",
      ],
      "excludedContentLabels": [ # Requests with any of these content labels will not match. Values are from content-labels.txt in the downloadable files section.
        "A String",
      ],
      "languages": [ # Request containing any of these language codes will match.
        "A String",
      ],
      "mobileDevices": [ # Requests containing any of these mobile device ids will match. Values are from mobile-devices.csv in the downloadable files section.
        "A String",
      ],
      "mobileCarriers": [ # Requests containing any of these mobile carrier ids will match. Values are from mobile-carriers.csv in the downloadable files section.
        "A String",
      ],
      "excludedPlacements": [ # Requests containing any of these placements will not match.
        {
          "token": "A String", # 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.
          "type": "A String", # The type of the placement.
        },
      ],
      "billingId": "A String", # The id for billing purposes, provided for reference. Leave this field blank for insert requests; the id will be generated automatically.
      "geoCriteriaIds": [ # Requests containing any of these geo criteria ids will match.
        "A String",
      ],
      "mobileOperatingSystemVersions": [ # Requests containing any of these mobile operating system version ids will match. Values are from mobile-os.csv in the downloadable files section.
        "A String",
      ],
      "excludedUserLists": [ # Requests containing any of these users list ids will not match.
        "A String",
      ],
      "isActive": True or False, # Whether this config is active. Required for all requests.
      "dimensions": [ # Requests which allow one of these (width, height) pairs will match. All pairs must be supported ad dimensions.
        {
          "width": "A String", # Width in pixels.
          "height": "A String", # Height in pixels.
        },
      ],
      "kind": "adexchangebuyer#pretargetingConfig", # The kind of the resource, i.e. "adexchangebuyer#pretargetingConfig".
      "supportedCreativeAttributes": [ # 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.
        "A String",
      ],
      "vendorTypes": [ # Requests that allow any of these vendor ids will match. Values are from vendors.txt in the downloadable files section.
        "A String",
      ],
      "userLists": [ # Requests containing any of these user list ids will match.
        "A String",
      ],
      "creativeType": [ # List must contain exactly one of PRETARGETING_CREATIVE_TYPE_HTML or PRETARGETING_CREATIVE_TYPE_VIDEO.
        "A String",
      ],
      "placements": [ # Requests containing any of these placements will match.
        {
          "token": "A String", # 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.
          "type": "A String", # The type of the placement.
        },
      ],
    }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(accountId, configId, body)</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. (required)
    The object takes the form of:

{
    "verticals": [ # Requests containing any of these vertical ids will match.
      "A String",
    ],
    "platforms": [ # Requests matching any of these platforms will match. Possible values are PRETARGETING_PLATFORM_MOBILE, PRETARGETING_PLATFORM_DESKTOP, and PRETARGETING_PLATFORM_TABLET.
      "A String",
    ],
    "configId": "A String", # The config id; generated automatically. Leave this field blank for insert requests.
    "excludedVerticals": [ # Requests containing any of these vertical ids will not match. Values are from the publisher-verticals.txt file in the downloadable files section.
      "A String",
    ],
    "configName": "A String", # The name of the config. Must be unique. Required for all requests.
    "excludedGeoCriteriaIds": [ # Requests containing any of these geo criteria ids will not match.
      "A String",
    ],
    "excludedContentLabels": [ # Requests with any of these content labels will not match. Values are from content-labels.txt in the downloadable files section.
      "A String",
    ],
    "languages": [ # Request containing any of these language codes will match.
      "A String",
    ],
    "mobileDevices": [ # Requests containing any of these mobile device ids will match. Values are from mobile-devices.csv in the downloadable files section.
      "A String",
    ],
    "mobileCarriers": [ # Requests containing any of these mobile carrier ids will match. Values are from mobile-carriers.csv in the downloadable files section.
      "A String",
    ],
    "excludedPlacements": [ # Requests containing any of these placements will not match.
      {
        "token": "A String", # 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.
        "type": "A String", # The type of the placement.
      },
    ],
    "billingId": "A String", # The id for billing purposes, provided for reference. Leave this field blank for insert requests; the id will be generated automatically.
    "geoCriteriaIds": [ # Requests containing any of these geo criteria ids will match.
      "A String",
    ],
    "mobileOperatingSystemVersions": [ # Requests containing any of these mobile operating system version ids will match. Values are from mobile-os.csv in the downloadable files section.
      "A String",
    ],
    "excludedUserLists": [ # Requests containing any of these users list ids will not match.
      "A String",
    ],
    "isActive": True or False, # Whether this config is active. Required for all requests.
    "dimensions": [ # Requests which allow one of these (width, height) pairs will match. All pairs must be supported ad dimensions.
      {
        "width": "A String", # Width in pixels.
        "height": "A String", # Height in pixels.
      },
    ],
    "kind": "adexchangebuyer#pretargetingConfig", # The kind of the resource, i.e. "adexchangebuyer#pretargetingConfig".
    "supportedCreativeAttributes": [ # 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.
      "A String",
    ],
    "vendorTypes": [ # Requests that allow any of these vendor ids will match. Values are from vendors.txt in the downloadable files section.
      "A String",
    ],
    "userLists": [ # Requests containing any of these user list ids will match.
      "A String",
    ],
    "creativeType": [ # List must contain exactly one of PRETARGETING_CREATIVE_TYPE_HTML or PRETARGETING_CREATIVE_TYPE_VIDEO.
      "A String",
    ],
    "placements": [ # Requests containing any of these placements will match.
      {
        "token": "A String", # 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.
        "type": "A String", # The type of the placement.
      },
    ],
  }


Returns:
  An object of the form:

    {
      "verticals": [ # Requests containing any of these vertical ids will match.
        "A String",
      ],
      "platforms": [ # Requests matching any of these platforms will match. Possible values are PRETARGETING_PLATFORM_MOBILE, PRETARGETING_PLATFORM_DESKTOP, and PRETARGETING_PLATFORM_TABLET.
        "A String",
      ],
      "configId": "A String", # The config id; generated automatically. Leave this field blank for insert requests.
      "excludedVerticals": [ # Requests containing any of these vertical ids will not match. Values are from the publisher-verticals.txt file in the downloadable files section.
        "A String",
      ],
      "configName": "A String", # The name of the config. Must be unique. Required for all requests.
      "excludedGeoCriteriaIds": [ # Requests containing any of these geo criteria ids will not match.
        "A String",
      ],
      "excludedContentLabels": [ # Requests with any of these content labels will not match. Values are from content-labels.txt in the downloadable files section.
        "A String",
      ],
      "languages": [ # Request containing any of these language codes will match.
        "A String",
      ],
      "mobileDevices": [ # Requests containing any of these mobile device ids will match. Values are from mobile-devices.csv in the downloadable files section.
        "A String",
      ],
      "mobileCarriers": [ # Requests containing any of these mobile carrier ids will match. Values are from mobile-carriers.csv in the downloadable files section.
        "A String",
      ],
      "excludedPlacements": [ # Requests containing any of these placements will not match.
        {
          "token": "A String", # 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.
          "type": "A String", # The type of the placement.
        },
      ],
      "billingId": "A String", # The id for billing purposes, provided for reference. Leave this field blank for insert requests; the id will be generated automatically.
      "geoCriteriaIds": [ # Requests containing any of these geo criteria ids will match.
        "A String",
      ],
      "mobileOperatingSystemVersions": [ # Requests containing any of these mobile operating system version ids will match. Values are from mobile-os.csv in the downloadable files section.
        "A String",
      ],
      "excludedUserLists": [ # Requests containing any of these users list ids will not match.
        "A String",
      ],
      "isActive": True or False, # Whether this config is active. Required for all requests.
      "dimensions": [ # Requests which allow one of these (width, height) pairs will match. All pairs must be supported ad dimensions.
        {
          "width": "A String", # Width in pixels.
          "height": "A String", # Height in pixels.
        },
      ],
      "kind": "adexchangebuyer#pretargetingConfig", # The kind of the resource, i.e. "adexchangebuyer#pretargetingConfig".
      "supportedCreativeAttributes": [ # 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.
        "A String",
      ],
      "vendorTypes": [ # Requests that allow any of these vendor ids will match. Values are from vendors.txt in the downloadable files section.
        "A String",
      ],
      "userLists": [ # Requests containing any of these user list ids will match.
        "A String",
      ],
      "creativeType": [ # List must contain exactly one of PRETARGETING_CREATIVE_TYPE_HTML or PRETARGETING_CREATIVE_TYPE_VIDEO.
        "A String",
      ],
      "placements": [ # Requests containing any of these placements will match.
        {
          "token": "A String", # 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.
          "type": "A String", # The type of the placement.
        },
      ],
    }</pre>
</div>

</body></html>