<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.publisherProfiles.html">publisherProfiles</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#get">get(accountId, publisherProfileId, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the requested publisher profile by id.</p>
<p class="toc_element">
  <code><a href="#list">list(accountId, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">List all publisher profiles visible to the buyer</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="get">get(accountId, publisherProfileId, x__xgafv=None)</code>
  <pre>Gets the requested publisher profile by id.

Args:
  accountId: string, Account ID of the buyer. (required)
  publisherProfileId: string, The id for the publisher profile to get. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Note: this resource requires whitelisting for access. Please contact your account manager for access to Marketplace resources. Represents a publisher profile (https://support.google.com/admanager/answer/6035806) in Marketplace. All fields are read only. All string fields are free-form text entered by the publisher unless noted otherwise.
  &quot;audienceDescription&quot;: &quot;A String&quot;, # Description on the publisher&#x27;s audience.
  &quot;buyerPitchStatement&quot;: &quot;A String&quot;, # Statement explaining what&#x27;s unique about publisher&#x27;s business, and why buyers should partner with the publisher.
  &quot;directDealsContact&quot;: &quot;A String&quot;, # Contact information for direct reservation deals. This is free text entered by the publisher and may include information like names, phone numbers and email addresses.
  &quot;displayName&quot;: &quot;A String&quot;, # Name of the publisher profile.
  &quot;domains&quot;: [ # The list of domains represented in this publisher profile. Empty if this is a parent profile. These are top private domains, meaning that these will not contain a string like &quot;photos.google.co.uk/123&quot;, but will instead contain &quot;google.co.uk&quot;.
    &quot;A String&quot;,
  ],
  &quot;googlePlusUrl&quot;: &quot;A String&quot;, # URL to publisher&#x27;s Google+ page.
  &quot;isParent&quot;: True or False, # Indicates if this profile is the parent profile of the seller. A parent profile represents all the inventory from the seller, as opposed to child profile that is created to brand a portion of inventory. One seller should have only one parent publisher profile, and can have multiple child profiles. Publisher profiles for the same seller will have same value of field google.ads.adexchange.buyer.v2beta1.PublisherProfile.seller. See https://support.google.com/admanager/answer/6035806 for details.
  &quot;logoUrl&quot;: &quot;A String&quot;, # A Google public URL to the logo for this publisher profile. The logo is stored as a PNG, JPG, or GIF image.
  &quot;mediaKitUrl&quot;: &quot;A String&quot;, # URL to additional marketing and sales materials.
  &quot;mobileApps&quot;: [ # The list of apps represented in this publisher profile. Empty if this is a parent profile.
    { # A mobile application that contains a external app ID, name, and app store.
      &quot;appStore&quot;: &quot;A String&quot;, # The app store the app belongs to.
      &quot;externalAppId&quot;: &quot;A String&quot;, # The external ID for the app from its app store.
      &quot;name&quot;: &quot;A String&quot;, # The name of the app.
    },
  ],
  &quot;overview&quot;: &quot;A String&quot;, # Overview of the publisher.
  &quot;programmaticDealsContact&quot;: &quot;A String&quot;, # Contact information for programmatic deals. This is free text entered by the publisher and may include information like names, phone numbers and email addresses.
  &quot;publisherProfileId&quot;: &quot;A String&quot;, # Unique ID for publisher profile.
  &quot;rateCardInfoUrl&quot;: &quot;A String&quot;, # URL to a publisher rate card.
  &quot;samplePageUrl&quot;: &quot;A String&quot;, # URL to a sample content page.
  &quot;seller&quot;: { # Represents a seller of inventory. Each seller is identified by a unique Ad Manager account ID. # Seller of the publisher profile.
    &quot;accountId&quot;: &quot;A String&quot;, # The unique ID for the seller. The seller fills in this field. The seller account ID is then available to buyer in the product.
    &quot;subAccountId&quot;: &quot;A String&quot;, # Optional sub-account ID for the seller.
  },
  &quot;topHeadlines&quot;: [ # Up to three key metrics and rankings. Max 100 characters each. For example &quot;#1 Mobile News Site for 20 Straight Months&quot;.
    &quot;A String&quot;,
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(accountId, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>List all publisher profiles visible to the buyer

Args:
  accountId: string, Account ID of the buyer. (required)
  pageSize: integer, Specify the number of results to include per page.
  pageToken: string, The page token as return from ListPublisherProfilesResponse.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for profiles visible to the buyer.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # List pagination support
  &quot;publisherProfiles&quot;: [ # The list of matching publisher profiles.
    { # Note: this resource requires whitelisting for access. Please contact your account manager for access to Marketplace resources. Represents a publisher profile (https://support.google.com/admanager/answer/6035806) in Marketplace. All fields are read only. All string fields are free-form text entered by the publisher unless noted otherwise.
      &quot;audienceDescription&quot;: &quot;A String&quot;, # Description on the publisher&#x27;s audience.
      &quot;buyerPitchStatement&quot;: &quot;A String&quot;, # Statement explaining what&#x27;s unique about publisher&#x27;s business, and why buyers should partner with the publisher.
      &quot;directDealsContact&quot;: &quot;A String&quot;, # Contact information for direct reservation deals. This is free text entered by the publisher and may include information like names, phone numbers and email addresses.
      &quot;displayName&quot;: &quot;A String&quot;, # Name of the publisher profile.
      &quot;domains&quot;: [ # The list of domains represented in this publisher profile. Empty if this is a parent profile. These are top private domains, meaning that these will not contain a string like &quot;photos.google.co.uk/123&quot;, but will instead contain &quot;google.co.uk&quot;.
        &quot;A String&quot;,
      ],
      &quot;googlePlusUrl&quot;: &quot;A String&quot;, # URL to publisher&#x27;s Google+ page.
      &quot;isParent&quot;: True or False, # Indicates if this profile is the parent profile of the seller. A parent profile represents all the inventory from the seller, as opposed to child profile that is created to brand a portion of inventory. One seller should have only one parent publisher profile, and can have multiple child profiles. Publisher profiles for the same seller will have same value of field google.ads.adexchange.buyer.v2beta1.PublisherProfile.seller. See https://support.google.com/admanager/answer/6035806 for details.
      &quot;logoUrl&quot;: &quot;A String&quot;, # A Google public URL to the logo for this publisher profile. The logo is stored as a PNG, JPG, or GIF image.
      &quot;mediaKitUrl&quot;: &quot;A String&quot;, # URL to additional marketing and sales materials.
      &quot;mobileApps&quot;: [ # The list of apps represented in this publisher profile. Empty if this is a parent profile.
        { # A mobile application that contains a external app ID, name, and app store.
          &quot;appStore&quot;: &quot;A String&quot;, # The app store the app belongs to.
          &quot;externalAppId&quot;: &quot;A String&quot;, # The external ID for the app from its app store.
          &quot;name&quot;: &quot;A String&quot;, # The name of the app.
        },
      ],
      &quot;overview&quot;: &quot;A String&quot;, # Overview of the publisher.
      &quot;programmaticDealsContact&quot;: &quot;A String&quot;, # Contact information for programmatic deals. This is free text entered by the publisher and may include information like names, phone numbers and email addresses.
      &quot;publisherProfileId&quot;: &quot;A String&quot;, # Unique ID for publisher profile.
      &quot;rateCardInfoUrl&quot;: &quot;A String&quot;, # URL to a publisher rate card.
      &quot;samplePageUrl&quot;: &quot;A String&quot;, # URL to a sample content page.
      &quot;seller&quot;: { # Represents a seller of inventory. Each seller is identified by a unique Ad Manager account ID. # Seller of the publisher profile.
        &quot;accountId&quot;: &quot;A String&quot;, # The unique ID for the seller. The seller fills in this field. The seller account ID is then available to buyer in the product.
        &quot;subAccountId&quot;: &quot;A String&quot;, # Optional sub-account ID for the seller.
      },
      &quot;topHeadlines&quot;: [ # Up to three key metrics and rankings. Max 100 characters each. For example &quot;#1 Mobile News Site for 20 Straight Months&quot;.
        &quot;A String&quot;,
      ],
    },
  ],
}</pre>
</div>

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

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

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

</body></html>