<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="displayvideo_v1.html">Display & Video 360 API</a> . <a href="displayvideo_v1.inventorySources.html">inventorySources</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#get">get(inventorySourceId, partnerId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets an inventory source.</p>
<p class="toc_element">
  <code><a href="#list">list(orderBy=None, filter=None, partnerId=None, advertiserId=None, pageToken=None, pageSize=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists inventory sources that are accessible to the current user. The order is defined by the order_by parameter. If a filter by entity_status is not specified, inventory sources with entity status `ENTITY_STATUS_ARCHIVED` will not be included in the results.</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="get">get(inventorySourceId, partnerId=None, x__xgafv=None)</code>
  <pre>Gets an inventory source.

Args:
  inventorySourceId: string, Required. The ID of the inventory source to fetch. (required)
  partnerId: string, Required. The ID of the DV360 partner to which the fetched inventory source is permissioned.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An inventory source.
    &quot;rateDetails&quot;: { # The rate related settings of the inventory source. # Required. The rate details of the inventory source.
      &quot;minimumSpend&quot;: { # Represents an amount of money with its currency type. # Output only. The amount that the buyer has committed to spending on the inventory source up front. Only applicable for guaranteed inventory sources.
        &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;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;rate&quot;: { # Represents an amount of money with its currency type. # The rate for the inventory source.
        &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;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;unitsPurchased&quot;: &quot;A String&quot;, # Required for guaranteed inventory sources. The number of impressions guaranteed by the seller.
      &quot;inventorySourceRateType&quot;: &quot;A String&quot;, # The rate type. Acceptable values are `INVENTORY_SOURCE_RATE_TYPE_CPM_FIXED`, `INVENTORY_SOURCE_RATE_TYPE_CPM_FLOOR`, and `INVENTORY_SOURCE_RATE_TYPE_CPD`.
    },
    &quot;displayName&quot;: &quot;A String&quot;, # The display name of the inventory source. Must be UTF-8 encoded with a maximum size of 240 bytes.
    &quot;timeRange&quot;: { # A time range. # The time range when this inventory source starts and stops serving.
      &quot;endTime&quot;: &quot;A String&quot;, # Required. The upper bound of a time range, inclusive.
      &quot;startTime&quot;: &quot;A String&quot;, # Required. The lower bound of a time range, inclusive.
    },
    &quot;deliveryMethod&quot;: &quot;A String&quot;, # The delivery method of the inventory source. * For non-guaranteed inventory sources, the only acceptable value is `INVENTORY_SOURCE_DELIVERY_METHOD_PROGRAMMATIC`. * For guaranteed inventory sources, acceptable values are `INVENTORY_SOURCE_DELIVERY_METHOD_TAG` and `INVENTORY_SOURCE_DELIVERY_METHOD_PROGRAMMATIC`.
    &quot;inventorySourceId&quot;: &quot;A String&quot;, # Output only. The unique ID of the inventory source. Assigned by the system.
    &quot;publisherName&quot;: &quot;A String&quot;, # The publisher/seller name of the inventory source.
    &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the inventory source was last updated. Assigned by the system.
    &quot;status&quot;: { # The status related settings of the inventory source. # The status settings of the inventory source.
      &quot;entityPauseReason&quot;: &quot;A String&quot;, # The user-provided reason for pausing this inventory source. Must not exceed 100 characters. Only applicable when entity_status is set to `ENTITY_STATUS_PAUSED`.
      &quot;sellerStatus&quot;: &quot;A String&quot;, # Output only. The status set by the seller for the inventory source. Only applicable for inventory sources synced directly from the publishers. Acceptable values are `ENTITY_STATUS_ACTIVE` and `ENTITY_STATUS_PAUSED`.
      &quot;sellerPauseReason&quot;: &quot;A String&quot;, # Output only. The seller-provided reason for pausing this inventory source. Only applicable for inventory sources synced directly from the publishers and when seller_status is set to `ENTITY_STATUS_PAUSED`.
      &quot;entityStatus&quot;: &quot;A String&quot;, # Whether or not the inventory source is servable. Acceptable values are `ENTITY_STATUS_ACTIVE`, `ENTITY_STATUS_ARCHIVED`, and `ENTITY_STATUS_PAUSED`. Default value is `ENTITY_STATUS_ACTIVE`.
      &quot;configStatus&quot;: &quot;A String&quot;, # Output only. The configuration status of the inventory source. Only applicable for guaranteed inventory sources. Acceptable values are `INVENTORY_SOURCE_CONFIG_STATUS_PENDING` and `INVENTORY_SOURCE_CONFIG_STATUS_COMPLETED`. An inventory source must be configured (fill in the required fields, choose creatives, and select a default campaign) before it can serve.
    },
    &quot;creativeConfigs&quot;: [ # The creative requirements of the inventory source. Not applicable for auction packages.
      { # Creative requirements configuration for the inventory source.
        &quot;videoCreativeConfig&quot;: { # The configuration for video creatives. # The configuration for video creatives. Applicable when creative_type is `CREATIVE_TYPE_VIDEO`.
          &quot;duration&quot;: &quot;A String&quot;, # The duration requirements for the video creatives that can be assigned to the inventory source.
        },
        &quot;creativeType&quot;: &quot;A String&quot;, # The type of creative that can be assigned to the inventory source.
        &quot;displayCreativeConfig&quot;: { # The configuration for display creatives. # The configuration for display creatives. Applicable when creative_type is `CREATIVE_TYPE_STANDARD`.
          &quot;creativeSize&quot;: { # Dimensions. # The size requirements for display creatives that can be assigned to the inventory source.
            &quot;heightPixels&quot;: 42, # The height in pixels.
            &quot;widthPixels&quot;: 42, # The width in pixels.
          },
        },
      },
    ],
    &quot;dealId&quot;: &quot;A String&quot;, # The ID in the exchange space that uniquely identifies the inventory source. Must be unique across buyers within each exchange but not necessarily unique across exchanges.
    &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the inventory source.
    &quot;commitment&quot;: &quot;A String&quot;, # Whether the inventory source has a guaranteed or non-guaranteed delivery.
    &quot;inventorySourceType&quot;: &quot;A String&quot;, # Denotes the type of the inventory source.
    &quot;exchange&quot;: &quot;A String&quot;, # The exchange to which the inventory source belongs.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(orderBy=None, filter=None, partnerId=None, advertiserId=None, pageToken=None, pageSize=None, x__xgafv=None)</code>
  <pre>Lists inventory sources that are accessible to the current user. The order is defined by the order_by parameter. If a filter by entity_status is not specified, inventory sources with entity status `ENTITY_STATUS_ARCHIVED` will not be included in the results.

Args:
  orderBy: string, Field by which to sort the list. Acceptable values are: * `displayName` (default) The default sorting order is ascending. To specify descending order for a field, a suffix &quot;desc&quot; should be added to the field name. For example, `displayName desc`.
  filter: string, Allows filtering by inventory source properties. Supported syntax: * Filter expressions are made up of one or more restrictions. * Restrictions can be combined by `AND` or `OR` logical operators. A sequence of restrictions implicitly uses `AND`. * A restriction has the form of `{field} {operator} {value}`. * The operator must be `EQUALS (=)`. * Supported fields: - `status.entityStatus` - `commitment` - `deliveryMethod` - `rateDetails.rateType` - `exchange` Examples: * All active inventory sources: `status.entityStatus=&quot;ENTITY_STATUS_ACTIVE&quot;` * Inventory sources belonging to Google Ad Manager or Rubicon exchanges: `exchange=&quot;EXCHANGE_GOOGLE_AD_MANAGER&quot; OR exchange=&quot;EXCHANGE_RUBICON&quot;` The length of this field should be no more than 500 characters.
  partnerId: string, The ID of the partner that has access to the inventory source.
  advertiserId: string, The ID of the advertiser that has access to the inventory source.
  pageToken: string, A token identifying a page of results the server should return. Typically, this is the value of next_page_token returned from the previous call to `ListInventorySources` method. If not specified, the first page of results will be returned.
  pageSize: integer, Requested page size. Must be between `1` and `100`. If unspecified will default to `100`.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;nextPageToken&quot;: &quot;A String&quot;, # A token to retrieve the next page of results. Pass this value in the page_token field in the subsequent call to `ListInventorySources` method to retrieve the next page of results.
    &quot;inventorySources&quot;: [ # The list of inventory sources. This list will be absent if empty.
      { # An inventory source.
        &quot;rateDetails&quot;: { # The rate related settings of the inventory source. # Required. The rate details of the inventory source.
          &quot;minimumSpend&quot;: { # Represents an amount of money with its currency type. # Output only. The amount that the buyer has committed to spending on the inventory source up front. Only applicable for guaranteed inventory sources.
            &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;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;rate&quot;: { # Represents an amount of money with its currency type. # The rate for the inventory source.
            &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;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;unitsPurchased&quot;: &quot;A String&quot;, # Required for guaranteed inventory sources. The number of impressions guaranteed by the seller.
          &quot;inventorySourceRateType&quot;: &quot;A String&quot;, # The rate type. Acceptable values are `INVENTORY_SOURCE_RATE_TYPE_CPM_FIXED`, `INVENTORY_SOURCE_RATE_TYPE_CPM_FLOOR`, and `INVENTORY_SOURCE_RATE_TYPE_CPD`.
        },
        &quot;displayName&quot;: &quot;A String&quot;, # The display name of the inventory source. Must be UTF-8 encoded with a maximum size of 240 bytes.
        &quot;timeRange&quot;: { # A time range. # The time range when this inventory source starts and stops serving.
          &quot;endTime&quot;: &quot;A String&quot;, # Required. The upper bound of a time range, inclusive.
          &quot;startTime&quot;: &quot;A String&quot;, # Required. The lower bound of a time range, inclusive.
        },
        &quot;deliveryMethod&quot;: &quot;A String&quot;, # The delivery method of the inventory source. * For non-guaranteed inventory sources, the only acceptable value is `INVENTORY_SOURCE_DELIVERY_METHOD_PROGRAMMATIC`. * For guaranteed inventory sources, acceptable values are `INVENTORY_SOURCE_DELIVERY_METHOD_TAG` and `INVENTORY_SOURCE_DELIVERY_METHOD_PROGRAMMATIC`.
        &quot;inventorySourceId&quot;: &quot;A String&quot;, # Output only. The unique ID of the inventory source. Assigned by the system.
        &quot;publisherName&quot;: &quot;A String&quot;, # The publisher/seller name of the inventory source.
        &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the inventory source was last updated. Assigned by the system.
        &quot;status&quot;: { # The status related settings of the inventory source. # The status settings of the inventory source.
          &quot;entityPauseReason&quot;: &quot;A String&quot;, # The user-provided reason for pausing this inventory source. Must not exceed 100 characters. Only applicable when entity_status is set to `ENTITY_STATUS_PAUSED`.
          &quot;sellerStatus&quot;: &quot;A String&quot;, # Output only. The status set by the seller for the inventory source. Only applicable for inventory sources synced directly from the publishers. Acceptable values are `ENTITY_STATUS_ACTIVE` and `ENTITY_STATUS_PAUSED`.
          &quot;sellerPauseReason&quot;: &quot;A String&quot;, # Output only. The seller-provided reason for pausing this inventory source. Only applicable for inventory sources synced directly from the publishers and when seller_status is set to `ENTITY_STATUS_PAUSED`.
          &quot;entityStatus&quot;: &quot;A String&quot;, # Whether or not the inventory source is servable. Acceptable values are `ENTITY_STATUS_ACTIVE`, `ENTITY_STATUS_ARCHIVED`, and `ENTITY_STATUS_PAUSED`. Default value is `ENTITY_STATUS_ACTIVE`.
          &quot;configStatus&quot;: &quot;A String&quot;, # Output only. The configuration status of the inventory source. Only applicable for guaranteed inventory sources. Acceptable values are `INVENTORY_SOURCE_CONFIG_STATUS_PENDING` and `INVENTORY_SOURCE_CONFIG_STATUS_COMPLETED`. An inventory source must be configured (fill in the required fields, choose creatives, and select a default campaign) before it can serve.
        },
        &quot;creativeConfigs&quot;: [ # The creative requirements of the inventory source. Not applicable for auction packages.
          { # Creative requirements configuration for the inventory source.
            &quot;videoCreativeConfig&quot;: { # The configuration for video creatives. # The configuration for video creatives. Applicable when creative_type is `CREATIVE_TYPE_VIDEO`.
              &quot;duration&quot;: &quot;A String&quot;, # The duration requirements for the video creatives that can be assigned to the inventory source.
            },
            &quot;creativeType&quot;: &quot;A String&quot;, # The type of creative that can be assigned to the inventory source.
            &quot;displayCreativeConfig&quot;: { # The configuration for display creatives. # The configuration for display creatives. Applicable when creative_type is `CREATIVE_TYPE_STANDARD`.
              &quot;creativeSize&quot;: { # Dimensions. # The size requirements for display creatives that can be assigned to the inventory source.
                &quot;heightPixels&quot;: 42, # The height in pixels.
                &quot;widthPixels&quot;: 42, # The width in pixels.
              },
            },
          },
        ],
        &quot;dealId&quot;: &quot;A String&quot;, # The ID in the exchange space that uniquely identifies the inventory source. Must be unique across buyers within each exchange but not necessarily unique across exchanges.
        &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the inventory source.
        &quot;commitment&quot;: &quot;A String&quot;, # Whether the inventory source has a guaranteed or non-guaranteed delivery.
        &quot;inventorySourceType&quot;: &quot;A String&quot;, # Denotes the type of the inventory source.
        &quot;exchange&quot;: &quot;A String&quot;, # The exchange to which the inventory source belongs.
      },
    ],
  }</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>