<html><body>
<style>

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

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

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

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

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

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

pre {
  margin-top: 0.5em;
}

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

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

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

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

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

</style>

<h1><a href="displayvideo_v1.html">Display & Video 360 API</a> . <a href="displayvideo_v1.partners.html">partners</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="displayvideo_v1.partners.channels.html">channels()</a></code>
</p>
<p class="firstline">Returns the channels Resource.</p>

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

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

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

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

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

Returns:
  An object of the form:

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

<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="get">get(partnerId, x__xgafv=None)</code>
  <pre>Gets a partner.

Args:
  partnerId: string, Required. The ID of the partner to fetch. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

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

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

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

Returns:
  An object of the form:

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

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

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

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

</body></html>