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

<p class="toc_element">
  <code><a href="displayvideo_v1.partners.targetingTypes.html">targetingTypes()</a></code>
</p>
<p class="firstline">Returns the targetingTypes Resource.</p>

<p class="toc_element">
  <code><a href="#bulkEditPartnerAssignedTargetingOptions">bulkEditPartnerAssignedTargetingOptions(partnerId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Bulk edits targeting options under a single partner. The operation will delete the assigned targeting options provided in BulkEditPartnerAssignedTargetingOptionsRequest.deleteRequests and then create the assigned targeting options provided in BulkEditPartnerAssignedTargetingOptionsRequest.createRequests .</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="#get">get(partnerId, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a partner.</p>
<p class="toc_element">
  <code><a href="#list">list(filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists partners that are accessible to the current user. The order is defined by the order_by parameter.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="bulkEditPartnerAssignedTargetingOptions">bulkEditPartnerAssignedTargetingOptions(partnerId, body=None, x__xgafv=None)</code>
  <pre>Bulk edits targeting options under a single partner. The operation will delete the assigned targeting options provided in BulkEditPartnerAssignedTargetingOptionsRequest.deleteRequests and then create the assigned targeting options provided in BulkEditPartnerAssignedTargetingOptionsRequest.createRequests .

Args:
  partnerId: string, Required. The ID of the partner. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for BulkEditPartnerAssignedTargetingOptions.
  &quot;createRequests&quot;: [ # The assigned targeting options to create in batch, specified as a list of `CreateAssignedTargetingOptionsRequest`. Supported targeting types: * `TARGETING_TYPE_CHANNEL`
    { # A request listing which assigned targeting options of a given targeting type should be created and added.
      &quot;assignedTargetingOptions&quot;: [ # Required. The assigned targeting options to create and add.
        { # 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;, # 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. Output only in v1. Required in v2.
            &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 used as an INTERSECTION 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. The COMPLEMENT of the UNION of this group and other excluded audience groups is used as an INTERSECTION to any positive audience targeting. All items 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;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. The COMPLEMENT of the UNION of this group and other excluded audience groups is used as an INTERSECTION to any positive audience targeting. 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;audioContentTypeDetails&quot;: { # Details for audio content type assigned targeting option. This will be populated in the audio_content_type_details field when targeting_type is `TARGETING_TYPE_AUDIO_CONTENT_TYPE`. Explicitly targeting all options is not supported. Remove all audio content type targeting options to achieve this effect. # Audio content type details. This field will be populated when the targeting_type is `TARGETING_TYPE_AUDIO_CONTENT_TYPE`.
            &quot;audioContentType&quot;: &quot;A String&quot;, # The audio content type. Output only in v1. Required in v2.
            &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id field when targeting_type is `TARGETING_TYPE_AUDIO_CONTENT_TYPE`.
          },
          &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;, # The content instream position for video or audio ads. Output only in v1. Required in v2.
            &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;, # The content outstream position. Output only in v1. Required in v2.
            &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;, # The display name of the device type. Output only in v1. Required in v2.
            &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;, # The serving environment. Output only in v1. Required in v2.
            &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;, # The gender of the audience. Output only in v1. Required in v2.
            &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;, # The content position. Output only in v1. Required in v2.
            &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;, # The type of Open Measurement enabled inventory. Output only in v1. Required in v2.
            &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;, # An enum for the DV360 Sensitive category content classifier. Output only in v1. Required in v2.
          },
          &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;, # The video player size. Output only in v1. Required in v2.
          },
          &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;, # The predicted viewability percentage. Output only in v1. Required in v2.
          },
        },
      ],
      &quot;targetingType&quot;: &quot;A String&quot;, # Required. Identifies the type of this assigned targeting option.
    },
  ],
  &quot;deleteRequests&quot;: [ # The assigned targeting options to delete in batch, specified as a list of `DeleteAssignedTargetingOptionsRequest`. Supported targeting types: * `TARGETING_TYPE_CHANNEL`
    { # A request listing which assigned targeting options of a given targeting type should be deleted.
      &quot;assignedTargetingOptionIds&quot;: [ # Required. The assigned targeting option IDs to delete.
        &quot;A String&quot;,
      ],
      &quot;targetingType&quot;: &quot;A String&quot;, # Required. Identifies the type of this assigned targeting option.
    },
  ],
}

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

