<html><body>
<style>

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

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

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

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

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

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

pre {
  margin-top: 0.5em;
}

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

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

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

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

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

</style>

<h1><a href="displayvideo_v1.html">Display & Video 360 API</a> . <a href="displayvideo_v1.advertisers.html">advertisers</a> . <a href="displayvideo_v1.advertisers.campaigns.html">campaigns</a> . <a href="displayvideo_v1.advertisers.campaigns.targetingTypes.html">targetingTypes</a> . <a href="displayvideo_v1.advertisers.campaigns.targetingTypes.assignedTargetingOptions.html">assignedTargetingOptions</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#get">get(advertiserId, campaignId, targetingType, assignedTargetingOptionId, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a single targeting option assigned to a campaign.</p>
<p class="toc_element">
  <code><a href="#list">list(advertiserId, campaignId, targetingType, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists the targeting options assigned to a campaign for a specified targeting type.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="get">get(advertiserId, campaignId, targetingType, assignedTargetingOptionId, x__xgafv=None)</code>
  <pre>Gets a single targeting option assigned to a campaign.

Args:
  advertiserId: string, Required. The ID of the advertiser the campaign belongs to. (required)
  campaignId: string, Required. The ID of the campaign the assigned targeting option belongs to. (required)
  targetingType: string, Required. Identifies the type of this assigned targeting option. Supported targeting types: * `TARGETING_TYPE_AGE_RANGE` * `TARGETING_TYPE_AUTHORIZED_SELLER_STATUS` * `TARGETING_TYPE_CONTENT_INSTREAM_POSITION` * `TARGETING_TYPE_CONTENT_OUTSTREAM_POSITION` * `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION` * `TARGETING_TYPE_ENVIRONMENT` * `TARGETING_TYPE_EXCHANGE` * `TARGETING_TYPE_GENDER` * `TARGETING_TYPE_GEO_REGION` * `TARGETING_TYPE_HOUSEHOLD_INCOME` * `TARGETING_TYPE_INVENTORY_SOURCE` * `TARGETING_TYPE_INVENTORY_SOURCE_GROUP` * `TARGETING_TYPE_LANGUAGE` * `TARGETING_TYPE_ON_SCREEN_POSITION` * `TARGETING_TYPE_PARENTAL_STATUS` * `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION` * `TARGETING_TYPE_SUB_EXCHANGE` * `TARGETING_TYPE_THIRD_PARTY_VERIFIER` * `TARGETING_TYPE_VIEWABILITY` (required)
    Allowed values
      TARGETING_TYPE_UNSPECIFIED - Default value when type is not specified or is unknown in this version.
      TARGETING_TYPE_CHANNEL - Target a channel (a custom group of related websites or apps).
      TARGETING_TYPE_APP_CATEGORY - Target an app category (for example, education or puzzle games).
      TARGETING_TYPE_APP - Target a specific app (for example, Angry Birds).
      TARGETING_TYPE_URL - Target a specific url (for example, quora.com).
      TARGETING_TYPE_DAY_AND_TIME - Target ads during a chosen time period on a specific day.
      TARGETING_TYPE_AGE_RANGE - Target ads to a specific age range (for example, 18-24).
      TARGETING_TYPE_REGIONAL_LOCATION_LIST - Target ads to the specified regions on a regional location list.
      TARGETING_TYPE_PROXIMITY_LOCATION_LIST - Target ads to the specified points of interest on a proximity location list.
      TARGETING_TYPE_GENDER - Target ads to a specific gender (for example, female or male).
      TARGETING_TYPE_VIDEO_PLAYER_SIZE - Target a specific video player size for video ads.
      TARGETING_TYPE_USER_REWARDED_CONTENT - Target user rewarded content for video ads.
      TARGETING_TYPE_PARENTAL_STATUS - Target ads to a specific parental status (for example, parent or not a parent).
      TARGETING_TYPE_CONTENT_INSTREAM_POSITION - Target video or audio ads in a specific content instream position (for example, pre-roll, mid-roll, or post-roll).
      TARGETING_TYPE_CONTENT_OUTSTREAM_POSITION - Target ads in a specific content outstream position.
      TARGETING_TYPE_DEVICE_TYPE - Target ads to a specific device type (for example, tablet or connected TV).
      TARGETING_TYPE_AUDIENCE_GROUP - Target ads to an audience or groups of audiences. Singleton field, at most one can exist on a single Lineitem at a time.
      TARGETING_TYPE_BROWSER - Target ads to specific web browsers (for example, Chrome).
      TARGETING_TYPE_HOUSEHOLD_INCOME - Target ads to a specific household income range (for example, top 10%).
      TARGETING_TYPE_ON_SCREEN_POSITION - Target ads in a specific on screen position.
      TARGETING_TYPE_THIRD_PARTY_VERIFIER - Filter web sites through third party verification (for example, IAS or DoubleVerify).
      TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION - Filter web sites by specific digital content label ratings (for example, DL-MA: suitable only for mature audiences).
      TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION - Filter website content by sensitive categories (for example, adult).
      TARGETING_TYPE_ENVIRONMENT - Target ads to a specific environment (for example, web or app).
      TARGETING_TYPE_CARRIER_AND_ISP - Target ads to a specific network carrier or internet service provider (ISP) (for example, Comcast or Orange).
      TARGETING_TYPE_OPERATING_SYSTEM - Target ads to a specific operating system (for example, macOS).
      TARGETING_TYPE_DEVICE_MAKE_MODEL - Target ads to a specific device make or model (for example, Roku or Samsung).
      TARGETING_TYPE_KEYWORD - Target ads to a specific keyword (for example, dog or retriever).
      TARGETING_TYPE_NEGATIVE_KEYWORD_LIST - Target ads to a specific negative keyword list.
      TARGETING_TYPE_VIEWABILITY - Target ads to a specific viewability (for example, 80% viewable).
      TARGETING_TYPE_CATEGORY - Target ads to a specific content category (for example, arts &amp; entertainment).
      TARGETING_TYPE_INVENTORY_SOURCE - Purchase impressions from specific deals and auction packages.
      TARGETING_TYPE_LANGUAGE - Target ads to a specific language (for example, English or Japanese).
      TARGETING_TYPE_AUTHORIZED_SELLER_STATUS - Target ads to ads.txt authorized sellers.
      TARGETING_TYPE_GEO_REGION - Target ads to a specific regional location (for example, a city or state).
      TARGETING_TYPE_INVENTORY_SOURCE_GROUP - Purchase impressions from a group of deals and auction packages.
      TARGETING_TYPE_EXCHANGE - Purchase impressions from specific exchanges.
      TARGETING_TYPE_SUB_EXCHANGE - Purchase impressions from specific sub-exchanges.
      TARGETING_TYPE_POI - Target ads around a specific point of interest, such as a notable building, a street address, or latitude/longitude coordinates.
      TARGETING_TYPE_BUSINESS_CHAIN - Target ads around locations of a business chain within a specific geo region.
      TARGETING_TYPE_NATIVE_CONTENT_POSITION - Target ads to a specific native content position.
      TARGETING_TYPE_OMID - Target ads in an Open Measurement enabled inventory.
      TARGETING_TYPE_AUDIO_CONTENT_TYPE - Target ads to a specific audio content type.
  assignedTargetingOptionId: string, Required. An identifier unique to the targeting type in this campaign that identifies the assigned targeting option being requested. (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 assigned targeting option, which defines the state of a targeting option for an entity with targeting settings.
  &quot;ageRangeDetails&quot;: { # Represents a targetable age range. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_AGE_RANGE`. # Age range details. This field will be populated when the targeting_type is `TARGETING_TYPE_AGE_RANGE`.
    &quot;ageRange&quot;: &quot;A String&quot;, # Output only. The age range of an audience. We only support targeting a continuous age range of an audience. Thus, the age range represented in this field can be 1) targeted solely, or, 2) part of a larger continuous age range. The reach of a continuous age range targeting can be expanded by also targeting an audience of an unknown age.
    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_AGE_RANGE`.
  },
  &quot;appCategoryDetails&quot;: { # Details for assigned app category targeting option. This will be populated in the app_category_details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_APP_CATEGORY`. # App category details. This field will be populated when the targeting_type is `TARGETING_TYPE_APP_CATEGORY`.
    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the app category.
    &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted.
    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id field when targeting_type is `TARGETING_TYPE_APP_CATEGORY`.
  },
  &quot;appDetails&quot;: { # Details for assigned app targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_APP`. # App details. This field will be populated when the targeting_type is `TARGETING_TYPE_APP`.
    &quot;appId&quot;: &quot;A String&quot;, # Required. The ID of the app. Android&#x27;s Play store app uses bundle ID, for example `com.google.android.gm`. Apple&#x27;s App store app ID uses 9 digit string, for example `422689480`.
    &quot;appPlatform&quot;: &quot;A String&quot;, # Indicates the platform of the targeted app. If this field is not specified, the app platform will be assumed to be mobile (i.e., Android or iOS), and we will derive the appropriate mobile platform from the app ID.
    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the app.
    &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted.
  },
  &quot;assignedTargetingOptionId&quot;: &quot;A String&quot;, # Output only. The unique ID of the assigned targeting option. The ID is only unique within a given resource and targeting type. It may be reused in other contexts.
  &quot;audienceGroupDetails&quot;: { # Assigned audience group targeting option details. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_AUDIENCE_GROUP`. The relation between each group is UNION, except for excluded_first_and_third_party_audience_group and excluded_google_audience_group, of which COMPLEMENT is UNION&#x27;ed with other groups. # Audience targeting details. This field will be populated when the targeting_type is `TARGETING_TYPE_AUDIENCE_GROUP`. You can only target one audience group option per resource.
    &quot;excludedFirstAndThirdPartyAudienceGroup&quot;: { # Details of first and third party audience group. All first and third party audience targeting settings are logically ‘OR’ of each other. # The first and third party audience ids and recencies of the excluded first and third party audience group. Used for negative targeting. Its COMPLEMENT is used to UNION other audience groups.
      &quot;settings&quot;: [ # Required. All first and third party audience targeting settings in first and third party audience group. Repeated settings with same id are not allowed.
        { # Details of first and third party audience targeting setting.
          &quot;firstAndThirdPartyAudienceId&quot;: &quot;A String&quot;, # Required. First and third party audience id of the first and third party audience targeting setting. This id is first_and_third_party_audience_id.
          &quot;recency&quot;: &quot;A String&quot;, # The recency of the first and third party audience targeting setting. Only applicable to first party audiences, otherwise will be ignored. For more info, refer to https://support.google.com/displayvideo/answer/2949947#recency When unspecified, no recency limit will be used.
        },
      ],
    },
    &quot;excludedGoogleAudienceGroup&quot;: { # Details of Google audience group. All Google audience targeting settings are logically ‘OR’ of each other. # The Google audience ids of the excluded Google audience group. Used for negative targeting. It&#x27;s COMPLEMENT is used to UNION other audience groups. Only contains Affinity, In-market and Installed-apps type Google audiences. All items are logically ‘OR’ of each other.
      &quot;settings&quot;: [ # Required. All Google audience targeting settings in Google audience group. Repeated settings with same id will be ignored.
        { # Details of Google audience targeting setting.
          &quot;googleAudienceId&quot;: &quot;A String&quot;, # Required. Google audience id of the Google audience targeting setting. This id is google_audience_id.
        },
      ],
    },
    &quot;includedCombinedAudienceGroup&quot;: { # Details of combined audience group. All combined audience targeting settings are logically ‘OR’ of each other. # The combined audience ids of the included combined audience group. Contains combined audience ids only.
      &quot;settings&quot;: [ # Required. All combined audience targeting settings in combined audience group. Repeated settings with same id will be ignored. The number of combined audience settings should be no more than five, error will be thrown otherwise.
        { # Details of combined audience targeting setting.
          &quot;combinedAudienceId&quot;: &quot;A String&quot;, # Required. Combined audience id of combined audience targeting setting. This id is combined_audience_id.
        },
      ],
    },
    &quot;includedCustomListGroup&quot;: { # Details of custom list group. All custom list targeting settings are logically ‘OR’ of each other. # The custom list ids of the included custom list group. Contains custom list ids only.
      &quot;settings&quot;: [ # Required. All custom list targeting settings in custom list group. Repeated settings with same id will be ignored.
        { # Details of custom list targeting setting.
          &quot;customListId&quot;: &quot;A String&quot;, # Required. Custom id of custom list targeting setting. This id is custom_list_id.
        },
      ],
    },
    &quot;includedFirstAndThirdPartyAudienceGroups&quot;: [ # The first and third party audience ids and recencies of included first and third party audience groups. Each first and third party audience group contains first and third party audience ids only. The relation between each first and third party audience group is INTERSECTION, and the result is UNION&#x27;ed with other audience groups. Repeated groups with same settings will be ignored.
      { # Details of first and third party audience group. All first and third party audience targeting settings are logically ‘OR’ of each other.
        &quot;settings&quot;: [ # Required. All first and third party audience targeting settings in first and third party audience group. Repeated settings with same id are not allowed.
          { # Details of first and third party audience targeting setting.
            &quot;firstAndThirdPartyAudienceId&quot;: &quot;A String&quot;, # Required. First and third party audience id of the first and third party audience targeting setting. This id is first_and_third_party_audience_id.
            &quot;recency&quot;: &quot;A String&quot;, # The recency of the first and third party audience targeting setting. Only applicable to first party audiences, otherwise will be ignored. For more info, refer to https://support.google.com/displayvideo/answer/2949947#recency When unspecified, no recency limit will be used.
          },
        ],
      },
    ],
    &quot;includedGoogleAudienceGroup&quot;: { # Details of Google audience group. All Google audience targeting settings are logically ‘OR’ of each other. # The Google audience ids of the included Google audience group. Contains Google audience ids only.
      &quot;settings&quot;: [ # Required. All Google audience targeting settings in Google audience group. Repeated settings with same id will be ignored.
        { # Details of Google audience targeting setting.
          &quot;googleAudienceId&quot;: &quot;A String&quot;, # Required. Google audience id of the Google audience targeting setting. This id is google_audience_id.
        },
      ],
    },
  },
  &quot;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 &#x27;TARGETING_TYPE_AUDIO_CONTENT_TYPE&#x27;.
    &quot;audioContentType&quot;: &quot;A String&quot;, # Output only. The audio content type.
    &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;, # Output only. The content instream position for video or audio ads.
    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id field when targeting_type is `TARGETING_TYPE_CONTENT_INSTREAM_POSITION`.
  },
  &quot;contentOutstreamPositionDetails&quot;: { # Assigned content outstream position targeting option details. This will be populated in the content_outstream_position_details field when targeting_type is `TARGETING_TYPE_CONTENT_OUTSTREAM_POSITION`. # Content outstream position details. This field will be populated when the targeting_type is `TARGETING_TYPE_CONTENT_OUTSTREAM_POSITION`.
    &quot;adType&quot;: &quot;A String&quot;, # Output only. The ad type to target. Only applicable to insertion order targeting and new line items supporting the specified ad type will inherit this targeting option by default. Possible values are: * `AD_TYPE_DISPLAY`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_DISPLAY_DEFAULT`. * `AD_TYPE_VIDEO`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
    &quot;contentOutstreamPosition&quot;: &quot;A String&quot;, # Output only. The content outstream position.
    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id field when targeting_type is `TARGETING_TYPE_CONTENT_OUTSTREAM_POSITION`.
  },
  &quot;dayAndTimeDetails&quot;: { # Representation of a segment of time defined on a specific day of the week and with a start and end time. The time represented by `start_hour` must be before the time represented by `end_hour`. # Day and time details. This field will be populated when the targeting_type is `TARGETING_TYPE_DAY_AND_TIME`.
    &quot;dayOfWeek&quot;: &quot;A String&quot;, # Required. The day of the week for this day and time targeting setting.
    &quot;endHour&quot;: 42, # Required. The end hour for day and time targeting. Must be between 1 (1 hour after start of day) and 24 (end of day).
    &quot;startHour&quot;: 42, # Required. The start hour for day and time targeting. Must be between 0 (start of day) and 23 (1 hour before end of day).
    &quot;timeZoneResolution&quot;: &quot;A String&quot;, # Required. The mechanism used to determine which timezone to use for this day and time targeting setting.
  },
  &quot;deviceMakeModelDetails&quot;: { # Assigned device make and model targeting option details. This will be populated in the device_make_model_details field when targeting_type is `TARGETING_TYPE_DEVICE_MAKE_MODEL`. # Device make and model details. This field will be populated when the targeting_type is `TARGETING_TYPE_DEVICE_MAKE_MODEL`.
    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the device make and model.
    &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted.
    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id field when targeting_type is `TARGETING_TYPE_DEVICE_MAKE_MODEL`.
  },
  &quot;deviceTypeDetails&quot;: { # Targeting details for device type. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_DEVICE_TYPE`. # Device Type details. This field will be populated when the targeting_type is `TARGETING_TYPE_DEVICE_TYPE`.
    &quot;deviceType&quot;: &quot;A String&quot;, # Output only. The display name of the device type.
    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. ID of the device type.
  },
  &quot;digitalContentLabelExclusionDetails&quot;: { # Targeting details for digital content label. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION`. # Digital content label details. This field will be populated when the targeting_type is `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION`. Digital content labels are targeting exclusions. Advertiser level digital content label exclusions, if set, are always applied in serving (even though they aren&#x27;t visible in resource settings). Resource settings can exclude content labels in addition to advertiser exclusions, but can&#x27;t override them. A line item won&#x27;t serve if all the digital content labels are excluded.
    &quot;contentRatingTier&quot;: &quot;A String&quot;, # Output only. The display name of the digital content label rating tier.
    &quot;excludedTargetingOptionId&quot;: &quot;A String&quot;, # Required. ID of the digital content label to be EXCLUDED.
  },
  &quot;environmentDetails&quot;: { # Assigned environment targeting option details. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_ENVIRONMENT`. # Environment details. This field will be populated when the targeting_type is `TARGETING_TYPE_ENVIRONMENT`.
    &quot;environment&quot;: &quot;A String&quot;, # Output only. The serving environment.
    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_ENVIRONMENT` (e.g., &quot;508010&quot; for targeting the `ENVIRONMENT_WEB_OPTIMIZED` option).
  },
  &quot;exchangeDetails&quot;: { # Details for assigned exchange targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_EXCHANGE`. # Exchange details. This field will be populated when the targeting_type is `TARGETING_TYPE_EXCHANGE`.
    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_EXCHANGE`.
  },
  &quot;genderDetails&quot;: { # Details for assigned gender targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARTGETING_TYPE_GENDER`. # Gender details. This field will be populated when the targeting_type is `TARGETING_TYPE_GENDER`.
    &quot;gender&quot;: &quot;A String&quot;, # Output only. The gender of the audience.
    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_GENDER`.
  },
  &quot;geoRegionDetails&quot;: { # Details for assigned geographic region targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_GEO_REGION`. # Geographic region details. This field will be populated when the targeting_type is `TARGETING_TYPE_GEO_REGION`.
    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the geographic region (e.g., &quot;Ontario, Canada&quot;).
    &quot;geoRegionType&quot;: &quot;A String&quot;, # Output only. The type of geographic region targeting.
    &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted.
    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_GEO_REGION`.
  },
  &quot;householdIncomeDetails&quot;: { # Details for assigned household income targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_HOUSEHOLD_INCOME`. # Household income details. This field will be populated when the targeting_type is `TARGETING_TYPE_HOUSEHOLD_INCOME`.
    &quot;householdIncome&quot;: &quot;A String&quot;, # Output only. The household income of the audience.
    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_HOUSEHOLD_INCOME`.
  },
  &quot;inheritance&quot;: &quot;A String&quot;, # Output only. The inheritance status of the assigned targeting option.
  &quot;inventorySourceDetails&quot;: { # Targeting details for inventory source. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_INVENTORY_SOURCE`. # Inventory source details. This field will be populated when the targeting_type is `TARGETING_TYPE_INVENTORY_SOURCE`.
    &quot;inventorySourceId&quot;: &quot;A String&quot;, # Required. ID of the inventory source. Should refer to the inventory_source_id field of an InventorySource resource.
  },
  &quot;inventorySourceGroupDetails&quot;: { # Targeting details for inventory source group. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_INVENTORY_SOURCE_GROUP`. # Inventory source group details. This field will be populated when the targeting_type is `TARGETING_TYPE_INVENTORY_SOURCE_GROUP`.
    &quot;inventorySourceGroupId&quot;: &quot;A String&quot;, # Required. ID of the inventory source group. Should refer to the inventory_source_group_id field of an InventorySourceGroup resource.
  },
  &quot;keywordDetails&quot;: { # Details for assigned keyword targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_KEYWORD`. # Keyword details. This field will be populated when the targeting_type is `TARGETING_TYPE_KEYWORD`. A maximum of 5000 direct negative keywords can be assigned to a resource. No limit on number of positive keywords that can be assigned.
    &quot;keyword&quot;: &quot;A String&quot;, # Required. The keyword, for example `car insurance`. Positive keyword cannot be offensive word. Must be UTF-8 encoded with a maximum size of 255 bytes. Maximum number of characters is 80. Maximum number of words is 10.
    &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted.
  },
  &quot;languageDetails&quot;: { # Details for assigned language targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_LANGUAGE`. # Language details. This field will be populated when the targeting_type is `TARGETING_TYPE_LANGUAGE`.
    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the language (e.g., &quot;French&quot;).
    &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned language targeting options on the same resource must have the same value for this field.
    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_LANGUAGE`.
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name for this assigned targeting option.
  &quot;nativeContentPositionDetails&quot;: { # Details for native content position assigned targeting option. This will be populated in the native_content_position_details field when targeting_type is `TARGETING_TYPE_NATIVE_CONTENT_POSITION`. Explicitly targeting all options is not supported. Remove all native content position targeting options to achieve this effect. # Native content position details. This field will be populated when the targeting_type is `TARGETING_TYPE_NATIVE_CONTENT_POSITION`.
    &quot;contentPosition&quot;: &quot;A String&quot;, # Output only. The content position.
    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id field when targeting_type is `TARGETING_TYPE_NATIVE_CONTENT_POSITION`.
  },
  &quot;negativeKeywordListDetails&quot;: { # Targeting details for negative keyword list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. # Keyword details. This field will be populated when the targeting_type is `TARGETING_TYPE_NEGATIVE_KEYWORD_LIST`. A maximum of 4 negative keyword lists can be assigned to a resource.
    &quot;negativeKeywordListId&quot;: &quot;A String&quot;, # Required. ID of the negative keyword list. Should refer to the negative_keyword_list_id field of a NegativeKeywordList resource.
  },
  &quot;omidDetails&quot;: { # Represents a targetable Open Measurement enabled inventory type. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_OMID`. # Open Measurement enabled inventory details. This field will be populated when the targeting_type is `TARGETING_TYPE_OMID`.
    &quot;omid&quot;: &quot;A String&quot;, # Output only. The type of Open Measurement enabled inventory.
    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_OMID`.
  },
  &quot;onScreenPositionDetails&quot;: { # On screen position targeting option details. This will be populated in the on_screen_position_details field when targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`. # On screen position details. This field will be populated when the targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`.
    &quot;adType&quot;: &quot;A String&quot;, # Output only. The ad type to target. Only applicable to insertion order targeting and new line items supporting the specified ad type will inherit this targeting option by default. Possible values are: * `AD_TYPE_DISPLAY`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_DISPLAY_DEFAULT`. * `AD_TYPE_VIDEO`, the setting will be inherited by new line item when line_item_type is `LINE_ITEM_TYPE_VIDEO_DEFAULT`.
    &quot;onScreenPosition&quot;: &quot;A String&quot;, # Output only. The on screen position.
    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id field when targeting_type is `TARGETING_TYPE_ON_SCREEN_POSITION`.
  },
  &quot;operatingSystemDetails&quot;: { # Assigned operating system targeting option details. This will be populated in the operating_system_details field when targeting_type is `TARGETING_TYPE_OPERATING_SYSTEM`. # Operating system details. This field will be populated when the targeting_type is `TARGETING_TYPE_OPERATING_SYSTEM`.
    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the operating system.
    &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted.
    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting option ID populated in targeting_option_id field when targeting_type is `TARGETING_TYPE_OPERATING_SYSTEM`.
  },
  &quot;parentalStatusDetails&quot;: { # Details for assigned parental status targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARTGETING_TYPE_PARENTAL_STATUS`. # Parental status details. This field will be populated when the targeting_type is `TARGETING_TYPE_PARENTAL_STATUS`.
    &quot;parentalStatus&quot;: &quot;A String&quot;, # Output only. The parental status of the audience.
    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_PARENTAL_STATUS`.
  },
  &quot;poiDetails&quot;: { # Details for assigned POI targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_POI`. # POI details. This field will be populated when the targeting_type is `TARGETING_TYPE_POI`.
    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a POI, e.g. &quot;Times Square&quot;, &quot;Space Needle&quot;, followed by its full address if available.
    &quot;latitude&quot;: 3.14, # Output only. Latitude of the POI rounding to 6th decimal place.
    &quot;longitude&quot;: 3.14, # Output only. Longitude of the POI rounding to 6th decimal place.
    &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the POI that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`.
    &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_POI`. Accepted POI targeting option IDs can be retrieved using SearchTargetingOptions. If targeting a specific latitude/longitude coordinate removed from an address or POI name, you can generate the necessary targeting option ID by rounding the desired coordinate values to the 6th decimal place, removing the decimals, and concatenating the string values separated by a semicolon. For example, you can target the latitude/longitude pair of 40.7414691, -74.003387 using the targeting option ID &quot;40741469;-74003387&quot;.
  },
  &quot;proximityLocationListDetails&quot;: { # Targeting details for proximity location list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`. # Proximity location list details. This field will be populated when the targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`.
    &quot;proximityLocationListId&quot;: &quot;A String&quot;, # Required. ID of the proximity location list. Should refer to the location_list_id field of a LocationList resource whose type is `TARGETING_LOCATION_TYPE_PROXIMITY`.
    &quot;proximityRadiusRange&quot;: &quot;A String&quot;, # Required. Radius range for proximity location list. This represents the size of the area around a chosen location that will be targeted. `All` proximity location targeting under a single resource must have the same radius range value. Set this value to match any existing targeting. If updated, this field will change the radius range for all proximity targeting under the resource.
  },
  &quot;regionalLocationListDetails&quot;: { # Targeting details for regional location list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_REGIONAL_LOCATION_LIST`. # Regional location list details. This field will be populated when the targeting_type is `TARGETING_TYPE_REGIONAL_LOCATION_LIST`.
    &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted.
    &quot;regionalLocationListId&quot;: &quot;A String&quot;, # Required. ID of the regional location list. Should refer to the location_list_id field of a LocationList resource whose type is `TARGETING_LOCATION_TYPE_REGIONAL`.
  },
  &quot;sensitiveCategoryExclusionDetails&quot;: { # Targeting details for sensitive category. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION`. # Sensitive category details. This field will be populated when the targeting_type is `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION`. Sensitive categories are targeting exclusions. Advertiser level sensitive category exclusions, if set, are always applied in serving (even though they aren&#x27;t visible in resource settings). Resource settings can exclude sensitive categories in addition to advertiser exclusions, but can&#x27;t override them.
    &quot;excludedTargetingOptionId&quot;: &quot;A String&quot;, # Required. ID of the sensitive category to be EXCLUDED.
    &quot;sensitiveCategory&quot;: &quot;A String&quot;, # Output only. An enum for the DV360 Sensitive category content classifier.
  },
  &quot;subExchangeDetails&quot;: { # Details for assigned sub-exchange targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_SUB_EXCHANGE`. # Sub-exchange details. This field will be populated when the targeting_type is `TARGETING_TYPE_SUB_EXCHANGE`.
    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_SUB_EXCHANGE`.
  },
  &quot;targetingType&quot;: &quot;A String&quot;, # Output only. Identifies the type of this assigned targeting option.
  &quot;thirdPartyVerifierDetails&quot;: { # Assigned third party verifier targeting option details. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_THIRD_PARTY_VERIFIER`. # Third party verification details. This field will be populated when the targeting_type is `TARGETING_TYPE_THIRD_PARTY_VERIFIER`.
    &quot;adloox&quot;: { # Details of Adloox settings. # Third party brand verifier -- Adloox.
      &quot;excludedAdlooxCategories&quot;: [ # Adloox&#x27;s brand safety settings.
        &quot;A String&quot;,
      ],
    },
    &quot;doubleVerify&quot;: { # Details of DoubleVerify settings. # Third party brand verifier -- DoubleVerify.
      &quot;appStarRating&quot;: { # Details of DoubleVerify star ratings settings. # Avoid bidding on apps with the star ratings.
        &quot;avoidInsufficientStarRating&quot;: True or False, # Avoid bidding on apps with insufficient star ratings.
        &quot;avoidedStarRating&quot;: &quot;A String&quot;, # Avoid bidding on apps with the star ratings.
      },
      &quot;avoidedAgeRatings&quot;: [ # Avoid bidding on apps with the age rating.
        &quot;A String&quot;,
      ],
      &quot;brandSafetyCategories&quot;: { # Settings for brand safety controls. # DV Brand Safety Controls.
        &quot;avoidUnknownBrandSafetyCategory&quot;: True or False, # Unknown or unrateable.
        &quot;avoidedHighSeverityCategories&quot;: [ # Brand safety high severity avoidance categories.
          &quot;A String&quot;,
        ],
        &quot;avoidedMediumSeverityCategories&quot;: [ # Brand safety medium severity avoidance categories.
          &quot;A String&quot;,
        ],
      },
      &quot;customSegmentId&quot;: &quot;A String&quot;, # The custom segment ID provided by DoubleVerify. The ID must start with &quot;51&quot; and consist of eight digits. Custom segment ID cannot be specified along with any of the following fields: * brand_safety_categories * avoided_age_ratings * app_star_rating * fraud_invalid_traffic
      &quot;displayViewability&quot;: { # Details of DoubleVerify display viewability settings. # Display viewability settings (applicable to display line items only).
        &quot;iab&quot;: &quot;A String&quot;, # Target web and app inventory to maximize IAB viewable rate.
        &quot;viewableDuring&quot;: &quot;A String&quot;, # Target web and app inventory to maximize 100% viewable duration.
      },
      &quot;fraudInvalidTraffic&quot;: { # DoubleVerify Fraud &amp; Invalid Traffic settings. # Avoid Sites and Apps with historical Fraud &amp; IVT Rates.
        &quot;avoidInsufficientOption&quot;: True or False, # Insufficient Historical Fraud &amp; IVT Stats.
        &quot;avoidedFraudOption&quot;: &quot;A String&quot;, # Avoid Sites and Apps with historical Fraud &amp; IVT.
      },
      &quot;videoViewability&quot;: { # Details of DoubleVerify video viewability settings. # Video viewability settings (applicable to video line items only).
        &quot;playerImpressionRate&quot;: &quot;A String&quot;, # Target inventory to maximize impressions with 400x300 or greater player size.
        &quot;videoIab&quot;: &quot;A String&quot;, # Target web inventory to maximize IAB viewable rate.
        &quot;videoViewableRate&quot;: &quot;A String&quot;, # Target web inventory to maximize fully viewable rate.
      },
    },
    &quot;integralAdScience&quot;: { # Details of Integral Ad Science settings. # Third party brand verifier -- Integral Ad Science.
      &quot;customSegmentId&quot;: [ # The custom segment ID provided by Integral Ad Science. The ID must be between `1000001` and `1999999`, inclusive.
        &quot;A String&quot;,
      ],
      &quot;displayViewability&quot;: &quot;A String&quot;, # Display Viewability section (applicable to display line items only).
      &quot;excludeUnrateable&quot;: True or False, # Brand Safety - **Unrateable**.
      &quot;excludedAdFraudRisk&quot;: &quot;A String&quot;, # Ad Fraud settings.
      &quot;excludedAdultRisk&quot;: &quot;A String&quot;, # Brand Safety - **Adult content**.
      &quot;excludedAlcoholRisk&quot;: &quot;A String&quot;, # Brand Safety - **Alcohol**.
      &quot;excludedDrugsRisk&quot;: &quot;A String&quot;, # Brand Safety - **Drugs**.
      &quot;excludedGamblingRisk&quot;: &quot;A String&quot;, # Brand Safety - **Gambling**.
      &quot;excludedHateSpeechRisk&quot;: &quot;A String&quot;, # Brand Safety - **Hate speech**.
      &quot;excludedIllegalDownloadsRisk&quot;: &quot;A String&quot;, # Brand Safety - **Illegal downloads**.
      &quot;excludedOffensiveLanguageRisk&quot;: &quot;A String&quot;, # Brand Safety - **Offensive language**.
      &quot;excludedViolenceRisk&quot;: &quot;A String&quot;, # Brand Safety - **Violence**.
      &quot;traqScoreOption&quot;: &quot;A String&quot;, # True advertising quality (applicable to Display line items only).
      &quot;videoViewability&quot;: &quot;A String&quot;, # Video Viewability Section (applicable to video line items only).
    },
  },
  &quot;urlDetails&quot;: { # Details for assigned URL targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_URL`. # URL details. This field will be populated when the targeting_type is `TARGETING_TYPE_URL`.
    &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted.
    &quot;url&quot;: &quot;A String&quot;, # Required. The URL, for example `example.com`. DV360 supports two levels of subdirectory targeting, for example `www.example.com/one-subdirectory-level/second-level`, and five levels of subdomain targeting, for example `five.four.three.two.one.example.com`.
  },
  &quot;userRewardedContentDetails&quot;: { # User rewarded content targeting option details. This will be populated in the user_rewarded_content_details field when targeting_type is `TARGETING_TYPE_USER_REWARDED_CONTENT`. # User rewarded content details. This field will be populated when the targeting_type is `TARGETING_TYPE_USER_REWARDED_CONTENT`.
    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id field when targeting_type is `TARGETING_TYPE_USER_REWARDED_CONTENT`.
    &quot;userRewardedContent&quot;: &quot;A String&quot;, # Output only. User rewarded content status for video ads.
  },
  &quot;videoPlayerSizeDetails&quot;: { # Video player size targeting option details. This will be populated in the video_player_size_details field when targeting_type is `TARGETING_TYPE_VIDEO_PLAYER_SIZE`. Explicitly targeting all options is not supported. Remove all video player size targeting options to achieve this effect. # Video player size details. This field will be populated when the targeting_type is `TARGETING_TYPE_VIDEO_PLAYER_SIZE`.
    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id field when targeting_type is `TARGETING_TYPE_VIDEO_PLAYER_SIZE`.
    &quot;videoPlayerSize&quot;: &quot;A String&quot;, # Output only. The video player size.
  },
  &quot;viewabilityDetails&quot;: { # Assigned viewability targeting option details. This will be populated in the viewability_details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_VIEWABILITY`. # Viewability details. This field will be populated when the targeting_type is `TARGETING_TYPE_VIEWABILITY`. You can only target one viewability option per resource.
    &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_VIEWABILITY` (e.g., &quot;509010&quot; for targeting the `VIEWABILITY_10_PERCENT_OR_MORE` option).
    &quot;viewability&quot;: &quot;A String&quot;, # Output only. The predicted viewability percentage.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(advertiserId, campaignId, targetingType, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists the targeting options assigned to a campaign for a specified targeting type.

Args:
  advertiserId: string, Required. The ID of the advertiser the campaign belongs to. (required)
  campaignId: string, Required. The ID of the campaign to list assigned targeting options for. (required)
  targetingType: string, Required. Identifies the type of assigned targeting options to list. Supported targeting types: * `TARGETING_TYPE_AGE_RANGE` * `TARGETING_TYPE_AUTHORIZED_SELLER_STATUS` * `TARGETING_TYPE_CONTENT_INSTREAM_POSITION` * `TARGETING_TYPE_CONTENT_OUTSTREAM_POSITION` * `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION` * `TARGETING_TYPE_ENVIRONMENT` * `TARGETING_TYPE_EXCHANGE` * `TARGETING_TYPE_GENDER` * `TARGETING_TYPE_GEO_REGION` * `TARGETING_TYPE_HOUSEHOLD_INCOME` * `TARGETING_TYPE_INVENTORY_SOURCE` * `TARGETING_TYPE_INVENTORY_SOURCE_GROUP` * `TARGETING_TYPE_LANGUAGE` * `TARGETING_TYPE_ON_SCREEN_POSITION` * `TARGETING_TYPE_PARENTAL_STATUS` * `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION` * `TARGETING_TYPE_SUB_EXCHANGE` * `TARGETING_TYPE_THIRD_PARTY_VERIFIER` * `TARGETING_TYPE_VIEWABILITY` (required)
    Allowed values
      TARGETING_TYPE_UNSPECIFIED - Default value when type is not specified or is unknown in this version.
      TARGETING_TYPE_CHANNEL - Target a channel (a custom group of related websites or apps).
      TARGETING_TYPE_APP_CATEGORY - Target an app category (for example, education or puzzle games).
      TARGETING_TYPE_APP - Target a specific app (for example, Angry Birds).
      TARGETING_TYPE_URL - Target a specific url (for example, quora.com).
      TARGETING_TYPE_DAY_AND_TIME - Target ads during a chosen time period on a specific day.
      TARGETING_TYPE_AGE_RANGE - Target ads to a specific age range (for example, 18-24).
      TARGETING_TYPE_REGIONAL_LOCATION_LIST - Target ads to the specified regions on a regional location list.
      TARGETING_TYPE_PROXIMITY_LOCATION_LIST - Target ads to the specified points of interest on a proximity location list.
      TARGETING_TYPE_GENDER - Target ads to a specific gender (for example, female or male).
      TARGETING_TYPE_VIDEO_PLAYER_SIZE - Target a specific video player size for video ads.
      TARGETING_TYPE_USER_REWARDED_CONTENT - Target user rewarded content for video ads.
      TARGETING_TYPE_PARENTAL_STATUS - Target ads to a specific parental status (for example, parent or not a parent).
      TARGETING_TYPE_CONTENT_INSTREAM_POSITION - Target video or audio ads in a specific content instream position (for example, pre-roll, mid-roll, or post-roll).
      TARGETING_TYPE_CONTENT_OUTSTREAM_POSITION - Target ads in a specific content outstream position.
      TARGETING_TYPE_DEVICE_TYPE - Target ads to a specific device type (for example, tablet or connected TV).
      TARGETING_TYPE_AUDIENCE_GROUP - Target ads to an audience or groups of audiences. Singleton field, at most one can exist on a single Lineitem at a time.
      TARGETING_TYPE_BROWSER - Target ads to specific web browsers (for example, Chrome).
      TARGETING_TYPE_HOUSEHOLD_INCOME - Target ads to a specific household income range (for example, top 10%).
      TARGETING_TYPE_ON_SCREEN_POSITION - Target ads in a specific on screen position.
      TARGETING_TYPE_THIRD_PARTY_VERIFIER - Filter web sites through third party verification (for example, IAS or DoubleVerify).
      TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION - Filter web sites by specific digital content label ratings (for example, DL-MA: suitable only for mature audiences).
      TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION - Filter website content by sensitive categories (for example, adult).
      TARGETING_TYPE_ENVIRONMENT - Target ads to a specific environment (for example, web or app).
      TARGETING_TYPE_CARRIER_AND_ISP - Target ads to a specific network carrier or internet service provider (ISP) (for example, Comcast or Orange).
      TARGETING_TYPE_OPERATING_SYSTEM - Target ads to a specific operating system (for example, macOS).
      TARGETING_TYPE_DEVICE_MAKE_MODEL - Target ads to a specific device make or model (for example, Roku or Samsung).
      TARGETING_TYPE_KEYWORD - Target ads to a specific keyword (for example, dog or retriever).
      TARGETING_TYPE_NEGATIVE_KEYWORD_LIST - Target ads to a specific negative keyword list.
      TARGETING_TYPE_VIEWABILITY - Target ads to a specific viewability (for example, 80% viewable).
      TARGETING_TYPE_CATEGORY - Target ads to a specific content category (for example, arts &amp; entertainment).
      TARGETING_TYPE_INVENTORY_SOURCE - Purchase impressions from specific deals and auction packages.
      TARGETING_TYPE_LANGUAGE - Target ads to a specific language (for example, English or Japanese).
      TARGETING_TYPE_AUTHORIZED_SELLER_STATUS - Target ads to ads.txt authorized sellers.
      TARGETING_TYPE_GEO_REGION - Target ads to a specific regional location (for example, a city or state).
      TARGETING_TYPE_INVENTORY_SOURCE_GROUP - Purchase impressions from a group of deals and auction packages.
      TARGETING_TYPE_EXCHANGE - Purchase impressions from specific exchanges.
      TARGETING_TYPE_SUB_EXCHANGE - Purchase impressions from specific sub-exchanges.
      TARGETING_TYPE_POI - Target ads around a specific point of interest, such as a notable building, a street address, or latitude/longitude coordinates.
      TARGETING_TYPE_BUSINESS_CHAIN - Target ads around locations of a business chain within a specific geo region.
      TARGETING_TYPE_NATIVE_CONTENT_POSITION - Target ads to a specific native content position.
      TARGETING_TYPE_OMID - Target ads in an Open Measurement enabled inventory.
      TARGETING_TYPE_AUDIO_CONTENT_TYPE - Target ads to a specific audio content type.
  filter: string, Allows filtering by assigned targeting option properties. Supported syntax: * Filter expressions are made up of one or more restrictions. * Restrictions can be combined by the logical operator `OR`. * A restriction has the form of `{field} {operator} {value}`. * The operator must be `EQUALS (=)`. * Supported fields: - `assignedTargetingOptionId` - `inheritance` Examples: * AssignedTargetingOptions with ID 1 or 2 `assignedTargetingOptionId=&quot;1&quot; OR assignedTargetingOptionId=&quot;2&quot;` * AssignedTargetingOptions with inheritance status of NOT_INHERITED or INHERITED_FROM_PARTNER `inheritance=&quot;NOT_INHERITED&quot; OR inheritance=&quot;INHERITED_FROM_PARTNER&quot;` The length of this field should be no more than 500 characters.
  orderBy: string, Field by which to sort the list. Acceptable values are: * `assignedTargetingOptionId` (default) The default sorting order is ascending. To specify descending order for a field, a suffix &quot;desc&quot; should be added to the field name. Example: `assignedTargetingOptionId desc`.
  pageSize: integer, Requested page size. Must be between `1` and `5000`. If unspecified will default to `100`. Returns error code `INVALID_ARGUMENT` if an invalid value is specified.
  pageToken: string, A token identifying a page of results the server should return. Typically, this is the value of next_page_token returned from the previous call to `ListCampaignAssignedTargetingOptions` method. If not specified, the first page of results will be returned.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

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

<div class="method">
    <code class="details" id="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>