<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="adexchangebuyer2_v2beta1.html">Ad Exchange Buyer API II</a> . <a href="adexchangebuyer2_v2beta1.accounts.html">accounts</a> . <a href="adexchangebuyer2_v2beta1.accounts.creatives.html">creatives</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="adexchangebuyer2_v2beta1.accounts.creatives.dealAssociations.html">dealAssociations()</a></code>
</p>
<p class="firstline">Returns the dealAssociations Resource.</p>

<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#create">create(accountId, body=None, duplicateIdMode=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a creative.</p>
<p class="toc_element">
  <code><a href="#get">get(accountId, creativeId, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a creative.</p>
<p class="toc_element">
  <code><a href="#list">list(accountId, pageSize=None, pageToken=None, query=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists creatives.</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="#stopWatching">stopWatching(accountId, creativeId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Stops watching a creative. Will stop push notifications being sent to the topics when the creative changes status.</p>
<p class="toc_element">
  <code><a href="#update">update(accountId, creativeId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates a creative.</p>
<p class="toc_element">
  <code><a href="#watch">watch(accountId, creativeId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Watches a creative. Will result in push notifications being sent to the topic when the creative changes status.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="create">create(accountId, body=None, duplicateIdMode=None, x__xgafv=None)</code>
  <pre>Creates a creative.

Args:
  accountId: string, The account that this creative belongs to. Can be used to filter the response of the creatives.list method. (required)
  body: object, The request body.
    The object takes the form of:

{ # A creative and its classification data.
  &quot;accountId&quot;: &quot;A String&quot;, # The account that this creative belongs to. Can be used to filter the response of the creatives.list method.
  &quot;adChoicesDestinationUrl&quot;: &quot;A String&quot;, # The link to AdChoices destination page.
  &quot;adTechnologyProviders&quot;: { # Detected ad technology provider information. # Output only. The detected ad technology providers.
    &quot;detectedProviderIds&quot;: [ # The detected ad technology provider IDs for this creative. See https://storage.googleapis.com/adx-rtb-dictionaries/providers.csv for mapping of provider ID to provided name, a privacy policy URL, and a list of domains which can be attributed to the provider. If the creative contains provider IDs that are outside of those listed in the `BidRequest.adslot.consented_providers_settings.consented_providers` field on the (Google bid protocol)[https://developers.google.com/authorized-buyers/rtb/downloads/realtime-bidding-proto] and the `BidRequest.user.ext.consented_providers_settings.consented_providers` field on the (OpenRTB protocol)[https://developers.google.com/authorized-buyers/rtb/downloads/openrtb-adx-proto], and a bid is submitted with that creative for an impression that will serve to an EEA user, the bid will be filtered before the auction.
      &quot;A String&quot;,
    ],
    &quot;hasUnidentifiedProvider&quot;: True or False, # Whether the creative contains an unidentified ad technology provider. If true for a given creative, any bid submitted with that creative for an impression that will serve to an EEA user will be filtered before the auction.
  },
  &quot;advertiserName&quot;: &quot;A String&quot;, # The name of the company being advertised in the creative.
  &quot;agencyId&quot;: &quot;A String&quot;, # The agency ID for this creative.
  &quot;apiUpdateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of the creative via API.
  &quot;attributes&quot;: [ # All attributes for the ads that may be shown from this creative. Can be used to filter the response of the creatives.list method.
    &quot;A String&quot;,
  ],
  &quot;clickThroughUrls&quot;: [ # The set of destination URLs for the creative.
    &quot;A String&quot;,
  ],
  &quot;corrections&quot;: [ # Output only. Shows any corrections that were applied to this creative.
    { # Output only. Shows any corrections that were applied to this creative.
      &quot;contexts&quot;: [ # The contexts for the correction.
        { # The serving context for this restriction.
          &quot;all&quot;: &quot;A String&quot;, # Matches all contexts.
          &quot;appType&quot;: { # Output only. The app type the restriction applies to for mobile device. # Matches impressions for a particular app type.
            &quot;appTypes&quot;: [ # The app types this restriction applies to.
              &quot;A String&quot;,
            ],
          },
          &quot;auctionType&quot;: { # Output only. The auction type the restriction applies to. # Matches impressions for a particular auction type.
            &quot;auctionTypes&quot;: [ # The auction types this restriction applies to.
              &quot;A String&quot;,
            ],
          },
          &quot;location&quot;: { # Output only. The Geo criteria the restriction applies to. # Matches impressions coming from users *or* publishers in a specific location.
            &quot;geoCriteriaIds&quot;: [ # IDs representing the geo location for this context. Please refer to the [geo-table.csv](https://storage.googleapis.com/adx-rtb-dictionaries/geo-table.csv) file for different geo criteria IDs.
              42,
            ],
          },
          &quot;platform&quot;: { # Output only. The type of platform the restriction applies to. # Matches impressions coming from a particular platform.
            &quot;platforms&quot;: [ # The platforms this restriction applies to.
              &quot;A String&quot;,
            ],
          },
          &quot;securityType&quot;: { # Output only. A security context. # Matches impressions for a particular security type.
            &quot;securities&quot;: [ # The security types in this context.
              &quot;A String&quot;,
            ],
          },
        },
      ],
      &quot;details&quot;: [ # Additional details about what was corrected.
        &quot;A String&quot;,
      ],
      &quot;type&quot;: &quot;A String&quot;, # The type of correction that was applied to the creative.
    },
  ],
  &quot;creativeId&quot;: &quot;A String&quot;, # The buyer-defined creative ID of this creative. Can be used to filter the response of the creatives.list method.
  &quot;dealsStatus&quot;: &quot;A String&quot;, # Output only. The top-level deals status of this creative. If disapproved, an entry for &#x27;auctionType=DIRECT_DEALS&#x27; (or &#x27;ALL&#x27;) in serving_restrictions will also exist. Note that this may be nuanced with other contextual restrictions, in which case, it may be preferable to read from serving_restrictions directly. Can be used to filter the response of the creatives.list method.
  &quot;declaredClickThroughUrls&quot;: [ # The set of declared destination URLs for the creative.
    &quot;A String&quot;,
  ],
  &quot;detectedAdvertiserIds&quot;: [ # Output only. Detected advertiser IDs, if any.
    &quot;A String&quot;,
  ],
  &quot;detectedDomains&quot;: [ # Output only. The detected domains for this creative.
    &quot;A String&quot;,
  ],
  &quot;detectedLanguages&quot;: [ # Output only. The detected languages for this creative. The order is arbitrary. The codes are 2 or 5 characters and are documented at https://developers.google.com/adwords/api/docs/appendix/languagecodes.
    &quot;A String&quot;,
  ],
  &quot;detectedProductCategories&quot;: [ # Output only. Detected product categories, if any. See the ad-product-categories.txt file in the technical documentation for a list of IDs.
    42,
  ],
  &quot;detectedSensitiveCategories&quot;: [ # Output only. Detected sensitive categories, if any. See the ad-sensitive-categories.txt file in the technical documentation for a list of IDs. You should use these IDs along with the excluded-sensitive-category field in the bid request to filter your bids.
    42,
  ],
  &quot;html&quot;: { # HTML content for a creative. # An HTML creative.
    &quot;height&quot;: 42, # The height of the HTML snippet in pixels.
    &quot;snippet&quot;: &quot;A String&quot;, # The HTML snippet that displays the ad when inserted in the web page.
    &quot;width&quot;: 42, # The width of the HTML snippet in pixels.
  },
  &quot;impressionTrackingUrls&quot;: [ # The set of URLs to be called to record an impression.
    &quot;A String&quot;,
  ],
  &quot;native&quot;: { # Native content for a creative. # A native creative.
    &quot;advertiserName&quot;: &quot;A String&quot;, # The name of the advertiser or sponsor, to be displayed in the ad creative.
    &quot;appIcon&quot;: { # An image resource. You may provide a larger image than was requested, so long as the aspect ratio is preserved. # The app icon, for app download ads.
      &quot;height&quot;: 42, # Image height in pixels.
      &quot;url&quot;: &quot;A String&quot;, # The URL of the image.
      &quot;width&quot;: 42, # Image width in pixels.
    },
    &quot;body&quot;: &quot;A String&quot;, # A long description of the ad.
    &quot;callToAction&quot;: &quot;A String&quot;, # A label for the button that the user is supposed to click.
    &quot;clickLinkUrl&quot;: &quot;A String&quot;, # The URL that the browser/SDK will load when the user clicks the ad.
    &quot;clickTrackingUrl&quot;: &quot;A String&quot;, # The URL to use for click tracking.
    &quot;headline&quot;: &quot;A String&quot;, # A short title for the ad.
    &quot;image&quot;: { # An image resource. You may provide a larger image than was requested, so long as the aspect ratio is preserved. # A large image.
      &quot;height&quot;: 42, # Image height in pixels.
      &quot;url&quot;: &quot;A String&quot;, # The URL of the image.
      &quot;width&quot;: 42, # Image width in pixels.
    },
    &quot;logo&quot;: { # An image resource. You may provide a larger image than was requested, so long as the aspect ratio is preserved. # A smaller image, for the advertiser&#x27;s logo.
      &quot;height&quot;: 42, # Image height in pixels.
      &quot;url&quot;: &quot;A String&quot;, # The URL of the image.
      &quot;width&quot;: 42, # Image width in pixels.
    },
    &quot;priceDisplayText&quot;: &quot;A String&quot;, # The price of the promoted app including currency info.
    &quot;starRating&quot;: 3.14, # The app rating in the app store. Must be in the range [0-5].
    &quot;storeUrl&quot;: &quot;A String&quot;, # The URL to the app store to purchase/download the promoted app.
    &quot;videoUrl&quot;: &quot;A String&quot;, # The URL to fetch a native video ad.
  },
  &quot;openAuctionStatus&quot;: &quot;A String&quot;, # Output only. The top-level open auction status of this creative. If disapproved, an entry for &#x27;auctionType = OPEN_AUCTION&#x27; (or &#x27;ALL&#x27;) in serving_restrictions will also exist. Note that this may be nuanced with other contextual restrictions, in which case, it may be preferable to read from serving_restrictions directly. Can be used to filter the response of the creatives.list method.
  &quot;restrictedCategories&quot;: [ # All restricted categories for the ads that may be shown from this creative.
    &quot;A String&quot;,
  ],
  &quot;servingRestrictions&quot;: [ # Output only. The granular status of this ad in specific contexts. A context here relates to where something ultimately serves (for example, a physical location, a platform, an HTTPS vs HTTP request, or the type of auction).
    { # Output only. A representation of the status of an ad in a specific context. A context here relates to where something ultimately serves (for example, a user or publisher geo, a platform, an HTTPS vs HTTP request, or the type of auction).
      &quot;contexts&quot;: [ # The contexts for the restriction.
        { # The serving context for this restriction.
          &quot;all&quot;: &quot;A String&quot;, # Matches all contexts.
          &quot;appType&quot;: { # Output only. The app type the restriction applies to for mobile device. # Matches impressions for a particular app type.
            &quot;appTypes&quot;: [ # The app types this restriction applies to.
              &quot;A String&quot;,
            ],
          },
          &quot;auctionType&quot;: { # Output only. The auction type the restriction applies to. # Matches impressions for a particular auction type.
            &quot;auctionTypes&quot;: [ # The auction types this restriction applies to.
              &quot;A String&quot;,
            ],
          },
          &quot;location&quot;: { # Output only. The Geo criteria the restriction applies to. # Matches impressions coming from users *or* publishers in a specific location.
            &quot;geoCriteriaIds&quot;: [ # IDs representing the geo location for this context. Please refer to the [geo-table.csv](https://storage.googleapis.com/adx-rtb-dictionaries/geo-table.csv) file for different geo criteria IDs.
              42,
            ],
          },
          &quot;platform&quot;: { # Output only. The type of platform the restriction applies to. # Matches impressions coming from a particular platform.
            &quot;platforms&quot;: [ # The platforms this restriction applies to.
              &quot;A String&quot;,
            ],
          },
          &quot;securityType&quot;: { # Output only. A security context. # Matches impressions for a particular security type.
            &quot;securities&quot;: [ # The security types in this context.
              &quot;A String&quot;,
            ],
          },
        },
      ],
      &quot;disapproval&quot;: { # Output only. The reason and details for a disapproval. # Disapproval bound to this restriction. Only present if status=DISAPPROVED. Can be used to filter the response of the creatives.list method.
        &quot;details&quot;: [ # Additional details about the reason for disapproval.
          &quot;A String&quot;,
        ],
        &quot;reason&quot;: &quot;A String&quot;, # The categorized reason for disapproval.
      },
      &quot;disapprovalReasons&quot;: [ # Any disapprovals bound to this restriction. Only present if status=DISAPPROVED. Can be used to filter the response of the creatives.list method. Deprecated; please use disapproval field instead.
        { # Output only. The reason and details for a disapproval.
          &quot;details&quot;: [ # Additional details about the reason for disapproval.
            &quot;A String&quot;,
          ],
          &quot;reason&quot;: &quot;A String&quot;, # The categorized reason for disapproval.
        },
      ],
      &quot;status&quot;: &quot;A String&quot;, # The status of the creative in this context (for example, it has been explicitly disapproved or is pending review).
    },
  ],
  &quot;vendorIds&quot;: [ # All vendor IDs for the ads that may be shown from this creative. See https://storage.googleapis.com/adx-rtb-dictionaries/vendors.txt for possible values.
    42,
  ],
  &quot;version&quot;: 42, # Output only. The version of this creative.
  &quot;video&quot;: { # Video content for a creative. # A video creative.
    &quot;videoUrl&quot;: &quot;A String&quot;, # The URL to fetch a video ad.
    &quot;videoVastXml&quot;: &quot;A String&quot;, # The contents of a VAST document for a video ad. This document should conform to the VAST 2.0 or 3.0 standard.
  },
}

  duplicateIdMode: string, Indicates if multiple creatives can share an ID or not. Default is NO_DUPLICATES (one ID per creative).
    Allowed values
      NO_DUPLICATES - Recommended. This means that an ID will be unique to a single creative. Multiple creatives will not share an ID.
      FORCE_ENABLE_DUPLICATE_IDS - Not recommended. Using this option will allow multiple creatives to share the same ID. Get and Update requests will not be possible for any ID that has more than one creative associated. (List will still function.) This is only intended for backwards compatibility in cases where a single ID is already shared by multiple creatives from previous APIs.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A creative and its classification data.
  &quot;accountId&quot;: &quot;A String&quot;, # The account that this creative belongs to. Can be used to filter the response of the creatives.list method.
  &quot;adChoicesDestinationUrl&quot;: &quot;A String&quot;, # The link to AdChoices destination page.
  &quot;adTechnologyProviders&quot;: { # Detected ad technology provider information. # Output only. The detected ad technology providers.
    &quot;detectedProviderIds&quot;: [ # The detected ad technology provider IDs for this creative. See https://storage.googleapis.com/adx-rtb-dictionaries/providers.csv for mapping of provider ID to provided name, a privacy policy URL, and a list of domains which can be attributed to the provider. If the creative contains provider IDs that are outside of those listed in the `BidRequest.adslot.consented_providers_settings.consented_providers` field on the (Google bid protocol)[https://developers.google.com/authorized-buyers/rtb/downloads/realtime-bidding-proto] and the `BidRequest.user.ext.consented_providers_settings.consented_providers` field on the (OpenRTB protocol)[https://developers.google.com/authorized-buyers/rtb/downloads/openrtb-adx-proto], and a bid is submitted with that creative for an impression that will serve to an EEA user, the bid will be filtered before the auction.
      &quot;A String&quot;,
    ],
    &quot;hasUnidentifiedProvider&quot;: True or False, # Whether the creative contains an unidentified ad technology provider. If true for a given creative, any bid submitted with that creative for an impression that will serve to an EEA user will be filtered before the auction.
  },
  &quot;advertiserName&quot;: &quot;A String&quot;, # The name of the company being advertised in the creative.
  &quot;agencyId&quot;: &quot;A String&quot;, # The agency ID for this creative.
  &quot;apiUpdateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of the creative via API.
  &quot;attributes&quot;: [ # All attributes for the ads that may be shown from this creative. Can be used to filter the response of the creatives.list method.
    &quot;A String&quot;,
  ],
  &quot;clickThroughUrls&quot;: [ # The set of destination URLs for the creative.
    &quot;A String&quot;,
  ],
  &quot;corrections&quot;: [ # Output only. Shows any corrections that were applied to this creative.
    { # Output only. Shows any corrections that were applied to this creative.
      &quot;contexts&quot;: [ # The contexts for the correction.
        { # The serving context for this restriction.
          &quot;all&quot;: &quot;A String&quot;, # Matches all contexts.
          &quot;appType&quot;: { # Output only. The app type the restriction applies to for mobile device. # Matches impressions for a particular app type.
            &quot;appTypes&quot;: [ # The app types this restriction applies to.
              &quot;A String&quot;,
            ],
          },
          &quot;auctionType&quot;: { # Output only. The auction type the restriction applies to. # Matches impressions for a particular auction type.
            &quot;auctionTypes&quot;: [ # The auction types this restriction applies to.
              &quot;A String&quot;,
            ],
          },
          &quot;location&quot;: { # Output only. The Geo criteria the restriction applies to. # Matches impressions coming from users *or* publishers in a specific location.
            &quot;geoCriteriaIds&quot;: [ # IDs representing the geo location for this context. Please refer to the [geo-table.csv](https://storage.googleapis.com/adx-rtb-dictionaries/geo-table.csv) file for different geo criteria IDs.
              42,
            ],
          },
          &quot;platform&quot;: { # Output only. The type of platform the restriction applies to. # Matches impressions coming from a particular platform.
            &quot;platforms&quot;: [ # The platforms this restriction applies to.
              &quot;A String&quot;,
            ],
          },
          &quot;securityType&quot;: { # Output only. A security context. # Matches impressions for a particular security type.
            &quot;securities&quot;: [ # The security types in this context.
              &quot;A String&quot;,
            ],
          },
        },
      ],
      &quot;details&quot;: [ # Additional details about what was corrected.
        &quot;A String&quot;,
      ],
      &quot;type&quot;: &quot;A String&quot;, # The type of correction that was applied to the creative.
    },
  ],
  &quot;creativeId&quot;: &quot;A String&quot;, # The buyer-defined creative ID of this creative. Can be used to filter the response of the creatives.list method.
  &quot;dealsStatus&quot;: &quot;A String&quot;, # Output only. The top-level deals status of this creative. If disapproved, an entry for &#x27;auctionType=DIRECT_DEALS&#x27; (or &#x27;ALL&#x27;) in serving_restrictions will also exist. Note that this may be nuanced with other contextual restrictions, in which case, it may be preferable to read from serving_restrictions directly. Can be used to filter the response of the creatives.list method.
  &quot;declaredClickThroughUrls&quot;: [ # The set of declared destination URLs for the creative.
    &quot;A String&quot;,
  ],
  &quot;detectedAdvertiserIds&quot;: [ # Output only. Detected advertiser IDs, if any.
    &quot;A String&quot;,
  ],
  &quot;detectedDomains&quot;: [ # Output only. The detected domains for this creative.
    &quot;A String&quot;,
  ],
  &quot;detectedLanguages&quot;: [ # Output only. The detected languages for this creative. The order is arbitrary. The codes are 2 or 5 characters and are documented at https://developers.google.com/adwords/api/docs/appendix/languagecodes.
    &quot;A String&quot;,
  ],
  &quot;detectedProductCategories&quot;: [ # Output only. Detected product categories, if any. See the ad-product-categories.txt file in the technical documentation for a list of IDs.
    42,
  ],
  &quot;detectedSensitiveCategories&quot;: [ # Output only. Detected sensitive categories, if any. See the ad-sensitive-categories.txt file in the technical documentation for a list of IDs. You should use these IDs along with the excluded-sensitive-category field in the bid request to filter your bids.
    42,
  ],
  &quot;html&quot;: { # HTML content for a creative. # An HTML creative.
    &quot;height&quot;: 42, # The height of the HTML snippet in pixels.
    &quot;snippet&quot;: &quot;A String&quot;, # The HTML snippet that displays the ad when inserted in the web page.
    &quot;width&quot;: 42, # The width of the HTML snippet in pixels.
  },
  &quot;impressionTrackingUrls&quot;: [ # The set of URLs to be called to record an impression.
    &quot;A String&quot;,
  ],
  &quot;native&quot;: { # Native content for a creative. # A native creative.
    &quot;advertiserName&quot;: &quot;A String&quot;, # The name of the advertiser or sponsor, to be displayed in the ad creative.
    &quot;appIcon&quot;: { # An image resource. You may provide a larger image than was requested, so long as the aspect ratio is preserved. # The app icon, for app download ads.
      &quot;height&quot;: 42, # Image height in pixels.
      &quot;url&quot;: &quot;A String&quot;, # The URL of the image.
      &quot;width&quot;: 42, # Image width in pixels.
    },
    &quot;body&quot;: &quot;A String&quot;, # A long description of the ad.
    &quot;callToAction&quot;: &quot;A String&quot;, # A label for the button that the user is supposed to click.
    &quot;clickLinkUrl&quot;: &quot;A String&quot;, # The URL that the browser/SDK will load when the user clicks the ad.
    &quot;clickTrackingUrl&quot;: &quot;A String&quot;, # The URL to use for click tracking.
    &quot;headline&quot;: &quot;A String&quot;, # A short title for the ad.
    &quot;image&quot;: { # An image resource. You may provide a larger image than was requested, so long as the aspect ratio is preserved. # A large image.
      &quot;height&quot;: 42, # Image height in pixels.
      &quot;url&quot;: &quot;A String&quot;, # The URL of the image.
      &quot;width&quot;: 42, # Image width in pixels.
    },
    &quot;logo&quot;: { # An image resource. You may provide a larger image than was requested, so long as the aspect ratio is preserved. # A smaller image, for the advertiser&#x27;s logo.
      &quot;height&quot;: 42, # Image height in pixels.
      &quot;url&quot;: &quot;A String&quot;, # The URL of the image.
      &quot;width&quot;: 42, # Image width in pixels.
    },
    &quot;priceDisplayText&quot;: &quot;A String&quot;, # The price of the promoted app including currency info.
    &quot;starRating&quot;: 3.14, # The app rating in the app store. Must be in the range [0-5].
    &quot;storeUrl&quot;: &quot;A String&quot;, # The URL to the app store to purchase/download the promoted app.
    &quot;videoUrl&quot;: &quot;A String&quot;, # The URL to fetch a native video ad.
  },
  &quot;openAuctionStatus&quot;: &quot;A String&quot;, # Output only. The top-level open auction status of this creative. If disapproved, an entry for &#x27;auctionType = OPEN_AUCTION&#x27; (or &#x27;ALL&#x27;) in serving_restrictions will also exist. Note that this may be nuanced with other contextual restrictions, in which case, it may be preferable to read from serving_restrictions directly. Can be used to filter the response of the creatives.list method.
  &quot;restrictedCategories&quot;: [ # All restricted categories for the ads that may be shown from this creative.
    &quot;A String&quot;,
  ],
  &quot;servingRestrictions&quot;: [ # Output only. The granular status of this ad in specific contexts. A context here relates to where something ultimately serves (for example, a physical location, a platform, an HTTPS vs HTTP request, or the type of auction).
    { # Output only. A representation of the status of an ad in a specific context. A context here relates to where something ultimately serves (for example, a user or publisher geo, a platform, an HTTPS vs HTTP request, or the type of auction).
      &quot;contexts&quot;: [ # The contexts for the restriction.
        { # The serving context for this restriction.
          &quot;all&quot;: &quot;A String&quot;, # Matches all contexts.
          &quot;appType&quot;: { # Output only. The app type the restriction applies to for mobile device. # Matches impressions for a particular app type.
            &quot;appTypes&quot;: [ # The app types this restriction applies to.
              &quot;A String&quot;,
            ],
          },
          &quot;auctionType&quot;: { # Output only. The auction type the restriction applies to. # Matches impressions for a particular auction type.
            &quot;auctionTypes&quot;: [ # The auction types this restriction applies to.
              &quot;A String&quot;,
            ],
          },
          &quot;location&quot;: { # Output only. The Geo criteria the restriction applies to. # Matches impressions coming from users *or* publishers in a specific location.
            &quot;geoCriteriaIds&quot;: [ # IDs representing the geo location for this context. Please refer to the [geo-table.csv](https://storage.googleapis.com/adx-rtb-dictionaries/geo-table.csv) file for different geo criteria IDs.
              42,
            ],
          },
          &quot;platform&quot;: { # Output only. The type of platform the restriction applies to. # Matches impressions coming from a particular platform.
            &quot;platforms&quot;: [ # The platforms this restriction applies to.
              &quot;A String&quot;,
            ],
          },
          &quot;securityType&quot;: { # Output only. A security context. # Matches impressions for a particular security type.
            &quot;securities&quot;: [ # The security types in this context.
              &quot;A String&quot;,
            ],
          },
        },
      ],
      &quot;disapproval&quot;: { # Output only. The reason and details for a disapproval. # Disapproval bound to this restriction. Only present if status=DISAPPROVED. Can be used to filter the response of the creatives.list method.
        &quot;details&quot;: [ # Additional details about the reason for disapproval.
          &quot;A String&quot;,
        ],
        &quot;reason&quot;: &quot;A String&quot;, # The categorized reason for disapproval.
      },
      &quot;disapprovalReasons&quot;: [ # Any disapprovals bound to this restriction. Only present if status=DISAPPROVED. Can be used to filter the response of the creatives.list method. Deprecated; please use disapproval field instead.
        { # Output only. The reason and details for a disapproval.
          &quot;details&quot;: [ # Additional details about the reason for disapproval.
            &quot;A String&quot;,
          ],
          &quot;reason&quot;: &quot;A String&quot;, # The categorized reason for disapproval.
        },
      ],
      &quot;status&quot;: &quot;A String&quot;, # The status of the creative in this context (for example, it has been explicitly disapproved or is pending review).
    },
  ],
  &quot;vendorIds&quot;: [ # All vendor IDs for the ads that may be shown from this creative. See https://storage.googleapis.com/adx-rtb-dictionaries/vendors.txt for possible values.
    42,
  ],
  &quot;version&quot;: 42, # Output only. The version of this creative.
  &quot;video&quot;: { # Video content for a creative. # A video creative.
    &quot;videoUrl&quot;: &quot;A String&quot;, # The URL to fetch a video ad.
    &quot;videoVastXml&quot;: &quot;A String&quot;, # The contents of a VAST document for a video ad. This document should conform to the VAST 2.0 or 3.0 standard.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(accountId, creativeId, x__xgafv=None)</code>
  <pre>Gets a creative.

Args:
  accountId: string, The account the creative belongs to. (required)
  creativeId: string, The ID of the creative to retrieve. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A creative and its classification data.
  &quot;accountId&quot;: &quot;A String&quot;, # The account that this creative belongs to. Can be used to filter the response of the creatives.list method.
  &quot;adChoicesDestinationUrl&quot;: &quot;A String&quot;, # The link to AdChoices destination page.
  &quot;adTechnologyProviders&quot;: { # Detected ad technology provider information. # Output only. The detected ad technology providers.
    &quot;detectedProviderIds&quot;: [ # The detected ad technology provider IDs for this creative. See https://storage.googleapis.com/adx-rtb-dictionaries/providers.csv for mapping of provider ID to provided name, a privacy policy URL, and a list of domains which can be attributed to the provider. If the creative contains provider IDs that are outside of those listed in the `BidRequest.adslot.consented_providers_settings.consented_providers` field on the (Google bid protocol)[https://developers.google.com/authorized-buyers/rtb/downloads/realtime-bidding-proto] and the `BidRequest.user.ext.consented_providers_settings.consented_providers` field on the (OpenRTB protocol)[https://developers.google.com/authorized-buyers/rtb/downloads/openrtb-adx-proto], and a bid is submitted with that creative for an impression that will serve to an EEA user, the bid will be filtered before the auction.
      &quot;A String&quot;,
    ],
    &quot;hasUnidentifiedProvider&quot;: True or False, # Whether the creative contains an unidentified ad technology provider. If true for a given creative, any bid submitted with that creative for an impression that will serve to an EEA user will be filtered before the auction.
  },
  &quot;advertiserName&quot;: &quot;A String&quot;, # The name of the company being advertised in the creative.
  &quot;agencyId&quot;: &quot;A String&quot;, # The agency ID for this creative.
  &quot;apiUpdateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of the creative via API.
  &quot;attributes&quot;: [ # All attributes for the ads that may be shown from this creative. Can be used to filter the response of the creatives.list method.
    &quot;A String&quot;,
  ],
  &quot;clickThroughUrls&quot;: [ # The set of destination URLs for the creative.
    &quot;A String&quot;,
  ],
  &quot;corrections&quot;: [ # Output only. Shows any corrections that were applied to this creative.
    { # Output only. Shows any corrections that were applied to this creative.
      &quot;contexts&quot;: [ # The contexts for the correction.
        { # The serving context for this restriction.
          &quot;all&quot;: &quot;A String&quot;, # Matches all contexts.
          &quot;appType&quot;: { # Output only. The app type the restriction applies to for mobile device. # Matches impressions for a particular app type.
            &quot;appTypes&quot;: [ # The app types this restriction applies to.
              &quot;A String&quot;,
            ],
          },
          &quot;auctionType&quot;: { # Output only. The auction type the restriction applies to. # Matches impressions for a particular auction type.
            &quot;auctionTypes&quot;: [ # The auction types this restriction applies to.
              &quot;A String&quot;,
            ],
          },
          &quot;location&quot;: { # Output only. The Geo criteria the restriction applies to. # Matches impressions coming from users *or* publishers in a specific location.
            &quot;geoCriteriaIds&quot;: [ # IDs representing the geo location for this context. Please refer to the [geo-table.csv](https://storage.googleapis.com/adx-rtb-dictionaries/geo-table.csv) file for different geo criteria IDs.
              42,
            ],
          },
          &quot;platform&quot;: { # Output only. The type of platform the restriction applies to. # Matches impressions coming from a particular platform.
            &quot;platforms&quot;: [ # The platforms this restriction applies to.
              &quot;A String&quot;,
            ],
          },
          &quot;securityType&quot;: { # Output only. A security context. # Matches impressions for a particular security type.
            &quot;securities&quot;: [ # The security types in this context.
              &quot;A String&quot;,
            ],
          },
        },
      ],
      &quot;details&quot;: [ # Additional details about what was corrected.
        &quot;A String&quot;,
      ],
      &quot;type&quot;: &quot;A String&quot;, # The type of correction that was applied to the creative.
    },
  ],
  &quot;creativeId&quot;: &quot;A String&quot;, # The buyer-defined creative ID of this creative. Can be used to filter the response of the creatives.list method.
  &quot;dealsStatus&quot;: &quot;A String&quot;, # Output only. The top-level deals status of this creative. If disapproved, an entry for &#x27;auctionType=DIRECT_DEALS&#x27; (or &#x27;ALL&#x27;) in serving_restrictions will also exist. Note that this may be nuanced with other contextual restrictions, in which case, it may be preferable to read from serving_restrictions directly. Can be used to filter the response of the creatives.list method.
  &quot;declaredClickThroughUrls&quot;: [ # The set of declared destination URLs for the creative.
    &quot;A String&quot;,
  ],
  &quot;detectedAdvertiserIds&quot;: [ # Output only. Detected advertiser IDs, if any.
    &quot;A String&quot;,
  ],
  &quot;detectedDomains&quot;: [ # Output only. The detected domains for this creative.
    &quot;A String&quot;,
  ],
  &quot;detectedLanguages&quot;: [ # Output only. The detected languages for this creative. The order is arbitrary. The codes are 2 or 5 characters and are documented at https://developers.google.com/adwords/api/docs/appendix/languagecodes.
    &quot;A String&quot;,
  ],
  &quot;detectedProductCategories&quot;: [ # Output only. Detected product categories, if any. See the ad-product-categories.txt file in the technical documentation for a list of IDs.
    42,
  ],
  &quot;detectedSensitiveCategories&quot;: [ # Output only. Detected sensitive categories, if any. See the ad-sensitive-categories.txt file in the technical documentation for a list of IDs. You should use these IDs along with the excluded-sensitive-category field in the bid request to filter your bids.
    42,
  ],
  &quot;html&quot;: { # HTML content for a creative. # An HTML creative.
    &quot;height&quot;: 42, # The height of the HTML snippet in pixels.
    &quot;snippet&quot;: &quot;A String&quot;, # The HTML snippet that displays the ad when inserted in the web page.
    &quot;width&quot;: 42, # The width of the HTML snippet in pixels.
  },
  &quot;impressionTrackingUrls&quot;: [ # The set of URLs to be called to record an impression.
    &quot;A String&quot;,
  ],
  &quot;native&quot;: { # Native content for a creative. # A native creative.
    &quot;advertiserName&quot;: &quot;A String&quot;, # The name of the advertiser or sponsor, to be displayed in the ad creative.
    &quot;appIcon&quot;: { # An image resource. You may provide a larger image than was requested, so long as the aspect ratio is preserved. # The app icon, for app download ads.
      &quot;height&quot;: 42, # Image height in pixels.
      &quot;url&quot;: &quot;A String&quot;, # The URL of the image.
      &quot;width&quot;: 42, # Image width in pixels.
    },
    &quot;body&quot;: &quot;A String&quot;, # A long description of the ad.
    &quot;callToAction&quot;: &quot;A String&quot;, # A label for the button that the user is supposed to click.
    &quot;clickLinkUrl&quot;: &quot;A String&quot;, # The URL that the browser/SDK will load when the user clicks the ad.
    &quot;clickTrackingUrl&quot;: &quot;A String&quot;, # The URL to use for click tracking.
    &quot;headline&quot;: &quot;A String&quot;, # A short title for the ad.
    &quot;image&quot;: { # An image resource. You may provide a larger image than was requested, so long as the aspect ratio is preserved. # A large image.
      &quot;height&quot;: 42, # Image height in pixels.
      &quot;url&quot;: &quot;A String&quot;, # The URL of the image.
      &quot;width&quot;: 42, # Image width in pixels.
    },
    &quot;logo&quot;: { # An image resource. You may provide a larger image than was requested, so long as the aspect ratio is preserved. # A smaller image, for the advertiser&#x27;s logo.
      &quot;height&quot;: 42, # Image height in pixels.
      &quot;url&quot;: &quot;A String&quot;, # The URL of the image.
      &quot;width&quot;: 42, # Image width in pixels.
    },
    &quot;priceDisplayText&quot;: &quot;A String&quot;, # The price of the promoted app including currency info.
    &quot;starRating&quot;: 3.14, # The app rating in the app store. Must be in the range [0-5].
    &quot;storeUrl&quot;: &quot;A String&quot;, # The URL to the app store to purchase/download the promoted app.
    &quot;videoUrl&quot;: &quot;A String&quot;, # The URL to fetch a native video ad.
  },
  &quot;openAuctionStatus&quot;: &quot;A String&quot;, # Output only. The top-level open auction status of this creative. If disapproved, an entry for &#x27;auctionType = OPEN_AUCTION&#x27; (or &#x27;ALL&#x27;) in serving_restrictions will also exist. Note that this may be nuanced with other contextual restrictions, in which case, it may be preferable to read from serving_restrictions directly. Can be used to filter the response of the creatives.list method.
  &quot;restrictedCategories&quot;: [ # All restricted categories for the ads that may be shown from this creative.
    &quot;A String&quot;,
  ],
  &quot;servingRestrictions&quot;: [ # Output only. The granular status of this ad in specific contexts. A context here relates to where something ultimately serves (for example, a physical location, a platform, an HTTPS vs HTTP request, or the type of auction).
    { # Output only. A representation of the status of an ad in a specific context. A context here relates to where something ultimately serves (for example, a user or publisher geo, a platform, an HTTPS vs HTTP request, or the type of auction).
      &quot;contexts&quot;: [ # The contexts for the restriction.
        { # The serving context for this restriction.
          &quot;all&quot;: &quot;A String&quot;, # Matches all contexts.
          &quot;appType&quot;: { # Output only. The app type the restriction applies to for mobile device. # Matches impressions for a particular app type.
            &quot;appTypes&quot;: [ # The app types this restriction applies to.
              &quot;A String&quot;,
            ],
          },
          &quot;auctionType&quot;: { # Output only. The auction type the restriction applies to. # Matches impressions for a particular auction type.
            &quot;auctionTypes&quot;: [ # The auction types this restriction applies to.
              &quot;A String&quot;,
            ],
          },
          &quot;location&quot;: { # Output only. The Geo criteria the restriction applies to. # Matches impressions coming from users *or* publishers in a specific location.
            &quot;geoCriteriaIds&quot;: [ # IDs representing the geo location for this context. Please refer to the [geo-table.csv](https://storage.googleapis.com/adx-rtb-dictionaries/geo-table.csv) file for different geo criteria IDs.
              42,
            ],
          },
          &quot;platform&quot;: { # Output only. The type of platform the restriction applies to. # Matches impressions coming from a particular platform.
            &quot;platforms&quot;: [ # The platforms this restriction applies to.
              &quot;A String&quot;,
            ],
          },
          &quot;securityType&quot;: { # Output only. A security context. # Matches impressions for a particular security type.
            &quot;securities&quot;: [ # The security types in this context.
              &quot;A String&quot;,
            ],
          },
        },
      ],
      &quot;disapproval&quot;: { # Output only. The reason and details for a disapproval. # Disapproval bound to this restriction. Only present if status=DISAPPROVED. Can be used to filter the response of the creatives.list method.
        &quot;details&quot;: [ # Additional details about the reason for disapproval.
          &quot;A String&quot;,
        ],
        &quot;reason&quot;: &quot;A String&quot;, # The categorized reason for disapproval.
      },
      &quot;disapprovalReasons&quot;: [ # Any disapprovals bound to this restriction. Only present if status=DISAPPROVED. Can be used to filter the response of the creatives.list method. Deprecated; please use disapproval field instead.
        { # Output only. The reason and details for a disapproval.
          &quot;details&quot;: [ # Additional details about the reason for disapproval.
            &quot;A String&quot;,
          ],
          &quot;reason&quot;: &quot;A String&quot;, # The categorized reason for disapproval.
        },
      ],
      &quot;status&quot;: &quot;A String&quot;, # The status of the creative in this context (for example, it has been explicitly disapproved or is pending review).
    },
  ],
  &quot;vendorIds&quot;: [ # All vendor IDs for the ads that may be shown from this creative. See https://storage.googleapis.com/adx-rtb-dictionaries/vendors.txt for possible values.
    42,
  ],
  &quot;version&quot;: 42, # Output only. The version of this creative.
  &quot;video&quot;: { # Video content for a creative. # A video creative.
    &quot;videoUrl&quot;: &quot;A String&quot;, # The URL to fetch a video ad.
    &quot;videoVastXml&quot;: &quot;A String&quot;, # The contents of a VAST document for a video ad. This document should conform to the VAST 2.0 or 3.0 standard.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(accountId, pageSize=None, pageToken=None, query=None, x__xgafv=None)</code>
  <pre>Lists creatives.

Args:
  accountId: string, The account to list the creatives from. Specify &quot;-&quot; to list all creatives the current user has access to. (required)
  pageSize: integer, Requested page size. The server may return fewer creatives than requested (due to timeout constraint) even if more are available via another call. If unspecified, server will pick an appropriate default. Acceptable values are 1 to 1000, inclusive.
  pageToken: string, A token identifying a page of results the server should return. Typically, this is the value of ListCreativesResponse.next_page_token returned from the previous call to &#x27;ListCreatives&#x27; method.
  query: string, An optional query string to filter creatives. If no filter is specified, all active creatives will be returned. Supported queries are: - accountId=*account_id_string* - creativeId=*creative_id_string* - dealsStatus: {approved, conditionally_approved, disapproved, not_checked} - openAuctionStatus: {approved, conditionally_approved, disapproved, not_checked} - attribute: {a numeric attribute from the list of attributes} - disapprovalReason: {a reason from DisapprovalReason} Example: &#x27;accountId=12345 AND (dealsStatus:disapproved AND disapprovalReason:unacceptable_content) OR attribute:47&#x27;
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A response for listing creatives.
  &quot;creatives&quot;: [ # The list of creatives.
    { # A creative and its classification data.
      &quot;accountId&quot;: &quot;A String&quot;, # The account that this creative belongs to. Can be used to filter the response of the creatives.list method.
      &quot;adChoicesDestinationUrl&quot;: &quot;A String&quot;, # The link to AdChoices destination page.
      &quot;adTechnologyProviders&quot;: { # Detected ad technology provider information. # Output only. The detected ad technology providers.
        &quot;detectedProviderIds&quot;: [ # The detected ad technology provider IDs for this creative. See https://storage.googleapis.com/adx-rtb-dictionaries/providers.csv for mapping of provider ID to provided name, a privacy policy URL, and a list of domains which can be attributed to the provider. If the creative contains provider IDs that are outside of those listed in the `BidRequest.adslot.consented_providers_settings.consented_providers` field on the (Google bid protocol)[https://developers.google.com/authorized-buyers/rtb/downloads/realtime-bidding-proto] and the `BidRequest.user.ext.consented_providers_settings.consented_providers` field on the (OpenRTB protocol)[https://developers.google.com/authorized-buyers/rtb/downloads/openrtb-adx-proto], and a bid is submitted with that creative for an impression that will serve to an EEA user, the bid will be filtered before the auction.
          &quot;A String&quot;,
        ],
        &quot;hasUnidentifiedProvider&quot;: True or False, # Whether the creative contains an unidentified ad technology provider. If true for a given creative, any bid submitted with that creative for an impression that will serve to an EEA user will be filtered before the auction.
      },
      &quot;advertiserName&quot;: &quot;A String&quot;, # The name of the company being advertised in the creative.
      &quot;agencyId&quot;: &quot;A String&quot;, # The agency ID for this creative.
      &quot;apiUpdateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of the creative via API.
      &quot;attributes&quot;: [ # All attributes for the ads that may be shown from this creative. Can be used to filter the response of the creatives.list method.
        &quot;A String&quot;,
      ],
      &quot;clickThroughUrls&quot;: [ # The set of destination URLs for the creative.
        &quot;A String&quot;,
      ],
      &quot;corrections&quot;: [ # Output only. Shows any corrections that were applied to this creative.
        { # Output only. Shows any corrections that were applied to this creative.
          &quot;contexts&quot;: [ # The contexts for the correction.
            { # The serving context for this restriction.
              &quot;all&quot;: &quot;A String&quot;, # Matches all contexts.
              &quot;appType&quot;: { # Output only. The app type the restriction applies to for mobile device. # Matches impressions for a particular app type.
                &quot;appTypes&quot;: [ # The app types this restriction applies to.
                  &quot;A String&quot;,
                ],
              },
              &quot;auctionType&quot;: { # Output only. The auction type the restriction applies to. # Matches impressions for a particular auction type.
                &quot;auctionTypes&quot;: [ # The auction types this restriction applies to.
                  &quot;A String&quot;,
                ],
              },
              &quot;location&quot;: { # Output only. The Geo criteria the restriction applies to. # Matches impressions coming from users *or* publishers in a specific location.
                &quot;geoCriteriaIds&quot;: [ # IDs representing the geo location for this context. Please refer to the [geo-table.csv](https://storage.googleapis.com/adx-rtb-dictionaries/geo-table.csv) file for different geo criteria IDs.
                  42,
                ],
              },
              &quot;platform&quot;: { # Output only. The type of platform the restriction applies to. # Matches impressions coming from a particular platform.
                &quot;platforms&quot;: [ # The platforms this restriction applies to.
                  &quot;A String&quot;,
                ],
              },
              &quot;securityType&quot;: { # Output only. A security context. # Matches impressions for a particular security type.
                &quot;securities&quot;: [ # The security types in this context.
                  &quot;A String&quot;,
                ],
              },
            },
          ],
          &quot;details&quot;: [ # Additional details about what was corrected.
            &quot;A String&quot;,
          ],
          &quot;type&quot;: &quot;A String&quot;, # The type of correction that was applied to the creative.
        },
      ],
      &quot;creativeId&quot;: &quot;A String&quot;, # The buyer-defined creative ID of this creative. Can be used to filter the response of the creatives.list method.
      &quot;dealsStatus&quot;: &quot;A String&quot;, # Output only. The top-level deals status of this creative. If disapproved, an entry for &#x27;auctionType=DIRECT_DEALS&#x27; (or &#x27;ALL&#x27;) in serving_restrictions will also exist. Note that this may be nuanced with other contextual restrictions, in which case, it may be preferable to read from serving_restrictions directly. Can be used to filter the response of the creatives.list method.
      &quot;declaredClickThroughUrls&quot;: [ # The set of declared destination URLs for the creative.
        &quot;A String&quot;,
      ],
      &quot;detectedAdvertiserIds&quot;: [ # Output only. Detected advertiser IDs, if any.
        &quot;A String&quot;,
      ],
      &quot;detectedDomains&quot;: [ # Output only. The detected domains for this creative.
        &quot;A String&quot;,
      ],
      &quot;detectedLanguages&quot;: [ # Output only. The detected languages for this creative. The order is arbitrary. The codes are 2 or 5 characters and are documented at https://developers.google.com/adwords/api/docs/appendix/languagecodes.
        &quot;A String&quot;,
      ],
      &quot;detectedProductCategories&quot;: [ # Output only. Detected product categories, if any. See the ad-product-categories.txt file in the technical documentation for a list of IDs.
        42,
      ],
      &quot;detectedSensitiveCategories&quot;: [ # Output only. Detected sensitive categories, if any. See the ad-sensitive-categories.txt file in the technical documentation for a list of IDs. You should use these IDs along with the excluded-sensitive-category field in the bid request to filter your bids.
        42,
      ],
      &quot;html&quot;: { # HTML content for a creative. # An HTML creative.
        &quot;height&quot;: 42, # The height of the HTML snippet in pixels.
        &quot;snippet&quot;: &quot;A String&quot;, # The HTML snippet that displays the ad when inserted in the web page.
        &quot;width&quot;: 42, # The width of the HTML snippet in pixels.
      },
      &quot;impressionTrackingUrls&quot;: [ # The set of URLs to be called to record an impression.
        &quot;A String&quot;,
      ],
      &quot;native&quot;: { # Native content for a creative. # A native creative.
        &quot;advertiserName&quot;: &quot;A String&quot;, # The name of the advertiser or sponsor, to be displayed in the ad creative.
        &quot;appIcon&quot;: { # An image resource. You may provide a larger image than was requested, so long as the aspect ratio is preserved. # The app icon, for app download ads.
          &quot;height&quot;: 42, # Image height in pixels.
          &quot;url&quot;: &quot;A String&quot;, # The URL of the image.
          &quot;width&quot;: 42, # Image width in pixels.
        },
        &quot;body&quot;: &quot;A String&quot;, # A long description of the ad.
        &quot;callToAction&quot;: &quot;A String&quot;, # A label for the button that the user is supposed to click.
        &quot;clickLinkUrl&quot;: &quot;A String&quot;, # The URL that the browser/SDK will load when the user clicks the ad.
        &quot;clickTrackingUrl&quot;: &quot;A String&quot;, # The URL to use for click tracking.
        &quot;headline&quot;: &quot;A String&quot;, # A short title for the ad.
        &quot;image&quot;: { # An image resource. You may provide a larger image than was requested, so long as the aspect ratio is preserved. # A large image.
          &quot;height&quot;: 42, # Image height in pixels.
          &quot;url&quot;: &quot;A String&quot;, # The URL of the image.
          &quot;width&quot;: 42, # Image width in pixels.
        },
        &quot;logo&quot;: { # An image resource. You may provide a larger image than was requested, so long as the aspect ratio is preserved. # A smaller image, for the advertiser&#x27;s logo.
          &quot;height&quot;: 42, # Image height in pixels.
          &quot;url&quot;: &quot;A String&quot;, # The URL of the image.
          &quot;width&quot;: 42, # Image width in pixels.
        },
        &quot;priceDisplayText&quot;: &quot;A String&quot;, # The price of the promoted app including currency info.
        &quot;starRating&quot;: 3.14, # The app rating in the app store. Must be in the range [0-5].
        &quot;storeUrl&quot;: &quot;A String&quot;, # The URL to the app store to purchase/download the promoted app.
        &quot;videoUrl&quot;: &quot;A String&quot;, # The URL to fetch a native video ad.
      },
      &quot;openAuctionStatus&quot;: &quot;A String&quot;, # Output only. The top-level open auction status of this creative. If disapproved, an entry for &#x27;auctionType = OPEN_AUCTION&#x27; (or &#x27;ALL&#x27;) in serving_restrictions will also exist. Note that this may be nuanced with other contextual restrictions, in which case, it may be preferable to read from serving_restrictions directly. Can be used to filter the response of the creatives.list method.
      &quot;restrictedCategories&quot;: [ # All restricted categories for the ads that may be shown from this creative.
        &quot;A String&quot;,
      ],
      &quot;servingRestrictions&quot;: [ # Output only. The granular status of this ad in specific contexts. A context here relates to where something ultimately serves (for example, a physical location, a platform, an HTTPS vs HTTP request, or the type of auction).
        { # Output only. A representation of the status of an ad in a specific context. A context here relates to where something ultimately serves (for example, a user or publisher geo, a platform, an HTTPS vs HTTP request, or the type of auction).
          &quot;contexts&quot;: [ # The contexts for the restriction.
            { # The serving context for this restriction.
              &quot;all&quot;: &quot;A String&quot;, # Matches all contexts.
              &quot;appType&quot;: { # Output only. The app type the restriction applies to for mobile device. # Matches impressions for a particular app type.
                &quot;appTypes&quot;: [ # The app types this restriction applies to.
                  &quot;A String&quot;,
                ],
              },
              &quot;auctionType&quot;: { # Output only. The auction type the restriction applies to. # Matches impressions for a particular auction type.
                &quot;auctionTypes&quot;: [ # The auction types this restriction applies to.
                  &quot;A String&quot;,
                ],
              },
              &quot;location&quot;: { # Output only. The Geo criteria the restriction applies to. # Matches impressions coming from users *or* publishers in a specific location.
                &quot;geoCriteriaIds&quot;: [ # IDs representing the geo location for this context. Please refer to the [geo-table.csv](https://storage.googleapis.com/adx-rtb-dictionaries/geo-table.csv) file for different geo criteria IDs.
                  42,
                ],
              },
              &quot;platform&quot;: { # Output only. The type of platform the restriction applies to. # Matches impressions coming from a particular platform.
                &quot;platforms&quot;: [ # The platforms this restriction applies to.
                  &quot;A String&quot;,
                ],
              },
              &quot;securityType&quot;: { # Output only. A security context. # Matches impressions for a particular security type.
                &quot;securities&quot;: [ # The security types in this context.
                  &quot;A String&quot;,
                ],
              },
            },
          ],
          &quot;disapproval&quot;: { # Output only. The reason and details for a disapproval. # Disapproval bound to this restriction. Only present if status=DISAPPROVED. Can be used to filter the response of the creatives.list method.
            &quot;details&quot;: [ # Additional details about the reason for disapproval.
              &quot;A String&quot;,
            ],
            &quot;reason&quot;: &quot;A String&quot;, # The categorized reason for disapproval.
          },
          &quot;disapprovalReasons&quot;: [ # Any disapprovals bound to this restriction. Only present if status=DISAPPROVED. Can be used to filter the response of the creatives.list method. Deprecated; please use disapproval field instead.
            { # Output only. The reason and details for a disapproval.
              &quot;details&quot;: [ # Additional details about the reason for disapproval.
                &quot;A String&quot;,
              ],
              &quot;reason&quot;: &quot;A String&quot;, # The categorized reason for disapproval.
            },
          ],
          &quot;status&quot;: &quot;A String&quot;, # The status of the creative in this context (for example, it has been explicitly disapproved or is pending review).
        },
      ],
      &quot;vendorIds&quot;: [ # All vendor IDs for the ads that may be shown from this creative. See https://storage.googleapis.com/adx-rtb-dictionaries/vendors.txt for possible values.
        42,
      ],
      &quot;version&quot;: 42, # Output only. The version of this creative.
      &quot;video&quot;: { # Video content for a creative. # A video creative.
        &quot;videoUrl&quot;: &quot;A String&quot;, # The URL to fetch a video ad.
        &quot;videoVastXml&quot;: &quot;A String&quot;, # The contents of a VAST document for a video ad. This document should conform to the VAST 2.0 or 3.0 standard.
      },
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token to retrieve the next page of results. Pass this value in the ListCreativesRequest.page_token field in the subsequent call to `ListCreatives` method to retrieve the next page of results.
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="stopWatching">stopWatching(accountId, creativeId, body=None, x__xgafv=None)</code>
  <pre>Stops watching a creative. Will stop push notifications being sent to the topics when the creative changes status.

Args:
  accountId: string, The account of the creative to stop notifications for. (required)
  creativeId: string, The creative ID of the creative to stop notifications for. Specify &quot;-&quot; to specify stopping account level notifications. (required)
  body: object, The request body.
    The object takes the form of:

{ # A request for stopping notifications for changes to creative Status.
}

  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="update">update(accountId, creativeId, body=None, x__xgafv=None)</code>
  <pre>Updates a creative.

Args:
  accountId: string, The account that this creative belongs to. Can be used to filter the response of the creatives.list method. (required)
  creativeId: string, The buyer-defined creative ID of this creative. Can be used to filter the response of the creatives.list method. (required)
  body: object, The request body.
    The object takes the form of:

{ # A creative and its classification data.
  &quot;accountId&quot;: &quot;A String&quot;, # The account that this creative belongs to. Can be used to filter the response of the creatives.list method.
  &quot;adChoicesDestinationUrl&quot;: &quot;A String&quot;, # The link to AdChoices destination page.
  &quot;adTechnologyProviders&quot;: { # Detected ad technology provider information. # Output only. The detected ad technology providers.
    &quot;detectedProviderIds&quot;: [ # The detected ad technology provider IDs for this creative. See https://storage.googleapis.com/adx-rtb-dictionaries/providers.csv for mapping of provider ID to provided name, a privacy policy URL, and a list of domains which can be attributed to the provider. If the creative contains provider IDs that are outside of those listed in the `BidRequest.adslot.consented_providers_settings.consented_providers` field on the (Google bid protocol)[https://developers.google.com/authorized-buyers/rtb/downloads/realtime-bidding-proto] and the `BidRequest.user.ext.consented_providers_settings.consented_providers` field on the (OpenRTB protocol)[https://developers.google.com/authorized-buyers/rtb/downloads/openrtb-adx-proto], and a bid is submitted with that creative for an impression that will serve to an EEA user, the bid will be filtered before the auction.
      &quot;A String&quot;,
    ],
    &quot;hasUnidentifiedProvider&quot;: True or False, # Whether the creative contains an unidentified ad technology provider. If true for a given creative, any bid submitted with that creative for an impression that will serve to an EEA user will be filtered before the auction.
  },
  &quot;advertiserName&quot;: &quot;A String&quot;, # The name of the company being advertised in the creative.
  &quot;agencyId&quot;: &quot;A String&quot;, # The agency ID for this creative.
  &quot;apiUpdateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of the creative via API.
  &quot;attributes&quot;: [ # All attributes for the ads that may be shown from this creative. Can be used to filter the response of the creatives.list method.
    &quot;A String&quot;,
  ],
  &quot;clickThroughUrls&quot;: [ # The set of destination URLs for the creative.
    &quot;A String&quot;,
  ],
  &quot;corrections&quot;: [ # Output only. Shows any corrections that were applied to this creative.
    { # Output only. Shows any corrections that were applied to this creative.
      &quot;contexts&quot;: [ # The contexts for the correction.
        { # The serving context for this restriction.
          &quot;all&quot;: &quot;A String&quot;, # Matches all contexts.
          &quot;appType&quot;: { # Output only. The app type the restriction applies to for mobile device. # Matches impressions for a particular app type.
            &quot;appTypes&quot;: [ # The app types this restriction applies to.
              &quot;A String&quot;,
            ],
          },
          &quot;auctionType&quot;: { # Output only. The auction type the restriction applies to. # Matches impressions for a particular auction type.
            &quot;auctionTypes&quot;: [ # The auction types this restriction applies to.
              &quot;A String&quot;,
            ],
          },
          &quot;location&quot;: { # Output only. The Geo criteria the restriction applies to. # Matches impressions coming from users *or* publishers in a specific location.
            &quot;geoCriteriaIds&quot;: [ # IDs representing the geo location for this context. Please refer to the [geo-table.csv](https://storage.googleapis.com/adx-rtb-dictionaries/geo-table.csv) file for different geo criteria IDs.
              42,
            ],
          },
          &quot;platform&quot;: { # Output only. The type of platform the restriction applies to. # Matches impressions coming from a particular platform.
            &quot;platforms&quot;: [ # The platforms this restriction applies to.
              &quot;A String&quot;,
            ],
          },
          &quot;securityType&quot;: { # Output only. A security context. # Matches impressions for a particular security type.
            &quot;securities&quot;: [ # The security types in this context.
              &quot;A String&quot;,
            ],
          },
        },
      ],
      &quot;details&quot;: [ # Additional details about what was corrected.
        &quot;A String&quot;,
      ],
      &quot;type&quot;: &quot;A String&quot;, # The type of correction that was applied to the creative.
    },
  ],
  &quot;creativeId&quot;: &quot;A String&quot;, # The buyer-defined creative ID of this creative. Can be used to filter the response of the creatives.list method.
  &quot;dealsStatus&quot;: &quot;A String&quot;, # Output only. The top-level deals status of this creative. If disapproved, an entry for &#x27;auctionType=DIRECT_DEALS&#x27; (or &#x27;ALL&#x27;) in serving_restrictions will also exist. Note that this may be nuanced with other contextual restrictions, in which case, it may be preferable to read from serving_restrictions directly. Can be used to filter the response of the creatives.list method.
  &quot;declaredClickThroughUrls&quot;: [ # The set of declared destination URLs for the creative.
    &quot;A String&quot;,
  ],
  &quot;detectedAdvertiserIds&quot;: [ # Output only. Detected advertiser IDs, if any.
    &quot;A String&quot;,
  ],
  &quot;detectedDomains&quot;: [ # Output only. The detected domains for this creative.
    &quot;A String&quot;,
  ],
  &quot;detectedLanguages&quot;: [ # Output only. The detected languages for this creative. The order is arbitrary. The codes are 2 or 5 characters and are documented at https://developers.google.com/adwords/api/docs/appendix/languagecodes.
    &quot;A String&quot;,
  ],
  &quot;detectedProductCategories&quot;: [ # Output only. Detected product categories, if any. See the ad-product-categories.txt file in the technical documentation for a list of IDs.
    42,
  ],
  &quot;detectedSensitiveCategories&quot;: [ # Output only. Detected sensitive categories, if any. See the ad-sensitive-categories.txt file in the technical documentation for a list of IDs. You should use these IDs along with the excluded-sensitive-category field in the bid request to filter your bids.
    42,
  ],
  &quot;html&quot;: { # HTML content for a creative. # An HTML creative.
    &quot;height&quot;: 42, # The height of the HTML snippet in pixels.
    &quot;snippet&quot;: &quot;A String&quot;, # The HTML snippet that displays the ad when inserted in the web page.
    &quot;width&quot;: 42, # The width of the HTML snippet in pixels.
  },
  &quot;impressionTrackingUrls&quot;: [ # The set of URLs to be called to record an impression.
    &quot;A String&quot;,
  ],
  &quot;native&quot;: { # Native content for a creative. # A native creative.
    &quot;advertiserName&quot;: &quot;A String&quot;, # The name of the advertiser or sponsor, to be displayed in the ad creative.
    &quot;appIcon&quot;: { # An image resource. You may provide a larger image than was requested, so long as the aspect ratio is preserved. # The app icon, for app download ads.
      &quot;height&quot;: 42, # Image height in pixels.
      &quot;url&quot;: &quot;A String&quot;, # The URL of the image.
      &quot;width&quot;: 42, # Image width in pixels.
    },
    &quot;body&quot;: &quot;A String&quot;, # A long description of the ad.
    &quot;callToAction&quot;: &quot;A String&quot;, # A label for the button that the user is supposed to click.
    &quot;clickLinkUrl&quot;: &quot;A String&quot;, # The URL that the browser/SDK will load when the user clicks the ad.
    &quot;clickTrackingUrl&quot;: &quot;A String&quot;, # The URL to use for click tracking.
    &quot;headline&quot;: &quot;A String&quot;, # A short title for the ad.
    &quot;image&quot;: { # An image resource. You may provide a larger image than was requested, so long as the aspect ratio is preserved. # A large image.
      &quot;height&quot;: 42, # Image height in pixels.
      &quot;url&quot;: &quot;A String&quot;, # The URL of the image.
      &quot;width&quot;: 42, # Image width in pixels.
    },
    &quot;logo&quot;: { # An image resource. You may provide a larger image than was requested, so long as the aspect ratio is preserved. # A smaller image, for the advertiser&#x27;s logo.
      &quot;height&quot;: 42, # Image height in pixels.
      &quot;url&quot;: &quot;A String&quot;, # The URL of the image.
      &quot;width&quot;: 42, # Image width in pixels.
    },
    &quot;priceDisplayText&quot;: &quot;A String&quot;, # The price of the promoted app including currency info.
    &quot;starRating&quot;: 3.14, # The app rating in the app store. Must be in the range [0-5].
    &quot;storeUrl&quot;: &quot;A String&quot;, # The URL to the app store to purchase/download the promoted app.
    &quot;videoUrl&quot;: &quot;A String&quot;, # The URL to fetch a native video ad.
  },
  &quot;openAuctionStatus&quot;: &quot;A String&quot;, # Output only. The top-level open auction status of this creative. If disapproved, an entry for &#x27;auctionType = OPEN_AUCTION&#x27; (or &#x27;ALL&#x27;) in serving_restrictions will also exist. Note that this may be nuanced with other contextual restrictions, in which case, it may be preferable to read from serving_restrictions directly. Can be used to filter the response of the creatives.list method.
  &quot;restrictedCategories&quot;: [ # All restricted categories for the ads that may be shown from this creative.
    &quot;A String&quot;,
  ],
  &quot;servingRestrictions&quot;: [ # Output only. The granular status of this ad in specific contexts. A context here relates to where something ultimately serves (for example, a physical location, a platform, an HTTPS vs HTTP request, or the type of auction).
    { # Output only. A representation of the status of an ad in a specific context. A context here relates to where something ultimately serves (for example, a user or publisher geo, a platform, an HTTPS vs HTTP request, or the type of auction).
      &quot;contexts&quot;: [ # The contexts for the restriction.
        { # The serving context for this restriction.
          &quot;all&quot;: &quot;A String&quot;, # Matches all contexts.
          &quot;appType&quot;: { # Output only. The app type the restriction applies to for mobile device. # Matches impressions for a particular app type.
            &quot;appTypes&quot;: [ # The app types this restriction applies to.
              &quot;A String&quot;,
            ],
          },
          &quot;auctionType&quot;: { # Output only. The auction type the restriction applies to. # Matches impressions for a particular auction type.
            &quot;auctionTypes&quot;: [ # The auction types this restriction applies to.
              &quot;A String&quot;,
            ],
          },
          &quot;location&quot;: { # Output only. The Geo criteria the restriction applies to. # Matches impressions coming from users *or* publishers in a specific location.
            &quot;geoCriteriaIds&quot;: [ # IDs representing the geo location for this context. Please refer to the [geo-table.csv](https://storage.googleapis.com/adx-rtb-dictionaries/geo-table.csv) file for different geo criteria IDs.
              42,
            ],
          },
          &quot;platform&quot;: { # Output only. The type of platform the restriction applies to. # Matches impressions coming from a particular platform.
            &quot;platforms&quot;: [ # The platforms this restriction applies to.
              &quot;A String&quot;,
            ],
          },
          &quot;securityType&quot;: { # Output only. A security context. # Matches impressions for a particular security type.
            &quot;securities&quot;: [ # The security types in this context.
              &quot;A String&quot;,
            ],
          },
        },
      ],
      &quot;disapproval&quot;: { # Output only. The reason and details for a disapproval. # Disapproval bound to this restriction. Only present if status=DISAPPROVED. Can be used to filter the response of the creatives.list method.
        &quot;details&quot;: [ # Additional details about the reason for disapproval.
          &quot;A String&quot;,
        ],
        &quot;reason&quot;: &quot;A String&quot;, # The categorized reason for disapproval.
      },
      &quot;disapprovalReasons&quot;: [ # Any disapprovals bound to this restriction. Only present if status=DISAPPROVED. Can be used to filter the response of the creatives.list method. Deprecated; please use disapproval field instead.
        { # Output only. The reason and details for a disapproval.
          &quot;details&quot;: [ # Additional details about the reason for disapproval.
            &quot;A String&quot;,
          ],
          &quot;reason&quot;: &quot;A String&quot;, # The categorized reason for disapproval.
        },
      ],
      &quot;status&quot;: &quot;A String&quot;, # The status of the creative in this context (for example, it has been explicitly disapproved or is pending review).
    },
  ],
  &quot;vendorIds&quot;: [ # All vendor IDs for the ads that may be shown from this creative. See https://storage.googleapis.com/adx-rtb-dictionaries/vendors.txt for possible values.
    42,
  ],
  &quot;version&quot;: 42, # Output only. The version of this creative.
  &quot;video&quot;: { # Video content for a creative. # A video creative.
    &quot;videoUrl&quot;: &quot;A String&quot;, # The URL to fetch a video ad.
    &quot;videoVastXml&quot;: &quot;A String&quot;, # The contents of a VAST document for a video ad. This document should conform to the VAST 2.0 or 3.0 standard.
  },
}

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

Returns:
  An object of the form:

    { # A creative and its classification data.
  &quot;accountId&quot;: &quot;A String&quot;, # The account that this creative belongs to. Can be used to filter the response of the creatives.list method.
  &quot;adChoicesDestinationUrl&quot;: &quot;A String&quot;, # The link to AdChoices destination page.
  &quot;adTechnologyProviders&quot;: { # Detected ad technology provider information. # Output only. The detected ad technology providers.
    &quot;detectedProviderIds&quot;: [ # The detected ad technology provider IDs for this creative. See https://storage.googleapis.com/adx-rtb-dictionaries/providers.csv for mapping of provider ID to provided name, a privacy policy URL, and a list of domains which can be attributed to the provider. If the creative contains provider IDs that are outside of those listed in the `BidRequest.adslot.consented_providers_settings.consented_providers` field on the (Google bid protocol)[https://developers.google.com/authorized-buyers/rtb/downloads/realtime-bidding-proto] and the `BidRequest.user.ext.consented_providers_settings.consented_providers` field on the (OpenRTB protocol)[https://developers.google.com/authorized-buyers/rtb/downloads/openrtb-adx-proto], and a bid is submitted with that creative for an impression that will serve to an EEA user, the bid will be filtered before the auction.
      &quot;A String&quot;,
    ],
    &quot;hasUnidentifiedProvider&quot;: True or False, # Whether the creative contains an unidentified ad technology provider. If true for a given creative, any bid submitted with that creative for an impression that will serve to an EEA user will be filtered before the auction.
  },
  &quot;advertiserName&quot;: &quot;A String&quot;, # The name of the company being advertised in the creative.
  &quot;agencyId&quot;: &quot;A String&quot;, # The agency ID for this creative.
  &quot;apiUpdateTime&quot;: &quot;A String&quot;, # Output only. The last update timestamp of the creative via API.
  &quot;attributes&quot;: [ # All attributes for the ads that may be shown from this creative. Can be used to filter the response of the creatives.list method.
    &quot;A String&quot;,
  ],
  &quot;clickThroughUrls&quot;: [ # The set of destination URLs for the creative.
    &quot;A String&quot;,
  ],
  &quot;corrections&quot;: [ # Output only. Shows any corrections that were applied to this creative.
    { # Output only. Shows any corrections that were applied to this creative.
      &quot;contexts&quot;: [ # The contexts for the correction.
        { # The serving context for this restriction.
          &quot;all&quot;: &quot;A String&quot;, # Matches all contexts.
          &quot;appType&quot;: { # Output only. The app type the restriction applies to for mobile device. # Matches impressions for a particular app type.
            &quot;appTypes&quot;: [ # The app types this restriction applies to.
              &quot;A String&quot;,
            ],
          },
          &quot;auctionType&quot;: { # Output only. The auction type the restriction applies to. # Matches impressions for a particular auction type.
            &quot;auctionTypes&quot;: [ # The auction types this restriction applies to.
              &quot;A String&quot;,
            ],
          },
          &quot;location&quot;: { # Output only. The Geo criteria the restriction applies to. # Matches impressions coming from users *or* publishers in a specific location.
            &quot;geoCriteriaIds&quot;: [ # IDs representing the geo location for this context. Please refer to the [geo-table.csv](https://storage.googleapis.com/adx-rtb-dictionaries/geo-table.csv) file for different geo criteria IDs.
              42,
            ],
          },
          &quot;platform&quot;: { # Output only. The type of platform the restriction applies to. # Matches impressions coming from a particular platform.
            &quot;platforms&quot;: [ # The platforms this restriction applies to.
              &quot;A String&quot;,
            ],
          },
          &quot;securityType&quot;: { # Output only. A security context. # Matches impressions for a particular security type.
            &quot;securities&quot;: [ # The security types in this context.
              &quot;A String&quot;,
            ],
          },
        },
      ],
      &quot;details&quot;: [ # Additional details about what was corrected.
        &quot;A String&quot;,
      ],
      &quot;type&quot;: &quot;A String&quot;, # The type of correction that was applied to the creative.
    },
  ],
  &quot;creativeId&quot;: &quot;A String&quot;, # The buyer-defined creative ID of this creative. Can be used to filter the response of the creatives.list method.
  &quot;dealsStatus&quot;: &quot;A String&quot;, # Output only. The top-level deals status of this creative. If disapproved, an entry for &#x27;auctionType=DIRECT_DEALS&#x27; (or &#x27;ALL&#x27;) in serving_restrictions will also exist. Note that this may be nuanced with other contextual restrictions, in which case, it may be preferable to read from serving_restrictions directly. Can be used to filter the response of the creatives.list method.
  &quot;declaredClickThroughUrls&quot;: [ # The set of declared destination URLs for the creative.
    &quot;A String&quot;,
  ],
  &quot;detectedAdvertiserIds&quot;: [ # Output only. Detected advertiser IDs, if any.
    &quot;A String&quot;,
  ],
  &quot;detectedDomains&quot;: [ # Output only. The detected domains for this creative.
    &quot;A String&quot;,
  ],
  &quot;detectedLanguages&quot;: [ # Output only. The detected languages for this creative. The order is arbitrary. The codes are 2 or 5 characters and are documented at https://developers.google.com/adwords/api/docs/appendix/languagecodes.
    &quot;A String&quot;,
  ],
  &quot;detectedProductCategories&quot;: [ # Output only. Detected product categories, if any. See the ad-product-categories.txt file in the technical documentation for a list of IDs.
    42,
  ],
  &quot;detectedSensitiveCategories&quot;: [ # Output only. Detected sensitive categories, if any. See the ad-sensitive-categories.txt file in the technical documentation for a list of IDs. You should use these IDs along with the excluded-sensitive-category field in the bid request to filter your bids.
    42,
  ],
  &quot;html&quot;: { # HTML content for a creative. # An HTML creative.
    &quot;height&quot;: 42, # The height of the HTML snippet in pixels.
    &quot;snippet&quot;: &quot;A String&quot;, # The HTML snippet that displays the ad when inserted in the web page.
    &quot;width&quot;: 42, # The width of the HTML snippet in pixels.
  },
  &quot;impressionTrackingUrls&quot;: [ # The set of URLs to be called to record an impression.
    &quot;A String&quot;,
  ],
  &quot;native&quot;: { # Native content for a creative. # A native creative.
    &quot;advertiserName&quot;: &quot;A String&quot;, # The name of the advertiser or sponsor, to be displayed in the ad creative.
    &quot;appIcon&quot;: { # An image resource. You may provide a larger image than was requested, so long as the aspect ratio is preserved. # The app icon, for app download ads.
      &quot;height&quot;: 42, # Image height in pixels.
      &quot;url&quot;: &quot;A String&quot;, # The URL of the image.
      &quot;width&quot;: 42, # Image width in pixels.
    },
    &quot;body&quot;: &quot;A String&quot;, # A long description of the ad.
    &quot;callToAction&quot;: &quot;A String&quot;, # A label for the button that the user is supposed to click.
    &quot;clickLinkUrl&quot;: &quot;A String&quot;, # The URL that the browser/SDK will load when the user clicks the ad.
    &quot;clickTrackingUrl&quot;: &quot;A String&quot;, # The URL to use for click tracking.
    &quot;headline&quot;: &quot;A String&quot;, # A short title for the ad.
    &quot;image&quot;: { # An image resource. You may provide a larger image than was requested, so long as the aspect ratio is preserved. # A large image.
      &quot;height&quot;: 42, # Image height in pixels.
      &quot;url&quot;: &quot;A String&quot;, # The URL of the image.
      &quot;width&quot;: 42, # Image width in pixels.
    },
    &quot;logo&quot;: { # An image resource. You may provide a larger image than was requested, so long as the aspect ratio is preserved. # A smaller image, for the advertiser&#x27;s logo.
      &quot;height&quot;: 42, # Image height in pixels.
      &quot;url&quot;: &quot;A String&quot;, # The URL of the image.
      &quot;width&quot;: 42, # Image width in pixels.
    },
    &quot;priceDisplayText&quot;: &quot;A String&quot;, # The price of the promoted app including currency info.
    &quot;starRating&quot;: 3.14, # The app rating in the app store. Must be in the range [0-5].
    &quot;storeUrl&quot;: &quot;A String&quot;, # The URL to the app store to purchase/download the promoted app.
    &quot;videoUrl&quot;: &quot;A String&quot;, # The URL to fetch a native video ad.
  },
  &quot;openAuctionStatus&quot;: &quot;A String&quot;, # Output only. The top-level open auction status of this creative. If disapproved, an entry for &#x27;auctionType = OPEN_AUCTION&#x27; (or &#x27;ALL&#x27;) in serving_restrictions will also exist. Note that this may be nuanced with other contextual restrictions, in which case, it may be preferable to read from serving_restrictions directly. Can be used to filter the response of the creatives.list method.
  &quot;restrictedCategories&quot;: [ # All restricted categories for the ads that may be shown from this creative.
    &quot;A String&quot;,
  ],
  &quot;servingRestrictions&quot;: [ # Output only. The granular status of this ad in specific contexts. A context here relates to where something ultimately serves (for example, a physical location, a platform, an HTTPS vs HTTP request, or the type of auction).
    { # Output only. A representation of the status of an ad in a specific context. A context here relates to where something ultimately serves (for example, a user or publisher geo, a platform, an HTTPS vs HTTP request, or the type of auction).
      &quot;contexts&quot;: [ # The contexts for the restriction.
        { # The serving context for this restriction.
          &quot;all&quot;: &quot;A String&quot;, # Matches all contexts.
          &quot;appType&quot;: { # Output only. The app type the restriction applies to for mobile device. # Matches impressions for a particular app type.
            &quot;appTypes&quot;: [ # The app types this restriction applies to.
              &quot;A String&quot;,
            ],
          },
          &quot;auctionType&quot;: { # Output only. The auction type the restriction applies to. # Matches impressions for a particular auction type.
            &quot;auctionTypes&quot;: [ # The auction types this restriction applies to.
              &quot;A String&quot;,
            ],
          },
          &quot;location&quot;: { # Output only. The Geo criteria the restriction applies to. # Matches impressions coming from users *or* publishers in a specific location.
            &quot;geoCriteriaIds&quot;: [ # IDs representing the geo location for this context. Please refer to the [geo-table.csv](https://storage.googleapis.com/adx-rtb-dictionaries/geo-table.csv) file for different geo criteria IDs.
              42,
            ],
          },
          &quot;platform&quot;: { # Output only. The type of platform the restriction applies to. # Matches impressions coming from a particular platform.
            &quot;platforms&quot;: [ # The platforms this restriction applies to.
              &quot;A String&quot;,
            ],
          },
          &quot;securityType&quot;: { # Output only. A security context. # Matches impressions for a particular security type.
            &quot;securities&quot;: [ # The security types in this context.
              &quot;A String&quot;,
            ],
          },
        },
      ],
      &quot;disapproval&quot;: { # Output only. The reason and details for a disapproval. # Disapproval bound to this restriction. Only present if status=DISAPPROVED. Can be used to filter the response of the creatives.list method.
        &quot;details&quot;: [ # Additional details about the reason for disapproval.
          &quot;A String&quot;,
        ],
        &quot;reason&quot;: &quot;A String&quot;, # The categorized reason for disapproval.
      },
      &quot;disapprovalReasons&quot;: [ # Any disapprovals bound to this restriction. Only present if status=DISAPPROVED. Can be used to filter the response of the creatives.list method. Deprecated; please use disapproval field instead.
        { # Output only. The reason and details for a disapproval.
          &quot;details&quot;: [ # Additional details about the reason for disapproval.
            &quot;A String&quot;,
          ],
          &quot;reason&quot;: &quot;A String&quot;, # The categorized reason for disapproval.
        },
      ],
      &quot;status&quot;: &quot;A String&quot;, # The status of the creative in this context (for example, it has been explicitly disapproved or is pending review).
    },
  ],
  &quot;vendorIds&quot;: [ # All vendor IDs for the ads that may be shown from this creative. See https://storage.googleapis.com/adx-rtb-dictionaries/vendors.txt for possible values.
    42,
  ],
  &quot;version&quot;: 42, # Output only. The version of this creative.
  &quot;video&quot;: { # Video content for a creative. # A video creative.
    &quot;videoUrl&quot;: &quot;A String&quot;, # The URL to fetch a video ad.
    &quot;videoVastXml&quot;: &quot;A String&quot;, # The contents of a VAST document for a video ad. This document should conform to the VAST 2.0 or 3.0 standard.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="watch">watch(accountId, creativeId, body=None, x__xgafv=None)</code>
  <pre>Watches a creative. Will result in push notifications being sent to the topic when the creative changes status.

Args:
  accountId: string, The account of the creative to watch. (required)
  creativeId: string, The creative ID to watch for status changes. Specify &quot;-&quot; to watch all creatives under the above account. If both creative-level and account-level notifications are sent, only a single notification will be sent to the creative-level notification topic. (required)
  body: object, The request body.
    The object takes the form of:

{ # A request for watching changes to creative Status.
  &quot;topic&quot;: &quot;A String&quot;, # The Pub/Sub topic to publish notifications to. This topic must already exist and must give permission to ad-exchange-buyside-reports@google.com to write to the topic. This should be the full resource name in &quot;projects/{project_id}/topics/{topic_id}&quot; format.
}

  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>

</body></html>