Returns:
  An object of the form:

    {
  &quot;createdAssignedTargetingOptions&quot;: [ # The list of assigned targeting options that have been successfully created. 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;, # 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. Output only in v1. Required in v2.
        &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 used as an INTERSECTION 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. The COMPLEMENT of the UNION of this group and other excluded audience groups is used as an INTERSECTION to any positive audience targeting. All items 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;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. The COMPLEMENT of the UNION of this group and other excluded audience groups is used as an INTERSECTION to any positive audience targeting. 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;audioContentTypeDetails&quot;: { # Details for audio content type assigned targeting option. This will be populated in the audio_content_type_details field when targeting_type is `TARGETING_TYPE_AUDIO_CONTENT_TYPE`. Explicitly targeting all options is not supported. Remove all audio content type targeting options to achieve this effect. # Audio content type details. This field will be populated when the targeting_type is `TARGETING_TYPE_AUDIO_CONTENT_TYPE`.
        &quot;audioContentType&quot;: &quot;A String&quot;, # The audio content type. Output only in v1. Required in v2.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id field when targeting_type is `TARGETING_TYPE_AUDIO_CONTENT_TYPE`.
      },
      &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;, # The content instream position for video or audio ads. Output only in v1. Required in v2.
        &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;, # The content outstream position. Output only in v1. Required in v2.
        &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;, # The display name of the device type. Output only in v1. Required in v2.
        &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;, # The serving environment. Output only in v1. Required in v2.
        &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;, # The gender of the audience. Output only in v1. Required in v2.
        &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;, # The content position. Output only in v1. Required in v2.
        &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;, # The type of Open Measurement enabled inventory. Output only in v1. Required in v2.
        &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;, # An enum for the DV360 Sensitive category content classifier. Output only in v1. Required in v2.
      },
      &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;, # The video player size. Output only in v1. Required in v2.
      },
      &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;, # The predicted viewability percentage. Output only in v1. Required in v2.
      },
    },
  ],
}</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="get">get(partnerId, x__xgafv=None)</code>
  <pre>Gets a partner.

