<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.advertisers.html">advertisers</a> . <a href="displayvideo_v1.advertisers.insertionOrders.html">insertionOrders</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="displayvideo_v1.advertisers.insertionOrders.targetingTypes.html">targetingTypes()</a></code>
</p>
<p class="firstline">Returns the targetingTypes Resource.</p>

<p class="toc_element">
  <code><a href="#bulkListInsertionOrderAssignedTargetingOptions">bulkListInsertionOrderAssignedTargetingOptions(advertiserId, insertionOrderId, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists assigned targeting options of an insertion order across targeting types.</p>
<p class="toc_element">
  <code><a href="#bulkListInsertionOrderAssignedTargetingOptions_next">bulkListInsertionOrderAssignedTargetingOptions_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="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#create">create(advertiserId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new insertion order. Returns the newly created insertion order if successful.</p>
<p class="toc_element">
  <code><a href="#delete">delete(advertiserId, insertionOrderId, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes an insertion order. Returns error code `NOT_FOUND` if the insertion order does not exist. The insertion order should be archived first, i.e. set entity_status to `ENTITY_STATUS_ARCHIVED`, to be able to delete it.</p>
<p class="toc_element">
  <code><a href="#get">get(advertiserId, insertionOrderId, x__xgafv=None)</a></code></p>
<p class="firstline">Gets an insertion order. Returns error code `NOT_FOUND` if the insertion order does not exist.</p>
<p class="toc_element">
  <code><a href="#list">list(advertiserId, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists insertion orders in an advertiser. The order is defined by the order_by parameter. If a filter by entity_status is not specified, insertion orders with `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>
<p class="toc_element">
  <code><a href="#patch">patch(advertiserId, insertionOrderId, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates an existing insertion order. Returns the updated insertion order if successful.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="bulkListInsertionOrderAssignedTargetingOptions">bulkListInsertionOrderAssignedTargetingOptions(advertiserId, insertionOrderId, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists assigned targeting options of an insertion order across targeting types.

Args:
  advertiserId: string, Required. The ID of the advertiser the insertion order belongs to. (required)
  insertionOrderId: string, Required. The ID of the insertion order to list assigned targeting options for. (required)
  filter: string, Allows filtering by assigned targeting option properties. Supported syntax: * Filter expressions are made up of one or more restrictions. * Restrictions can be combined by the logical operator `OR` on the same field. * A restriction has the form of `{field} {operator} {value}`. * The operator must be `EQUALS (=)`. * Supported fields: - `targetingType` - `inheritance` Examples: * AssignedTargetingOptions of targeting type TARGETING_TYPE_PROXIMITY_LOCATION_LIST or TARGETING_TYPE_CHANNEL `targetingType=&quot;TARGETING_TYPE_PROXIMITY_LOCATION_LIST&quot; OR targetingType=&quot;TARGETING_TYPE_CHANNEL&quot;` * AssignedTargetingOptions with inheritance status of NOT_INHERITED or INHERITED_FROM_PARTNER `inheritance=&quot;NOT_INHERITED&quot; OR inheritance=&quot;INHERITED_FROM_PARTNER&quot;` The length of this field should be no more than 500 characters.
  orderBy: string, Field by which to sort the list. Acceptable values are: * `targetingType` (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. Example: `targetingType desc`.
  pageSize: integer, Requested page size. The size must be an integer between `1` and `5000`. If unspecified, the default is `5000`. Returns error code `INVALID_ARGUMENT` if an invalid value is specified.
  pageToken: string, A token that lets the client fetch the next page of results. Typically, this is the value of next_page_token returned from the previous call to `BulkListInsertionOrderAssignedTargetingOptions` method. If not specified, the first page of results will be returned.
  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 BulkListInsertionOrderAssignedTargetingOptions.
  &quot;assignedTargetingOptions&quot;: [ # The list of assigned targeting options. This list will be absent if empty.
    { # A single assigned targeting option, which defines the state of a targeting option for an entity with targeting settings.
      &quot;ageRangeDetails&quot;: { # Represents a targetable age range. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_AGE_RANGE`. # Age range details. This field will be populated when the targeting_type is `TARGETING_TYPE_AGE_RANGE`.
        &quot;ageRange&quot;: &quot;A String&quot;, # Output only. The age range of an audience. We only support targeting a continuous age range of an audience. Thus, the age range represented in this field can be 1) targeted solely, or, 2) part of a larger continuous age range. The reach of a continuous age range targeting can be expanded by also targeting an audience of an unknown age.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_AGE_RANGE`.
      },
      &quot;appCategoryDetails&quot;: { # Details for assigned app category targeting option. This will be populated in the app_category_details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_APP_CATEGORY`. # App category details. This field will be populated when the targeting_type is `TARGETING_TYPE_APP_CATEGORY`.
        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the app category.
        &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id field when targeting_type is `TARGETING_TYPE_APP_CATEGORY`.
      },
      &quot;appDetails&quot;: { # Details for assigned app targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_APP`. # App details. This field will be populated when the targeting_type is `TARGETING_TYPE_APP`.
        &quot;appId&quot;: &quot;A String&quot;, # Required. The ID of the app. Android&#x27;s Play store app uses bundle ID, for example `com.google.android.gm`. Apple&#x27;s App store app ID uses 9 digit string, for example `422689480`.
        &quot;appPlatform&quot;: &quot;A String&quot;, # Indicates the platform of the targeted app. If this field is not specified, the app platform will be assumed to be mobile (i.e., Android or iOS), and we will derive the appropriate mobile platform from the app ID.
        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the app.
        &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted.
      },
      &quot;assignedTargetingOptionId&quot;: &quot;A String&quot;, # Output only. The unique ID of the assigned targeting option. The ID is only unique within a given resource and targeting type. It may be reused in other contexts.
      &quot;audienceGroupDetails&quot;: { # Assigned audience group targeting option details. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_AUDIENCE_GROUP`. The relation between each group is UNION, except for excluded_first_and_third_party_audience_group and excluded_google_audience_group, of which COMPLEMENT is UNION&#x27;ed with other groups. # Audience targeting details. This field will be populated when the targeting_type is `TARGETING_TYPE_AUDIENCE_GROUP`. You can only target one audience group option per resource.
        &quot;excludedFirstAndThirdPartyAudienceGroup&quot;: { # Details of first and third party audience group. All first and third party audience targeting settings are logically ‘OR’ of each other. # The first and third party audience ids and recencies of the excluded first and third party audience group. Used for negative targeting. Its COMPLEMENT is used to UNION other audience groups.
          &quot;settings&quot;: [ # Required. All first and third party audience targeting settings in first and third party audience group. Repeated settings with same id are not allowed.
            { # Details of first and third party audience targeting setting.
              &quot;firstAndThirdPartyAudienceId&quot;: &quot;A String&quot;, # Required. First and third party audience id of the first and third party audience targeting setting. This id is first_and_third_party_audience_id.
              &quot;recency&quot;: &quot;A String&quot;, # The recency of the first and third party audience targeting setting. Only applicable to first party audiences, otherwise will be ignored. For more info, refer to https://support.google.com/displayvideo/answer/2949947#recency When unspecified, no recency limit will be used.
            },
          ],
        },
        &quot;excludedGoogleAudienceGroup&quot;: { # Details of Google audience group. All Google audience targeting settings are logically ‘OR’ of each other. # The Google audience ids of the excluded Google audience group. Used for negative targeting. It&#x27;s COMPLEMENT is used to UNION other audience groups. Only contains Affinity, In-market and Installed-apps type Google audiences. All items are logically ‘OR’ of each other.
          &quot;settings&quot;: [ # Required. All Google audience targeting settings in Google audience group. Repeated settings with same id will be ignored.
            { # Details of Google audience targeting setting.
              &quot;googleAudienceId&quot;: &quot;A String&quot;, # Required. Google audience id of the Google audience targeting setting. This id is google_audience_id.
            },
          ],
        },
        &quot;includedCombinedAudienceGroup&quot;: { # Details of combined audience group. All combined audience targeting settings are logically ‘OR’ of each other. # The combined audience ids of the included combined audience group. Contains combined audience ids only.
          &quot;settings&quot;: [ # Required. All combined audience targeting settings in combined audience group. Repeated settings with same id will be ignored. The number of combined audience settings should be no more than five, error will be thrown otherwise.
            { # Details of combined audience targeting setting.
              &quot;combinedAudienceId&quot;: &quot;A String&quot;, # Required. Combined audience id of combined audience targeting setting. This id is combined_audience_id.
            },
          ],
        },
        &quot;includedCustomListGroup&quot;: { # Details of custom list group. All custom list targeting settings are logically ‘OR’ of each other. # The custom list ids of the included custom list group. Contains custom list ids only.
          &quot;settings&quot;: [ # Required. All custom list targeting settings in custom list group. Repeated settings with same id will be ignored.
            { # Details of custom list targeting setting.
              &quot;customListId&quot;: &quot;A String&quot;, # Required. Custom id of custom list targeting setting. This id is custom_list_id.
            },
          ],
        },
        &quot;includedFirstAndThirdPartyAudienceGroups&quot;: [ # The first and third party audience ids and recencies of included first and third party audience groups. Each first and third party audience group contains first and third party audience ids only. The relation between each first and third party audience group is INTERSECTION, and the result is UNION&#x27;ed with other audience groups. Repeated groups with same settings will be ignored.
          { # Details of first and third party audience group. All first and third party audience targeting settings are logically ‘OR’ of each other.
            &quot;settings&quot;: [ # Required. All first and third party audience targeting settings in first and third party audience group. Repeated settings with same id are not allowed.
              { # Details of first and third party audience targeting setting.
                &quot;firstAndThirdPartyAudienceId&quot;: &quot;A String&quot;, # Required. First and third party audience id of the first and third party audience targeting setting. This id is first_and_third_party_audience_id.
                &quot;recency&quot;: &quot;A String&quot;, # The recency of the first and third party audience targeting setting. Only applicable to first party audiences, otherwise will be ignored. For more info, refer to https://support.google.com/displayvideo/answer/2949947#recency When unspecified, no recency limit will be used.
              },
            ],
          },
        ],
        &quot;includedGoogleAudienceGroup&quot;: { # Details of Google audience group. All Google audience targeting settings are logically ‘OR’ of each other. # The Google audience ids of the included Google audience group. Contains Google audience ids only.
          &quot;settings&quot;: [ # Required. All Google audience targeting settings in Google audience group. Repeated settings with same id will be ignored.
            { # Details of Google audience targeting setting.
              &quot;googleAudienceId&quot;: &quot;A String&quot;, # Required. Google audience id of the Google audience targeting setting. This id is google_audience_id.
            },
          ],
        },
      },
      &quot;authorizedSellerStatusDetails&quot;: { # Represents an assigned authorized seller status. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_AUTHORIZED_SELLER_STATUS`. # Authorized seller status details. This field will be populated when the targeting_type is `TARGETING_TYPE_AUTHORIZED_SELLER_STATUS`. You can only target one authorized seller status option per resource. If a resource doesn&#x27;t have an authorized seller status option, all authorized sellers indicated as DIRECT or RESELLER in the ads.txt file are targeted by default.
        &quot;authorizedSellerStatus&quot;: &quot;A String&quot;, # Output only. The authorized seller status to target.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_AUTHORIZED_SELLER_STATUS`.
      },
      &quot;browserDetails&quot;: { # Details for assigned browser targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_BROWSER`. # Browser details. This field will be populated when the targeting_type is `TARGETING_TYPE_BROWSER`.
        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the browser.
        &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned browser targeting options on the same resource must have the same value for this field.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BROWSER`.
      },
      &quot;businessChainDetails&quot;: { # Details for assigned Business chain targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`. # Business chain details. This field will be populated when the targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`.
        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a business chain, e.g. &quot;KFC&quot;, &quot;Chase Bank&quot;.
        &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the business chain that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`. The minimum increment for both cases is 0.1. Inputs will be rounded to the nearest acceptable value if it is too granular, e.g. 15.57 will become 15.6.
        &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BUSINESS_CHAIN`. Accepted business chain targeting option IDs can be retrieved using SearchTargetingOptions.
      },
      &quot;carrierAndIspDetails&quot;: { # Details for assigned carrier and ISP targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`. # Carrier and ISP details. This field will be populated when the targeting_type is `TARGETING_TYPE_CARRIER_AND_ISP`.
        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the carrier or ISP.
        &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned carrier and ISP targeting options on the same resource must have the same value for this field.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_CARRIER_AND_ISP`.
      },
      &quot;categoryDetails&quot;: { # Assigned category targeting option details. This will be populated in the category_details field when targeting_type is `TARGETING_TYPE_CATEGORY`. # Category details. This field will be populated when the targeting_type is `TARGETING_TYPE_CATEGORY`. Targeting a category will also target its subcategories. If a category is excluded from targeting and a subcategory is included, the exclusion will take precedence.
        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the category.
        &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id field when targeting_type is `TARGETING_TYPE_CATEGORY`.
      },
      &quot;channelDetails&quot;: { # Details for assigned channel targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_CHANNEL`. # Channel details. This field will be populated when the targeting_type is `TARGETING_TYPE_CHANNEL`.
        &quot;channelId&quot;: &quot;A String&quot;, # Required. ID of the channel. Should refer to the channel ID field on a [Partner-owned channel](partners.channels#Channel.FIELDS.channel_id) or [advertiser-owned channel](advertisers.channels#Channel.FIELDS.channel_id) resource.
        &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. For advertiser level assigned targeting option, this field must be true.
      },
      &quot;contentInstreamPositionDetails&quot;: { # Assigned content instream position targeting option details. This will be populated in the content_instream_position_details field when targeting_type is `TARGETING_TYPE_CONTENT_INSTREAM_POSITION`. # Content instream position details. This field will be populated when the targeting_type is `TARGETING_TYPE_CONTENT_INSTREAM_POSITION`.
        &quot;adType&quot;: &quot;A String&quot;, # Output only. The ad type to target. Only applicable to insertion order targeting and new line items supporting the specified ad type will inherit this targeting option by default. Possible values are: * `AD_TYPE_VIDEO`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_VIDEO_DEFAULT`. * `AD_TYPE_AUDIO`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_AUDIO_DEFAULT`.
        &quot;contentInstreamPosition&quot;: &quot;A String&quot;, # Output only. The content instream position for video or audio ads.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id field when targeting_type is `TARGETING_TYPE_CONTENT_INSTREAM_POSITION`.
      },
      &quot;contentOutstreamPositionDetails&quot;: { # Assigned content outstream position targeting option details. This will be populated in the content_outstream_position_details field when targeting_type is `TARGETING_TYPE_CONTENT_OUTSTREAM_POSITION`. # Content outstream position details. This field will be populated when the targeting_type is `TARGETING_TYPE_CONTENT_OUTSTREAM_POSITION`.
        &quot;adType&quot;: &quot;A String&quot;, # Output only. The ad type to target. Only applicable to insertion order targeting and new line items supporting the specified ad type will inherit this targeting option by default. Possible values are: * `AD_TYPE_DISPLAY`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_DISPLAY_DEFAULT`. * `AD_TYPE_VIDEO`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
        &quot;contentOutstreamPosition&quot;: &quot;A String&quot;, # Output only. The content outstream position.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id field when targeting_type is `TARGETING_TYPE_CONTENT_OUTSTREAM_POSITION`.
      },
      &quot;dayAndTimeDetails&quot;: { # Representation of a segment of time defined on a specific day of the week and with a start and end time. The time represented by `start_hour` must be before the time represented by `end_hour`. # Day and time details. This field will be populated when the targeting_type is `TARGETING_TYPE_DAY_AND_TIME`.
        &quot;dayOfWeek&quot;: &quot;A String&quot;, # Required. The day of the week for this day and time targeting setting.
        &quot;endHour&quot;: 42, # Required. The end hour for day and time targeting. Must be between 1 (1 hour after start of day) and 24 (end of day).
        &quot;startHour&quot;: 42, # Required. The start hour for day and time targeting. Must be between 0 (start of day) and 23 (1 hour before end of day).
        &quot;timeZoneResolution&quot;: &quot;A String&quot;, # Required. The mechanism used to determine which timezone to use for this day and time targeting setting.
      },
      &quot;deviceMakeModelDetails&quot;: { # Assigned device make and model targeting option details. This will be populated in the device_make_model_details field when targeting_type is `TARGETING_TYPE_DEVICE_MAKE_MODEL`. # Device make and model details. This field will be populated when the targeting_type is `TARGETING_TYPE_DEVICE_MAKE_MODEL`.
        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the device make and model.
        &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id field when targeting_type is `TARGETING_TYPE_DEVICE_MAKE_MODEL`.
      },
      &quot;deviceTypeDetails&quot;: { # Targeting details for device type. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_DEVICE_TYPE`. # Device Type details. This field will be populated when the targeting_type is `TARGETING_TYPE_DEVICE_TYPE`.
        &quot;deviceType&quot;: &quot;A String&quot;, # Output only. The display name of the device type.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. ID of the device type.
      },
      &quot;digitalContentLabelExclusionDetails&quot;: { # Targeting details for digital content label. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION`. # Digital content label details. This field will be populated when the targeting_type is `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION`. Digital content labels are targeting exclusions. Advertiser level digital content label exclusions, if set, are always applied in serving (even though they aren&#x27;t visible in resource settings). Resource settings can exclude content labels in addition to advertiser exclusions, but can&#x27;t override them. A line item won&#x27;t serve if all the digital content labels are excluded.
        &quot;contentRatingTier&quot;: &quot;A String&quot;, # Output only. The display name of the digital content label rating tier.
        &quot;excludedTargetingOptionId&quot;: &quot;A String&quot;, # Required. ID of the digital content label to be EXCLUDED.
      },
      &quot;environmentDetails&quot;: { # Assigned environment targeting option details. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_ENVIRONMENT`. # Environment details. This field will be populated when the targeting_type is `TARGETING_TYPE_ENVIRONMENT`.
        &quot;environment&quot;: &quot;A String&quot;, # Output only. The serving environment.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_ENVIRONMENT` (e.g., &quot;508010&quot; for targeting the `ENVIRONMENT_WEB_OPTIMIZED` option).
      },
      &quot;exchangeDetails&quot;: { # Details for assigned exchange targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_EXCHANGE`. # Exchange details. This field will be populated when the targeting_type is `TARGETING_TYPE_EXCHANGE`.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_EXCHANGE`.
      },
      &quot;genderDetails&quot;: { # Details for assigned gender targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARTGETING_TYPE_GENDER`. # Gender details. This field will be populated when the targeting_type is `TARGETING_TYPE_GENDER`.
        &quot;gender&quot;: &quot;A String&quot;, # Output only. The gender of the audience.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_GENDER`.
      },
      &quot;geoRegionDetails&quot;: { # Details for assigned geographic region targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_GEO_REGION`. # Geographic region details. This field will be populated when the targeting_type is `TARGETING_TYPE_GEO_REGION`.
        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the geographic region (e.g., &quot;Ontario, Canada&quot;).
        &quot;geoRegionType&quot;: &quot;A String&quot;, # Output only. The type of geographic region targeting.
        &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_GEO_REGION`.
      },
      &quot;householdIncomeDetails&quot;: { # Details for assigned household income targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_HOUSEHOLD_INCOME`. # Household income details. This field will be populated when the targeting_type is `TARGETING_TYPE_HOUSEHOLD_INCOME`.
        &quot;householdIncome&quot;: &quot;A String&quot;, # Output only. The household income of the audience.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_HOUSEHOLD_INCOME`.
      },
      &quot;inheritance&quot;: &quot;A String&quot;, # Output only. The inheritance status of the assigned targeting option.
      &quot;inventorySourceDetails&quot;: { # Targeting details for inventory source. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_INVENTORY_SOURCE`. # Inventory source details. This field will be populated when the targeting_type is `TARGETING_TYPE_INVENTORY_SOURCE`.
        &quot;inventorySourceId&quot;: &quot;A String&quot;, # Required. ID of the inventory source. Should refer to the inventory_source_id field of an InventorySource resource.
      },
      &quot;inventorySourceGroupDetails&quot;: { # Targeting details for inventory source group. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_INVENTORY_SOURCE_GROUP`. # Inventory source group details. This field will be populated when the targeting_type is `TARGETING_TYPE_INVENTORY_SOURCE_GROUP`.
        &quot;inventorySourceGroupId&quot;: &quot;A String&quot;, # Required. ID of the inventory source group. Should refer to the inventory_source_group_id field of an InventorySourceGroup resource.
      },
      &quot;keywordDetails&quot;: { # Details for assigned keyword targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_KEYWORD`. # Keyword details. This field will be populated when the targeting_type is `TARGETING_TYPE_KEYWORD`. A maximum of 5000 direct negative keywords can be assigned to a resource. No limit on number of positive keywords that can be assigned.
        &quot;keyword&quot;: &quot;A String&quot;, # Required. The keyword, for example `car insurance`. Positive keyword cannot be offensive word. Must be UTF-8 encoded with a maximum size of 255 bytes. Maximum number of characters is 80. Maximum number of words is 10.
        &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted.
      },
      &quot;languageDetails&quot;: { # Details for assigned language targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_LANGUAGE`. # Language details. This field will be populated when the targeting_type is `TARGETING_TYPE_LANGUAGE`.
        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the language (e.g., &quot;French&quot;).
        &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned language targeting options on the same resource must have the same value for this field.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_LANGUAGE`.
      },
      &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name for this assigned targeting option.
      &quot;nativeContentPositionDetails&quot;: { # Details for native content position assigned targeting option. This will be populated in the native_content_position_details field when targeting_type is `TARGETING_TYPE_NATIVE_CONTENT_POSITION`. Explicitly targeting all options is not supported. Remove all native content position targeting options to achieve this effect. # Native content position details. This field will be populated when the targeting_type is `TARGETING_TYPE_NATIVE_CONTENT_POSITION`.
        &quot;contentPosition&quot;: &quot;A String&quot;, # Output only. The content position.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id field when targeting_type is `TARGETING_TYPE_NATIVE_CONTENT_POSITION`.
      },
      &quot;negativeKeywordListDetails&quot;: { # Targeting details for negative keyword list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. # Keyword details. This field will be populated when the targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. A maximum of 4 negative keyword lists can be assigned to a resource.
        &quot;negativeKeywordListId&quot;: &quot;A String&quot;, # Required. ID of the negative keyword list. Should refer to the negative_keyword_list_id field of a NegativeKeywordList resource.
      },
      &quot;omidDetails&quot;: { # Represents a targetable Open Measurement enabled inventory type. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_OMID`. # Open Measurement enabled inventory details. This field will be populated when the targeting_type is `TARGETING_TYPE_OMID`.
        &quot;omid&quot;: &quot;A String&quot;, # Output only. The type of Open Measurement enabled inventory.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_OMID`.
      },
      &quot;onScreenPositionDetails&quot;: { # On screen position targeting option details. This will be populated in the on_screen_position_details field when targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`. # On screen position details. This field will be populated when the targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`.
        &quot;adType&quot;: &quot;A String&quot;, # Output only. The ad type to target. Only applicable to insertion order targeting and new line items supporting the specified ad type will inherit this targeting option by default. Possible values are: * `AD_TYPE_DISPLAY`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_DISPLAY_DEFAULT`. * `AD_TYPE_VIDEO`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
        &quot;onScreenPosition&quot;: &quot;A String&quot;, # Output only. The on screen position.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id field when targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`.
      },
      &quot;operatingSystemDetails&quot;: { # Assigned operating system targeting option details. This will be populated in the operating_system_details field when targeting_type is `TARGETING_TYPE_OPERATING_SYSTEM`. # Operating system details. This field will be populated when the targeting_type is `TARGETING_TYPE_OPERATING_SYSTEM`.
        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the operating system.
        &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting option ID populated in targeting_option_id field when targeting_type is `TARGETING_TYPE_OPERATING_SYSTEM`.
      },
      &quot;parentalStatusDetails&quot;: { # Details for assigned parental status targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARTGETING_TYPE_PARENTAL_STATUS`. # Parental status details. This field will be populated when the targeting_type is `TARGETING_TYPE_PARENTAL_STATUS`.
        &quot;parentalStatus&quot;: &quot;A String&quot;, # Output only. The parental status of the audience.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_PARENTAL_STATUS`.
      },
      &quot;poiDetails&quot;: { # Details for assigned POI targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_POI`. # POI details. This field will be populated when the targeting_type is `TARGETING_TYPE_POI`.
        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a POI, e.g. &quot;Times Square&quot;, &quot;Space Needle&quot;, followed by its full address if available.
        &quot;latitude&quot;: 3.14, # Output only. Latitude of the POI rounding to 6th decimal place.
        &quot;longitude&quot;: 3.14, # Output only. Longitude of the POI rounding to 6th decimal place.
        &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the POI that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`.
        &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_POI`. Accepted POI targeting option IDs can be retrieved using SearchTargetingOptions. If targeting a specific latitude/longitude coordinate removed from an address or POI name, you can generate the necessary targeting option ID by rounding the desired coordinate values to the 6th decimal place, removing the decimals, and concatenating the string values separated by a semicolon. For example, you can target the latitude/longitude pair of 40.7414691, -74.003387 using the targeting option ID &quot;40741469;-74003387&quot;.
      },
      &quot;proximityLocationListDetails&quot;: { # Targeting details for proximity location list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`. # Proximity location list details. This field will be populated when the targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`.
        &quot;proximityLocationListId&quot;: &quot;A String&quot;, # Required. ID of the proximity location list. Should refer to the location_list_id field of a LocationList resource whose type is `TARGETING_LOCATION_TYPE_PROXIMITY`.
        &quot;proximityRadiusRange&quot;: &quot;A String&quot;, # Required. Radius range for proximity location list. This represents the size of the area around a chosen location that will be targeted. `All` proximity location targeting under a single resource must have the same radius range value. Set this value to match any existing targeting. If updated, this field will change the radius range for all proximity targeting under the resource.
      },
      &quot;regionalLocationListDetails&quot;: { # Targeting details for regional location list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_REGIONAL_LOCATION_LIST`. # Regional location list details. This field will be populated when the targeting_type is `TARGETING_TYPE_REGIONAL_LOCATION_LIST`.
        &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted.
        &quot;regionalLocationListId&quot;: &quot;A String&quot;, # Required. ID of the regional location list. Should refer to the location_list_id field of a LocationList resource whose type is `TARGETING_LOCATION_TYPE_REGIONAL`.
      },
      &quot;sensitiveCategoryExclusionDetails&quot;: { # Targeting details for sensitive category. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION`. # Sensitive category details. This field will be populated when the targeting_type is `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION`. Sensitive categories are targeting exclusions. Advertiser level sensitive category exclusions, if set, are always applied in serving (even though they aren&#x27;t visible in resource settings). Resource settings can exclude sensitive categories in addition to advertiser exclusions, but can&#x27;t override them.
        &quot;excludedTargetingOptionId&quot;: &quot;A String&quot;, # Required. ID of the sensitive category to be EXCLUDED.
        &quot;sensitiveCategory&quot;: &quot;A String&quot;, # Output only. An enum for the DV360 Sensitive category content classifier.
      },
      &quot;subExchangeDetails&quot;: { # Details for assigned sub-exchange targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_SUB_EXCHANGE`. # Sub-exchange details. This field will be populated when the targeting_type is `TARGETING_TYPE_SUB_EXCHANGE`.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_SUB_EXCHANGE`.
      },
      &quot;targetingType&quot;: &quot;A String&quot;, # Output only. Identifies the type of this assigned targeting option.
      &quot;thirdPartyVerifierDetails&quot;: { # Assigned third party verifier targeting option details. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_THIRD_PARTY_VERIFIER`. # Third party verification details. This field will be populated when the targeting_type is `TARGETING_TYPE_THIRD_PARTY_VERIFIER`.
        &quot;adloox&quot;: { # Details of Adloox settings. # Third party brand verifier -- Adloox.
          &quot;excludedAdlooxCategories&quot;: [ # Adloox&#x27;s brand safety settings.
            &quot;A String&quot;,
          ],
        },
        &quot;doubleVerify&quot;: { # Details of DoubleVerify settings. # Third party brand verifier -- DoubleVerify.
          &quot;appStarRating&quot;: { # Details of DoubleVerify star ratings settings. # Avoid bidding on apps with the star ratings.
            &quot;avoidInsufficientStarRating&quot;: True or False, # Avoid bidding on apps with insufficient star ratings.
            &quot;avoidedStarRating&quot;: &quot;A String&quot;, # Avoid bidding on apps with the star ratings.
          },
          &quot;avoidedAgeRatings&quot;: [ # Avoid bidding on apps with the age rating.
            &quot;A String&quot;,
          ],
          &quot;brandSafetyCategories&quot;: { # Settings for brand safety controls. # DV Brand Safety Controls.
            &quot;avoidUnknownBrandSafetyCategory&quot;: True or False, # Unknown or unrateable.
            &quot;avoidedHighSeverityCategories&quot;: [ # Brand safety high severity avoidance categories.
              &quot;A String&quot;,
            ],
            &quot;avoidedMediumSeverityCategories&quot;: [ # Brand safety medium severity avoidance categories.
              &quot;A String&quot;,
            ],
          },
          &quot;customSegmentId&quot;: &quot;A String&quot;, # The custom segment ID provided by DoubleVerify. The ID must start with &quot;51&quot; and consist of eight digits. Custom segment ID cannot be specified along with any of the following fields: * brand_safety_categories * avoided_age_ratings * app_star_rating * fraud_invalid_traffic
          &quot;displayViewability&quot;: { # Details of DoubleVerify display viewability settings. # Display viewability settings (applicable to display line items only).
            &quot;iab&quot;: &quot;A String&quot;, # Target web and app inventory to maximize IAB viewable rate.
            &quot;viewableDuring&quot;: &quot;A String&quot;, # Target web and app inventory to maximize 100% viewable duration.
          },
          &quot;fraudInvalidTraffic&quot;: { # DoubleVerify Fraud &amp; Invalid Traffic settings. # Avoid Sites and Apps with historical Fraud &amp; IVT Rates.
            &quot;avoidInsufficientOption&quot;: True or False, # Insufficient Historical Fraud &amp; IVT Stats.
            &quot;avoidedFraudOption&quot;: &quot;A String&quot;, # Avoid Sites and Apps with historical Fraud &amp; IVT.
          },
          &quot;videoViewability&quot;: { # Details of DoubleVerify video viewability settings. # Video viewability settings (applicable to video line items only).
            &quot;playerImpressionRate&quot;: &quot;A String&quot;, # Target inventory to maximize impressions with 400x300 or greater player size.
            &quot;videoIab&quot;: &quot;A String&quot;, # Target web inventory to maximize IAB viewable rate.
            &quot;videoViewableRate&quot;: &quot;A String&quot;, # Target web inventory to maximize fully viewable rate.
          },
        },
        &quot;integralAdScience&quot;: { # Details of Integral Ad Science settings. # Third party brand verifier -- Integral Ad Science.
          &quot;customSegmentId&quot;: [ # The custom segment ID provided by Integral Ad Science. The ID must be between `1000001` and `1999999`, inclusive.
            &quot;A String&quot;,
          ],
          &quot;displayViewability&quot;: &quot;A String&quot;, # Display Viewability section (applicable to display line items only).
          &quot;excludeUnrateable&quot;: True or False, # Brand Safety - **Unrateable**.
          &quot;excludedAdFraudRisk&quot;: &quot;A String&quot;, # Ad Fraud settings.
          &quot;excludedAdultRisk&quot;: &quot;A String&quot;, # Brand Safety - **Adult content**.
          &quot;excludedAlcoholRisk&quot;: &quot;A String&quot;, # Brand Safety - **Alcohol**.
          &quot;excludedDrugsRisk&quot;: &quot;A String&quot;, # Brand Safety - **Drugs**.
          &quot;excludedGamblingRisk&quot;: &quot;A String&quot;, # Brand Safety - **Gambling**.
          &quot;excludedHateSpeechRisk&quot;: &quot;A String&quot;, # Brand Safety - **Hate speech**.
          &quot;excludedIllegalDownloadsRisk&quot;: &quot;A String&quot;, # Brand Safety - **Illegal downloads**.
          &quot;excludedOffensiveLanguageRisk&quot;: &quot;A String&quot;, # Brand Safety - **Offensive language**.
          &quot;excludedViolenceRisk&quot;: &quot;A String&quot;, # Brand Safety - **Violence**.
          &quot;traqScoreOption&quot;: &quot;A String&quot;, # True advertising quality (applicable to Display line items only).
          &quot;videoViewability&quot;: &quot;A String&quot;, # Video Viewability Section (applicable to video line items only).
        },
      },
      &quot;urlDetails&quot;: { # Details for assigned URL targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_URL`. # URL details. This field will be populated when the targeting_type is `TARGETING_TYPE_URL`.
        &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted.
        &quot;url&quot;: &quot;A String&quot;, # Required. The URL, for example `example.com`. DV360 supports two levels of subdirectory targeting, for example `www.example.com/one-subdirectory-level/second-level`, and five levels of subdomain targeting, for example `five.four.three.two.one.example.com`.
      },
      &quot;userRewardedContentDetails&quot;: { # User rewarded content targeting option details. This will be populated in the user_rewarded_content_details field when targeting_type is `TARGETING_TYPE_USER_REWARDED_CONTENT`. # User rewarded content details. This field will be populated when the targeting_type is `TARGETING_TYPE_USER_REWARDED_CONTENT`.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id field when targeting_type is `TARGETING_TYPE_USER_REWARDED_CONTENT`.
        &quot;userRewardedContent&quot;: &quot;A String&quot;, # Output only. User rewarded content status for video ads.
      },
      &quot;videoPlayerSizeDetails&quot;: { # Video player size targeting option details. This will be populated in the video_player_size_details field when targeting_type is `TARGETING_TYPE_VIDEO_PLAYER_SIZE`. Explicitly targeting all options is not supported. Remove all video player size targeting options to achieve this effect. # Video player size details. This field will be populated when the targeting_type is `TARGETING_TYPE_VIDEO_PLAYER_SIZE`.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id field when targeting_type is `TARGETING_TYPE_VIDEO_PLAYER_SIZE`.
        &quot;videoPlayerSize&quot;: &quot;A String&quot;, # Output only. The video player size.
      },
      &quot;viewabilityDetails&quot;: { # Assigned viewability targeting option details. This will be populated in the viewability_details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_VIEWABILITY`. # Viewability details. This field will be populated when the targeting_type is `TARGETING_TYPE_VIEWABILITY`. You can only target one viewability option per resource.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_VIEWABILITY` (e.g., &quot;509010&quot; for targeting the `VIEWABILITY_10_PERCENT_OR_MORE` option).
        &quot;viewability&quot;: &quot;A String&quot;, # Output only. The predicted viewability percentage.
      },
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token identifying the next page of results. This value should be specified as the pageToken in a subsequent BulkListInsertionOrderAssignedTargetingOptionsRequest to fetch the next page of results. This token will be absent if there are no more assigned_targeting_options to return.
}</pre>
</div>

<div class="method">
    <code class="details" id="bulkListInsertionOrderAssignedTargetingOptions_next">bulkListInsertionOrderAssignedTargetingOptions_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="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="create">create(advertiserId, body=None, x__xgafv=None)</code>
  <pre>Creates a new insertion order. Returns the newly created insertion order if successful.

Args:
  advertiserId: string, Output only. The unique ID of the advertiser the insertion order belongs to. (required)
  body: object, The request body.
    The object takes the form of:

{ # A single insertion order.
  &quot;advertiserId&quot;: &quot;A String&quot;, # Output only. The unique ID of the advertiser the insertion order belongs to.
  &quot;bidStrategy&quot;: { # Settings that control the bid strategy. Bid strategy determines the bid price. # The bidding strategy of the insertion order. By default, fixed_bid is set.
    &quot;fixedBid&quot;: { # A strategy that uses a fixed bidding price. # A strategy that uses a fixed bid price.
      &quot;bidAmountMicros&quot;: &quot;A String&quot;, # The fixed bid amount, in micros of the advertiser&#x27;s currency. For insertion order entity, bid_amount_micros should be set as 0. For line item entity, bid_amount_micros must be greater than or equal to billable unit of the given currency and smaller than or equal to the upper limit 1000000000. For example, 1500000 represents 1.5 standard units of the currency.
    },
    &quot;maximizeSpendAutoBid&quot;: { # A strategy that automatically adjusts the bid to optimize a specified performance goal while spending the full budget. # A strategy that automatically adjusts the bid to optimize to your performance goal while spending the full budget. At insertion order level, the markup_type of line items cannot be set to `PARTNER_REVENUE_MODEL_MARKUP_TYPE_CPM`. In addition, when performance_goal_type is one of: * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPA` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPC` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_AV_VIEWED` , the line_item_type of the insertion order line items must be either: * `LINE_ITEM_TYPE_DISPLAY_DEFAULT` * `LINE_ITEM_TYPE_VIDEO_DEFAULT` , and when performance_goal_type is either: * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CIVA` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_IVO_TEN` the line_item_type of the insertion order line items must be `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
      &quot;customBiddingAlgorithmId&quot;: &quot;A String&quot;, # The ID of the Custom Bidding Algorithm used by this strategy. Only applicable when performance_goal_type is set to `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO`.
      &quot;maxAverageCpmBidAmountMicros&quot;: &quot;A String&quot;, # The maximum average CPM that may be bid, in micros of the advertiser&#x27;s currency. Must be greater than or equal to a billable unit of the given currency. For example, 1500000 represents 1.5 standard units of the currency.
      &quot;performanceGoalType&quot;: &quot;A String&quot;, # Required. The type of the performance goal that the bidding strategy tries to minimize while spending the full budget. `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM` is not supported for this strategy.
    },
    &quot;performanceGoalAutoBid&quot;: { # A strategy that automatically adjusts the bid to meet or beat a specified performance goal. # A strategy that automatically adjusts the bid to meet or beat a specified performance goal. It is to be used only for a line item entity.
      &quot;customBiddingAlgorithmId&quot;: &quot;A String&quot;, # The ID of the Custom Bidding Algorithm used by this strategy. Only applicable when performance_goal_type is set to `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO`.
      &quot;maxAverageCpmBidAmountMicros&quot;: &quot;A String&quot;, # The maximum average CPM that may be bid, in micros of the advertiser&#x27;s currency. Must be greater than or equal to a billable unit of the given currency. Not applicable when performance_goal_type is set to `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM`. For example, 1500000 represents 1.5 standard units of the currency.
      &quot;performanceGoalAmountMicros&quot;: &quot;A String&quot;, # Required. The performance goal the bidding strategy will attempt to meet or beat, in micros of the advertiser&#x27;s currency or in micro of the ROAS (Return On Advertising Spend) value which is also based on advertiser&#x27;s currency. Must be greater than or equal to a billable unit of the given currency and smaller or equal to upper bounds. Each performance_goal_type has its upper bound: * when performance_goal_type is `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPA`, upper bound is 10000.00 USD. * when performance_goal_type is `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPC`, upper bound is 1000.00 USD. * when performance_goal_type is `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM`, upper bound is 1000.00 USD. * when performance_goal_type is `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO`, upper bound is 1000.00 and lower bound is 0.01. Example: If set to `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM`, the bid price will be based on the probability that each available impression will be viewable. For example, if viewable CPM target is $2 and an impression is 40% likely to be viewable, the bid price will be $0.80 CPM (40% of $2). For example, 1500000 represents 1.5 standard units of the currency or ROAS value.
      &quot;performanceGoalType&quot;: &quot;A String&quot;, # Required. The type of the performance goal that the bidding strategy will try to meet or beat. For line item level usage, the value must be one of: * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPA` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPC` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO`.
    },
  },
  &quot;budget&quot;: { # Settings that control how insertion order budget is allocated. # Required. The budget allocation settings of the insertion order.
    &quot;automationType&quot;: &quot;A String&quot;, # The type of automation used to manage bid and budget for the insertion order. If this field is unspecified in creation, the value defaults to `INSERTION_ORDER_AUTOMATION_TYPE_NONE`.
    &quot;budgetSegments&quot;: [ # Required. The list of budget segments. Use a budget segment to specify a specific budget for a given period of time an insertion order is running.
      { # Settings that control the budget of a single budget segment.
        &quot;budgetAmountMicros&quot;: &quot;A String&quot;, # Required. The budget amount the insertion order will spend for the given date_range. The amount is in micros. Must be greater than 0. For example, 500000000 represents 500 standard units of the currency.
        &quot;campaignBudgetId&quot;: &quot;A String&quot;, # The budget_id of the campaign budget that this insertion order budget segment is a part of.
        &quot;dateRange&quot;: { # A date range. # Required. The start and end date settings of the budget segment. They are resolved relative to the parent advertiser&#x27;s time zone. * When creating a new budget segment, both `start_date` and `end_date` must be in the future. * An existing budget segment with a `start_date` in the past has a mutable `end_date` but an immutable `start_date`. * `end_date` must be the `start_date` or later, both before the year 2037.
          &quot;endDate&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # The upper bound of the date range, inclusive. Must specify a positive value for `year`, `month`, and `day`.
            &quot;day&quot;: 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn&#x27;t significant.
            &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
            &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
          },
          &quot;startDate&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # The lower bound of the date range, inclusive. Must specify a positive value for `year`, `month`, and `day`.
            &quot;day&quot;: 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn&#x27;t significant.
            &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
            &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
          },
        },
        &quot;description&quot;: &quot;A String&quot;, # The budget segment description. It can be used to enter Purchase Order information for each budget segment and have that information printed on the invoices. Must be UTF-8 encoded with a length of no more than 80 characters.
      },
    ],
    &quot;budgetUnit&quot;: &quot;A String&quot;, # Required. Immutable. The budget unit specifies whether the budget is currency based or impression based.
  },
  &quot;campaignId&quot;: &quot;A String&quot;, # Required. Immutable. The unique ID of the campaign that the insertion order belongs to.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the insertion order. Must be UTF-8 encoded with a maximum size of 240 bytes.
  &quot;entityStatus&quot;: &quot;A String&quot;, # Required. Controls whether or not the insertion order can spend its budget and bid on inventory. * For CreateInsertionOrder method, only `ENTITY_STATUS_DRAFT` is allowed. To activate an insertion order, use UpdateInsertionOrder method and update the status to `ENTITY_STATUS_ACTIVE` after creation. * An insertion order cannot be changed back to `ENTITY_STATUS_DRAFT` status from any other status. * An insertion order cannot be set to `ENTITY_STATUS_ACTIVE` if its parent campaign is not active.
  &quot;frequencyCap&quot;: { # Settings that control the number of times a user may be shown with the same ad during a given time period. # Required. The frequency capping setting of the insertion order.
    &quot;maxImpressions&quot;: 42, # The maximum number of times a user may be shown with the same ad during this period. Must be greater than 0. Required when unlimited is `false`.
    &quot;timeUnit&quot;: &quot;A String&quot;, # The time unit in which the frequency cap will be applied. Required when unlimited is `false`.
    &quot;timeUnitCount&quot;: 42, # The number of time_unit the frequency cap will last. Required when unlimited is `false`. The following restrictions apply based on the value of time_unit: * `TIME_UNIT_LIFETIME` - this field is output only and will default to 1 * `TIME_UNIT_MONTHS` - must be between 1 and 2 * `TIME_UNIT_WEEKS` - must be between 1 and 4 * `TIME_UNIT_DAYS` - must be between 1 and 6 * `TIME_UNIT_HOURS` - must be between 1 and 23 * `TIME_UNIT_MINUTES` - must be between 1 and 59
    &quot;unlimited&quot;: True or False, # Whether unlimited frequency capping is applied. When this field is set to `true`, the remaining frequency cap fields are not applicable.
  },
  &quot;insertionOrderId&quot;: &quot;A String&quot;, # Output only. The unique ID of the insertion order. Assigned by the system.
  &quot;insertionOrderType&quot;: &quot;A String&quot;, # The type of insertion order. If this field is unspecified in creation, the value defaults to `RTB`.
  &quot;integrationDetails&quot;: { # Integration details of an entry. # Additional integration details of the insertion order.
    &quot;details&quot;: &quot;A String&quot;, # Additional details of the entry in string format. Must be UTF-8 encoded with a length of no more than 1000 characters.
    &quot;integrationCode&quot;: &quot;A String&quot;, # An external identifier to be associated with the entry. The integration code will show up together with the entry in many places in the system, for example, reporting. Must be UTF-8 encoded with a length of no more than 500 characters.
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the insertion order.
  &quot;pacing&quot;: { # Settings that control the rate at which a budget is spent. # Required. The budget spending speed setting of the insertion order.
    &quot;dailyMaxImpressions&quot;: &quot;A String&quot;, # Maximum number of impressions to serve every day. Applicable when the budget is impression based. Must be greater than 0.
    &quot;dailyMaxMicros&quot;: &quot;A String&quot;, # Maximum currency amount to spend every day in micros of advertiser&#x27;s currency. Applicable when the budget is currency based. Must be greater than 0. For example, for 1.5 standard unit of the currency, set this field to 1500000. The value assigned will be rounded to whole billable units for the relevant currency by the following rules: any positive value less than a single billable unit will be rounded up to one billable unit and any value larger than a single billable unit will be rounded down to the nearest billable value. For example, if the currency&#x27;s billable unit is 0.01, and this field is set to 10257770, it will round down to 10250000, a value of 10.25. If set to 505, it will round up to 10000, a value of 0.01.
    &quot;pacingPeriod&quot;: &quot;A String&quot;, # Required. The time period in which the pacing budget will be spent. When automatic budget allocation is enabled at the insertion order via auto_budget_allocation, this field is output only and defaults to `PACING_PERIOD_FLIGHT`.
    &quot;pacingType&quot;: &quot;A String&quot;, # Required. The type of pacing that defines how the budget amount will be spent across the pacing_period.
  },
  &quot;partnerCosts&quot;: [ # The partner costs associated with the insertion order. If absent or empty in CreateInsertionOrder method, the newly created insertion order will inherit partner costs from the partner settings.
    { # Settings that control a partner cost. A partner cost is any type of expense involved in running a campaign, other than the costs of purchasing impressions (which is called the media cost) and using third-party audience segment data (data fee). Some examples of partner costs include the fees for using DV360, a third-party ad server, or a third-party ad serving verification service.
      &quot;costType&quot;: &quot;A String&quot;, # Required. The type of the partner cost.
      &quot;feeAmount&quot;: &quot;A String&quot;, # The CPM fee amount in micros of advertiser&#x27;s currency. Applicable when the fee_type is `PARTNER_FEE_TYPE_CPM_FEE`. Must be greater than or equal to 0. For example, for 1.5 standard unit of the advertiser&#x27;s currency, set this field to 1500000.
      &quot;feePercentageMillis&quot;: &quot;A String&quot;, # The media fee percentage in millis (1/1000 of a percent). Applicable when the fee_type is `PARTNER_FEE_TYPE_MEDIA_FEE`. Must be greater than or equal to 0. For example: 100 represents 0.1%.
      &quot;feeType&quot;: &quot;A String&quot;, # Required. The fee type for this partner cost.
      &quot;invoiceType&quot;: &quot;A String&quot;, # The invoice type for this partner cost. * Required when cost_type is one of: - `PARTNER_COST_TYPE_ADLOOX` - `PARTNER_COST_TYPE_DOUBLE_VERIFY` - `PARTNER_COST_TYPE_INTEGRAL_AD_SCIENCE`. * Output only for other types.
    },
  ],
  &quot;performanceGoal&quot;: { # Settings that control the performance goal of a campaign or insertion order. # Required. Performance goal of the insertion order.
    &quot;performanceGoalAmountMicros&quot;: &quot;A String&quot;, # The goal amount, in micros of the advertiser&#x27;s currency. Applicable when performance_goal_type is one of: * `PERFORMANCE_GOAL_TYPE_CPM` * `PERFORMANCE_GOAL_TYPE_CPC` * `PERFORMANCE_GOAL_TYPE_CPA` * `PERFORMANCE_GOAL_TYPE_CPIAVC` * `PERFORMANCE_GOAL_TYPE_VCPM` For example 1500000 represents 1.5 standard units of the currency.
    &quot;performanceGoalPercentageMicros&quot;: &quot;A String&quot;, # The decimal representation of the goal percentage in micros. Applicable when performance_goal_type is one of: * `PERFORMANCE_GOAL_TYPE_CTR` * `PERFORMANCE_GOAL_TYPE_VIEWABILITY` * `PERFORMANCE_GOAL_TYPE_CLICK_CVR` * `PERFORMANCE_GOAL_TYPE_IMPRESSION_CVR` * `PERFORMANCE_GOAL_TYPE_VTR` * `PERFORMANCE_GOAL_TYPE_AUDIO_COMPLETION_RATE` * `PERFORMANCE_GOAL_TYPE_VIDEO_COMPLETION_RATE` For example, 70000 represents 7% (decimal 0.07).
    &quot;performanceGoalString&quot;: &quot;A String&quot;, # A key performance indicator (KPI) string, which can be empty. Must be UTF-8 encoded with a length of no more than 100 characters. Applicable when performance_goal_type is set to `PERFORMANCE_GOAL_TYPE_OTHER`.
    &quot;performanceGoalType&quot;: &quot;A String&quot;, # Required. The type of the performance goal.
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the insertion order was last updated. Assigned by the system.
}

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

Returns:
  An object of the form:

    { # A single insertion order.
  &quot;advertiserId&quot;: &quot;A String&quot;, # Output only. The unique ID of the advertiser the insertion order belongs to.
  &quot;bidStrategy&quot;: { # Settings that control the bid strategy. Bid strategy determines the bid price. # The bidding strategy of the insertion order. By default, fixed_bid is set.
    &quot;fixedBid&quot;: { # A strategy that uses a fixed bidding price. # A strategy that uses a fixed bid price.
      &quot;bidAmountMicros&quot;: &quot;A String&quot;, # The fixed bid amount, in micros of the advertiser&#x27;s currency. For insertion order entity, bid_amount_micros should be set as 0. For line item entity, bid_amount_micros must be greater than or equal to billable unit of the given currency and smaller than or equal to the upper limit 1000000000. For example, 1500000 represents 1.5 standard units of the currency.
    },
    &quot;maximizeSpendAutoBid&quot;: { # A strategy that automatically adjusts the bid to optimize a specified performance goal while spending the full budget. # A strategy that automatically adjusts the bid to optimize to your performance goal while spending the full budget. At insertion order level, the markup_type of line items cannot be set to `PARTNER_REVENUE_MODEL_MARKUP_TYPE_CPM`. In addition, when performance_goal_type is one of: * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPA` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPC` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_AV_VIEWED` , the line_item_type of the insertion order line items must be either: * `LINE_ITEM_TYPE_DISPLAY_DEFAULT` * `LINE_ITEM_TYPE_VIDEO_DEFAULT` , and when performance_goal_type is either: * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CIVA` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_IVO_TEN` the line_item_type of the insertion order line items must be `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
      &quot;customBiddingAlgorithmId&quot;: &quot;A String&quot;, # The ID of the Custom Bidding Algorithm used by this strategy. Only applicable when performance_goal_type is set to `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO`.
      &quot;maxAverageCpmBidAmountMicros&quot;: &quot;A String&quot;, # The maximum average CPM that may be bid, in micros of the advertiser&#x27;s currency. Must be greater than or equal to a billable unit of the given currency. For example, 1500000 represents 1.5 standard units of the currency.
      &quot;performanceGoalType&quot;: &quot;A String&quot;, # Required. The type of the performance goal that the bidding strategy tries to minimize while spending the full budget. `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM` is not supported for this strategy.
    },
    &quot;performanceGoalAutoBid&quot;: { # A strategy that automatically adjusts the bid to meet or beat a specified performance goal. # A strategy that automatically adjusts the bid to meet or beat a specified performance goal. It is to be used only for a line item entity.
      &quot;customBiddingAlgorithmId&quot;: &quot;A String&quot;, # The ID of the Custom Bidding Algorithm used by this strategy. Only applicable when performance_goal_type is set to `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO`.
      &quot;maxAverageCpmBidAmountMicros&quot;: &quot;A String&quot;, # The maximum average CPM that may be bid, in micros of the advertiser&#x27;s currency. Must be greater than or equal to a billable unit of the given currency. Not applicable when performance_goal_type is set to `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM`. For example, 1500000 represents 1.5 standard units of the currency.
      &quot;performanceGoalAmountMicros&quot;: &quot;A String&quot;, # Required. The performance goal the bidding strategy will attempt to meet or beat, in micros of the advertiser&#x27;s currency or in micro of the ROAS (Return On Advertising Spend) value which is also based on advertiser&#x27;s currency. Must be greater than or equal to a billable unit of the given currency and smaller or equal to upper bounds. Each performance_goal_type has its upper bound: * when performance_goal_type is `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPA`, upper bound is 10000.00 USD. * when performance_goal_type is `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPC`, upper bound is 1000.00 USD. * when performance_goal_type is `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM`, upper bound is 1000.00 USD. * when performance_goal_type is `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO`, upper bound is 1000.00 and lower bound is 0.01. Example: If set to `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM`, the bid price will be based on the probability that each available impression will be viewable. For example, if viewable CPM target is $2 and an impression is 40% likely to be viewable, the bid price will be $0.80 CPM (40% of $2). For example, 1500000 represents 1.5 standard units of the currency or ROAS value.
      &quot;performanceGoalType&quot;: &quot;A String&quot;, # Required. The type of the performance goal that the bidding strategy will try to meet or beat. For line item level usage, the value must be one of: * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPA` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPC` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO`.
    },
  },
  &quot;budget&quot;: { # Settings that control how insertion order budget is allocated. # Required. The budget allocation settings of the insertion order.
    &quot;automationType&quot;: &quot;A String&quot;, # The type of automation used to manage bid and budget for the insertion order. If this field is unspecified in creation, the value defaults to `INSERTION_ORDER_AUTOMATION_TYPE_NONE`.
    &quot;budgetSegments&quot;: [ # Required. The list of budget segments. Use a budget segment to specify a specific budget for a given period of time an insertion order is running.
      { # Settings that control the budget of a single budget segment.
        &quot;budgetAmountMicros&quot;: &quot;A String&quot;, # Required. The budget amount the insertion order will spend for the given date_range. The amount is in micros. Must be greater than 0. For example, 500000000 represents 500 standard units of the currency.
        &quot;campaignBudgetId&quot;: &quot;A String&quot;, # The budget_id of the campaign budget that this insertion order budget segment is a part of.
        &quot;dateRange&quot;: { # A date range. # Required. The start and end date settings of the budget segment. They are resolved relative to the parent advertiser&#x27;s time zone. * When creating a new budget segment, both `start_date` and `end_date` must be in the future. * An existing budget segment with a `start_date` in the past has a mutable `end_date` but an immutable `start_date`. * `end_date` must be the `start_date` or later, both before the year 2037.
          &quot;endDate&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # The upper bound of the date range, inclusive. Must specify a positive value for `year`, `month`, and `day`.
            &quot;day&quot;: 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn&#x27;t significant.
            &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
            &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
          },
          &quot;startDate&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # The lower bound of the date range, inclusive. Must specify a positive value for `year`, `month`, and `day`.
            &quot;day&quot;: 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn&#x27;t significant.
            &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
            &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
          },
        },
        &quot;description&quot;: &quot;A String&quot;, # The budget segment description. It can be used to enter Purchase Order information for each budget segment and have that information printed on the invoices. Must be UTF-8 encoded with a length of no more than 80 characters.
      },
    ],
    &quot;budgetUnit&quot;: &quot;A String&quot;, # Required. Immutable. The budget unit specifies whether the budget is currency based or impression based.
  },
  &quot;campaignId&quot;: &quot;A String&quot;, # Required. Immutable. The unique ID of the campaign that the insertion order belongs to.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the insertion order. Must be UTF-8 encoded with a maximum size of 240 bytes.
  &quot;entityStatus&quot;: &quot;A String&quot;, # Required. Controls whether or not the insertion order can spend its budget and bid on inventory. * For CreateInsertionOrder method, only `ENTITY_STATUS_DRAFT` is allowed. To activate an insertion order, use UpdateInsertionOrder method and update the status to `ENTITY_STATUS_ACTIVE` after creation. * An insertion order cannot be changed back to `ENTITY_STATUS_DRAFT` status from any other status. * An insertion order cannot be set to `ENTITY_STATUS_ACTIVE` if its parent campaign is not active.
  &quot;frequencyCap&quot;: { # Settings that control the number of times a user may be shown with the same ad during a given time period. # Required. The frequency capping setting of the insertion order.
    &quot;maxImpressions&quot;: 42, # The maximum number of times a user may be shown with the same ad during this period. Must be greater than 0. Required when unlimited is `false`.
    &quot;timeUnit&quot;: &quot;A String&quot;, # The time unit in which the frequency cap will be applied. Required when unlimited is `false`.
    &quot;timeUnitCount&quot;: 42, # The number of time_unit the frequency cap will last. Required when unlimited is `false`. The following restrictions apply based on the value of time_unit: * `TIME_UNIT_LIFETIME` - this field is output only and will default to 1 * `TIME_UNIT_MONTHS` - must be between 1 and 2 * `TIME_UNIT_WEEKS` - must be between 1 and 4 * `TIME_UNIT_DAYS` - must be between 1 and 6 * `TIME_UNIT_HOURS` - must be between 1 and 23 * `TIME_UNIT_MINUTES` - must be between 1 and 59
    &quot;unlimited&quot;: True or False, # Whether unlimited frequency capping is applied. When this field is set to `true`, the remaining frequency cap fields are not applicable.
  },
  &quot;insertionOrderId&quot;: &quot;A String&quot;, # Output only. The unique ID of the insertion order. Assigned by the system.
  &quot;insertionOrderType&quot;: &quot;A String&quot;, # The type of insertion order. If this field is unspecified in creation, the value defaults to `RTB`.
  &quot;integrationDetails&quot;: { # Integration details of an entry. # Additional integration details of the insertion order.
    &quot;details&quot;: &quot;A String&quot;, # Additional details of the entry in string format. Must be UTF-8 encoded with a length of no more than 1000 characters.
    &quot;integrationCode&quot;: &quot;A String&quot;, # An external identifier to be associated with the entry. The integration code will show up together with the entry in many places in the system, for example, reporting. Must be UTF-8 encoded with a length of no more than 500 characters.
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the insertion order.
  &quot;pacing&quot;: { # Settings that control the rate at which a budget is spent. # Required. The budget spending speed setting of the insertion order.
    &quot;dailyMaxImpressions&quot;: &quot;A String&quot;, # Maximum number of impressions to serve every day. Applicable when the budget is impression based. Must be greater than 0.
    &quot;dailyMaxMicros&quot;: &quot;A String&quot;, # Maximum currency amount to spend every day in micros of advertiser&#x27;s currency. Applicable when the budget is currency based. Must be greater than 0. For example, for 1.5 standard unit of the currency, set this field to 1500000. The value assigned will be rounded to whole billable units for the relevant currency by the following rules: any positive value less than a single billable unit will be rounded up to one billable unit and any value larger than a single billable unit will be rounded down to the nearest billable value. For example, if the currency&#x27;s billable unit is 0.01, and this field is set to 10257770, it will round down to 10250000, a value of 10.25. If set to 505, it will round up to 10000, a value of 0.01.
    &quot;pacingPeriod&quot;: &quot;A String&quot;, # Required. The time period in which the pacing budget will be spent. When automatic budget allocation is enabled at the insertion order via auto_budget_allocation, this field is output only and defaults to `PACING_PERIOD_FLIGHT`.
    &quot;pacingType&quot;: &quot;A String&quot;, # Required. The type of pacing that defines how the budget amount will be spent across the pacing_period.
  },
  &quot;partnerCosts&quot;: [ # The partner costs associated with the insertion order. If absent or empty in CreateInsertionOrder method, the newly created insertion order will inherit partner costs from the partner settings.
    { # Settings that control a partner cost. A partner cost is any type of expense involved in running a campaign, other than the costs of purchasing impressions (which is called the media cost) and using third-party audience segment data (data fee). Some examples of partner costs include the fees for using DV360, a third-party ad server, or a third-party ad serving verification service.
      &quot;costType&quot;: &quot;A String&quot;, # Required. The type of the partner cost.
      &quot;feeAmount&quot;: &quot;A String&quot;, # The CPM fee amount in micros of advertiser&#x27;s currency. Applicable when the fee_type is `PARTNER_FEE_TYPE_CPM_FEE`. Must be greater than or equal to 0. For example, for 1.5 standard unit of the advertiser&#x27;s currency, set this field to 1500000.
      &quot;feePercentageMillis&quot;: &quot;A String&quot;, # The media fee percentage in millis (1/1000 of a percent). Applicable when the fee_type is `PARTNER_FEE_TYPE_MEDIA_FEE`. Must be greater than or equal to 0. For example: 100 represents 0.1%.
      &quot;feeType&quot;: &quot;A String&quot;, # Required. The fee type for this partner cost.
      &quot;invoiceType&quot;: &quot;A String&quot;, # The invoice type for this partner cost. * Required when cost_type is one of: - `PARTNER_COST_TYPE_ADLOOX` - `PARTNER_COST_TYPE_DOUBLE_VERIFY` - `PARTNER_COST_TYPE_INTEGRAL_AD_SCIENCE`. * Output only for other types.
    },
  ],
  &quot;performanceGoal&quot;: { # Settings that control the performance goal of a campaign or insertion order. # Required. Performance goal of the insertion order.
    &quot;performanceGoalAmountMicros&quot;: &quot;A String&quot;, # The goal amount, in micros of the advertiser&#x27;s currency. Applicable when performance_goal_type is one of: * `PERFORMANCE_GOAL_TYPE_CPM` * `PERFORMANCE_GOAL_TYPE_CPC` * `PERFORMANCE_GOAL_TYPE_CPA` * `PERFORMANCE_GOAL_TYPE_CPIAVC` * `PERFORMANCE_GOAL_TYPE_VCPM` For example 1500000 represents 1.5 standard units of the currency.
    &quot;performanceGoalPercentageMicros&quot;: &quot;A String&quot;, # The decimal representation of the goal percentage in micros. Applicable when performance_goal_type is one of: * `PERFORMANCE_GOAL_TYPE_CTR` * `PERFORMANCE_GOAL_TYPE_VIEWABILITY` * `PERFORMANCE_GOAL_TYPE_CLICK_CVR` * `PERFORMANCE_GOAL_TYPE_IMPRESSION_CVR` * `PERFORMANCE_GOAL_TYPE_VTR` * `PERFORMANCE_GOAL_TYPE_AUDIO_COMPLETION_RATE` * `PERFORMANCE_GOAL_TYPE_VIDEO_COMPLETION_RATE` For example, 70000 represents 7% (decimal 0.07).
    &quot;performanceGoalString&quot;: &quot;A String&quot;, # A key performance indicator (KPI) string, which can be empty. Must be UTF-8 encoded with a length of no more than 100 characters. Applicable when performance_goal_type is set to `PERFORMANCE_GOAL_TYPE_OTHER`.
    &quot;performanceGoalType&quot;: &quot;A String&quot;, # Required. The type of the performance goal.
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the insertion order was last updated. Assigned by the system.
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(advertiserId, insertionOrderId, x__xgafv=None)</code>
  <pre>Deletes an insertion order. Returns error code `NOT_FOUND` if the insertion order does not exist. The insertion order should be archived first, i.e. set entity_status to `ENTITY_STATUS_ARCHIVED`, to be able to delete it.

Args:
  advertiserId: string, The ID of the advertiser this insertion order belongs to. (required)
  insertionOrderId: string, The ID of the insertion order we need to delete. (required)
  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="get">get(advertiserId, insertionOrderId, x__xgafv=None)</code>
  <pre>Gets an insertion order. Returns error code `NOT_FOUND` if the insertion order does not exist.

Args:
  advertiserId: string, Required. The ID of the advertiser this insertion order belongs to. (required)
  insertionOrderId: string, Required. The ID of the insertion order to fetch. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A single insertion order.
  &quot;advertiserId&quot;: &quot;A String&quot;, # Output only. The unique ID of the advertiser the insertion order belongs to.
  &quot;bidStrategy&quot;: { # Settings that control the bid strategy. Bid strategy determines the bid price. # The bidding strategy of the insertion order. By default, fixed_bid is set.
    &quot;fixedBid&quot;: { # A strategy that uses a fixed bidding price. # A strategy that uses a fixed bid price.
      &quot;bidAmountMicros&quot;: &quot;A String&quot;, # The fixed bid amount, in micros of the advertiser&#x27;s currency. For insertion order entity, bid_amount_micros should be set as 0. For line item entity, bid_amount_micros must be greater than or equal to billable unit of the given currency and smaller than or equal to the upper limit 1000000000. For example, 1500000 represents 1.5 standard units of the currency.
    },
    &quot;maximizeSpendAutoBid&quot;: { # A strategy that automatically adjusts the bid to optimize a specified performance goal while spending the full budget. # A strategy that automatically adjusts the bid to optimize to your performance goal while spending the full budget. At insertion order level, the markup_type of line items cannot be set to `PARTNER_REVENUE_MODEL_MARKUP_TYPE_CPM`. In addition, when performance_goal_type is one of: * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPA` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPC` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_AV_VIEWED` , the line_item_type of the insertion order line items must be either: * `LINE_ITEM_TYPE_DISPLAY_DEFAULT` * `LINE_ITEM_TYPE_VIDEO_DEFAULT` , and when performance_goal_type is either: * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CIVA` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_IVO_TEN` the line_item_type of the insertion order line items must be `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
      &quot;customBiddingAlgorithmId&quot;: &quot;A String&quot;, # The ID of the Custom Bidding Algorithm used by this strategy. Only applicable when performance_goal_type is set to `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO`.
      &quot;maxAverageCpmBidAmountMicros&quot;: &quot;A String&quot;, # The maximum average CPM that may be bid, in micros of the advertiser&#x27;s currency. Must be greater than or equal to a billable unit of the given currency. For example, 1500000 represents 1.5 standard units of the currency.
      &quot;performanceGoalType&quot;: &quot;A String&quot;, # Required. The type of the performance goal that the bidding strategy tries to minimize while spending the full budget. `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM` is not supported for this strategy.
    },
    &quot;performanceGoalAutoBid&quot;: { # A strategy that automatically adjusts the bid to meet or beat a specified performance goal. # A strategy that automatically adjusts the bid to meet or beat a specified performance goal. It is to be used only for a line item entity.
      &quot;customBiddingAlgorithmId&quot;: &quot;A String&quot;, # The ID of the Custom Bidding Algorithm used by this strategy. Only applicable when performance_goal_type is set to `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO`.
      &quot;maxAverageCpmBidAmountMicros&quot;: &quot;A String&quot;, # The maximum average CPM that may be bid, in micros of the advertiser&#x27;s currency. Must be greater than or equal to a billable unit of the given currency. Not applicable when performance_goal_type is set to `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM`. For example, 1500000 represents 1.5 standard units of the currency.
      &quot;performanceGoalAmountMicros&quot;: &quot;A String&quot;, # Required. The performance goal the bidding strategy will attempt to meet or beat, in micros of the advertiser&#x27;s currency or in micro of the ROAS (Return On Advertising Spend) value which is also based on advertiser&#x27;s currency. Must be greater than or equal to a billable unit of the given currency and smaller or equal to upper bounds. Each performance_goal_type has its upper bound: * when performance_goal_type is `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPA`, upper bound is 10000.00 USD. * when performance_goal_type is `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPC`, upper bound is 1000.00 USD. * when performance_goal_type is `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM`, upper bound is 1000.00 USD. * when performance_goal_type is `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO`, upper bound is 1000.00 and lower bound is 0.01. Example: If set to `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM`, the bid price will be based on the probability that each available impression will be viewable. For example, if viewable CPM target is $2 and an impression is 40% likely to be viewable, the bid price will be $0.80 CPM (40% of $2). For example, 1500000 represents 1.5 standard units of the currency or ROAS value.
      &quot;performanceGoalType&quot;: &quot;A String&quot;, # Required. The type of the performance goal that the bidding strategy will try to meet or beat. For line item level usage, the value must be one of: * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPA` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPC` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO`.
    },
  },
  &quot;budget&quot;: { # Settings that control how insertion order budget is allocated. # Required. The budget allocation settings of the insertion order.
    &quot;automationType&quot;: &quot;A String&quot;, # The type of automation used to manage bid and budget for the insertion order. If this field is unspecified in creation, the value defaults to `INSERTION_ORDER_AUTOMATION_TYPE_NONE`.
    &quot;budgetSegments&quot;: [ # Required. The list of budget segments. Use a budget segment to specify a specific budget for a given period of time an insertion order is running.
      { # Settings that control the budget of a single budget segment.
        &quot;budgetAmountMicros&quot;: &quot;A String&quot;, # Required. The budget amount the insertion order will spend for the given date_range. The amount is in micros. Must be greater than 0. For example, 500000000 represents 500 standard units of the currency.
        &quot;campaignBudgetId&quot;: &quot;A String&quot;, # The budget_id of the campaign budget that this insertion order budget segment is a part of.
        &quot;dateRange&quot;: { # A date range. # Required. The start and end date settings of the budget segment. They are resolved relative to the parent advertiser&#x27;s time zone. * When creating a new budget segment, both `start_date` and `end_date` must be in the future. * An existing budget segment with a `start_date` in the past has a mutable `end_date` but an immutable `start_date`. * `end_date` must be the `start_date` or later, both before the year 2037.
          &quot;endDate&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # The upper bound of the date range, inclusive. Must specify a positive value for `year`, `month`, and `day`.
            &quot;day&quot;: 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn&#x27;t significant.
            &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
            &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
          },
          &quot;startDate&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # The lower bound of the date range, inclusive. Must specify a positive value for `year`, `month`, and `day`.
            &quot;day&quot;: 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn&#x27;t significant.
            &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
            &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
          },
        },
        &quot;description&quot;: &quot;A String&quot;, # The budget segment description. It can be used to enter Purchase Order information for each budget segment and have that information printed on the invoices. Must be UTF-8 encoded with a length of no more than 80 characters.
      },
    ],
    &quot;budgetUnit&quot;: &quot;A String&quot;, # Required. Immutable. The budget unit specifies whether the budget is currency based or impression based.
  },
  &quot;campaignId&quot;: &quot;A String&quot;, # Required. Immutable. The unique ID of the campaign that the insertion order belongs to.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the insertion order. Must be UTF-8 encoded with a maximum size of 240 bytes.
  &quot;entityStatus&quot;: &quot;A String&quot;, # Required. Controls whether or not the insertion order can spend its budget and bid on inventory. * For CreateInsertionOrder method, only `ENTITY_STATUS_DRAFT` is allowed. To activate an insertion order, use UpdateInsertionOrder method and update the status to `ENTITY_STATUS_ACTIVE` after creation. * An insertion order cannot be changed back to `ENTITY_STATUS_DRAFT` status from any other status. * An insertion order cannot be set to `ENTITY_STATUS_ACTIVE` if its parent campaign is not active.
  &quot;frequencyCap&quot;: { # Settings that control the number of times a user may be shown with the same ad during a given time period. # Required. The frequency capping setting of the insertion order.
    &quot;maxImpressions&quot;: 42, # The maximum number of times a user may be shown with the same ad during this period. Must be greater than 0. Required when unlimited is `false`.
    &quot;timeUnit&quot;: &quot;A String&quot;, # The time unit in which the frequency cap will be applied. Required when unlimited is `false`.
    &quot;timeUnitCount&quot;: 42, # The number of time_unit the frequency cap will last. Required when unlimited is `false`. The following restrictions apply based on the value of time_unit: * `TIME_UNIT_LIFETIME` - this field is output only and will default to 1 * `TIME_UNIT_MONTHS` - must be between 1 and 2 * `TIME_UNIT_WEEKS` - must be between 1 and 4 * `TIME_UNIT_DAYS` - must be between 1 and 6 * `TIME_UNIT_HOURS` - must be between 1 and 23 * `TIME_UNIT_MINUTES` - must be between 1 and 59
    &quot;unlimited&quot;: True or False, # Whether unlimited frequency capping is applied. When this field is set to `true`, the remaining frequency cap fields are not applicable.
  },
  &quot;insertionOrderId&quot;: &quot;A String&quot;, # Output only. The unique ID of the insertion order. Assigned by the system.
  &quot;insertionOrderType&quot;: &quot;A String&quot;, # The type of insertion order. If this field is unspecified in creation, the value defaults to `RTB`.
  &quot;integrationDetails&quot;: { # Integration details of an entry. # Additional integration details of the insertion order.
    &quot;details&quot;: &quot;A String&quot;, # Additional details of the entry in string format. Must be UTF-8 encoded with a length of no more than 1000 characters.
    &quot;integrationCode&quot;: &quot;A String&quot;, # An external identifier to be associated with the entry. The integration code will show up together with the entry in many places in the system, for example, reporting. Must be UTF-8 encoded with a length of no more than 500 characters.
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the insertion order.
  &quot;pacing&quot;: { # Settings that control the rate at which a budget is spent. # Required. The budget spending speed setting of the insertion order.
    &quot;dailyMaxImpressions&quot;: &quot;A String&quot;, # Maximum number of impressions to serve every day. Applicable when the budget is impression based. Must be greater than 0.
    &quot;dailyMaxMicros&quot;: &quot;A String&quot;, # Maximum currency amount to spend every day in micros of advertiser&#x27;s currency. Applicable when the budget is currency based. Must be greater than 0. For example, for 1.5 standard unit of the currency, set this field to 1500000. The value assigned will be rounded to whole billable units for the relevant currency by the following rules: any positive value less than a single billable unit will be rounded up to one billable unit and any value larger than a single billable unit will be rounded down to the nearest billable value. For example, if the currency&#x27;s billable unit is 0.01, and this field is set to 10257770, it will round down to 10250000, a value of 10.25. If set to 505, it will round up to 10000, a value of 0.01.
    &quot;pacingPeriod&quot;: &quot;A String&quot;, # Required. The time period in which the pacing budget will be spent. When automatic budget allocation is enabled at the insertion order via auto_budget_allocation, this field is output only and defaults to `PACING_PERIOD_FLIGHT`.
    &quot;pacingType&quot;: &quot;A String&quot;, # Required. The type of pacing that defines how the budget amount will be spent across the pacing_period.
  },
  &quot;partnerCosts&quot;: [ # The partner costs associated with the insertion order. If absent or empty in CreateInsertionOrder method, the newly created insertion order will inherit partner costs from the partner settings.
    { # Settings that control a partner cost. A partner cost is any type of expense involved in running a campaign, other than the costs of purchasing impressions (which is called the media cost) and using third-party audience segment data (data fee). Some examples of partner costs include the fees for using DV360, a third-party ad server, or a third-party ad serving verification service.
      &quot;costType&quot;: &quot;A String&quot;, # Required. The type of the partner cost.
      &quot;feeAmount&quot;: &quot;A String&quot;, # The CPM fee amount in micros of advertiser&#x27;s currency. Applicable when the fee_type is `PARTNER_FEE_TYPE_CPM_FEE`. Must be greater than or equal to 0. For example, for 1.5 standard unit of the advertiser&#x27;s currency, set this field to 1500000.
      &quot;feePercentageMillis&quot;: &quot;A String&quot;, # The media fee percentage in millis (1/1000 of a percent). Applicable when the fee_type is `PARTNER_FEE_TYPE_MEDIA_FEE`. Must be greater than or equal to 0. For example: 100 represents 0.1%.
      &quot;feeType&quot;: &quot;A String&quot;, # Required. The fee type for this partner cost.
      &quot;invoiceType&quot;: &quot;A String&quot;, # The invoice type for this partner cost. * Required when cost_type is one of: - `PARTNER_COST_TYPE_ADLOOX` - `PARTNER_COST_TYPE_DOUBLE_VERIFY` - `PARTNER_COST_TYPE_INTEGRAL_AD_SCIENCE`. * Output only for other types.
    },
  ],
  &quot;performanceGoal&quot;: { # Settings that control the performance goal of a campaign or insertion order. # Required. Performance goal of the insertion order.
    &quot;performanceGoalAmountMicros&quot;: &quot;A String&quot;, # The goal amount, in micros of the advertiser&#x27;s currency. Applicable when performance_goal_type is one of: * `PERFORMANCE_GOAL_TYPE_CPM` * `PERFORMANCE_GOAL_TYPE_CPC` * `PERFORMANCE_GOAL_TYPE_CPA` * `PERFORMANCE_GOAL_TYPE_CPIAVC` * `PERFORMANCE_GOAL_TYPE_VCPM` For example 1500000 represents 1.5 standard units of the currency.
    &quot;performanceGoalPercentageMicros&quot;: &quot;A String&quot;, # The decimal representation of the goal percentage in micros. Applicable when performance_goal_type is one of: * `PERFORMANCE_GOAL_TYPE_CTR` * `PERFORMANCE_GOAL_TYPE_VIEWABILITY` * `PERFORMANCE_GOAL_TYPE_CLICK_CVR` * `PERFORMANCE_GOAL_TYPE_IMPRESSION_CVR` * `PERFORMANCE_GOAL_TYPE_VTR` * `PERFORMANCE_GOAL_TYPE_AUDIO_COMPLETION_RATE` * `PERFORMANCE_GOAL_TYPE_VIDEO_COMPLETION_RATE` For example, 70000 represents 7% (decimal 0.07).
    &quot;performanceGoalString&quot;: &quot;A String&quot;, # A key performance indicator (KPI) string, which can be empty. Must be UTF-8 encoded with a length of no more than 100 characters. Applicable when performance_goal_type is set to `PERFORMANCE_GOAL_TYPE_OTHER`.
    &quot;performanceGoalType&quot;: &quot;A String&quot;, # Required. The type of the performance goal.
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the insertion order was last updated. Assigned by the system.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(advertiserId, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists insertion orders in an advertiser. The order is defined by the order_by parameter. If a filter by entity_status is not specified, insertion orders with `ENTITY_STATUS_ARCHIVED` will not be included in the results.

Args:
  advertiserId: string, Required. The ID of the advertiser to list insertion orders for. (required)
  filter: string, Allows filtering by insertion order 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 used on `budget.budget_segments.date_range.end_date` must be LESS THAN (&lt;). * The operator used on `updateTime` must be `GREATER THAN OR EQUAL TO (&gt;=)` or `LESS THAN OR EQUAL TO (&lt;=)`. * The operators used on all other fields must be `EQUALS (=)`. * Supported fields: - `campaignId` - `displayName` - `entityStatus` - `budget.budget_segments.date_range.end_date` (input as YYYY-MM-DD) - `updateTime` (input in ISO 8601 format, or YYYY-MM-DDTHH:MM:SSZ) Examples: * All insertion orders under a campaign: `campaignId=&quot;1234&quot;` * All `ENTITY_STATUS_ACTIVE` or `ENTITY_STATUS_PAUSED` insertion orders under an advertiser: `(entityStatus=&quot;ENTITY_STATUS_ACTIVE&quot; OR entityStatus=&quot;ENTITY_STATUS_PAUSED&quot;)` * All insertion orders whose budget segments&#x27; dates end before March 28, 2019: `budget.budget_segments.date_range.end_date&lt;&quot;2019-03-28&quot;` * All insertion orders with an update time less than or equal to `2020-11-04T18:54:47Z (format of ISO 8601)`: `updateTime&lt;=&quot;2020-11-04T18:54:47Z&quot;` * All insertion orders with an update time greater than or equal to `2020-11-04T18:54:47Z (format of ISO 8601)`: `updateTime&gt;=&quot;2020-11-04T18:54:47Z&quot;` The length of this field should be no more than 500 characters.
  orderBy: string, Field by which to sort the list. Acceptable values are: * &quot;displayName&quot; (default) * &quot;entityStatus&quot; * &quot;updateTime&quot; 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. Example: `displayName desc`.
  pageSize: integer, Requested page size. Must be between `1` and `100`. If unspecified will default to `100`. Returns error code `INVALID_ARGUMENT` if an invalid value is specified.
  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 `ListInsertionOrders` method. If not specified, the first page of results will be returned.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;insertionOrders&quot;: [ # The list of insertion orders. This list will be absent if empty.
    { # A single insertion order.
      &quot;advertiserId&quot;: &quot;A String&quot;, # Output only. The unique ID of the advertiser the insertion order belongs to.
      &quot;bidStrategy&quot;: { # Settings that control the bid strategy. Bid strategy determines the bid price. # The bidding strategy of the insertion order. By default, fixed_bid is set.
        &quot;fixedBid&quot;: { # A strategy that uses a fixed bidding price. # A strategy that uses a fixed bid price.
          &quot;bidAmountMicros&quot;: &quot;A String&quot;, # The fixed bid amount, in micros of the advertiser&#x27;s currency. For insertion order entity, bid_amount_micros should be set as 0. For line item entity, bid_amount_micros must be greater than or equal to billable unit of the given currency and smaller than or equal to the upper limit 1000000000. For example, 1500000 represents 1.5 standard units of the currency.
        },
        &quot;maximizeSpendAutoBid&quot;: { # A strategy that automatically adjusts the bid to optimize a specified performance goal while spending the full budget. # A strategy that automatically adjusts the bid to optimize to your performance goal while spending the full budget. At insertion order level, the markup_type of line items cannot be set to `PARTNER_REVENUE_MODEL_MARKUP_TYPE_CPM`. In addition, when performance_goal_type is one of: * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPA` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPC` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_AV_VIEWED` , the line_item_type of the insertion order line items must be either: * `LINE_ITEM_TYPE_DISPLAY_DEFAULT` * `LINE_ITEM_TYPE_VIDEO_DEFAULT` , and when performance_goal_type is either: * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CIVA` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_IVO_TEN` the line_item_type of the insertion order line items must be `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
          &quot;customBiddingAlgorithmId&quot;: &quot;A String&quot;, # The ID of the Custom Bidding Algorithm used by this strategy. Only applicable when performance_goal_type is set to `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO`.
          &quot;maxAverageCpmBidAmountMicros&quot;: &quot;A String&quot;, # The maximum average CPM that may be bid, in micros of the advertiser&#x27;s currency. Must be greater than or equal to a billable unit of the given currency. For example, 1500000 represents 1.5 standard units of the currency.
          &quot;performanceGoalType&quot;: &quot;A String&quot;, # Required. The type of the performance goal that the bidding strategy tries to minimize while spending the full budget. `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM` is not supported for this strategy.
        },
        &quot;performanceGoalAutoBid&quot;: { # A strategy that automatically adjusts the bid to meet or beat a specified performance goal. # A strategy that automatically adjusts the bid to meet or beat a specified performance goal. It is to be used only for a line item entity.
          &quot;customBiddingAlgorithmId&quot;: &quot;A String&quot;, # The ID of the Custom Bidding Algorithm used by this strategy. Only applicable when performance_goal_type is set to `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO`.
          &quot;maxAverageCpmBidAmountMicros&quot;: &quot;A String&quot;, # The maximum average CPM that may be bid, in micros of the advertiser&#x27;s currency. Must be greater than or equal to a billable unit of the given currency. Not applicable when performance_goal_type is set to `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM`. For example, 1500000 represents 1.5 standard units of the currency.
          &quot;performanceGoalAmountMicros&quot;: &quot;A String&quot;, # Required. The performance goal the bidding strategy will attempt to meet or beat, in micros of the advertiser&#x27;s currency or in micro of the ROAS (Return On Advertising Spend) value which is also based on advertiser&#x27;s currency. Must be greater than or equal to a billable unit of the given currency and smaller or equal to upper bounds. Each performance_goal_type has its upper bound: * when performance_goal_type is `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPA`, upper bound is 10000.00 USD. * when performance_goal_type is `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPC`, upper bound is 1000.00 USD. * when performance_goal_type is `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM`, upper bound is 1000.00 USD. * when performance_goal_type is `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO`, upper bound is 1000.00 and lower bound is 0.01. Example: If set to `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM`, the bid price will be based on the probability that each available impression will be viewable. For example, if viewable CPM target is $2 and an impression is 40% likely to be viewable, the bid price will be $0.80 CPM (40% of $2). For example, 1500000 represents 1.5 standard units of the currency or ROAS value.
          &quot;performanceGoalType&quot;: &quot;A String&quot;, # Required. The type of the performance goal that the bidding strategy will try to meet or beat. For line item level usage, the value must be one of: * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPA` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPC` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO`.
        },
      },
      &quot;budget&quot;: { # Settings that control how insertion order budget is allocated. # Required. The budget allocation settings of the insertion order.
        &quot;automationType&quot;: &quot;A String&quot;, # The type of automation used to manage bid and budget for the insertion order. If this field is unspecified in creation, the value defaults to `INSERTION_ORDER_AUTOMATION_TYPE_NONE`.
        &quot;budgetSegments&quot;: [ # Required. The list of budget segments. Use a budget segment to specify a specific budget for a given period of time an insertion order is running.
          { # Settings that control the budget of a single budget segment.
            &quot;budgetAmountMicros&quot;: &quot;A String&quot;, # Required. The budget amount the insertion order will spend for the given date_range. The amount is in micros. Must be greater than 0. For example, 500000000 represents 500 standard units of the currency.
            &quot;campaignBudgetId&quot;: &quot;A String&quot;, # The budget_id of the campaign budget that this insertion order budget segment is a part of.
            &quot;dateRange&quot;: { # A date range. # Required. The start and end date settings of the budget segment. They are resolved relative to the parent advertiser&#x27;s time zone. * When creating a new budget segment, both `start_date` and `end_date` must be in the future. * An existing budget segment with a `start_date` in the past has a mutable `end_date` but an immutable `start_date`. * `end_date` must be the `start_date` or later, both before the year 2037.
              &quot;endDate&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # The upper bound of the date range, inclusive. Must specify a positive value for `year`, `month`, and `day`.
                &quot;day&quot;: 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn&#x27;t significant.
                &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
                &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
              },
              &quot;startDate&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # The lower bound of the date range, inclusive. Must specify a positive value for `year`, `month`, and `day`.
                &quot;day&quot;: 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn&#x27;t significant.
                &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
                &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
              },
            },
            &quot;description&quot;: &quot;A String&quot;, # The budget segment description. It can be used to enter Purchase Order information for each budget segment and have that information printed on the invoices. Must be UTF-8 encoded with a length of no more than 80 characters.
          },
        ],
        &quot;budgetUnit&quot;: &quot;A String&quot;, # Required. Immutable. The budget unit specifies whether the budget is currency based or impression based.
      },
      &quot;campaignId&quot;: &quot;A String&quot;, # Required. Immutable. The unique ID of the campaign that the insertion order belongs to.
      &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the insertion order. Must be UTF-8 encoded with a maximum size of 240 bytes.
      &quot;entityStatus&quot;: &quot;A String&quot;, # Required. Controls whether or not the insertion order can spend its budget and bid on inventory. * For CreateInsertionOrder method, only `ENTITY_STATUS_DRAFT` is allowed. To activate an insertion order, use UpdateInsertionOrder method and update the status to `ENTITY_STATUS_ACTIVE` after creation. * An insertion order cannot be changed back to `ENTITY_STATUS_DRAFT` status from any other status. * An insertion order cannot be set to `ENTITY_STATUS_ACTIVE` if its parent campaign is not active.
      &quot;frequencyCap&quot;: { # Settings that control the number of times a user may be shown with the same ad during a given time period. # Required. The frequency capping setting of the insertion order.
        &quot;maxImpressions&quot;: 42, # The maximum number of times a user may be shown with the same ad during this period. Must be greater than 0. Required when unlimited is `false`.
        &quot;timeUnit&quot;: &quot;A String&quot;, # The time unit in which the frequency cap will be applied. Required when unlimited is `false`.
        &quot;timeUnitCount&quot;: 42, # The number of time_unit the frequency cap will last. Required when unlimited is `false`. The following restrictions apply based on the value of time_unit: * `TIME_UNIT_LIFETIME` - this field is output only and will default to 1 * `TIME_UNIT_MONTHS` - must be between 1 and 2 * `TIME_UNIT_WEEKS` - must be between 1 and 4 * `TIME_UNIT_DAYS` - must be between 1 and 6 * `TIME_UNIT_HOURS` - must be between 1 and 23 * `TIME_UNIT_MINUTES` - must be between 1 and 59
        &quot;unlimited&quot;: True or False, # Whether unlimited frequency capping is applied. When this field is set to `true`, the remaining frequency cap fields are not applicable.
      },
      &quot;insertionOrderId&quot;: &quot;A String&quot;, # Output only. The unique ID of the insertion order. Assigned by the system.
      &quot;insertionOrderType&quot;: &quot;A String&quot;, # The type of insertion order. If this field is unspecified in creation, the value defaults to `RTB`.
      &quot;integrationDetails&quot;: { # Integration details of an entry. # Additional integration details of the insertion order.
        &quot;details&quot;: &quot;A String&quot;, # Additional details of the entry in string format. Must be UTF-8 encoded with a length of no more than 1000 characters.
        &quot;integrationCode&quot;: &quot;A String&quot;, # An external identifier to be associated with the entry. The integration code will show up together with the entry in many places in the system, for example, reporting. Must be UTF-8 encoded with a length of no more than 500 characters.
      },
      &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the insertion order.
      &quot;pacing&quot;: { # Settings that control the rate at which a budget is spent. # Required. The budget spending speed setting of the insertion order.
        &quot;dailyMaxImpressions&quot;: &quot;A String&quot;, # Maximum number of impressions to serve every day. Applicable when the budget is impression based. Must be greater than 0.
        &quot;dailyMaxMicros&quot;: &quot;A String&quot;, # Maximum currency amount to spend every day in micros of advertiser&#x27;s currency. Applicable when the budget is currency based. Must be greater than 0. For example, for 1.5 standard unit of the currency, set this field to 1500000. The value assigned will be rounded to whole billable units for the relevant currency by the following rules: any positive value less than a single billable unit will be rounded up to one billable unit and any value larger than a single billable unit will be rounded down to the nearest billable value. For example, if the currency&#x27;s billable unit is 0.01, and this field is set to 10257770, it will round down to 10250000, a value of 10.25. If set to 505, it will round up to 10000, a value of 0.01.
        &quot;pacingPeriod&quot;: &quot;A String&quot;, # Required. The time period in which the pacing budget will be spent. When automatic budget allocation is enabled at the insertion order via auto_budget_allocation, this field is output only and defaults to `PACING_PERIOD_FLIGHT`.
        &quot;pacingType&quot;: &quot;A String&quot;, # Required. The type of pacing that defines how the budget amount will be spent across the pacing_period.
      },
      &quot;partnerCosts&quot;: [ # The partner costs associated with the insertion order. If absent or empty in CreateInsertionOrder method, the newly created insertion order will inherit partner costs from the partner settings.
        { # Settings that control a partner cost. A partner cost is any type of expense involved in running a campaign, other than the costs of purchasing impressions (which is called the media cost) and using third-party audience segment data (data fee). Some examples of partner costs include the fees for using DV360, a third-party ad server, or a third-party ad serving verification service.
          &quot;costType&quot;: &quot;A String&quot;, # Required. The type of the partner cost.
          &quot;feeAmount&quot;: &quot;A String&quot;, # The CPM fee amount in micros of advertiser&#x27;s currency. Applicable when the fee_type is `PARTNER_FEE_TYPE_CPM_FEE`. Must be greater than or equal to 0. For example, for 1.5 standard unit of the advertiser&#x27;s currency, set this field to 1500000.
          &quot;feePercentageMillis&quot;: &quot;A String&quot;, # The media fee percentage in millis (1/1000 of a percent). Applicable when the fee_type is `PARTNER_FEE_TYPE_MEDIA_FEE`. Must be greater than or equal to 0. For example: 100 represents 0.1%.
          &quot;feeType&quot;: &quot;A String&quot;, # Required. The fee type for this partner cost.
          &quot;invoiceType&quot;: &quot;A String&quot;, # The invoice type for this partner cost. * Required when cost_type is one of: - `PARTNER_COST_TYPE_ADLOOX` - `PARTNER_COST_TYPE_DOUBLE_VERIFY` - `PARTNER_COST_TYPE_INTEGRAL_AD_SCIENCE`. * Output only for other types.
        },
      ],
      &quot;performanceGoal&quot;: { # Settings that control the performance goal of a campaign or insertion order. # Required. Performance goal of the insertion order.
        &quot;performanceGoalAmountMicros&quot;: &quot;A String&quot;, # The goal amount, in micros of the advertiser&#x27;s currency. Applicable when performance_goal_type is one of: * `PERFORMANCE_GOAL_TYPE_CPM` * `PERFORMANCE_GOAL_TYPE_CPC` * `PERFORMANCE_GOAL_TYPE_CPA` * `PERFORMANCE_GOAL_TYPE_CPIAVC` * `PERFORMANCE_GOAL_TYPE_VCPM` For example 1500000 represents 1.5 standard units of the currency.
        &quot;performanceGoalPercentageMicros&quot;: &quot;A String&quot;, # The decimal representation of the goal percentage in micros. Applicable when performance_goal_type is one of: * `PERFORMANCE_GOAL_TYPE_CTR` * `PERFORMANCE_GOAL_TYPE_VIEWABILITY` * `PERFORMANCE_GOAL_TYPE_CLICK_CVR` * `PERFORMANCE_GOAL_TYPE_IMPRESSION_CVR` * `PERFORMANCE_GOAL_TYPE_VTR` * `PERFORMANCE_GOAL_TYPE_AUDIO_COMPLETION_RATE` * `PERFORMANCE_GOAL_TYPE_VIDEO_COMPLETION_RATE` For example, 70000 represents 7% (decimal 0.07).
        &quot;performanceGoalString&quot;: &quot;A String&quot;, # A key performance indicator (KPI) string, which can be empty. Must be UTF-8 encoded with a length of no more than 100 characters. Applicable when performance_goal_type is set to `PERFORMANCE_GOAL_TYPE_OTHER`.
        &quot;performanceGoalType&quot;: &quot;A String&quot;, # Required. The type of the performance goal.
      },
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the insertion order was last updated. Assigned by the system.
    },
  ],
  &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 `ListInsertionOrders` 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="patch">patch(advertiserId, insertionOrderId, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates an existing insertion order. Returns the updated insertion order if successful.

Args:
  advertiserId: string, Output only. The unique ID of the advertiser the insertion order belongs to. (required)
  insertionOrderId: string, Output only. The unique ID of the insertion order. Assigned by the system. (required)
  body: object, The request body.
    The object takes the form of:

{ # A single insertion order.
  &quot;advertiserId&quot;: &quot;A String&quot;, # Output only. The unique ID of the advertiser the insertion order belongs to.
  &quot;bidStrategy&quot;: { # Settings that control the bid strategy. Bid strategy determines the bid price. # The bidding strategy of the insertion order. By default, fixed_bid is set.
    &quot;fixedBid&quot;: { # A strategy that uses a fixed bidding price. # A strategy that uses a fixed bid price.
      &quot;bidAmountMicros&quot;: &quot;A String&quot;, # The fixed bid amount, in micros of the advertiser&#x27;s currency. For insertion order entity, bid_amount_micros should be set as 0. For line item entity, bid_amount_micros must be greater than or equal to billable unit of the given currency and smaller than or equal to the upper limit 1000000000. For example, 1500000 represents 1.5 standard units of the currency.
    },
    &quot;maximizeSpendAutoBid&quot;: { # A strategy that automatically adjusts the bid to optimize a specified performance goal while spending the full budget. # A strategy that automatically adjusts the bid to optimize to your performance goal while spending the full budget. At insertion order level, the markup_type of line items cannot be set to `PARTNER_REVENUE_MODEL_MARKUP_TYPE_CPM`. In addition, when performance_goal_type is one of: * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPA` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPC` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_AV_VIEWED` , the line_item_type of the insertion order line items must be either: * `LINE_ITEM_TYPE_DISPLAY_DEFAULT` * `LINE_ITEM_TYPE_VIDEO_DEFAULT` , and when performance_goal_type is either: * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CIVA` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_IVO_TEN` the line_item_type of the insertion order line items must be `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
      &quot;customBiddingAlgorithmId&quot;: &quot;A String&quot;, # The ID of the Custom Bidding Algorithm used by this strategy. Only applicable when performance_goal_type is set to `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO`.
      &quot;maxAverageCpmBidAmountMicros&quot;: &quot;A String&quot;, # The maximum average CPM that may be bid, in micros of the advertiser&#x27;s currency. Must be greater than or equal to a billable unit of the given currency. For example, 1500000 represents 1.5 standard units of the currency.
      &quot;performanceGoalType&quot;: &quot;A String&quot;, # Required. The type of the performance goal that the bidding strategy tries to minimize while spending the full budget. `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM` is not supported for this strategy.
    },
    &quot;performanceGoalAutoBid&quot;: { # A strategy that automatically adjusts the bid to meet or beat a specified performance goal. # A strategy that automatically adjusts the bid to meet or beat a specified performance goal. It is to be used only for a line item entity.
      &quot;customBiddingAlgorithmId&quot;: &quot;A String&quot;, # The ID of the Custom Bidding Algorithm used by this strategy. Only applicable when performance_goal_type is set to `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO`.
      &quot;maxAverageCpmBidAmountMicros&quot;: &quot;A String&quot;, # The maximum average CPM that may be bid, in micros of the advertiser&#x27;s currency. Must be greater than or equal to a billable unit of the given currency. Not applicable when performance_goal_type is set to `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM`. For example, 1500000 represents 1.5 standard units of the currency.
      &quot;performanceGoalAmountMicros&quot;: &quot;A String&quot;, # Required. The performance goal the bidding strategy will attempt to meet or beat, in micros of the advertiser&#x27;s currency or in micro of the ROAS (Return On Advertising Spend) value which is also based on advertiser&#x27;s currency. Must be greater than or equal to a billable unit of the given currency and smaller or equal to upper bounds. Each performance_goal_type has its upper bound: * when performance_goal_type is `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPA`, upper bound is 10000.00 USD. * when performance_goal_type is `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPC`, upper bound is 1000.00 USD. * when performance_goal_type is `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM`, upper bound is 1000.00 USD. * when performance_goal_type is `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO`, upper bound is 1000.00 and lower bound is 0.01. Example: If set to `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM`, the bid price will be based on the probability that each available impression will be viewable. For example, if viewable CPM target is $2 and an impression is 40% likely to be viewable, the bid price will be $0.80 CPM (40% of $2). For example, 1500000 represents 1.5 standard units of the currency or ROAS value.
      &quot;performanceGoalType&quot;: &quot;A String&quot;, # Required. The type of the performance goal that the bidding strategy will try to meet or beat. For line item level usage, the value must be one of: * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPA` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPC` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO`.
    },
  },
  &quot;budget&quot;: { # Settings that control how insertion order budget is allocated. # Required. The budget allocation settings of the insertion order.
    &quot;automationType&quot;: &quot;A String&quot;, # The type of automation used to manage bid and budget for the insertion order. If this field is unspecified in creation, the value defaults to `INSERTION_ORDER_AUTOMATION_TYPE_NONE`.
    &quot;budgetSegments&quot;: [ # Required. The list of budget segments. Use a budget segment to specify a specific budget for a given period of time an insertion order is running.
      { # Settings that control the budget of a single budget segment.
        &quot;budgetAmountMicros&quot;: &quot;A String&quot;, # Required. The budget amount the insertion order will spend for the given date_range. The amount is in micros. Must be greater than 0. For example, 500000000 represents 500 standard units of the currency.
        &quot;campaignBudgetId&quot;: &quot;A String&quot;, # The budget_id of the campaign budget that this insertion order budget segment is a part of.
        &quot;dateRange&quot;: { # A date range. # Required. The start and end date settings of the budget segment. They are resolved relative to the parent advertiser&#x27;s time zone. * When creating a new budget segment, both `start_date` and `end_date` must be in the future. * An existing budget segment with a `start_date` in the past has a mutable `end_date` but an immutable `start_date`. * `end_date` must be the `start_date` or later, both before the year 2037.
          &quot;endDate&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # The upper bound of the date range, inclusive. Must specify a positive value for `year`, `month`, and `day`.
            &quot;day&quot;: 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn&#x27;t significant.
            &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
            &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
          },
          &quot;startDate&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # The lower bound of the date range, inclusive. Must specify a positive value for `year`, `month`, and `day`.
            &quot;day&quot;: 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn&#x27;t significant.
            &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
            &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
          },
        },
        &quot;description&quot;: &quot;A String&quot;, # The budget segment description. It can be used to enter Purchase Order information for each budget segment and have that information printed on the invoices. Must be UTF-8 encoded with a length of no more than 80 characters.
      },
    ],
    &quot;budgetUnit&quot;: &quot;A String&quot;, # Required. Immutable. The budget unit specifies whether the budget is currency based or impression based.
  },
  &quot;campaignId&quot;: &quot;A String&quot;, # Required. Immutable. The unique ID of the campaign that the insertion order belongs to.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the insertion order. Must be UTF-8 encoded with a maximum size of 240 bytes.
  &quot;entityStatus&quot;: &quot;A String&quot;, # Required. Controls whether or not the insertion order can spend its budget and bid on inventory. * For CreateInsertionOrder method, only `ENTITY_STATUS_DRAFT` is allowed. To activate an insertion order, use UpdateInsertionOrder method and update the status to `ENTITY_STATUS_ACTIVE` after creation. * An insertion order cannot be changed back to `ENTITY_STATUS_DRAFT` status from any other status. * An insertion order cannot be set to `ENTITY_STATUS_ACTIVE` if its parent campaign is not active.
  &quot;frequencyCap&quot;: { # Settings that control the number of times a user may be shown with the same ad during a given time period. # Required. The frequency capping setting of the insertion order.
    &quot;maxImpressions&quot;: 42, # The maximum number of times a user may be shown with the same ad during this period. Must be greater than 0. Required when unlimited is `false`.
    &quot;timeUnit&quot;: &quot;A String&quot;, # The time unit in which the frequency cap will be applied. Required when unlimited is `false`.
    &quot;timeUnitCount&quot;: 42, # The number of time_unit the frequency cap will last. Required when unlimited is `false`. The following restrictions apply based on the value of time_unit: * `TIME_UNIT_LIFETIME` - this field is output only and will default to 1 * `TIME_UNIT_MONTHS` - must be between 1 and 2 * `TIME_UNIT_WEEKS` - must be between 1 and 4 * `TIME_UNIT_DAYS` - must be between 1 and 6 * `TIME_UNIT_HOURS` - must be between 1 and 23 * `TIME_UNIT_MINUTES` - must be between 1 and 59
    &quot;unlimited&quot;: True or False, # Whether unlimited frequency capping is applied. When this field is set to `true`, the remaining frequency cap fields are not applicable.
  },
  &quot;insertionOrderId&quot;: &quot;A String&quot;, # Output only. The unique ID of the insertion order. Assigned by the system.
  &quot;insertionOrderType&quot;: &quot;A String&quot;, # The type of insertion order. If this field is unspecified in creation, the value defaults to `RTB`.
  &quot;integrationDetails&quot;: { # Integration details of an entry. # Additional integration details of the insertion order.
    &quot;details&quot;: &quot;A String&quot;, # Additional details of the entry in string format. Must be UTF-8 encoded with a length of no more than 1000 characters.
    &quot;integrationCode&quot;: &quot;A String&quot;, # An external identifier to be associated with the entry. The integration code will show up together with the entry in many places in the system, for example, reporting. Must be UTF-8 encoded with a length of no more than 500 characters.
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the insertion order.
  &quot;pacing&quot;: { # Settings that control the rate at which a budget is spent. # Required. The budget spending speed setting of the insertion order.
    &quot;dailyMaxImpressions&quot;: &quot;A String&quot;, # Maximum number of impressions to serve every day. Applicable when the budget is impression based. Must be greater than 0.
    &quot;dailyMaxMicros&quot;: &quot;A String&quot;, # Maximum currency amount to spend every day in micros of advertiser&#x27;s currency. Applicable when the budget is currency based. Must be greater than 0. For example, for 1.5 standard unit of the currency, set this field to 1500000. The value assigned will be rounded to whole billable units for the relevant currency by the following rules: any positive value less than a single billable unit will be rounded up to one billable unit and any value larger than a single billable unit will be rounded down to the nearest billable value. For example, if the currency&#x27;s billable unit is 0.01, and this field is set to 10257770, it will round down to 10250000, a value of 10.25. If set to 505, it will round up to 10000, a value of 0.01.
    &quot;pacingPeriod&quot;: &quot;A String&quot;, # Required. The time period in which the pacing budget will be spent. When automatic budget allocation is enabled at the insertion order via auto_budget_allocation, this field is output only and defaults to `PACING_PERIOD_FLIGHT`.
    &quot;pacingType&quot;: &quot;A String&quot;, # Required. The type of pacing that defines how the budget amount will be spent across the pacing_period.
  },
  &quot;partnerCosts&quot;: [ # The partner costs associated with the insertion order. If absent or empty in CreateInsertionOrder method, the newly created insertion order will inherit partner costs from the partner settings.
    { # Settings that control a partner cost. A partner cost is any type of expense involved in running a campaign, other than the costs of purchasing impressions (which is called the media cost) and using third-party audience segment data (data fee). Some examples of partner costs include the fees for using DV360, a third-party ad server, or a third-party ad serving verification service.
      &quot;costType&quot;: &quot;A String&quot;, # Required. The type of the partner cost.
      &quot;feeAmount&quot;: &quot;A String&quot;, # The CPM fee amount in micros of advertiser&#x27;s currency. Applicable when the fee_type is `PARTNER_FEE_TYPE_CPM_FEE`. Must be greater than or equal to 0. For example, for 1.5 standard unit of the advertiser&#x27;s currency, set this field to 1500000.
      &quot;feePercentageMillis&quot;: &quot;A String&quot;, # The media fee percentage in millis (1/1000 of a percent). Applicable when the fee_type is `PARTNER_FEE_TYPE_MEDIA_FEE`. Must be greater than or equal to 0. For example: 100 represents 0.1%.
      &quot;feeType&quot;: &quot;A String&quot;, # Required. The fee type for this partner cost.
      &quot;invoiceType&quot;: &quot;A String&quot;, # The invoice type for this partner cost. * Required when cost_type is one of: - `PARTNER_COST_TYPE_ADLOOX` - `PARTNER_COST_TYPE_DOUBLE_VERIFY` - `PARTNER_COST_TYPE_INTEGRAL_AD_SCIENCE`. * Output only for other types.
    },
  ],
  &quot;performanceGoal&quot;: { # Settings that control the performance goal of a campaign or insertion order. # Required. Performance goal of the insertion order.
    &quot;performanceGoalAmountMicros&quot;: &quot;A String&quot;, # The goal amount, in micros of the advertiser&#x27;s currency. Applicable when performance_goal_type is one of: * `PERFORMANCE_GOAL_TYPE_CPM` * `PERFORMANCE_GOAL_TYPE_CPC` * `PERFORMANCE_GOAL_TYPE_CPA` * `PERFORMANCE_GOAL_TYPE_CPIAVC` * `PERFORMANCE_GOAL_TYPE_VCPM` For example 1500000 represents 1.5 standard units of the currency.
    &quot;performanceGoalPercentageMicros&quot;: &quot;A String&quot;, # The decimal representation of the goal percentage in micros. Applicable when performance_goal_type is one of: * `PERFORMANCE_GOAL_TYPE_CTR` * `PERFORMANCE_GOAL_TYPE_VIEWABILITY` * `PERFORMANCE_GOAL_TYPE_CLICK_CVR` * `PERFORMANCE_GOAL_TYPE_IMPRESSION_CVR` * `PERFORMANCE_GOAL_TYPE_VTR` * `PERFORMANCE_GOAL_TYPE_AUDIO_COMPLETION_RATE` * `PERFORMANCE_GOAL_TYPE_VIDEO_COMPLETION_RATE` For example, 70000 represents 7% (decimal 0.07).
    &quot;performanceGoalString&quot;: &quot;A String&quot;, # A key performance indicator (KPI) string, which can be empty. Must be UTF-8 encoded with a length of no more than 100 characters. Applicable when performance_goal_type is set to `PERFORMANCE_GOAL_TYPE_OTHER`.
    &quot;performanceGoalType&quot;: &quot;A String&quot;, # Required. The type of the performance goal.
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the insertion order was last updated. Assigned by the system.
}

  updateMask: string, Required. The mask to control which fields to update.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A single insertion order.
  &quot;advertiserId&quot;: &quot;A String&quot;, # Output only. The unique ID of the advertiser the insertion order belongs to.
  &quot;bidStrategy&quot;: { # Settings that control the bid strategy. Bid strategy determines the bid price. # The bidding strategy of the insertion order. By default, fixed_bid is set.
    &quot;fixedBid&quot;: { # A strategy that uses a fixed bidding price. # A strategy that uses a fixed bid price.
      &quot;bidAmountMicros&quot;: &quot;A String&quot;, # The fixed bid amount, in micros of the advertiser&#x27;s currency. For insertion order entity, bid_amount_micros should be set as 0. For line item entity, bid_amount_micros must be greater than or equal to billable unit of the given currency and smaller than or equal to the upper limit 1000000000. For example, 1500000 represents 1.5 standard units of the currency.
    },
    &quot;maximizeSpendAutoBid&quot;: { # A strategy that automatically adjusts the bid to optimize a specified performance goal while spending the full budget. # A strategy that automatically adjusts the bid to optimize to your performance goal while spending the full budget. At insertion order level, the markup_type of line items cannot be set to `PARTNER_REVENUE_MODEL_MARKUP_TYPE_CPM`. In addition, when performance_goal_type is one of: * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPA` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPC` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_AV_VIEWED` , the line_item_type of the insertion order line items must be either: * `LINE_ITEM_TYPE_DISPLAY_DEFAULT` * `LINE_ITEM_TYPE_VIDEO_DEFAULT` , and when performance_goal_type is either: * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CIVA` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_IVO_TEN` the line_item_type of the insertion order line items must be `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
      &quot;customBiddingAlgorithmId&quot;: &quot;A String&quot;, # The ID of the Custom Bidding Algorithm used by this strategy. Only applicable when performance_goal_type is set to `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO`.
      &quot;maxAverageCpmBidAmountMicros&quot;: &quot;A String&quot;, # The maximum average CPM that may be bid, in micros of the advertiser&#x27;s currency. Must be greater than or equal to a billable unit of the given currency. For example, 1500000 represents 1.5 standard units of the currency.
      &quot;performanceGoalType&quot;: &quot;A String&quot;, # Required. The type of the performance goal that the bidding strategy tries to minimize while spending the full budget. `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM` is not supported for this strategy.
    },
    &quot;performanceGoalAutoBid&quot;: { # A strategy that automatically adjusts the bid to meet or beat a specified performance goal. # A strategy that automatically adjusts the bid to meet or beat a specified performance goal. It is to be used only for a line item entity.
      &quot;customBiddingAlgorithmId&quot;: &quot;A String&quot;, # The ID of the Custom Bidding Algorithm used by this strategy. Only applicable when performance_goal_type is set to `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO`.
      &quot;maxAverageCpmBidAmountMicros&quot;: &quot;A String&quot;, # The maximum average CPM that may be bid, in micros of the advertiser&#x27;s currency. Must be greater than or equal to a billable unit of the given currency. Not applicable when performance_goal_type is set to `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM`. For example, 1500000 represents 1.5 standard units of the currency.
      &quot;performanceGoalAmountMicros&quot;: &quot;A String&quot;, # Required. The performance goal the bidding strategy will attempt to meet or beat, in micros of the advertiser&#x27;s currency or in micro of the ROAS (Return On Advertising Spend) value which is also based on advertiser&#x27;s currency. Must be greater than or equal to a billable unit of the given currency and smaller or equal to upper bounds. Each performance_goal_type has its upper bound: * when performance_goal_type is `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPA`, upper bound is 10000.00 USD. * when performance_goal_type is `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPC`, upper bound is 1000.00 USD. * when performance_goal_type is `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM`, upper bound is 1000.00 USD. * when performance_goal_type is `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO`, upper bound is 1000.00 and lower bound is 0.01. Example: If set to `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM`, the bid price will be based on the probability that each available impression will be viewable. For example, if viewable CPM target is $2 and an impression is 40% likely to be viewable, the bid price will be $0.80 CPM (40% of $2). For example, 1500000 represents 1.5 standard units of the currency or ROAS value.
      &quot;performanceGoalType&quot;: &quot;A String&quot;, # Required. The type of the performance goal that the bidding strategy will try to meet or beat. For line item level usage, the value must be one of: * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPA` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CPC` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_VIEWABLE_CPM` * `BIDDING_STRATEGY_PERFORMANCE_GOAL_TYPE_CUSTOM_ALGO`.
    },
  },
  &quot;budget&quot;: { # Settings that control how insertion order budget is allocated. # Required. The budget allocation settings of the insertion order.
    &quot;automationType&quot;: &quot;A String&quot;, # The type of automation used to manage bid and budget for the insertion order. If this field is unspecified in creation, the value defaults to `INSERTION_ORDER_AUTOMATION_TYPE_NONE`.
    &quot;budgetSegments&quot;: [ # Required. The list of budget segments. Use a budget segment to specify a specific budget for a given period of time an insertion order is running.
      { # Settings that control the budget of a single budget segment.
        &quot;budgetAmountMicros&quot;: &quot;A String&quot;, # Required. The budget amount the insertion order will spend for the given date_range. The amount is in micros. Must be greater than 0. For example, 500000000 represents 500 standard units of the currency.
        &quot;campaignBudgetId&quot;: &quot;A String&quot;, # The budget_id of the campaign budget that this insertion order budget segment is a part of.
        &quot;dateRange&quot;: { # A date range. # Required. The start and end date settings of the budget segment. They are resolved relative to the parent advertiser&#x27;s time zone. * When creating a new budget segment, both `start_date` and `end_date` must be in the future. * An existing budget segment with a `start_date` in the past has a mutable `end_date` but an immutable `start_date`. * `end_date` must be the `start_date` or later, both before the year 2037.
          &quot;endDate&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # The upper bound of the date range, inclusive. Must specify a positive value for `year`, `month`, and `day`.
            &quot;day&quot;: 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn&#x27;t significant.
            &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
            &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
          },
          &quot;startDate&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # The lower bound of the date range, inclusive. Must specify a positive value for `year`, `month`, and `day`.
            &quot;day&quot;: 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn&#x27;t significant.
            &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
            &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
          },
        },
        &quot;description&quot;: &quot;A String&quot;, # The budget segment description. It can be used to enter Purchase Order information for each budget segment and have that information printed on the invoices. Must be UTF-8 encoded with a length of no more than 80 characters.
      },
    ],
    &quot;budgetUnit&quot;: &quot;A String&quot;, # Required. Immutable. The budget unit specifies whether the budget is currency based or impression based.
  },
  &quot;campaignId&quot;: &quot;A String&quot;, # Required. Immutable. The unique ID of the campaign that the insertion order belongs to.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the insertion order. Must be UTF-8 encoded with a maximum size of 240 bytes.
  &quot;entityStatus&quot;: &quot;A String&quot;, # Required. Controls whether or not the insertion order can spend its budget and bid on inventory. * For CreateInsertionOrder method, only `ENTITY_STATUS_DRAFT` is allowed. To activate an insertion order, use UpdateInsertionOrder method and update the status to `ENTITY_STATUS_ACTIVE` after creation. * An insertion order cannot be changed back to `ENTITY_STATUS_DRAFT` status from any other status. * An insertion order cannot be set to `ENTITY_STATUS_ACTIVE` if its parent campaign is not active.
  &quot;frequencyCap&quot;: { # Settings that control the number of times a user may be shown with the same ad during a given time period. # Required. The frequency capping setting of the insertion order.
    &quot;maxImpressions&quot;: 42, # The maximum number of times a user may be shown with the same ad during this period. Must be greater than 0. Required when unlimited is `false`.
    &quot;timeUnit&quot;: &quot;A String&quot;, # The time unit in which the frequency cap will be applied. Required when unlimited is `false`.
    &quot;timeUnitCount&quot;: 42, # The number of time_unit the frequency cap will last. Required when unlimited is `false`. The following restrictions apply based on the value of time_unit: * `TIME_UNIT_LIFETIME` - this field is output only and will default to 1 * `TIME_UNIT_MONTHS` - must be between 1 and 2 * `TIME_UNIT_WEEKS` - must be between 1 and 4 * `TIME_UNIT_DAYS` - must be between 1 and 6 * `TIME_UNIT_HOURS` - must be between 1 and 23 * `TIME_UNIT_MINUTES` - must be between 1 and 59
    &quot;unlimited&quot;: True or False, # Whether unlimited frequency capping is applied. When this field is set to `true`, the remaining frequency cap fields are not applicable.
  },
  &quot;insertionOrderId&quot;: &quot;A String&quot;, # Output only. The unique ID of the insertion order. Assigned by the system.
  &quot;insertionOrderType&quot;: &quot;A String&quot;, # The type of insertion order. If this field is unspecified in creation, the value defaults to `RTB`.
  &quot;integrationDetails&quot;: { # Integration details of an entry. # Additional integration details of the insertion order.
    &quot;details&quot;: &quot;A String&quot;, # Additional details of the entry in string format. Must be UTF-8 encoded with a length of no more than 1000 characters.
    &quot;integrationCode&quot;: &quot;A String&quot;, # An external identifier to be associated with the entry. The integration code will show up together with the entry in many places in the system, for example, reporting. Must be UTF-8 encoded with a length of no more than 500 characters.
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the insertion order.
  &quot;pacing&quot;: { # Settings that control the rate at which a budget is spent. # Required. The budget spending speed setting of the insertion order.
    &quot;dailyMaxImpressions&quot;: &quot;A String&quot;, # Maximum number of impressions to serve every day. Applicable when the budget is impression based. Must be greater than 0.
    &quot;dailyMaxMicros&quot;: &quot;A String&quot;, # Maximum currency amount to spend every day in micros of advertiser&#x27;s currency. Applicable when the budget is currency based. Must be greater than 0. For example, for 1.5 standard unit of the currency, set this field to 1500000. The value assigned will be rounded to whole billable units for the relevant currency by the following rules: any positive value less than a single billable unit will be rounded up to one billable unit and any value larger than a single billable unit will be rounded down to the nearest billable value. For example, if the currency&#x27;s billable unit is 0.01, and this field is set to 10257770, it will round down to 10250000, a value of 10.25. If set to 505, it will round up to 10000, a value of 0.01.
    &quot;pacingPeriod&quot;: &quot;A String&quot;, # Required. The time period in which the pacing budget will be spent. When automatic budget allocation is enabled at the insertion order via auto_budget_allocation, this field is output only and defaults to `PACING_PERIOD_FLIGHT`.
    &quot;pacingType&quot;: &quot;A String&quot;, # Required. The type of pacing that defines how the budget amount will be spent across the pacing_period.
  },
  &quot;partnerCosts&quot;: [ # The partner costs associated with the insertion order. If absent or empty in CreateInsertionOrder method, the newly created insertion order will inherit partner costs from the partner settings.
    { # Settings that control a partner cost. A partner cost is any type of expense involved in running a campaign, other than the costs of purchasing impressions (which is called the media cost) and using third-party audience segment data (data fee). Some examples of partner costs include the fees for using DV360, a third-party ad server, or a third-party ad serving verification service.
      &quot;costType&quot;: &quot;A String&quot;, # Required. The type of the partner cost.
      &quot;feeAmount&quot;: &quot;A String&quot;, # The CPM fee amount in micros of advertiser&#x27;s currency. Applicable when the fee_type is `PARTNER_FEE_TYPE_CPM_FEE`. Must be greater than or equal to 0. For example, for 1.5 standard unit of the advertiser&#x27;s currency, set this field to 1500000.
      &quot;feePercentageMillis&quot;: &quot;A String&quot;, # The media fee percentage in millis (1/1000 of a percent). Applicable when the fee_type is `PARTNER_FEE_TYPE_MEDIA_FEE`. Must be greater than or equal to 0. For example: 100 represents 0.1%.
      &quot;feeType&quot;: &quot;A String&quot;, # Required. The fee type for this partner cost.
      &quot;invoiceType&quot;: &quot;A String&quot;, # The invoice type for this partner cost. * Required when cost_type is one of: - `PARTNER_COST_TYPE_ADLOOX` - `PARTNER_COST_TYPE_DOUBLE_VERIFY` - `PARTNER_COST_TYPE_INTEGRAL_AD_SCIENCE`. * Output only for other types.
    },
  ],
  &quot;performanceGoal&quot;: { # Settings that control the performance goal of a campaign or insertion order. # Required. Performance goal of the insertion order.
    &quot;performanceGoalAmountMicros&quot;: &quot;A String&quot;, # The goal amount, in micros of the advertiser&#x27;s currency. Applicable when performance_goal_type is one of: * `PERFORMANCE_GOAL_TYPE_CPM` * `PERFORMANCE_GOAL_TYPE_CPC` * `PERFORMANCE_GOAL_TYPE_CPA` * `PERFORMANCE_GOAL_TYPE_CPIAVC` * `PERFORMANCE_GOAL_TYPE_VCPM` For example 1500000 represents 1.5 standard units of the currency.
    &quot;performanceGoalPercentageMicros&quot;: &quot;A String&quot;, # The decimal representation of the goal percentage in micros. Applicable when performance_goal_type is one of: * `PERFORMANCE_GOAL_TYPE_CTR` * `PERFORMANCE_GOAL_TYPE_VIEWABILITY` * `PERFORMANCE_GOAL_TYPE_CLICK_CVR` * `PERFORMANCE_GOAL_TYPE_IMPRESSION_CVR` * `PERFORMANCE_GOAL_TYPE_VTR` * `PERFORMANCE_GOAL_TYPE_AUDIO_COMPLETION_RATE` * `PERFORMANCE_GOAL_TYPE_VIDEO_COMPLETION_RATE` For example, 70000 represents 7% (decimal 0.07).
    &quot;performanceGoalString&quot;: &quot;A String&quot;, # A key performance indicator (KPI) string, which can be empty. Must be UTF-8 encoded with a length of no more than 100 characters. Applicable when performance_goal_type is set to `PERFORMANCE_GOAL_TYPE_OTHER`.
    &quot;performanceGoalType&quot;: &quot;A String&quot;, # Required. The type of the performance goal.
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the insertion order was last updated. Assigned by the system.
}</pre>
</div>

</body></html>