<html><body>
<style>

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

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

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

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

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

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

pre {
  margin-top: 0.5em;
}

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

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

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

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

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

</style>

<h1><a href="adexchangebuyer_v1_3.html">Ad Exchange Buyer API</a> . <a href="adexchangebuyer_v1_3.directDeals.html">directDeals</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#get">get(id)</a></code></p>
<p class="firstline">Gets one direct deal by ID.</p>
<p class="toc_element">
  <code><a href="#list">list()</a></code></p>
<p class="firstline">Retrieves the authenticated user's list of direct deals.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="get">get(id)</code>
  <pre>Gets one direct deal by ID.

Args:
  id: string, The direct deal id (required)

Returns:
  An object of the form:

    { # The configuration data for an Ad Exchange direct deal.
    &quot;accountId&quot;: 42, # The account id of the buyer this deal is for.
    &quot;advertiser&quot;: &quot;A String&quot;, # The name of the advertiser this deal is for.
    &quot;allowsAlcohol&quot;: True or False, # Whether the publisher for this deal is eligible for alcohol ads.
    &quot;buyerAccountId&quot;: &quot;A String&quot;, # The account id that this deal was negotiated for. It is either the buyer or the client that this deal was negotiated on behalf of.
    &quot;currencyCode&quot;: &quot;A String&quot;, # The currency code that applies to the fixed_cpm value. If not set then assumed to be USD.
    &quot;dealTier&quot;: &quot;A String&quot;, # The deal type such as programmatic reservation or fixed price and so on.
    &quot;endTime&quot;: &quot;A String&quot;, # End time for when this deal stops being active. If not set then this deal is valid until manually disabled by the publisher. In seconds since the epoch.
    &quot;fixedCpm&quot;: &quot;A String&quot;, # The fixed price for this direct deal. In cpm micros of currency according to currency_code. If set, then this deal is eligible for the fixed price tier of buying (highest priority, pay exactly the configured fixed price).
    &quot;id&quot;: &quot;A String&quot;, # Deal id.
    &quot;kind&quot;: &quot;adexchangebuyer#directDeal&quot;, # Resource type.
    &quot;name&quot;: &quot;A String&quot;, # Deal name.
    &quot;privateExchangeMinCpm&quot;: &quot;A String&quot;, # The minimum price for this direct deal. In cpm micros of currency according to currency_code. If set, then this deal is eligible for the private exchange tier of buying (below fixed price priority, run as a second price auction).
    &quot;publisherBlocksOverriden&quot;: True or False, # If true, the publisher has opted to have their blocks ignored when a creative is bid with for this deal.
    &quot;sellerNetwork&quot;: &quot;A String&quot;, # The name of the publisher offering this direct deal.
    &quot;startTime&quot;: &quot;A String&quot;, # Start time for when this deal becomes active. If not set then this deal is active immediately upon creation. In seconds since the epoch.
  }</pre>
</div>

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

Args:

Returns:
  An object of the form:

    { # A direct deals feed lists Direct Deals the Ad Exchange buyer account has access to. This includes direct deals set up for the buyer account as well as its merged stream seats.
    &quot;directDeals&quot;: [ # A list of direct deals relevant for your account.
      { # The configuration data for an Ad Exchange direct deal.
        &quot;accountId&quot;: 42, # The account id of the buyer this deal is for.
        &quot;advertiser&quot;: &quot;A String&quot;, # The name of the advertiser this deal is for.
        &quot;allowsAlcohol&quot;: True or False, # Whether the publisher for this deal is eligible for alcohol ads.
        &quot;buyerAccountId&quot;: &quot;A String&quot;, # The account id that this deal was negotiated for. It is either the buyer or the client that this deal was negotiated on behalf of.
        &quot;currencyCode&quot;: &quot;A String&quot;, # The currency code that applies to the fixed_cpm value. If not set then assumed to be USD.
        &quot;dealTier&quot;: &quot;A String&quot;, # The deal type such as programmatic reservation or fixed price and so on.
        &quot;endTime&quot;: &quot;A String&quot;, # End time for when this deal stops being active. If not set then this deal is valid until manually disabled by the publisher. In seconds since the epoch.
        &quot;fixedCpm&quot;: &quot;A String&quot;, # The fixed price for this direct deal. In cpm micros of currency according to currency_code. If set, then this deal is eligible for the fixed price tier of buying (highest priority, pay exactly the configured fixed price).
        &quot;id&quot;: &quot;A String&quot;, # Deal id.
        &quot;kind&quot;: &quot;adexchangebuyer#directDeal&quot;, # Resource type.
        &quot;name&quot;: &quot;A String&quot;, # Deal name.
        &quot;privateExchangeMinCpm&quot;: &quot;A String&quot;, # The minimum price for this direct deal. In cpm micros of currency according to currency_code. If set, then this deal is eligible for the private exchange tier of buying (below fixed price priority, run as a second price auction).
        &quot;publisherBlocksOverriden&quot;: True or False, # If true, the publisher has opted to have their blocks ignored when a creative is bid with for this deal.
        &quot;sellerNetwork&quot;: &quot;A String&quot;, # The name of the publisher offering this direct deal.
        &quot;startTime&quot;: &quot;A String&quot;, # Start time for when this deal becomes active. If not set then this deal is active immediately upon creation. In seconds since the epoch.
      },
    ],
    &quot;kind&quot;: &quot;adexchangebuyer#directDealsList&quot;, # Resource type.
  }</pre>
</div>

</body></html>