Args:
  partnerId: string, Required. The ID of the partner 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 partner in Display &amp; Video 360 (DV360).
  &quot;adServerConfig&quot;: { # Ad server related settings of a partner. # Ad server related settings of the partner.
    &quot;measurementConfig&quot;: { # Measurement settings of a partner. # Measurement settings of a partner.
      &quot;dv360ToCmCostReportingEnabled&quot;: True or False, # Whether or not to report DV360 cost to CM360.
      &quot;dv360ToCmDataSharingEnabled&quot;: True or False, # Whether or not to include DV360 data in CM360 data transfer reports.
    },
  },
  &quot;dataAccessConfig&quot;: { # Settings that control how partner related data may be accessed. # Settings that control how partner data may be accessed.
    &quot;sdfConfig&quot;: { # Structured Data File (SDF) related settings. # Structured Data Files (SDF) settings for the partner. The SDF configuration for the partner.
      &quot;adminEmail&quot;: &quot;A String&quot;, # An administrator email address to which the SDF processing status reports will be sent.
      &quot;version&quot;: &quot;A String&quot;, # Required. The version of SDF being used.
    },
  },
  &quot;displayName&quot;: &quot;A String&quot;, # The display name of the partner. Must be UTF-8 encoded with a maximum size of 240 bytes.
  &quot;entityStatus&quot;: &quot;A String&quot;, # Output only. The status of the partner.
  &quot;exchangeConfig&quot;: { # Settings that control which exchanges are enabled for a partner. # Settings that control which exchanges are enabled for the partner.
    &quot;enabledExchanges&quot;: [ # All enabled exchanges in the partner. Duplicate enabled exchanges will be ignored.
      { # An enabled exchange in the partner.
        &quot;exchange&quot;: &quot;A String&quot;, # The enabled exchange.
        &quot;googleAdManagerAgencyId&quot;: &quot;A String&quot;, # Output only. Agency ID of Google Ad Manager. The field is only relevant when Google Ad Manager is the enabled exchange.
        &quot;googleAdManagerBuyerNetworkId&quot;: &quot;A String&quot;, # Output only. Network ID of Google Ad Manager. The field is only relevant when Google Ad Manager is the enabled exchange.
        &quot;seatId&quot;: &quot;A String&quot;, # Output only. Seat ID of the enabled exchange.
      },
    ],
  },
  &quot;generalConfig&quot;: { # General settings of a partner. # General settings of the partner.
    &quot;currencyCode&quot;: &quot;A String&quot;, # Immutable. Partner&#x27;s currency in ISO 4217 format.
    &quot;timeZone&quot;: &quot;A String&quot;, # Immutable. The standard TZ database name of the partner&#x27;s time zone. For example, `America/New_York`. See more at: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the partner.
  &quot;partnerId&quot;: &quot;A String&quot;, # Output only. The unique ID of the partner. Assigned by the system.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the partner was last updated. Assigned by the system.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists partners that are accessible to the current user. The order is defined by the order_by parameter.

Args:
  filter: string, Allows filtering by partner properties. Supported syntax: * Filter expressions are made up of one or more restrictions. * Restrictions can be combined by `AND` or `OR` logical operators. A sequence of restrictions implicitly uses `AND`. * A restriction has the form of `{field} {operator} {value}`. * The operator must be `EQUALS (=)`. * Supported fields: - `entityStatus` Examples: * All active partners: `entityStatus=&quot;ENTITY_STATUS_ACTIVE&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: * `displayName` The default sorting order is ascending. To specify descending order for a field, a suffix &quot;desc&quot; should be added to the field name. For example, `displayName desc`.
  pageSize: integer, Requested page size. Must be between `1` and `100`. If unspecified will default to `100`.
  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 `ListPartners` 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;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 `ListPartners` method to retrieve the next page of results.
  &quot;partners&quot;: [ # The list of partners. This list will be absent if empty.
    { # A single partner in Display &amp; Video 360 (DV360).
      &quot;adServerConfig&quot;: { # Ad server related settings of a partner. # Ad server related settings of the partner.
        &quot;measurementConfig&quot;: { # Measurement settings of a partner. # Measurement settings of a partner.
          &quot;dv360ToCmCostReportingEnabled&quot;: True or False, # Whether or not to report DV360 cost to CM360.
          &quot;dv360ToCmDataSharingEnabled&quot;: True or False, # Whether or not to include DV360 data in CM360 data transfer reports.
        },
      },
      &quot;dataAccessConfig&quot;: { # Settings that control how partner related data may be accessed. # Settings that control how partner data may be accessed.
        &quot;sdfConfig&quot;: { # Structured Data File (SDF) related settings. # Structured Data Files (SDF) settings for the partner. The SDF configuration for the partner.
          &quot;adminEmail&quot;: &quot;A String&quot;, # An administrator email address to which the SDF processing status reports will be sent.
          &quot;version&quot;: &quot;A String&quot;, # Required. The version of SDF being used.
        },
      },
      &quot;displayName&quot;: &quot;A String&quot;, # The display name of the partner. Must be UTF-8 encoded with a maximum size of 240 bytes.
      &quot;entityStatus&quot;: &quot;A String&quot;, # Output only. The status of the partner.
      &quot;exchangeConfig&quot;: { # Settings that control which exchanges are enabled for a partner. # Settings that control which exchanges are enabled for the partner.
        &quot;enabledExchanges&quot;: [ # All enabled exchanges in the partner. Duplicate enabled exchanges will be ignored.
          { # An enabled exchange in the partner.
            &quot;exchange&quot;: &quot;A String&quot;, # The enabled exchange.
            &quot;googleAdManagerAgencyId&quot;: &quot;A String&quot;, # Output only. Agency ID of Google Ad Manager. The field is only relevant when Google Ad Manager is the enabled exchange.
            &quot;googleAdManagerBuyerNetworkId&quot;: &quot;A String&quot;, # Output only. Network ID of Google Ad Manager. The field is only relevant when Google Ad Manager is the enabled exchange.
            &quot;seatId&quot;: &quot;A String&quot;, # Output only. Seat ID of the enabled exchange.
          },
        ],
      },
      &quot;generalConfig&quot;: { # General settings of a partner. # General settings of the partner.
        &quot;currencyCode&quot;: &quot;A String&quot;, # Immutable. Partner&#x27;s currency in ISO 4217 format.
        &quot;timeZone&quot;: &quot;A String&quot;, # Immutable. The standard TZ database name of the partner&#x27;s time zone. For example, `America/New_York`. See more at: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
      },
      &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the partner.
      &quot;partnerId&quot;: &quot;A String&quot;, # Output only. The unique ID of the partner. Assigned by the system.
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the partner was last updated. Assigned by the system.
    },
  ],
}</pre>
</div>

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

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

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

</body></html>