<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.finalizedProposals.html">finalizedProposals</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="#list">list(accountId, filterSyntax=None, filter=None, pageToken=None, pageSize=None, x__xgafv=None)</a></code></p>
<p class="firstline">List finalized proposals, regardless if a proposal is being renegotiated. A filter expression (PQL query) may be specified to filter the results. The notes will not be returned.</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="list">list(accountId, filterSyntax=None, filter=None, pageToken=None, pageSize=None, x__xgafv=None)</code>
  <pre>List finalized proposals, regardless if a proposal is being renegotiated. A filter expression (PQL query) may be specified to filter the results. The notes will not be returned.

Args:
  accountId: string, Account ID of the buyer. (required)
  filterSyntax: string, Syntax the filter is written in. Current implementation defaults to PQL but in the future it will be LIST_FILTER.
    Allowed values
      FILTER_SYNTAX_UNSPECIFIED - A placeholder for an undefined filter syntax.
      PQL - PQL query syntax. Visit https://developers.google.com/ad-manager/api/pqlreference for PQL documentation and examples.
      LIST_FILTER - API list filtering syntax. Read about syntax and usage at https://developers.google.com/authorized-buyers/apis/guides/v2/list-filters.
  filter: string, An optional PQL filter query used to query for proposals. Nested repeated fields, such as proposal.deals.targetingCriterion, cannot be filtered.
  pageToken: string, The page token as returned from ListProposalsResponse.
  pageSize: integer, Requested page size. The server may return fewer results than requested. If unspecified, the server will pick an appropriate default.
  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 listing proposals.
    &quot;nextPageToken&quot;: &quot;A String&quot;, # Continuation token for fetching the next page of results.
    &quot;proposals&quot;: [ # The list of proposals.
      { # Note: this resource requires whitelisting for access. Please contact your account manager for access to Marketplace resources. Represents a proposal in the Marketplace. A proposal is the unit of negotiation between a seller and a buyer and contains deals which are served. Note: you can not update, create, or otherwise modify Private Auction or Preferred Deals deals through the API. Fields are updatable unless noted otherwise.
        &quot;buyer&quot;: { # Represents a buyer of inventory. Each buyer is identified by a unique Authorized Buyers account ID. # Reference to the buyer on the proposal. Note: This field may be set only when creating the resource. Modifying this field while updating the resource will result in an error.
          &quot;accountId&quot;: &quot;A String&quot;, # Authorized Buyers account ID of the buyer.
        },
        &quot;isRenegotiating&quot;: True or False, # Output only. True if the proposal is being renegotiated.
        &quot;buyerPrivateData&quot;: { # Buyers are allowed to store certain types of private data in a proposal/deal. # Private data for buyer. (hidden from seller).
          &quot;referenceId&quot;: &quot;A String&quot;, # A buyer or seller specified reference ID. This can be queried in the list operations (max-length: 1024 unicode code units).
        },
        &quot;privateAuctionId&quot;: &quot;A String&quot;, # Output only. Private auction ID if this proposal is a private auction proposal.
        &quot;displayName&quot;: &quot;A String&quot;, # The name for the proposal.
        &quot;deals&quot;: [ # The deals associated with this proposal. For Private Auction proposals (whose deals have NonGuaranteedAuctionTerms), there will only be one deal.
          { # A deal represents a segment of inventory for displaying ads on. A proposal can contain multiple deals. A deal contains the terms and targeting information that is used for serving.
            &quot;dealId&quot;: &quot;A String&quot;, # Output only. A unique deal ID for the deal (server-assigned).
            &quot;syndicationProduct&quot;: &quot;A String&quot;, # The syndication product associated with the deal. Note: This field may be set only when creating the resource. Modifying this field while updating the resource will result in an error.
            &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time of the deal creation.
            &quot;programmaticCreativeSource&quot;: &quot;A String&quot;, # Output only. Specifies the creative source for programmatic deals. PUBLISHER means creative is provided by seller and ADVERTISER means creative is provided by buyer.
            &quot;availableEndTime&quot;: &quot;A String&quot;, # Proposed flight end time of the deal. This will generally be stored in a granularity of a second. A value is not required for Private Auction deals or Preferred Deals.
            &quot;deliveryControl&quot;: { # Message contains details about how the deals will be paced. # The set of fields around delivery control that are interesting for a buyer to see but are non-negotiable. These are set by the publisher.
              &quot;frequencyCaps&quot;: [ # Output only. Specifies any frequency caps.
                { # Frequency cap.
                  &quot;numTimeUnits&quot;: 42, # The amount of time, in the units specified by time_unit_type. Defines the amount of time over which impressions per user are counted and capped.
                  &quot;maxImpressions&quot;: 42, # The maximum number of impressions that can be served to a user within the specified time period.
                  &quot;timeUnitType&quot;: &quot;A String&quot;, # The time unit. Along with num_time_units defines the amount of time over which impressions per user are counted and capped.
                },
              ],
              &quot;creativeBlockingLevel&quot;: &quot;A String&quot;, # Output only. Specified the creative blocking levels to be applied.
              &quot;deliveryRateType&quot;: &quot;A String&quot;, # Output only. Specifies how the impression delivery will be paced.
            },
            &quot;createProductId&quot;: &quot;A String&quot;, # The product ID from which this deal was created. Note: This field may be set only when creating the resource. Modifying this field while updating the resource will result in an error.
            &quot;webPropertyCode&quot;: &quot;A String&quot;, # The web property code for the seller copied over from the product.
            &quot;proposalId&quot;: &quot;A String&quot;, # Output only. ID of the proposal that this deal is part of.
            &quot;buyerPrivateData&quot;: { # Buyers are allowed to store certain types of private data in a proposal/deal. # Buyer private data (hidden from seller).
              &quot;referenceId&quot;: &quot;A String&quot;, # A buyer or seller specified reference ID. This can be queried in the list operations (max-length: 1024 unicode code units).
            },
            &quot;createProductRevision&quot;: &quot;A String&quot;, # Optional revision number of the product that the deal was created from. If present on create, and the server `product_revision` has advanced sinced the passed-in `create_product_revision`, an `ABORTED` error will be returned. Note: This field may be set only when creating the resource. Modifying this field while updating the resource will result in an error.
            &quot;displayName&quot;: &quot;A String&quot;, # The name of the deal.
            &quot;targetingCriterion&quot;: [ # The shared targeting visible to buyers and sellers. Each shared targeting entity is AND&#x27;d together.
              { # Advertisers can target different attributes of an ad slot. For example, they can choose to show ads only if the user is in the U.S. Such targeting criteria can be specified as part of Shared Targeting.
                &quot;key&quot;: &quot;A String&quot;, # The key representing the shared targeting criterion. Targeting criteria defined by Google ad servers will begin with GOOG_. Third parties may define their own keys. A list of permissible keys along with the acceptable values will be provided as part of the external documentation.
                &quot;inclusions&quot;: [ # The list of value to include as part of the targeting. Each value is OR&#x27;d together.
                  { # A polymorphic targeting value used as part of Shared Targeting.
                    &quot;dayPartTargetingValue&quot;: { # Specifies the day part targeting criteria. # The daypart targeting to include / exclude. Filled in when the key is GOOG_DAYPART_TARGETING. The definition of this targeting is derived from the structure used by Ad Manager.
                      &quot;dayParts&quot;: [ # A list of day part targeting criterion.
                        { # Daypart targeting message that specifies if the ad can be shown only during certain parts of a day/week.
                          &quot;endTime&quot;: { # Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`. # The ending time of the day for the ad to show (minute level granularity). The end time is exclusive. This field is not available for filtering in PQL queries.
                            &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.
                            &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
                            &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
                            &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
                          },
                          &quot;startTime&quot;: { # Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`. # The starting time of day for the ad to show (minute level granularity). The start time is inclusive. This field is not available for filtering in PQL queries.
                            &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.
                            &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
                            &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
                            &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
                          },
                          &quot;dayOfWeek&quot;: &quot;A String&quot;, # The day of the week to target. If unspecified, applicable to all days.
                        },
                      ],
                      &quot;timeZoneType&quot;: &quot;A String&quot;, # The timezone to use for interpreting the day part targeting.
                    },
                    &quot;longValue&quot;: &quot;A String&quot;, # The long value to include/exclude.
                    &quot;stringValue&quot;: &quot;A String&quot;, # The string value to include/exclude.
                    &quot;creativeSizeValue&quot;: { # Specifies the size of the creative. # The creative size value to include/exclude. Filled in when key = GOOG_CREATIVE_SIZE
                      &quot;companionSizes&quot;: [ # For video creatives specifies the sizes of companion ads (if present). Companion sizes may be filled in only when creative_size_type = VIDEO
                        { # Message depicting the size of the creative. The units of width and height depend on the type of the targeting.
                          &quot;height&quot;: 42, # The height of the creative.
                          &quot;width&quot;: 42, # The width of the creative
                        },
                      ],
                      &quot;size&quot;: { # Message depicting the size of the creative. The units of width and height depend on the type of the targeting. # For regular or video creative size type, specifies the size of the creative
                        &quot;height&quot;: 42, # The height of the creative.
                        &quot;width&quot;: 42, # The width of the creative
                      },
                      &quot;nativeTemplate&quot;: &quot;A String&quot;, # Output only. The native template for this creative. It will have a value only if creative_size_type = CreativeSizeType.NATIVE.
                      &quot;allowedFormats&quot;: [ # What formats are allowed by the publisher. If this repeated field is empty then all formats are allowed. For example, if this field contains AllowedFormatType.AUDIO then the publisher only allows an audio ad (without any video).
                        &quot;A String&quot;,
                      ],
                      &quot;creativeSizeType&quot;: &quot;A String&quot;, # The creative size type.
                      &quot;skippableAdType&quot;: &quot;A String&quot;, # The type of skippable ad for this creative. It will have a value only if creative_size_type = CreativeSizeType.VIDEO.
                    },
                  },
                ],
                &quot;exclusions&quot;: [ # The list of values to exclude from targeting. Each value is AND&#x27;d together.
                  { # A polymorphic targeting value used as part of Shared Targeting.
                    &quot;dayPartTargetingValue&quot;: { # Specifies the day part targeting criteria. # The daypart targeting to include / exclude. Filled in when the key is GOOG_DAYPART_TARGETING. The definition of this targeting is derived from the structure used by Ad Manager.
                      &quot;dayParts&quot;: [ # A list of day part targeting criterion.
                        { # Daypart targeting message that specifies if the ad can be shown only during certain parts of a day/week.
                          &quot;endTime&quot;: { # Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`. # The ending time of the day for the ad to show (minute level granularity). The end time is exclusive. This field is not available for filtering in PQL queries.
                            &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.
                            &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
                            &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
                            &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
                          },
                          &quot;startTime&quot;: { # Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`. # The starting time of day for the ad to show (minute level granularity). The start time is inclusive. This field is not available for filtering in PQL queries.
                            &quot;seconds&quot;: 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.
                            &quot;nanos&quot;: 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
                            &quot;hours&quot;: 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
                            &quot;minutes&quot;: 42, # Minutes of hour of day. Must be from 0 to 59.
                          },
                          &quot;dayOfWeek&quot;: &quot;A String&quot;, # The day of the week to target. If unspecified, applicable to all days.
                        },
                      ],
                      &quot;timeZoneType&quot;: &quot;A String&quot;, # The timezone to use for interpreting the day part targeting.
                    },
                    &quot;longValue&quot;: &quot;A String&quot;, # The long value to include/exclude.
                    &quot;stringValue&quot;: &quot;A String&quot;, # The string value to include/exclude.
                    &quot;creativeSizeValue&quot;: { # Specifies the size of the creative. # The creative size value to include/exclude. Filled in when key = GOOG_CREATIVE_SIZE
                      &quot;companionSizes&quot;: [ # For video creatives specifies the sizes of companion ads (if present). Companion sizes may be filled in only when creative_size_type = VIDEO
                        { # Message depicting the size of the creative. The units of width and height depend on the type of the targeting.
                          &quot;height&quot;: 42, # The height of the creative.
                          &quot;width&quot;: 42, # The width of the creative
                        },
                      ],
                      &quot;size&quot;: { # Message depicting the size of the creative. The units of width and height depend on the type of the targeting. # For regular or video creative size type, specifies the size of the creative
                        &quot;height&quot;: 42, # The height of the creative.
                        &quot;width&quot;: 42, # The width of the creative
                      },
                      &quot;nativeTemplate&quot;: &quot;A String&quot;, # Output only. The native template for this creative. It will have a value only if creative_size_type = CreativeSizeType.NATIVE.
                      &quot;allowedFormats&quot;: [ # What formats are allowed by the publisher. If this repeated field is empty then all formats are allowed. For example, if this field contains AllowedFormatType.AUDIO then the publisher only allows an audio ad (without any video).
                        &quot;A String&quot;,
                      ],
                      &quot;creativeSizeType&quot;: &quot;A String&quot;, # The creative size type.
                      &quot;skippableAdType&quot;: &quot;A String&quot;, # The type of skippable ad for this creative. It will have a value only if creative_size_type = CreativeSizeType.VIDEO.
                    },
                  },
                ],
              },
            ],
            &quot;targeting&quot;: { # Targeting represents different criteria that can be used by advertisers to target ad inventory. For example, they can choose to target ad requests only if the user is in the US. Multiple types of targeting are always applied as a logical AND, unless noted otherwise. # Output only. Specifies the subset of inventory targeted by the deal.
              &quot;placementTargeting&quot;: { # Represents targeting about where the ads can appear, e.g., certain sites or mobile applications. Different placement targeting types will be logically OR&#x27;ed. # Placement targeting information, e.g., URL, mobile applications.
                &quot;urlTargeting&quot;: { # Represents a list of targeted and excluded URLs (e.g., google.com). For Private Auction and AdX Preferred Deals, URLs are either included or excluded. For Programmatic Guaranteed and Preferred Deals, this doesn&#x27;t apply. # URLs to be included/excluded.
                  &quot;excludedUrls&quot;: [ # A list of URLs to be excluded.
                    &quot;A String&quot;,
                  ],
                  &quot;targetedUrls&quot;: [ # A list of URLs to be included.
                    &quot;A String&quot;,
                  ],
                },
                &quot;mobileApplicationTargeting&quot;: { # Mobile application targeting settings. # Mobile application targeting information in a deal. This doesn&#x27;t apply to Auction Packages.
                  &quot;firstPartyTargeting&quot;: { # Represents a list of targeted and excluded mobile application IDs that publishers own. Mobile application IDs are from App Store and Google Play Store. Android App ID, for example, com.google.android.apps.maps, can be found in Google Play Store URL. iOS App ID (which is a number) can be found at the end of iTunes store URL. First party mobile applications is either included or excluded. # Publisher owned apps to be targeted or excluded by the publisher to display the ads in.
                    &quot;targetedAppIds&quot;: [ # A list of application IDs to be included.
                      &quot;A String&quot;,
                    ],
                    &quot;excludedAppIds&quot;: [ # A list of application IDs to be excluded.
                      &quot;A String&quot;,
                    ],
                  },
                },
              },
              &quot;technologyTargeting&quot;: { # Represents targeting about various types of technology. # Technology targeting information, e.g., operating system, device category.
                &quot;deviceCapabilityTargeting&quot;: { # Generic targeting used for targeting dimensions that contains a list of included and excluded numeric IDs. # IDs of device capabilities to be included/excluded.
                  &quot;excludedCriteriaIds&quot;: [ # A list of numeric IDs to be excluded.
                    &quot;A String&quot;,
                  ],
                  &quot;targetedCriteriaIds&quot;: [ # A list of numeric IDs to be included.
                    &quot;A String&quot;,
                  ],
                },
                &quot;deviceCategoryTargeting&quot;: { # Generic targeting used for targeting dimensions that contains a list of included and excluded numeric IDs. # IDs of device categories to be included/excluded.
                  &quot;excludedCriteriaIds&quot;: [ # A list of numeric IDs to be excluded.
                    &quot;A String&quot;,
                  ],
                  &quot;targetedCriteriaIds&quot;: [ # A list of numeric IDs to be included.
                    &quot;A String&quot;,
                  ],
                },
                &quot;operatingSystemTargeting&quot;: { # Represents targeting information for operating systems. # Operating system related targeting information.
                  &quot;operatingSystemCriteria&quot;: { # Generic targeting used for targeting dimensions that contains a list of included and excluded numeric IDs. # IDs of operating systems to be included/excluded.
                    &quot;excludedCriteriaIds&quot;: [ # A list of numeric IDs to be excluded.
                      &quot;A String&quot;,
                    ],
                    &quot;targetedCriteriaIds&quot;: [ # A list of numeric IDs to be included.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;operatingSystemVersionCriteria&quot;: { # Generic targeting used for targeting dimensions that contains a list of included and excluded numeric IDs. # IDs of operating system versions to be included/excluded.
                    &quot;excludedCriteriaIds&quot;: [ # A list of numeric IDs to be excluded.
                      &quot;A String&quot;,
                    ],
                    &quot;targetedCriteriaIds&quot;: [ # A list of numeric IDs to be included.
                      &quot;A String&quot;,
                    ],
                  },
                },
              },
              &quot;videoTargeting&quot;: { # Represents targeting information about video. # Video targeting information.
                &quot;excludedPositionTypes&quot;: [ # A list of video positions to be excluded. Position types can either be included or excluded (XOR).
                  &quot;A String&quot;,
                ],
                &quot;targetedPositionTypes&quot;: [ # A list of video positions to be included. When the included list is present, the excluded list must be empty. When the excluded list is present, the included list must be empty.
                  &quot;A String&quot;,
                ],
              },
              &quot;inventorySizeTargeting&quot;: { # Represents the size of an ad unit that can be targeted on an ad request. It only applies to Private Auction, AdX Preferred Deals and Auction Packages. This targeting does not apply to Programmatic Guaranteed and Preferred Deals in Ad Manager. # Inventory sizes to be included/excluded.
                &quot;targetedInventorySizes&quot;: [ # A list of inventory sizes to be included.
                  { # Represents size of a single ad slot, or a creative.
                    &quot;height&quot;: &quot;A String&quot;, # The height of the ad slot in pixels. This field will be present only when size type is `PIXEL`.
                    &quot;width&quot;: &quot;A String&quot;, # The width of the ad slot in pixels. This field will be present only when size type is `PIXEL`.
                    &quot;sizeType&quot;: &quot;A String&quot;, # The size type of the ad slot.
                  },
                ],
                &quot;excludedInventorySizes&quot;: [ # A list of inventory sizes to be excluded.
                  { # Represents size of a single ad slot, or a creative.
                    &quot;height&quot;: &quot;A String&quot;, # The height of the ad slot in pixels. This field will be present only when size type is `PIXEL`.
                    &quot;width&quot;: &quot;A String&quot;, # The width of the ad slot in pixels. This field will be present only when size type is `PIXEL`.
                    &quot;sizeType&quot;: &quot;A String&quot;, # The size type of the ad slot.
                  },
                ],
              },
              &quot;geoTargeting&quot;: { # Generic targeting used for targeting dimensions that contains a list of included and excluded numeric IDs. # Geo criteria IDs to be included/excluded.
                &quot;excludedCriteriaIds&quot;: [ # A list of numeric IDs to be excluded.
                  &quot;A String&quot;,
                ],
                &quot;targetedCriteriaIds&quot;: [ # A list of numeric IDs to be included.
                  &quot;A String&quot;,
                ],
              },
            },
            &quot;externalDealId&quot;: &quot;A String&quot;, # Output only. The external deal ID assigned to this deal once the deal is finalized. This is the deal ID that shows up in serving/reporting etc.
            &quot;isSetupComplete&quot;: True or False, # Output only. True, if the buyside inventory setup is complete for this deal.
            &quot;creativeRestrictions&quot;: { # Represents creative restrictions associated to Programmatic Guaranteed/ Preferred Deal in Ad Manager. This doesn&#x27;t apply to Private Auction and AdX Preferred Deals. # Output only. Restricitions about the creatives associated with the deal (i.e., size) This is available for Programmatic Guaranteed/Preferred Deals in Ad Manager.
              &quot;skippableAdType&quot;: &quot;A String&quot;, # Skippable video ads allow viewers to skip ads after 5 seconds.
              &quot;creativeSpecifications&quot;: [
                { # Represents information for a creative that is associated with a Programmatic Guaranteed/Preferred Deal in Ad Manager.
                  &quot;creativeCompanionSizes&quot;: [ # Companion sizes may be filled in only when this is a video creative.
                    { # Represents size of a single ad slot, or a creative.
                      &quot;height&quot;: &quot;A String&quot;, # The height of the ad slot in pixels. This field will be present only when size type is `PIXEL`.
                      &quot;width&quot;: &quot;A String&quot;, # The width of the ad slot in pixels. This field will be present only when size type is `PIXEL`.
                      &quot;sizeType&quot;: &quot;A String&quot;, # The size type of the ad slot.
                    },
                  ],
                  &quot;creativeSize&quot;: { # Represents size of a single ad slot, or a creative. # The size of the creative.
                    &quot;height&quot;: &quot;A String&quot;, # The height of the ad slot in pixels. This field will be present only when size type is `PIXEL`.
                    &quot;width&quot;: &quot;A String&quot;, # The width of the ad slot in pixels. This field will be present only when size type is `PIXEL`.
                    &quot;sizeType&quot;: &quot;A String&quot;, # The size type of the ad slot.
                  },
                },
              ],
              &quot;creativeFormat&quot;: &quot;A String&quot;, # The format of the environment that the creatives will be displayed in.
            },
            &quot;availableStartTime&quot;: &quot;A String&quot;, # Optional proposed flight start time of the deal. This will generally be stored in the granularity of one second since deal serving starts at seconds boundary. Any time specified with more granularity (e.g., in milliseconds) will be truncated towards the start of time in seconds.
            &quot;sellerContacts&quot;: [ # Output only. Seller contact information for the deal.
              { # Contains information on how a buyer or seller can be reached.
                &quot;name&quot;: &quot;A String&quot;, # The name of the contact.
                &quot;email&quot;: &quot;A String&quot;, # Email address for the contact.
              },
            ],
            &quot;dealServingMetadata&quot;: { # Message captures metadata about the serving status of a deal. # Output only. Metadata about the serving status of this deal.
              &quot;dealPauseStatus&quot;: { # Tracks which parties (if any) have paused a deal. The deal is considered paused if either hasBuyerPaused or hasSellPaused is true. # Output only. Tracks which parties (if any) have paused a deal.
                &quot;buyerPauseReason&quot;: &quot;A String&quot;, # The buyer&#x27;s reason for pausing, if the buyer paused the deal.
                &quot;hasSellerPaused&quot;: True or False, # True, if the seller has paused the deal unilaterally.
                &quot;sellerPauseReason&quot;: &quot;A String&quot;, # The seller&#x27;s reason for pausing, if the seller paused the deal.
                &quot;hasBuyerPaused&quot;: True or False, # True, if the buyer has paused the deal unilaterally.
                &quot;firstPausedBy&quot;: &quot;A String&quot;, # The role of the person who first paused this deal.
              },
            },
            &quot;creativePreApprovalPolicy&quot;: &quot;A String&quot;, # Output only. Specifies the creative pre-approval policy.
            &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time when the deal was last updated.
            &quot;dealTerms&quot;: { # The deal terms specify the details of a Product/deal. They specify things like price per buyer, the type of pricing model (e.g., fixed price, auction) and expected impressions from the publisher. # The negotiable terms of the deal.
              &quot;nonGuaranteedFixedPriceTerms&quot;: { # Terms for Preferred Deals. Note that Preferred Deals cannot be created via the API at this time, but can be returned in a get or list request. # The terms for non-guaranteed fixed price deals.
                &quot;fixedPrices&quot;: [ # Fixed price for the specified buyer.
                  { # Used to specify pricing rules for buyers/advertisers. Each PricePerBuyer in a product can become 0 or 1 deals. To check if there is a PricePerBuyer for a particular buyer or buyer/advertiser pair, we look for the most specific matching rule - we first look for a rule matching the buyer and advertiser, next a rule with the buyer but an empty advertiser list, and otherwise look for a matching rule where no buyer is set.
                    &quot;buyer&quot;: { # Represents a buyer of inventory. Each buyer is identified by a unique Authorized Buyers account ID. # The buyer who will pay this price. If unset, all buyers can pay this price (if the advertisers match, and there&#x27;s no more specific rule matching the buyer).
                      &quot;accountId&quot;: &quot;A String&quot;, # Authorized Buyers account ID of the buyer.
                    },
                    &quot;advertiserIds&quot;: [ # The list of advertisers for this price when associated with this buyer. If empty, all advertisers with this buyer pay this price.
                      &quot;A String&quot;,
                    ],
                    &quot;price&quot;: { # Represents a price and a pricing type for a product / deal. # The specified price.
                      &quot;pricingType&quot;: &quot;A String&quot;, # The pricing type for the deal/product. (default: CPM)
                      &quot;amount&quot;: { # Represents an amount of money with its currency type. # The actual price with currency specified.
                        &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
                        &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
                        &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in ISO 4217.
                      },
                    },
                  },
                ],
              },
              &quot;description&quot;: &quot;A String&quot;, # Publisher provided description for the terms.
              &quot;estimatedImpressionsPerDay&quot;: &quot;A String&quot;, # Non-binding estimate of the impressions served per day. Can be set by buyer or seller.
              &quot;guaranteedFixedPriceTerms&quot;: { # Terms for Programmatic Guaranteed Deals. # The terms for guaranteed fixed price deals.
                &quot;guaranteedImpressions&quot;: &quot;A String&quot;, # Guaranteed impressions as a percentage. This is the percentage of guaranteed looks that the buyer is guaranteeing to buy.
                &quot;guaranteedLooks&quot;: &quot;A String&quot;, # Count of guaranteed looks. Required for deal, optional for product.
                &quot;minimumDailyLooks&quot;: &quot;A String&quot;, # Daily minimum looks for CPD deal types.
                &quot;fixedPrices&quot;: [ # Fixed price for the specified buyer.
                  { # Used to specify pricing rules for buyers/advertisers. Each PricePerBuyer in a product can become 0 or 1 deals. To check if there is a PricePerBuyer for a particular buyer or buyer/advertiser pair, we look for the most specific matching rule - we first look for a rule matching the buyer and advertiser, next a rule with the buyer but an empty advertiser list, and otherwise look for a matching rule where no buyer is set.
                    &quot;buyer&quot;: { # Represents a buyer of inventory. Each buyer is identified by a unique Authorized Buyers account ID. # The buyer who will pay this price. If unset, all buyers can pay this price (if the advertisers match, and there&#x27;s no more specific rule matching the buyer).
                      &quot;accountId&quot;: &quot;A String&quot;, # Authorized Buyers account ID of the buyer.
                    },
                    &quot;advertiserIds&quot;: [ # The list of advertisers for this price when associated with this buyer. If empty, all advertisers with this buyer pay this price.
                      &quot;A String&quot;,
                    ],
                    &quot;price&quot;: { # Represents a price and a pricing type for a product / deal. # The specified price.
                      &quot;pricingType&quot;: &quot;A String&quot;, # The pricing type for the deal/product. (default: CPM)
                      &quot;amount&quot;: { # Represents an amount of money with its currency type. # The actual price with currency specified.
                        &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
                        &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
                        &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in ISO 4217.
                      },
                    },
                  },
                ],
              },
              &quot;sellerTimeZone&quot;: &quot;A String&quot;, # The time zone name. For deals with Cost Per Day billing, defines the time zone used to mark the boundaries of a day. It should be an IANA TZ name, such as &quot;America/Los_Angeles&quot;. For more information, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones.
              &quot;estimatedGrossSpend&quot;: { # Represents a price and a pricing type for a product / deal. # Non-binding estimate of the estimated gross spend for this deal. Can be set by buyer or seller.
                &quot;pricingType&quot;: &quot;A String&quot;, # The pricing type for the deal/product. (default: CPM)
                &quot;amount&quot;: { # Represents an amount of money with its currency type. # The actual price with currency specified.
                  &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
                  &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
                  &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in ISO 4217.
                },
              },
              &quot;nonGuaranteedAuctionTerms&quot;: { # Terms for Private Auctions. Note that Private Auctions can be created only by the seller, but they can be returned in a get or list request. # The terms for non-guaranteed auction deals.
                &quot;reservePricesPerBuyer&quot;: [ # Reserve price for the specified buyer.
                  { # Used to specify pricing rules for buyers/advertisers. Each PricePerBuyer in a product can become 0 or 1 deals. To check if there is a PricePerBuyer for a particular buyer or buyer/advertiser pair, we look for the most specific matching rule - we first look for a rule matching the buyer and advertiser, next a rule with the buyer but an empty advertiser list, and otherwise look for a matching rule where no buyer is set.
                    &quot;buyer&quot;: { # Represents a buyer of inventory. Each buyer is identified by a unique Authorized Buyers account ID. # The buyer who will pay this price. If unset, all buyers can pay this price (if the advertisers match, and there&#x27;s no more specific rule matching the buyer).
                      &quot;accountId&quot;: &quot;A String&quot;, # Authorized Buyers account ID of the buyer.
                    },
                    &quot;advertiserIds&quot;: [ # The list of advertisers for this price when associated with this buyer. If empty, all advertisers with this buyer pay this price.
                      &quot;A String&quot;,
                    ],
                    &quot;price&quot;: { # Represents a price and a pricing type for a product / deal. # The specified price.
                      &quot;pricingType&quot;: &quot;A String&quot;, # The pricing type for the deal/product. (default: CPM)
                      &quot;amount&quot;: { # Represents an amount of money with its currency type. # The actual price with currency specified.
                        &quot;nanos&quot;: 42, # Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
                        &quot;units&quot;: &quot;A String&quot;, # The whole units of the amount. For example if `currencyCode` is `&quot;USD&quot;`, then 1 unit is one US dollar.
                        &quot;currencyCode&quot;: &quot;A String&quot;, # The 3-letter currency code defined in ISO 4217.
                      },
                    },
                  },
                ],
                &quot;autoOptimizePrivateAuction&quot;: True or False, # True if open auction buyers are allowed to compete with invited buyers in this private auction.
              },
              &quot;brandingType&quot;: &quot;A String&quot;, # Visibility of the URL in bid requests. (default: BRANDED)
            },
            &quot;creativeSafeFrameCompatibility&quot;: &quot;A String&quot;, # Output only. Specifies whether the creative is safeFrame compatible.
            &quot;description&quot;: &quot;A String&quot;, # Description for the deal terms.
          },
        ],
        &quot;sellerContacts&quot;: [ # Output only. Contact information for the seller.
          { # Contains information on how a buyer or seller can be reached.
            &quot;name&quot;: &quot;A String&quot;, # The name of the contact.
            &quot;email&quot;: &quot;A String&quot;, # Email address for the contact.
          },
        ],
        &quot;billedBuyer&quot;: { # Represents a buyer of inventory. Each buyer is identified by a unique Authorized Buyers account ID. # Output only. Reference to the buyer that will get billed for this proposal.
          &quot;accountId&quot;: &quot;A String&quot;, # Authorized Buyers account ID of the buyer.
        },
        &quot;proposalState&quot;: &quot;A String&quot;, # Output only. The current state of the proposal.
        &quot;lastUpdaterOrCommentorRole&quot;: &quot;A String&quot;, # Output only. The role of the last user that either updated the proposal or left a comment.
        &quot;seller&quot;: { # Represents a seller of inventory. Each seller is identified by a unique Ad Manager account ID. # Reference to the seller on the proposal. Note: This field may be set only when creating the resource. Modifying this field while updating the resource will result in an error.
          &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;proposalId&quot;: &quot;A String&quot;, # Output only. The unique ID of the proposal.
        &quot;notes&quot;: [ # Output only. The notes associated with this proposal.
          { # A proposal may be associated to several notes.
            &quot;proposalRevision&quot;: &quot;A String&quot;, # Output only. The revision number of the proposal when the note is created.
            &quot;creatorRole&quot;: &quot;A String&quot;, # Output only. The role of the person (buyer/seller) creating the note.
            &quot;note&quot;: &quot;A String&quot;, # The actual note to attach. (max-length: 1024 unicode code units) Note: This field may be set only when creating the resource. Modifying this field while updating the resource will result in an error.
            &quot;noteId&quot;: &quot;A String&quot;, # Output only. The unique ID for the note.
            &quot;createTime&quot;: &quot;A String&quot;, # Output only. The timestamp for when this note was created.
          },
        ],
        &quot;originatorRole&quot;: &quot;A String&quot;, # Output only. Indicates whether the buyer/seller created the proposal.
        &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time when the proposal was last revised.
        &quot;isSetupComplete&quot;: True or False, # Output only. True, if the buyside inventory setup is complete for this proposal.
        &quot;proposalRevision&quot;: &quot;A String&quot;, # Output only. The revision number for the proposal. Each update to the proposal or the deal causes the proposal revision number to auto-increment. The buyer keeps track of the last revision number they know of and pass it in when making an update. If the head revision number on the server has since incremented, then an ABORTED error is returned during the update operation to let the buyer know that a subsequent update was made.
        &quot;buyerContacts&quot;: [ # Contact information for the buyer.
          { # Contains information on how a buyer or seller can be reached.
            &quot;name&quot;: &quot;A String&quot;, # The name of the contact.
            &quot;email&quot;: &quot;A String&quot;, # Email address for the contact.
          },
        ],
      },
    ],
  }</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>