<html><body>
<style>

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

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

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

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

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

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

pre {
  margin-top: 0.5em;
}

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

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

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

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

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

</style>

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

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

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

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

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

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

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

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

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

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

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

<p class="toc_element">
  <code><a href="#audit">audit(advertiserId, readMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Audits an advertiser. Returns the counts of used entities per resource type under the advertiser provided. Used entities count towards their respective resource limit. See https://support.google.com/displayvideo/answer/6071450.</p>
<p class="toc_element">
  <code><a href="#bulkEditAdvertiserAssignedTargetingOptions">bulkEditAdvertiserAssignedTargetingOptions(advertiserId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Bulk edits targeting options under a single advertiser. The operation will delete the assigned targeting options provided in BulkEditAdvertiserAssignedTargetingOptionsRequest.delete_requests and then create the assigned targeting options provided in BulkEditAdvertiserAssignedTargetingOptionsRequest.create_requests .</p>
<p class="toc_element">
  <code><a href="#bulkListAdvertiserAssignedTargetingOptions">bulkListAdvertiserAssignedTargetingOptions(advertiserId, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists assigned targeting options of an advertiser across targeting types.</p>
<p class="toc_element">
  <code><a href="#bulkListAdvertiserAssignedTargetingOptions_next">bulkListAdvertiserAssignedTargetingOptions_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#create">create(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new advertiser. Returns the newly created advertiser if successful. This method can take up to 180 seconds to complete.</p>
<p class="toc_element">
  <code><a href="#delete">delete(advertiserId, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes an advertiser. Deleting an advertiser will delete all of its child resources, for example, campaigns, insertion orders and line items. A deleted advertiser cannot be recovered.</p>
<p class="toc_element">
  <code><a href="#get">get(advertiserId, x__xgafv=None)</a></code></p>
<p class="firstline">Gets an advertiser.</p>
<p class="toc_element">
  <code><a href="#list">list(filter=None, orderBy=None, pageSize=None, pageToken=None, partnerId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists advertisers that are accessible to the current user. The order is defined by the order_by parameter. A single partner_id is required. Cross-partner listing is not supported.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(advertiserId, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates an existing advertiser. Returns the updated advertiser if successful.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="audit">audit(advertiserId, readMask=None, x__xgafv=None)</code>
  <pre>Audits an advertiser. Returns the counts of used entities per resource type under the advertiser provided. Used entities count towards their respective resource limit. See https://support.google.com/displayvideo/answer/6071450.

Args:
  advertiserId: string, Required. The ID of the advertiser to audit. (required)
  readMask: string, Optional. The specific fields to return. If no mask is specified, all fields in the response proto will be filled. Valid values are: * usedLineItemsCount * usedInsertionOrdersCount * usedCampaignsCount * channelsCount * negativelyTargetedChannelsCount * negativeKeywordListsCount * adGroupCriteriaCount * campaignCriteriaCount
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for AdvertiserService.AuditAdvertiser.
  &quot;adGroupCriteriaCount&quot;: &quot;A String&quot;, # The number of individual targeting options from the following targeting types that are assigned to a line item under this advertiser. These individual targeting options count towards the limit of 4500000 ad group targeting options per advertiser. Qualifying Targeting types: * Channels, URLs, apps, and collections * Demographic * Google Audiences, including Affinity, Custom Affinity, and In-market audiences * Inventory source * Keyword * Mobile app category * User lists * Video targeting * Viewability
  &quot;campaignCriteriaCount&quot;: &quot;A String&quot;, # The number of individual targeting options from the following targeting types that are assigned to a line item under this advertiser. These individual targeting options count towards the limit of 900000 campaign targeting options per advertiser. Qualifying Targeting types: * Position * Browser * Connection speed * Day and time * Device and operating system * Digital content label * Sensitive categories * Environment * Geography, including business chains and proximity * ISP * Language * Third-party verification
  &quot;channelsCount&quot;: &quot;A String&quot;, # The number of channels created under this advertiser. These channels count towards the limit of 1000 channels per advertiser.
  &quot;negativeKeywordListsCount&quot;: &quot;A String&quot;, # The number of negative keyword lists created under this advertiser. These negative keyword lists count towards the limit of 20 negative keyword lists per advertiser.
  &quot;negativelyTargetedChannelsCount&quot;: &quot;A String&quot;, # The number of negatively targeted channels created under this advertiser. These negatively targeted channels count towards the limit of 5 negatively targeted channels per advertiser.
  &quot;usedCampaignsCount&quot;: &quot;A String&quot;, # The number of ACTIVE and PAUSED campaigns under this advertiser. These campaigns count towards the limit of 9999 campaigns per advertiser.
  &quot;usedInsertionOrdersCount&quot;: &quot;A String&quot;, # The number of ACTIVE, PAUSED and DRAFT insertion orders under this advertiser. These insertion orders count towards the limit of 9999 insertion orders per advertiser.
  &quot;usedLineItemsCount&quot;: &quot;A String&quot;, # The number of ACTIVE, PAUSED, and DRAFT line items under this advertiser. These line items count towards the limit of 9999 line items per advertiser.
}</pre>
</div>

<div class="method">
    <code class="details" id="bulkEditAdvertiserAssignedTargetingOptions">bulkEditAdvertiserAssignedTargetingOptions(advertiserId, body=None, x__xgafv=None)</code>
  <pre>Bulk edits targeting options under a single advertiser. The operation will delete the assigned targeting options provided in BulkEditAdvertiserAssignedTargetingOptionsRequest.delete_requests and then create the assigned targeting options provided in BulkEditAdvertiserAssignedTargetingOptionsRequest.create_requests .

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

{ # Request message for BulkEditAdvertiserAssignedTargetingOptions.
  &quot;createRequests&quot;: [ # The assigned targeting options to create in batch, specified as a list of `CreateAssignedTargetingOptionsRequest`. Supported targeting types: * `TARGETING_TYPE_CHANNEL` * `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION` * `TARGETING_TYPE_OMID` * `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION`
    { # 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`.
          },
          &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` or reuse an existing assigned_targeting_option_id.
          },
          &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` * `TARGETING_TYPE_DIGITAL_CONTENT_LABEL_EXCLUSION` * `TARGETING_TYPE_OMID` * `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION`
    { # 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`.
      },
      &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` or reuse an existing assigned_targeting_option_id.
      },
      &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="bulkListAdvertiserAssignedTargetingOptions">bulkListAdvertiserAssignedTargetingOptions(advertiserId, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists assigned targeting options of an advertiser across targeting types.

Args:
  advertiserId: string, Required. The ID of the advertiser the line item belongs to. (required)
  filter: string, Allows filtering by assigned targeting option properties. Supported syntax: * Filter expressions are made up of one or more restrictions. * Restrictions can be combined by the logical operator `OR`.. * A restriction has the form of `{field} {operator} {value}`. * The operator must be `EQUALS (=)`. * Supported fields: - `targetingType` Examples: * targetingType with value TARGETING_TYPE_CHANNEL `targetingType=&quot;TARGETING_TYPE_CHANNEL&quot;` The length of this field should be no more than 500 characters.
  orderBy: string, Field by which to sort the list. Acceptable values are: * `targetingType` (default) The default sorting order is ascending. To specify descending order for a field, a suffix &quot;desc&quot; should be added to the field name. Example: `targetingType desc`.
  pageSize: integer, Requested page size. The size must be an integer between `1` and `5000`. If unspecified, the default is &#x27;5000&#x27;. Returns error code `INVALID_ARGUMENT` if an invalid value is specified.
  pageToken: string, A token that lets the client fetch the next page of results. Typically, this is the value of next_page_token returned from the previous call to `BulkListAdvertiserAssignedTargetingOptions` 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;assignedTargetingOptions&quot;: [ # The list of assigned targeting options. This list will be absent if empty.
    { # A single assigned targeting option, which defines the state of a targeting option for an entity with targeting settings.
      &quot;ageRangeDetails&quot;: { # Represents a targetable age range. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_AGE_RANGE`. # Age range details. This field will be populated when the targeting_type is `TARGETING_TYPE_AGE_RANGE`.
        &quot;ageRange&quot;: &quot;A String&quot;, # Output only. The age range of an audience. We only support targeting a continuous age range of an audience. Thus, the age range represented in this field can be 1) targeted solely, or, 2) part of a larger continuous age range. The reach of a continuous age range targeting can be expanded by also targeting an audience of an unknown age.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_AGE_RANGE`.
      },
      &quot;appCategoryDetails&quot;: { # Details for assigned app category targeting option. This will be populated in the app_category_details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_APP_CATEGORY`. # App category details. This field will be populated when the targeting_type is `TARGETING_TYPE_APP_CATEGORY`.
        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the app category.
        &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id field when targeting_type is `TARGETING_TYPE_APP_CATEGORY`.
      },
      &quot;appDetails&quot;: { # Details for assigned app targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_APP`. # App details. This field will be populated when the targeting_type is `TARGETING_TYPE_APP`.
        &quot;appId&quot;: &quot;A String&quot;, # Required. The ID of the app. Android&#x27;s Play store app uses bundle ID, for example `com.google.android.gm`. Apple&#x27;s App store app ID uses 9 digit string, for example `422689480`.
        &quot;appPlatform&quot;: &quot;A String&quot;, # Indicates the platform of the targeted app. If this field is not specified, the app platform will be assumed to be mobile (i.e., Android or iOS), and we will derive the appropriate mobile platform from the app ID.
        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the app.
        &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted.
      },
      &quot;assignedTargetingOptionId&quot;: &quot;A String&quot;, # Output only. The unique ID of the assigned targeting option. The ID is only unique within a given resource and targeting type. It may be reused in other contexts.
      &quot;audienceGroupDetails&quot;: { # Assigned audience group targeting option details. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_AUDIENCE_GROUP`. The relation between each group is UNION, except for excluded_first_and_third_party_audience_group and excluded_google_audience_group, of which COMPLEMENT is UNION&#x27;ed with other groups. # Audience targeting details. This field will be populated when the targeting_type is `TARGETING_TYPE_AUDIENCE_GROUP`. You can only target one audience group option per resource.
        &quot;excludedFirstAndThirdPartyAudienceGroup&quot;: { # Details of first and third party audience group. All first and third party audience targeting settings are logically ‘OR’ of each other. # The first and third party audience ids and recencies of the excluded first and third party audience group. Used for negative targeting. Its COMPLEMENT is used to UNION other audience groups.
          &quot;settings&quot;: [ # Required. All first and third party audience targeting settings in first and third party audience group. Repeated settings with same id are not allowed.
            { # Details of first and third party audience targeting setting.
              &quot;firstAndThirdPartyAudienceId&quot;: &quot;A String&quot;, # Required. First and third party audience id of the first and third party audience targeting setting. This id is first_and_third_party_audience_id.
              &quot;recency&quot;: &quot;A String&quot;, # The recency of the first and third party audience targeting setting. Only applicable to first party audiences, otherwise will be ignored. For more info, refer to https://support.google.com/displayvideo/answer/2949947#recency When unspecified, no recency limit will be used.
            },
          ],
        },
        &quot;excludedGoogleAudienceGroup&quot;: { # Details of Google audience group. All Google audience targeting settings are logically ‘OR’ of each other. # The Google audience ids of the excluded Google audience group. Used for negative targeting. It&#x27;s COMPLEMENT is used to UNION other audience groups. Only contains Affinity, In-market and Installed-apps type Google audiences. All items are logically ‘OR’ of each other.
          &quot;settings&quot;: [ # Required. All Google audience targeting settings in Google audience group. Repeated settings with same id will be ignored.
            { # Details of Google audience targeting setting.
              &quot;googleAudienceId&quot;: &quot;A String&quot;, # Required. Google audience id of the Google audience targeting setting. This id is google_audience_id.
            },
          ],
        },
        &quot;includedCombinedAudienceGroup&quot;: { # Details of combined audience group. All combined audience targeting settings are logically ‘OR’ of each other. # The combined audience ids of the included combined audience group. Contains combined audience ids only.
          &quot;settings&quot;: [ # Required. All combined audience targeting settings in combined audience group. Repeated settings with same id will be ignored. The number of combined audience settings should be no more than five, error will be thrown otherwise.
            { # Details of combined audience targeting setting.
              &quot;combinedAudienceId&quot;: &quot;A String&quot;, # Required. Combined audience id of combined audience targeting setting. This id is combined_audience_id.
            },
          ],
        },
        &quot;includedCustomListGroup&quot;: { # Details of custom list group. All custom list targeting settings are logically ‘OR’ of each other. # The custom list ids of the included custom list group. Contains custom list ids only.
          &quot;settings&quot;: [ # Required. All custom list targeting settings in custom list group. Repeated settings with same id will be ignored.
            { # Details of custom list targeting setting.
              &quot;customListId&quot;: &quot;A String&quot;, # Required. Custom id of custom list targeting setting. This id is custom_list_id.
            },
          ],
        },
        &quot;includedFirstAndThirdPartyAudienceGroups&quot;: [ # The first and third party audience ids and recencies of included first and third party audience groups. Each first and third party audience group contains first and third party audience ids only. The relation between each first and third party audience group is INTERSECTION, and the result is UNION&#x27;ed with other audience groups. Repeated groups with same settings will be ignored.
          { # Details of first and third party audience group. All first and third party audience targeting settings are logically ‘OR’ of each other.
            &quot;settings&quot;: [ # Required. All first and third party audience targeting settings in first and third party audience group. Repeated settings with same id are not allowed.
              { # Details of first and third party audience targeting setting.
                &quot;firstAndThirdPartyAudienceId&quot;: &quot;A String&quot;, # Required. First and third party audience id of the first and third party audience targeting setting. This id is first_and_third_party_audience_id.
                &quot;recency&quot;: &quot;A String&quot;, # The recency of the first and third party audience targeting setting. Only applicable to first party audiences, otherwise will be ignored. For more info, refer to https://support.google.com/displayvideo/answer/2949947#recency When unspecified, no recency limit will be used.
              },
            ],
          },
        ],
        &quot;includedGoogleAudienceGroup&quot;: { # Details of Google audience group. All Google audience targeting settings are logically ‘OR’ of each other. # The Google audience ids of the included Google audience group. Contains Google audience ids only.
          &quot;settings&quot;: [ # Required. All Google audience targeting settings in Google audience group. Repeated settings with same id will be ignored.
            { # Details of Google audience targeting setting.
              &quot;googleAudienceId&quot;: &quot;A String&quot;, # Required. Google audience id of the Google audience targeting setting. This id is google_audience_id.
            },
          ],
        },
      },
      &quot;authorizedSellerStatusDetails&quot;: { # Represents an assigned authorized seller status. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_AUTHORIZED_SELLER_STATUS`. # Authorized seller status details. This field will be populated when the targeting_type is `TARGETING_TYPE_AUTHORIZED_SELLER_STATUS`. You can only target one authorized seller status option per resource. If a resource doesn&#x27;t have an authorized seller status option, all authorized sellers indicated as DIRECT or RESELLER in the ads.txt file are targeted by default.
        &quot;authorizedSellerStatus&quot;: &quot;A String&quot;, # Output only. The authorized seller status to target.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_AUTHORIZED_SELLER_STATUS`.
      },
      &quot;browserDetails&quot;: { # Details for assigned browser targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_BROWSER`. # Browser details. This field will be populated when the targeting_type is `TARGETING_TYPE_BROWSER`.
        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the browser.
        &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted. All assigned browser targeting options on the same resource must have the same value for this field.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BROWSER`.
      },
      &quot;businessChainDetails&quot;: { # Details for assigned Business chain targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`. # Business chain details. This field will be populated when the targeting_type is `TARGETING_TYPE_BUSINESS_CHAIN`.
        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of a business chain, e.g. &quot;KFC&quot;, &quot;Chase Bank&quot;.
        &quot;proximityRadiusAmount&quot;: 3.14, # Required. The radius of the area around the business chain that will be targeted. The units of the radius are specified by proximity_radius_unit. Must be 1 to 800 if unit is `DISTANCE_UNIT_KILOMETERS` and 1 to 500 if unit is `DISTANCE_UNIT_MILES`. The minimum increment for both cases is 0.1. Inputs will be rounded to the nearest acceptable value if it is too granular, e.g. 15.57 will become 15.6.
        &quot;proximityRadiusUnit&quot;: &quot;A String&quot;, # Required. The unit of distance by which the targeting radius is measured.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_BUSINESS_CHAIN`.
      },
      &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` or reuse an existing assigned_targeting_option_id.
      },
      &quot;proximityLocationListDetails&quot;: { # Targeting details for proximity location list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`. # Proximity location list details. This field will be populated when the targeting_type is `TARGETING_TYPE_PROXIMITY_LOCATION_LIST`.
        &quot;proximityLocationListId&quot;: &quot;A String&quot;, # Required. ID of the proximity location list. Should refer to the location_list_id field of a LocationList resource whose type is `TARGETING_LOCATION_TYPE_PROXIMITY`.
        &quot;proximityRadiusRange&quot;: &quot;A String&quot;, # Required. Radius range for proximity location list. This represents the size of the area around a chosen location that will be targeted. `All` proximity location targeting under a single resource must have the same radius range value. Set this value to match any existing targeting. If updated, this field will change the radius range for all proximity targeting under the resource.
      },
      &quot;regionalLocationListDetails&quot;: { # Targeting details for regional location list. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_REGIONAL_LOCATION_LIST`. # Regional location list details. This field will be populated when the targeting_type is `TARGETING_TYPE_REGIONAL_LOCATION_LIST`.
        &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted.
        &quot;regionalLocationListId&quot;: &quot;A String&quot;, # Required. ID of the regional location list. Should refer to the location_list_id field of a LocationList resource whose type is `TARGETING_LOCATION_TYPE_REGIONAL`.
      },
      &quot;sensitiveCategoryExclusionDetails&quot;: { # Targeting details for sensitive category. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION`. # Sensitive category details. This field will be populated when the targeting_type is `TARGETING_TYPE_SENSITIVE_CATEGORY_EXCLUSION`. Sensitive categories are targeting exclusions. Advertiser level sensitive category exclusions, if set, are always applied in serving (even though they aren&#x27;t visible in resource settings). Resource settings can exclude sensitive categories in addition to advertiser exclusions, but can&#x27;t override them.
        &quot;excludedTargetingOptionId&quot;: &quot;A String&quot;, # Required. ID of the sensitive category to be EXCLUDED.
        &quot;sensitiveCategory&quot;: &quot;A String&quot;, # Output only. An enum for the DV360 Sensitive category content classifier.
      },
      &quot;subExchangeDetails&quot;: { # Details for assigned sub-exchange targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_SUB_EXCHANGE`. # Sub-exchange details. This field will be populated when the targeting_type is `TARGETING_TYPE_SUB_EXCHANGE`.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_SUB_EXCHANGE`.
      },
      &quot;targetingType&quot;: &quot;A String&quot;, # Output only. Identifies the type of this assigned targeting option.
      &quot;thirdPartyVerifierDetails&quot;: { # Assigned third party verifier targeting option details. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_THIRD_PARTY_VERIFIER`. # Third party verification details. This field will be populated when the targeting_type is `TARGETING_TYPE_THIRD_PARTY_VERIFIER`.
        &quot;adloox&quot;: { # Details of Adloox settings. # Third party brand verifier -- Adloox.
          &quot;excludedAdlooxCategories&quot;: [ # Adloox&#x27;s brand safety settings.
            &quot;A String&quot;,
          ],
        },
        &quot;doubleVerify&quot;: { # Details of DoubleVerify settings. # Third party brand verifier -- DoubleVerify.
          &quot;appStarRating&quot;: { # Details of DoubleVerify star ratings settings. # Avoid bidding on apps with the star ratings.
            &quot;avoidInsufficientStarRating&quot;: True or False, # Avoid bidding on apps with insufficient star ratings.
            &quot;avoidedStarRating&quot;: &quot;A String&quot;, # Avoid bidding on apps with the star ratings.
          },
          &quot;avoidedAgeRatings&quot;: [ # Avoid bidding on apps with the age rating.
            &quot;A String&quot;,
          ],
          &quot;brandSafetyCategories&quot;: { # Settings for brand safety controls. # DV Brand Safety Controls.
            &quot;avoidUnknownBrandSafetyCategory&quot;: True or False, # Unknown or unrateable.
            &quot;avoidedHighSeverityCategories&quot;: [ # Brand safety high severity avoidance categories.
              &quot;A String&quot;,
            ],
            &quot;avoidedMediumSeverityCategories&quot;: [ # Brand safety medium severity avoidance categories.
              &quot;A String&quot;,
            ],
          },
          &quot;customSegmentId&quot;: &quot;A String&quot;, # The custom segment ID provided by DoubleVerify. The ID must start with &quot;51&quot; and consist of eight digits. Custom segment ID cannot be specified along with any of the following fields: * brand_safety_categories * avoided_age_ratings * app_star_rating * fraud_invalid_traffic
          &quot;displayViewability&quot;: { # Details of DoubleVerify display viewability settings. # Display viewability settings (applicable to display line items only).
            &quot;iab&quot;: &quot;A String&quot;, # Target web and app inventory to maximize IAB viewable rate.
            &quot;viewableDuring&quot;: &quot;A String&quot;, # Target web and app inventory to maximize 100% viewable duration.
          },
          &quot;fraudInvalidTraffic&quot;: { # DoubleVerify Fraud &amp; Invalid Traffic settings. # Avoid Sites and Apps with historical Fraud &amp; IVT Rates.
            &quot;avoidInsufficientOption&quot;: True or False, # Insufficient Historical Fraud &amp; IVT Stats.
            &quot;avoidedFraudOption&quot;: &quot;A String&quot;, # Avoid Sites and Apps with historical Fraud &amp; IVT.
          },
          &quot;videoViewability&quot;: { # Details of DoubleVerify video viewability settings. # Video viewability settings (applicable to video line items only).
            &quot;playerImpressionRate&quot;: &quot;A String&quot;, # Target inventory to maximize impressions with 400x300 or greater player size.
            &quot;videoIab&quot;: &quot;A String&quot;, # Target web inventory to maximize IAB viewable rate.
            &quot;videoViewableRate&quot;: &quot;A String&quot;, # Target web inventory to maximize fully viewable rate.
          },
        },
        &quot;integralAdScience&quot;: { # Details of Integral Ad Science settings. # Third party brand verifier -- Integral Ad Science.
          &quot;customSegmentId&quot;: [ # The custom segment ID provided by Integral Ad Science. The ID must be between `1000001` and `1999999`, inclusive.
            &quot;A String&quot;,
          ],
          &quot;displayViewability&quot;: &quot;A String&quot;, # Display Viewability section (applicable to display line items only).
          &quot;excludeUnrateable&quot;: True or False, # Brand Safety - **Unrateable**.
          &quot;excludedAdFraudRisk&quot;: &quot;A String&quot;, # Ad Fraud settings.
          &quot;excludedAdultRisk&quot;: &quot;A String&quot;, # Brand Safety - **Adult content**.
          &quot;excludedAlcoholRisk&quot;: &quot;A String&quot;, # Brand Safety - **Alcohol**.
          &quot;excludedDrugsRisk&quot;: &quot;A String&quot;, # Brand Safety - **Drugs**.
          &quot;excludedGamblingRisk&quot;: &quot;A String&quot;, # Brand Safety - **Gambling**.
          &quot;excludedHateSpeechRisk&quot;: &quot;A String&quot;, # Brand Safety - **Hate speech**.
          &quot;excludedIllegalDownloadsRisk&quot;: &quot;A String&quot;, # Brand Safety - **Illegal downloads**.
          &quot;excludedOffensiveLanguageRisk&quot;: &quot;A String&quot;, # Brand Safety - **Offensive language**.
          &quot;excludedViolenceRisk&quot;: &quot;A String&quot;, # Brand Safety - **Violence**.
          &quot;traqScoreOption&quot;: &quot;A String&quot;, # True advertising quality (applicable to Display line items only).
          &quot;videoViewability&quot;: &quot;A String&quot;, # Video Viewability Section (applicable to video line items only).
        },
      },
      &quot;urlDetails&quot;: { # Details for assigned URL targeting option. This will be populated in the details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_URL`. # URL details. This field will be populated when the targeting_type is `TARGETING_TYPE_URL`.
        &quot;negative&quot;: True or False, # Indicates if this option is being negatively targeted.
        &quot;url&quot;: &quot;A String&quot;, # Required. The URL, for example `example.com`. DV360 supports two levels of subdirectory targeting, for example `www.example.com/one-subdirectory-level/second-level`, and five levels of subdomain targeting, for example `five.four.three.two.one.example.com`.
      },
      &quot;userRewardedContentDetails&quot;: { # User rewarded content targeting option details. This will be populated in the user_rewarded_content_details field when targeting_type is `TARGETING_TYPE_USER_REWARDED_CONTENT`. # User rewarded content details. This field will be populated when the targeting_type is `TARGETING_TYPE_USER_REWARDED_CONTENT`.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id field when targeting_type is `TARGETING_TYPE_USER_REWARDED_CONTENT`.
        &quot;userRewardedContent&quot;: &quot;A String&quot;, # Output only. User rewarded content status for video ads.
      },
      &quot;videoPlayerSizeDetails&quot;: { # Video player size targeting option details. This will be populated in the video_player_size_details field when targeting_type is `TARGETING_TYPE_VIDEO_PLAYER_SIZE`. Explicitly targeting all options is not supported. Remove all video player size targeting options to achieve this effect. # Video player size details. This field will be populated when the targeting_type is `TARGETING_TYPE_VIDEO_PLAYER_SIZE`.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id field when targeting_type is `TARGETING_TYPE_VIDEO_PLAYER_SIZE`.
        &quot;videoPlayerSize&quot;: &quot;A String&quot;, # Output only. The video player size.
      },
      &quot;viewabilityDetails&quot;: { # Assigned viewability targeting option details. This will be populated in the viewability_details field of an AssignedTargetingOption when targeting_type is `TARGETING_TYPE_VIEWABILITY`. # Viewability details. This field will be populated when the targeting_type is `TARGETING_TYPE_VIEWABILITY`. You can only target one viewability option per resource.
        &quot;targetingOptionId&quot;: &quot;A String&quot;, # Required. The targeting_option_id of a TargetingOption of type `TARGETING_TYPE_VIEWABILITY` (e.g., &quot;509010&quot; for targeting the `VIEWABILITY_10_PERCENT_OR_MORE` option).
        &quot;viewability&quot;: &quot;A String&quot;, # Output only. The predicted viewability percentage.
      },
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token identifying the next page of results. This value should be specified as the pageToken in a subsequent BulkListAdvertiserAssignedTargetingOptionsRequest to fetch the next page of results. This token will be absent if there are no more assigned_targeting_options to return.
}</pre>
</div>

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

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

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

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

<div class="method">
    <code class="details" id="create">create(body=None, x__xgafv=None)</code>
  <pre>Creates a new advertiser. Returns the newly created advertiser if successful. This method can take up to 180 seconds to complete.

Args:
  body: object, The request body.
    The object takes the form of:

{ # A single advertiser in Display &amp; Video 360 (DV360).
  &quot;adServerConfig&quot;: { # Ad server related settings of an advertiser. # Required. Immutable. Ad server related settings of the advertiser.
    &quot;cmHybridConfig&quot;: { # Settings for advertisers that use both Campaign Manager 360 (CM360) and third-party ad servers. # The configuration for advertisers that use both Campaign Manager 360 (CM360) and third-party ad servers.
      &quot;cmAccountId&quot;: &quot;A String&quot;, # Required. Immutable. Account ID of the CM360 Floodlight configuration linked with the DV360 advertiser.
      &quot;cmFloodlightConfigId&quot;: &quot;A String&quot;, # Required. Immutable. ID of the CM360 Floodlight configuration linked with the DV360 advertiser.
      &quot;cmFloodlightLinkingAuthorized&quot;: True or False, # Required. Immutable. By setting this field to `true`, you, on behalf of your company, authorize the sharing of information from the given Floodlight configuration to this Display &amp; Video 360 advertiser.
      &quot;cmSyncableSiteIds&quot;: [ # A list of CM360 sites whose placements will be synced to DV360 as creatives. If absent or empty in CreateAdvertiser method, the system will automatically create a CM360 site. Removing sites from this list may cause DV360 creatives synced from CM360 to be deleted. At least one site must be specified.
        &quot;A String&quot;,
      ],
      &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;thirdPartyOnlyConfig&quot;: { # Settings for advertisers that use third-party ad servers only. # The configuration for advertisers that use third-party ad servers only.
      &quot;pixelOrderIdReportingEnabled&quot;: True or False, # Whether or not order ID reporting for pixels is enabled. This value cannot be changed once set to `true`.
    },
  },
  &quot;advertiserId&quot;: &quot;A String&quot;, # Output only. The unique ID of the advertiser. Assigned by the system.
  &quot;creativeConfig&quot;: { # Creatives related settings of an advertiser. # Required. Creative related settings of the advertiser.
    &quot;dynamicCreativeEnabled&quot;: True or False, # Whether or not the advertiser is enabled for dynamic creatives.
    &quot;iasClientId&quot;: &quot;A String&quot;, # An ID for configuring campaign monitoring provided by Integral Ad Service (IAS). The DV360 system will append an IAS &quot;Campaign Monitor&quot; tag containing this ID to the creative tag.
    &quot;obaComplianceDisabled&quot;: True or False, # Whether or not to use DV360&#x27;s Online Behavioral Advertising (OBA) compliance. Warning: Changing OBA settings may cause the audit status of your creatives to be reset by some ad exchanges, making them ineligible to serve until they are re-approved.
    &quot;videoCreativeDataSharingAuthorized&quot;: True or False, # By setting this field to `true`, you, on behalf of your company, authorize Google to use video creatives associated with this Display &amp; Video 360 advertiser to provide reporting and features related to the advertiser&#x27;s television campaigns. Applicable only when the advertiser has a CM360 hybrid ad server configuration.
  },
  &quot;dataAccessConfig&quot;: { # Settings that control how advertiser related data may be accessed. # Settings that control how advertiser data may be accessed.
    &quot;sdfConfig&quot;: { # Structured Data Files (SDF) settings of an advertiser. # Structured Data Files (SDF) settings for the advertiser. If not specified, the SDF settings of the parent partner are used.
      &quot;overridePartnerSdfConfig&quot;: True or False, # Whether or not this advertiser overrides the SDF configuration of its parent partner. By default, an advertiser inherits the SDF configuration from the parent partner. To override the partner configuration, set this field to `true` and provide the new configuration in sdfConfig.
      &quot;sdfConfig&quot;: { # Structured Data File (SDF) related settings. # The SDF configuration for the advertiser. * Required when overridePartnerSdfConfig is `true`. * Output only when overridePartnerSdfConfig is `false`.
        &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;, # Required. The display name of the advertiser. Must be UTF-8 encoded with a maximum size of 240 bytes.
  &quot;entityStatus&quot;: &quot;A String&quot;, # Required. Controls whether or not insertion orders and line items of the advertiser can spend their budgets and bid on inventory. * Accepted values are `ENTITY_STATUS_ACTIVE`, `ENTITY_STATUS_PAUSED` and `ENTITY_STATUS_SCHEDULED_FOR_DELETION`. * If set to `ENTITY_STATUS_SCHEDULED_FOR_DELETION`, the advertiser will be deleted 30 days from when it was first scheduled for deletion.
  &quot;generalConfig&quot;: { # General settings of an advertiser. # Required. General settings of the advertiser.
    &quot;currencyCode&quot;: &quot;A String&quot;, # Required. Immutable. Advertiser&#x27;s currency in ISO 4217 format. Accepted codes and the currencies they represent are: Currency Code : Currency Name * `ARS` : Argentine Peso * `AUD` : Australian Dollar * `BRL` : Brazilian Real * `CAD` : Canadian Dollar * `CHF` : Swiss Franc * `CLP` : Chilean Peso * `CNY` : Chinese Yuan * `COP` : Colombian Peso * `CZK` : Czech Koruna * `DKK` : Danish Krone * `EGP` : Egyption Pound * `EUR` : Euro * `GBP` : British Pound * `HKD` : Hong Kong Dollar * `HUF` : Hungarian Forint * `IDR` : Indonesian Rupiah * `ILS` : Israeli Shekel * `INR` : Indian Rupee * `JPY` : Japanese Yen * `KRW` : South Korean Won * `MXN` : Mexican Pesos * `MYR` : Malaysian Ringgit * `NGN` : Nigerian Naira * `NOK` : Norwegian Krone * `NZD` : New Zealand Dollar * `PEN` : Peruvian Nuevo Sol * `PLN` : Polish Zloty * `RON` : New Romanian Leu * `RUB` : Russian Ruble * `SEK` : Swedish Krona * `TRY` : Turkish Lira * `TWD` : New Taiwan Dollar * `USD` : US Dollar * `ZAR` : South African Rand
    &quot;domainUrl&quot;: &quot;A String&quot;, # Required. The domain URL of the advertiser&#x27;s primary website. The system will send this information to publishers that require website URL to associate a campaign with an advertiser. Provide a URL with no path or query string, beginning with `http:` or `https:`. For example, http://www.example.com
    &quot;timeZone&quot;: &quot;A String&quot;, # Output only. The standard TZ database name of the advertiser&#x27;s time zone. For example, `America/New_York`. See more at: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones For CM360 hybrid advertisers, the time zone is the same as that of the associated CM360 account; for third-party only advertisers, the time zone is the same as that of the parent partner.
  },
  &quot;integrationDetails&quot;: { # Integration details of an entry. # Integration details of the advertiser. Only integrationCode is currently applicable to advertiser. Other fields of IntegrationDetails are not supported and will be ignored if provided.
    &quot;details&quot;: &quot;A String&quot;, # Additional details of the entry in string format. Must be UTF-8 encoded with a length of no more than 1000 characters.
    &quot;integrationCode&quot;: &quot;A String&quot;, # An external identifier to be associated with the entry. The integration code will show up together with the entry in many places in the system, for example, reporting. Must be UTF-8 encoded with a length of no more than 500 characters.
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the advertiser.
  &quot;partnerId&quot;: &quot;A String&quot;, # Required. Immutable. The unique ID of the partner that the advertiser belongs to.
  &quot;prismaEnabled&quot;: True or False, # Whether integration with Mediaocean (Prisma) is enabled. By enabling this, you agree to the following: On behalf of my company, I authorize Mediaocean (Prisma) to send budget segment plans to Google, and I authorize Google to send corresponding reporting and invoices from DV360 to Mediaocean for the purposes of budget planning, billing, and reconciliation for this advertiser.
  &quot;servingConfig&quot;: { # Targeting settings related to ad serving of an advertiser. # Targeting settings related to ad serving of the advertiser.
    &quot;exemptTvFromViewabilityTargeting&quot;: True or False, # Whether or not connected TV devices are exempt from viewability targeting for all video line items under the advertiser.
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the advertiser was last updated. Assigned by the system.
}

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

Returns:
  An object of the form:

    { # A single advertiser in Display &amp; Video 360 (DV360).
  &quot;adServerConfig&quot;: { # Ad server related settings of an advertiser. # Required. Immutable. Ad server related settings of the advertiser.
    &quot;cmHybridConfig&quot;: { # Settings for advertisers that use both Campaign Manager 360 (CM360) and third-party ad servers. # The configuration for advertisers that use both Campaign Manager 360 (CM360) and third-party ad servers.
      &quot;cmAccountId&quot;: &quot;A String&quot;, # Required. Immutable. Account ID of the CM360 Floodlight configuration linked with the DV360 advertiser.
      &quot;cmFloodlightConfigId&quot;: &quot;A String&quot;, # Required. Immutable. ID of the CM360 Floodlight configuration linked with the DV360 advertiser.
      &quot;cmFloodlightLinkingAuthorized&quot;: True or False, # Required. Immutable. By setting this field to `true`, you, on behalf of your company, authorize the sharing of information from the given Floodlight configuration to this Display &amp; Video 360 advertiser.
      &quot;cmSyncableSiteIds&quot;: [ # A list of CM360 sites whose placements will be synced to DV360 as creatives. If absent or empty in CreateAdvertiser method, the system will automatically create a CM360 site. Removing sites from this list may cause DV360 creatives synced from CM360 to be deleted. At least one site must be specified.
        &quot;A String&quot;,
      ],
      &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;thirdPartyOnlyConfig&quot;: { # Settings for advertisers that use third-party ad servers only. # The configuration for advertisers that use third-party ad servers only.
      &quot;pixelOrderIdReportingEnabled&quot;: True or False, # Whether or not order ID reporting for pixels is enabled. This value cannot be changed once set to `true`.
    },
  },
  &quot;advertiserId&quot;: &quot;A String&quot;, # Output only. The unique ID of the advertiser. Assigned by the system.
  &quot;creativeConfig&quot;: { # Creatives related settings of an advertiser. # Required. Creative related settings of the advertiser.
    &quot;dynamicCreativeEnabled&quot;: True or False, # Whether or not the advertiser is enabled for dynamic creatives.
    &quot;iasClientId&quot;: &quot;A String&quot;, # An ID for configuring campaign monitoring provided by Integral Ad Service (IAS). The DV360 system will append an IAS &quot;Campaign Monitor&quot; tag containing this ID to the creative tag.
    &quot;obaComplianceDisabled&quot;: True or False, # Whether or not to use DV360&#x27;s Online Behavioral Advertising (OBA) compliance. Warning: Changing OBA settings may cause the audit status of your creatives to be reset by some ad exchanges, making them ineligible to serve until they are re-approved.
    &quot;videoCreativeDataSharingAuthorized&quot;: True or False, # By setting this field to `true`, you, on behalf of your company, authorize Google to use video creatives associated with this Display &amp; Video 360 advertiser to provide reporting and features related to the advertiser&#x27;s television campaigns. Applicable only when the advertiser has a CM360 hybrid ad server configuration.
  },
  &quot;dataAccessConfig&quot;: { # Settings that control how advertiser related data may be accessed. # Settings that control how advertiser data may be accessed.
    &quot;sdfConfig&quot;: { # Structured Data Files (SDF) settings of an advertiser. # Structured Data Files (SDF) settings for the advertiser. If not specified, the SDF settings of the parent partner are used.
      &quot;overridePartnerSdfConfig&quot;: True or False, # Whether or not this advertiser overrides the SDF configuration of its parent partner. By default, an advertiser inherits the SDF configuration from the parent partner. To override the partner configuration, set this field to `true` and provide the new configuration in sdfConfig.
      &quot;sdfConfig&quot;: { # Structured Data File (SDF) related settings. # The SDF configuration for the advertiser. * Required when overridePartnerSdfConfig is `true`. * Output only when overridePartnerSdfConfig is `false`.
        &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;, # Required. The display name of the advertiser. Must be UTF-8 encoded with a maximum size of 240 bytes.
  &quot;entityStatus&quot;: &quot;A String&quot;, # Required. Controls whether or not insertion orders and line items of the advertiser can spend their budgets and bid on inventory. * Accepted values are `ENTITY_STATUS_ACTIVE`, `ENTITY_STATUS_PAUSED` and `ENTITY_STATUS_SCHEDULED_FOR_DELETION`. * If set to `ENTITY_STATUS_SCHEDULED_FOR_DELETION`, the advertiser will be deleted 30 days from when it was first scheduled for deletion.
  &quot;generalConfig&quot;: { # General settings of an advertiser. # Required. General settings of the advertiser.
    &quot;currencyCode&quot;: &quot;A String&quot;, # Required. Immutable. Advertiser&#x27;s currency in ISO 4217 format. Accepted codes and the currencies they represent are: Currency Code : Currency Name * `ARS` : Argentine Peso * `AUD` : Australian Dollar * `BRL` : Brazilian Real * `CAD` : Canadian Dollar * `CHF` : Swiss Franc * `CLP` : Chilean Peso * `CNY` : Chinese Yuan * `COP` : Colombian Peso * `CZK` : Czech Koruna * `DKK` : Danish Krone * `EGP` : Egyption Pound * `EUR` : Euro * `GBP` : British Pound * `HKD` : Hong Kong Dollar * `HUF` : Hungarian Forint * `IDR` : Indonesian Rupiah * `ILS` : Israeli Shekel * `INR` : Indian Rupee * `JPY` : Japanese Yen * `KRW` : South Korean Won * `MXN` : Mexican Pesos * `MYR` : Malaysian Ringgit * `NGN` : Nigerian Naira * `NOK` : Norwegian Krone * `NZD` : New Zealand Dollar * `PEN` : Peruvian Nuevo Sol * `PLN` : Polish Zloty * `RON` : New Romanian Leu * `RUB` : Russian Ruble * `SEK` : Swedish Krona * `TRY` : Turkish Lira * `TWD` : New Taiwan Dollar * `USD` : US Dollar * `ZAR` : South African Rand
    &quot;domainUrl&quot;: &quot;A String&quot;, # Required. The domain URL of the advertiser&#x27;s primary website. The system will send this information to publishers that require website URL to associate a campaign with an advertiser. Provide a URL with no path or query string, beginning with `http:` or `https:`. For example, http://www.example.com
    &quot;timeZone&quot;: &quot;A String&quot;, # Output only. The standard TZ database name of the advertiser&#x27;s time zone. For example, `America/New_York`. See more at: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones For CM360 hybrid advertisers, the time zone is the same as that of the associated CM360 account; for third-party only advertisers, the time zone is the same as that of the parent partner.
  },
  &quot;integrationDetails&quot;: { # Integration details of an entry. # Integration details of the advertiser. Only integrationCode is currently applicable to advertiser. Other fields of IntegrationDetails are not supported and will be ignored if provided.
    &quot;details&quot;: &quot;A String&quot;, # Additional details of the entry in string format. Must be UTF-8 encoded with a length of no more than 1000 characters.
    &quot;integrationCode&quot;: &quot;A String&quot;, # An external identifier to be associated with the entry. The integration code will show up together with the entry in many places in the system, for example, reporting. Must be UTF-8 encoded with a length of no more than 500 characters.
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the advertiser.
  &quot;partnerId&quot;: &quot;A String&quot;, # Required. Immutable. The unique ID of the partner that the advertiser belongs to.
  &quot;prismaEnabled&quot;: True or False, # Whether integration with Mediaocean (Prisma) is enabled. By enabling this, you agree to the following: On behalf of my company, I authorize Mediaocean (Prisma) to send budget segment plans to Google, and I authorize Google to send corresponding reporting and invoices from DV360 to Mediaocean for the purposes of budget planning, billing, and reconciliation for this advertiser.
  &quot;servingConfig&quot;: { # Targeting settings related to ad serving of an advertiser. # Targeting settings related to ad serving of the advertiser.
    &quot;exemptTvFromViewabilityTargeting&quot;: True or False, # Whether or not connected TV devices are exempt from viewability targeting for all video line items under the advertiser.
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the advertiser was last updated. Assigned by the system.
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(advertiserId, x__xgafv=None)</code>
  <pre>Deletes an advertiser. Deleting an advertiser will delete all of its child resources, for example, campaigns, insertion orders and line items. A deleted advertiser cannot be recovered.

Args:
  advertiserId: string, The ID of the advertiser we need to delete. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for `Empty` is empty JSON object `{}`.
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(advertiserId, x__xgafv=None)</code>
  <pre>Gets an advertiser.

Args:
  advertiserId: string, Required. The ID of the advertiser 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 advertiser in Display &amp; Video 360 (DV360).
  &quot;adServerConfig&quot;: { # Ad server related settings of an advertiser. # Required. Immutable. Ad server related settings of the advertiser.
    &quot;cmHybridConfig&quot;: { # Settings for advertisers that use both Campaign Manager 360 (CM360) and third-party ad servers. # The configuration for advertisers that use both Campaign Manager 360 (CM360) and third-party ad servers.
      &quot;cmAccountId&quot;: &quot;A String&quot;, # Required. Immutable. Account ID of the CM360 Floodlight configuration linked with the DV360 advertiser.
      &quot;cmFloodlightConfigId&quot;: &quot;A String&quot;, # Required. Immutable. ID of the CM360 Floodlight configuration linked with the DV360 advertiser.
      &quot;cmFloodlightLinkingAuthorized&quot;: True or False, # Required. Immutable. By setting this field to `true`, you, on behalf of your company, authorize the sharing of information from the given Floodlight configuration to this Display &amp; Video 360 advertiser.
      &quot;cmSyncableSiteIds&quot;: [ # A list of CM360 sites whose placements will be synced to DV360 as creatives. If absent or empty in CreateAdvertiser method, the system will automatically create a CM360 site. Removing sites from this list may cause DV360 creatives synced from CM360 to be deleted. At least one site must be specified.
        &quot;A String&quot;,
      ],
      &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;thirdPartyOnlyConfig&quot;: { # Settings for advertisers that use third-party ad servers only. # The configuration for advertisers that use third-party ad servers only.
      &quot;pixelOrderIdReportingEnabled&quot;: True or False, # Whether or not order ID reporting for pixels is enabled. This value cannot be changed once set to `true`.
    },
  },
  &quot;advertiserId&quot;: &quot;A String&quot;, # Output only. The unique ID of the advertiser. Assigned by the system.
  &quot;creativeConfig&quot;: { # Creatives related settings of an advertiser. # Required. Creative related settings of the advertiser.
    &quot;dynamicCreativeEnabled&quot;: True or False, # Whether or not the advertiser is enabled for dynamic creatives.
    &quot;iasClientId&quot;: &quot;A String&quot;, # An ID for configuring campaign monitoring provided by Integral Ad Service (IAS). The DV360 system will append an IAS &quot;Campaign Monitor&quot; tag containing this ID to the creative tag.
    &quot;obaComplianceDisabled&quot;: True or False, # Whether or not to use DV360&#x27;s Online Behavioral Advertising (OBA) compliance. Warning: Changing OBA settings may cause the audit status of your creatives to be reset by some ad exchanges, making them ineligible to serve until they are re-approved.
    &quot;videoCreativeDataSharingAuthorized&quot;: True or False, # By setting this field to `true`, you, on behalf of your company, authorize Google to use video creatives associated with this Display &amp; Video 360 advertiser to provide reporting and features related to the advertiser&#x27;s television campaigns. Applicable only when the advertiser has a CM360 hybrid ad server configuration.
  },
  &quot;dataAccessConfig&quot;: { # Settings that control how advertiser related data may be accessed. # Settings that control how advertiser data may be accessed.
    &quot;sdfConfig&quot;: { # Structured Data Files (SDF) settings of an advertiser. # Structured Data Files (SDF) settings for the advertiser. If not specified, the SDF settings of the parent partner are used.
      &quot;overridePartnerSdfConfig&quot;: True or False, # Whether or not this advertiser overrides the SDF configuration of its parent partner. By default, an advertiser inherits the SDF configuration from the parent partner. To override the partner configuration, set this field to `true` and provide the new configuration in sdfConfig.
      &quot;sdfConfig&quot;: { # Structured Data File (SDF) related settings. # The SDF configuration for the advertiser. * Required when overridePartnerSdfConfig is `true`. * Output only when overridePartnerSdfConfig is `false`.
        &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;, # Required. The display name of the advertiser. Must be UTF-8 encoded with a maximum size of 240 bytes.
  &quot;entityStatus&quot;: &quot;A String&quot;, # Required. Controls whether or not insertion orders and line items of the advertiser can spend their budgets and bid on inventory. * Accepted values are `ENTITY_STATUS_ACTIVE`, `ENTITY_STATUS_PAUSED` and `ENTITY_STATUS_SCHEDULED_FOR_DELETION`. * If set to `ENTITY_STATUS_SCHEDULED_FOR_DELETION`, the advertiser will be deleted 30 days from when it was first scheduled for deletion.
  &quot;generalConfig&quot;: { # General settings of an advertiser. # Required. General settings of the advertiser.
    &quot;currencyCode&quot;: &quot;A String&quot;, # Required. Immutable. Advertiser&#x27;s currency in ISO 4217 format. Accepted codes and the currencies they represent are: Currency Code : Currency Name * `ARS` : Argentine Peso * `AUD` : Australian Dollar * `BRL` : Brazilian Real * `CAD` : Canadian Dollar * `CHF` : Swiss Franc * `CLP` : Chilean Peso * `CNY` : Chinese Yuan * `COP` : Colombian Peso * `CZK` : Czech Koruna * `DKK` : Danish Krone * `EGP` : Egyption Pound * `EUR` : Euro * `GBP` : British Pound * `HKD` : Hong Kong Dollar * `HUF` : Hungarian Forint * `IDR` : Indonesian Rupiah * `ILS` : Israeli Shekel * `INR` : Indian Rupee * `JPY` : Japanese Yen * `KRW` : South Korean Won * `MXN` : Mexican Pesos * `MYR` : Malaysian Ringgit * `NGN` : Nigerian Naira * `NOK` : Norwegian Krone * `NZD` : New Zealand Dollar * `PEN` : Peruvian Nuevo Sol * `PLN` : Polish Zloty * `RON` : New Romanian Leu * `RUB` : Russian Ruble * `SEK` : Swedish Krona * `TRY` : Turkish Lira * `TWD` : New Taiwan Dollar * `USD` : US Dollar * `ZAR` : South African Rand
    &quot;domainUrl&quot;: &quot;A String&quot;, # Required. The domain URL of the advertiser&#x27;s primary website. The system will send this information to publishers that require website URL to associate a campaign with an advertiser. Provide a URL with no path or query string, beginning with `http:` or `https:`. For example, http://www.example.com
    &quot;timeZone&quot;: &quot;A String&quot;, # Output only. The standard TZ database name of the advertiser&#x27;s time zone. For example, `America/New_York`. See more at: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones For CM360 hybrid advertisers, the time zone is the same as that of the associated CM360 account; for third-party only advertisers, the time zone is the same as that of the parent partner.
  },
  &quot;integrationDetails&quot;: { # Integration details of an entry. # Integration details of the advertiser. Only integrationCode is currently applicable to advertiser. Other fields of IntegrationDetails are not supported and will be ignored if provided.
    &quot;details&quot;: &quot;A String&quot;, # Additional details of the entry in string format. Must be UTF-8 encoded with a length of no more than 1000 characters.
    &quot;integrationCode&quot;: &quot;A String&quot;, # An external identifier to be associated with the entry. The integration code will show up together with the entry in many places in the system, for example, reporting. Must be UTF-8 encoded with a length of no more than 500 characters.
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the advertiser.
  &quot;partnerId&quot;: &quot;A String&quot;, # Required. Immutable. The unique ID of the partner that the advertiser belongs to.
  &quot;prismaEnabled&quot;: True or False, # Whether integration with Mediaocean (Prisma) is enabled. By enabling this, you agree to the following: On behalf of my company, I authorize Mediaocean (Prisma) to send budget segment plans to Google, and I authorize Google to send corresponding reporting and invoices from DV360 to Mediaocean for the purposes of budget planning, billing, and reconciliation for this advertiser.
  &quot;servingConfig&quot;: { # Targeting settings related to ad serving of an advertiser. # Targeting settings related to ad serving of the advertiser.
    &quot;exemptTvFromViewabilityTargeting&quot;: True or False, # Whether or not connected TV devices are exempt from viewability targeting for all video line items under the advertiser.
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the advertiser 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, partnerId=None, x__xgafv=None)</code>
  <pre>Lists advertisers that are accessible to the current user. The order is defined by the order_by parameter. A single partner_id is required. Cross-partner listing is not supported.

Args:
  filter: string, Allows filtering by advertiser properties. Supported syntax: * Filter expressions are made up of one or more restrictions. * Restrictions can be combined by `AND` or `OR` logical operators. A sequence of restrictions implicitly uses `AND`. * A restriction has the form of `{field} {operator} {value}`. * The operator used on `updateTime` must be `GREATER THAN OR EQUAL TO (&gt;=)` or `LESS THAN OR EQUAL TO (&lt;=)`. * The operator must be `EQUALS (=)`. * Supported fields: - `advertiserId` - `displayName` - `entityStatus` - `updateTime` (input in ISO 8601 format, or YYYY-MM-DDTHH:MM:SSZ) Examples: * All active advertisers under a partner: `entityStatus=&quot;ENTITY_STATUS_ACTIVE&quot;` * All advertisers with an update time less than or equal to `2020-11-04T18:54:47Z (format of ISO 8601)`: `updateTime&lt;=&quot;2020-11-04T18:54:47Z&quot;` * All advertisers with an update time greater than or equal to `2020-11-04T18:54:47Z (format of ISO 8601)`: `updateTime&gt;=&quot;2020-11-04T18:54:47Z&quot;` The length of this field should be no more than 500 characters.
  orderBy: string, Field by which to sort the list. Acceptable values are: * `displayName` (default) * `entityStatus` * `updateTime` 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 `ListAdvertisers` method. If not specified, the first page of results will be returned.
  partnerId: string, Required. The ID of the partner that the fetched advertisers should all belong to. The system only supports listing advertisers for one partner at a time.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;advertisers&quot;: [ # The list of advertisers. This list will be absent if empty.
    { # A single advertiser in Display &amp; Video 360 (DV360).
      &quot;adServerConfig&quot;: { # Ad server related settings of an advertiser. # Required. Immutable. Ad server related settings of the advertiser.
        &quot;cmHybridConfig&quot;: { # Settings for advertisers that use both Campaign Manager 360 (CM360) and third-party ad servers. # The configuration for advertisers that use both Campaign Manager 360 (CM360) and third-party ad servers.
          &quot;cmAccountId&quot;: &quot;A String&quot;, # Required. Immutable. Account ID of the CM360 Floodlight configuration linked with the DV360 advertiser.
          &quot;cmFloodlightConfigId&quot;: &quot;A String&quot;, # Required. Immutable. ID of the CM360 Floodlight configuration linked with the DV360 advertiser.
          &quot;cmFloodlightLinkingAuthorized&quot;: True or False, # Required. Immutable. By setting this field to `true`, you, on behalf of your company, authorize the sharing of information from the given Floodlight configuration to this Display &amp; Video 360 advertiser.
          &quot;cmSyncableSiteIds&quot;: [ # A list of CM360 sites whose placements will be synced to DV360 as creatives. If absent or empty in CreateAdvertiser method, the system will automatically create a CM360 site. Removing sites from this list may cause DV360 creatives synced from CM360 to be deleted. At least one site must be specified.
            &quot;A String&quot;,
          ],
          &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;thirdPartyOnlyConfig&quot;: { # Settings for advertisers that use third-party ad servers only. # The configuration for advertisers that use third-party ad servers only.
          &quot;pixelOrderIdReportingEnabled&quot;: True or False, # Whether or not order ID reporting for pixels is enabled. This value cannot be changed once set to `true`.
        },
      },
      &quot;advertiserId&quot;: &quot;A String&quot;, # Output only. The unique ID of the advertiser. Assigned by the system.
      &quot;creativeConfig&quot;: { # Creatives related settings of an advertiser. # Required. Creative related settings of the advertiser.
        &quot;dynamicCreativeEnabled&quot;: True or False, # Whether or not the advertiser is enabled for dynamic creatives.
        &quot;iasClientId&quot;: &quot;A String&quot;, # An ID for configuring campaign monitoring provided by Integral Ad Service (IAS). The DV360 system will append an IAS &quot;Campaign Monitor&quot; tag containing this ID to the creative tag.
        &quot;obaComplianceDisabled&quot;: True or False, # Whether or not to use DV360&#x27;s Online Behavioral Advertising (OBA) compliance. Warning: Changing OBA settings may cause the audit status of your creatives to be reset by some ad exchanges, making them ineligible to serve until they are re-approved.
        &quot;videoCreativeDataSharingAuthorized&quot;: True or False, # By setting this field to `true`, you, on behalf of your company, authorize Google to use video creatives associated with this Display &amp; Video 360 advertiser to provide reporting and features related to the advertiser&#x27;s television campaigns. Applicable only when the advertiser has a CM360 hybrid ad server configuration.
      },
      &quot;dataAccessConfig&quot;: { # Settings that control how advertiser related data may be accessed. # Settings that control how advertiser data may be accessed.
        &quot;sdfConfig&quot;: { # Structured Data Files (SDF) settings of an advertiser. # Structured Data Files (SDF) settings for the advertiser. If not specified, the SDF settings of the parent partner are used.
          &quot;overridePartnerSdfConfig&quot;: True or False, # Whether or not this advertiser overrides the SDF configuration of its parent partner. By default, an advertiser inherits the SDF configuration from the parent partner. To override the partner configuration, set this field to `true` and provide the new configuration in sdfConfig.
          &quot;sdfConfig&quot;: { # Structured Data File (SDF) related settings. # The SDF configuration for the advertiser. * Required when overridePartnerSdfConfig is `true`. * Output only when overridePartnerSdfConfig is `false`.
            &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;, # Required. The display name of the advertiser. Must be UTF-8 encoded with a maximum size of 240 bytes.
      &quot;entityStatus&quot;: &quot;A String&quot;, # Required. Controls whether or not insertion orders and line items of the advertiser can spend their budgets and bid on inventory. * Accepted values are `ENTITY_STATUS_ACTIVE`, `ENTITY_STATUS_PAUSED` and `ENTITY_STATUS_SCHEDULED_FOR_DELETION`. * If set to `ENTITY_STATUS_SCHEDULED_FOR_DELETION`, the advertiser will be deleted 30 days from when it was first scheduled for deletion.
      &quot;generalConfig&quot;: { # General settings of an advertiser. # Required. General settings of the advertiser.
        &quot;currencyCode&quot;: &quot;A String&quot;, # Required. Immutable. Advertiser&#x27;s currency in ISO 4217 format. Accepted codes and the currencies they represent are: Currency Code : Currency Name * `ARS` : Argentine Peso * `AUD` : Australian Dollar * `BRL` : Brazilian Real * `CAD` : Canadian Dollar * `CHF` : Swiss Franc * `CLP` : Chilean Peso * `CNY` : Chinese Yuan * `COP` : Colombian Peso * `CZK` : Czech Koruna * `DKK` : Danish Krone * `EGP` : Egyption Pound * `EUR` : Euro * `GBP` : British Pound * `HKD` : Hong Kong Dollar * `HUF` : Hungarian Forint * `IDR` : Indonesian Rupiah * `ILS` : Israeli Shekel * `INR` : Indian Rupee * `JPY` : Japanese Yen * `KRW` : South Korean Won * `MXN` : Mexican Pesos * `MYR` : Malaysian Ringgit * `NGN` : Nigerian Naira * `NOK` : Norwegian Krone * `NZD` : New Zealand Dollar * `PEN` : Peruvian Nuevo Sol * `PLN` : Polish Zloty * `RON` : New Romanian Leu * `RUB` : Russian Ruble * `SEK` : Swedish Krona * `TRY` : Turkish Lira * `TWD` : New Taiwan Dollar * `USD` : US Dollar * `ZAR` : South African Rand
        &quot;domainUrl&quot;: &quot;A String&quot;, # Required. The domain URL of the advertiser&#x27;s primary website. The system will send this information to publishers that require website URL to associate a campaign with an advertiser. Provide a URL with no path or query string, beginning with `http:` or `https:`. For example, http://www.example.com
        &quot;timeZone&quot;: &quot;A String&quot;, # Output only. The standard TZ database name of the advertiser&#x27;s time zone. For example, `America/New_York`. See more at: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones For CM360 hybrid advertisers, the time zone is the same as that of the associated CM360 account; for third-party only advertisers, the time zone is the same as that of the parent partner.
      },
      &quot;integrationDetails&quot;: { # Integration details of an entry. # Integration details of the advertiser. Only integrationCode is currently applicable to advertiser. Other fields of IntegrationDetails are not supported and will be ignored if provided.
        &quot;details&quot;: &quot;A String&quot;, # Additional details of the entry in string format. Must be UTF-8 encoded with a length of no more than 1000 characters.
        &quot;integrationCode&quot;: &quot;A String&quot;, # An external identifier to be associated with the entry. The integration code will show up together with the entry in many places in the system, for example, reporting. Must be UTF-8 encoded with a length of no more than 500 characters.
      },
      &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the advertiser.
      &quot;partnerId&quot;: &quot;A String&quot;, # Required. Immutable. The unique ID of the partner that the advertiser belongs to.
      &quot;prismaEnabled&quot;: True or False, # Whether integration with Mediaocean (Prisma) is enabled. By enabling this, you agree to the following: On behalf of my company, I authorize Mediaocean (Prisma) to send budget segment plans to Google, and I authorize Google to send corresponding reporting and invoices from DV360 to Mediaocean for the purposes of budget planning, billing, and reconciliation for this advertiser.
      &quot;servingConfig&quot;: { # Targeting settings related to ad serving of an advertiser. # Targeting settings related to ad serving of the advertiser.
        &quot;exemptTvFromViewabilityTargeting&quot;: True or False, # Whether or not connected TV devices are exempt from viewability targeting for all video line items under the advertiser.
      },
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the advertiser was last updated. Assigned by the system.
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token to retrieve the next page of results. Pass this value in the page_token field in the subsequent call to `ListAdvertisers` method to retrieve the next page of results.
}</pre>
</div>

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

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

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

<div class="method">
    <code class="details" id="patch">patch(advertiserId, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates an existing advertiser. Returns the updated advertiser if successful.

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

{ # A single advertiser in Display &amp; Video 360 (DV360).
  &quot;adServerConfig&quot;: { # Ad server related settings of an advertiser. # Required. Immutable. Ad server related settings of the advertiser.
    &quot;cmHybridConfig&quot;: { # Settings for advertisers that use both Campaign Manager 360 (CM360) and third-party ad servers. # The configuration for advertisers that use both Campaign Manager 360 (CM360) and third-party ad servers.
      &quot;cmAccountId&quot;: &quot;A String&quot;, # Required. Immutable. Account ID of the CM360 Floodlight configuration linked with the DV360 advertiser.
      &quot;cmFloodlightConfigId&quot;: &quot;A String&quot;, # Required. Immutable. ID of the CM360 Floodlight configuration linked with the DV360 advertiser.
      &quot;cmFloodlightLinkingAuthorized&quot;: True or False, # Required. Immutable. By setting this field to `true`, you, on behalf of your company, authorize the sharing of information from the given Floodlight configuration to this Display &amp; Video 360 advertiser.
      &quot;cmSyncableSiteIds&quot;: [ # A list of CM360 sites whose placements will be synced to DV360 as creatives. If absent or empty in CreateAdvertiser method, the system will automatically create a CM360 site. Removing sites from this list may cause DV360 creatives synced from CM360 to be deleted. At least one site must be specified.
        &quot;A String&quot;,
      ],
      &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;thirdPartyOnlyConfig&quot;: { # Settings for advertisers that use third-party ad servers only. # The configuration for advertisers that use third-party ad servers only.
      &quot;pixelOrderIdReportingEnabled&quot;: True or False, # Whether or not order ID reporting for pixels is enabled. This value cannot be changed once set to `true`.
    },
  },
  &quot;advertiserId&quot;: &quot;A String&quot;, # Output only. The unique ID of the advertiser. Assigned by the system.
  &quot;creativeConfig&quot;: { # Creatives related settings of an advertiser. # Required. Creative related settings of the advertiser.
    &quot;dynamicCreativeEnabled&quot;: True or False, # Whether or not the advertiser is enabled for dynamic creatives.
    &quot;iasClientId&quot;: &quot;A String&quot;, # An ID for configuring campaign monitoring provided by Integral Ad Service (IAS). The DV360 system will append an IAS &quot;Campaign Monitor&quot; tag containing this ID to the creative tag.
    &quot;obaComplianceDisabled&quot;: True or False, # Whether or not to use DV360&#x27;s Online Behavioral Advertising (OBA) compliance. Warning: Changing OBA settings may cause the audit status of your creatives to be reset by some ad exchanges, making them ineligible to serve until they are re-approved.
    &quot;videoCreativeDataSharingAuthorized&quot;: True or False, # By setting this field to `true`, you, on behalf of your company, authorize Google to use video creatives associated with this Display &amp; Video 360 advertiser to provide reporting and features related to the advertiser&#x27;s television campaigns. Applicable only when the advertiser has a CM360 hybrid ad server configuration.
  },
  &quot;dataAccessConfig&quot;: { # Settings that control how advertiser related data may be accessed. # Settings that control how advertiser data may be accessed.
    &quot;sdfConfig&quot;: { # Structured Data Files (SDF) settings of an advertiser. # Structured Data Files (SDF) settings for the advertiser. If not specified, the SDF settings of the parent partner are used.
      &quot;overridePartnerSdfConfig&quot;: True or False, # Whether or not this advertiser overrides the SDF configuration of its parent partner. By default, an advertiser inherits the SDF configuration from the parent partner. To override the partner configuration, set this field to `true` and provide the new configuration in sdfConfig.
      &quot;sdfConfig&quot;: { # Structured Data File (SDF) related settings. # The SDF configuration for the advertiser. * Required when overridePartnerSdfConfig is `true`. * Output only when overridePartnerSdfConfig is `false`.
        &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;, # Required. The display name of the advertiser. Must be UTF-8 encoded with a maximum size of 240 bytes.
  &quot;entityStatus&quot;: &quot;A String&quot;, # Required. Controls whether or not insertion orders and line items of the advertiser can spend their budgets and bid on inventory. * Accepted values are `ENTITY_STATUS_ACTIVE`, `ENTITY_STATUS_PAUSED` and `ENTITY_STATUS_SCHEDULED_FOR_DELETION`. * If set to `ENTITY_STATUS_SCHEDULED_FOR_DELETION`, the advertiser will be deleted 30 days from when it was first scheduled for deletion.
  &quot;generalConfig&quot;: { # General settings of an advertiser. # Required. General settings of the advertiser.
    &quot;currencyCode&quot;: &quot;A String&quot;, # Required. Immutable. Advertiser&#x27;s currency in ISO 4217 format. Accepted codes and the currencies they represent are: Currency Code : Currency Name * `ARS` : Argentine Peso * `AUD` : Australian Dollar * `BRL` : Brazilian Real * `CAD` : Canadian Dollar * `CHF` : Swiss Franc * `CLP` : Chilean Peso * `CNY` : Chinese Yuan * `COP` : Colombian Peso * `CZK` : Czech Koruna * `DKK` : Danish Krone * `EGP` : Egyption Pound * `EUR` : Euro * `GBP` : British Pound * `HKD` : Hong Kong Dollar * `HUF` : Hungarian Forint * `IDR` : Indonesian Rupiah * `ILS` : Israeli Shekel * `INR` : Indian Rupee * `JPY` : Japanese Yen * `KRW` : South Korean Won * `MXN` : Mexican Pesos * `MYR` : Malaysian Ringgit * `NGN` : Nigerian Naira * `NOK` : Norwegian Krone * `NZD` : New Zealand Dollar * `PEN` : Peruvian Nuevo Sol * `PLN` : Polish Zloty * `RON` : New Romanian Leu * `RUB` : Russian Ruble * `SEK` : Swedish Krona * `TRY` : Turkish Lira * `TWD` : New Taiwan Dollar * `USD` : US Dollar * `ZAR` : South African Rand
    &quot;domainUrl&quot;: &quot;A String&quot;, # Required. The domain URL of the advertiser&#x27;s primary website. The system will send this information to publishers that require website URL to associate a campaign with an advertiser. Provide a URL with no path or query string, beginning with `http:` or `https:`. For example, http://www.example.com
    &quot;timeZone&quot;: &quot;A String&quot;, # Output only. The standard TZ database name of the advertiser&#x27;s time zone. For example, `America/New_York`. See more at: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones For CM360 hybrid advertisers, the time zone is the same as that of the associated CM360 account; for third-party only advertisers, the time zone is the same as that of the parent partner.
  },
  &quot;integrationDetails&quot;: { # Integration details of an entry. # Integration details of the advertiser. Only integrationCode is currently applicable to advertiser. Other fields of IntegrationDetails are not supported and will be ignored if provided.
    &quot;details&quot;: &quot;A String&quot;, # Additional details of the entry in string format. Must be UTF-8 encoded with a length of no more than 1000 characters.
    &quot;integrationCode&quot;: &quot;A String&quot;, # An external identifier to be associated with the entry. The integration code will show up together with the entry in many places in the system, for example, reporting. Must be UTF-8 encoded with a length of no more than 500 characters.
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the advertiser.
  &quot;partnerId&quot;: &quot;A String&quot;, # Required. Immutable. The unique ID of the partner that the advertiser belongs to.
  &quot;prismaEnabled&quot;: True or False, # Whether integration with Mediaocean (Prisma) is enabled. By enabling this, you agree to the following: On behalf of my company, I authorize Mediaocean (Prisma) to send budget segment plans to Google, and I authorize Google to send corresponding reporting and invoices from DV360 to Mediaocean for the purposes of budget planning, billing, and reconciliation for this advertiser.
  &quot;servingConfig&quot;: { # Targeting settings related to ad serving of an advertiser. # Targeting settings related to ad serving of the advertiser.
    &quot;exemptTvFromViewabilityTargeting&quot;: True or False, # Whether or not connected TV devices are exempt from viewability targeting for all video line items under the advertiser.
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the advertiser was last updated. Assigned by the system.
}

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

Returns:
  An object of the form:

    { # A single advertiser in Display &amp; Video 360 (DV360).
  &quot;adServerConfig&quot;: { # Ad server related settings of an advertiser. # Required. Immutable. Ad server related settings of the advertiser.
    &quot;cmHybridConfig&quot;: { # Settings for advertisers that use both Campaign Manager 360 (CM360) and third-party ad servers. # The configuration for advertisers that use both Campaign Manager 360 (CM360) and third-party ad servers.
      &quot;cmAccountId&quot;: &quot;A String&quot;, # Required. Immutable. Account ID of the CM360 Floodlight configuration linked with the DV360 advertiser.
      &quot;cmFloodlightConfigId&quot;: &quot;A String&quot;, # Required. Immutable. ID of the CM360 Floodlight configuration linked with the DV360 advertiser.
      &quot;cmFloodlightLinkingAuthorized&quot;: True or False, # Required. Immutable. By setting this field to `true`, you, on behalf of your company, authorize the sharing of information from the given Floodlight configuration to this Display &amp; Video 360 advertiser.
      &quot;cmSyncableSiteIds&quot;: [ # A list of CM360 sites whose placements will be synced to DV360 as creatives. If absent or empty in CreateAdvertiser method, the system will automatically create a CM360 site. Removing sites from this list may cause DV360 creatives synced from CM360 to be deleted. At least one site must be specified.
        &quot;A String&quot;,
      ],
      &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;thirdPartyOnlyConfig&quot;: { # Settings for advertisers that use third-party ad servers only. # The configuration for advertisers that use third-party ad servers only.
      &quot;pixelOrderIdReportingEnabled&quot;: True or False, # Whether or not order ID reporting for pixels is enabled. This value cannot be changed once set to `true`.
    },
  },
  &quot;advertiserId&quot;: &quot;A String&quot;, # Output only. The unique ID of the advertiser. Assigned by the system.
  &quot;creativeConfig&quot;: { # Creatives related settings of an advertiser. # Required. Creative related settings of the advertiser.
    &quot;dynamicCreativeEnabled&quot;: True or False, # Whether or not the advertiser is enabled for dynamic creatives.
    &quot;iasClientId&quot;: &quot;A String&quot;, # An ID for configuring campaign monitoring provided by Integral Ad Service (IAS). The DV360 system will append an IAS &quot;Campaign Monitor&quot; tag containing this ID to the creative tag.
    &quot;obaComplianceDisabled&quot;: True or False, # Whether or not to use DV360&#x27;s Online Behavioral Advertising (OBA) compliance. Warning: Changing OBA settings may cause the audit status of your creatives to be reset by some ad exchanges, making them ineligible to serve until they are re-approved.
    &quot;videoCreativeDataSharingAuthorized&quot;: True or False, # By setting this field to `true`, you, on behalf of your company, authorize Google to use video creatives associated with this Display &amp; Video 360 advertiser to provide reporting and features related to the advertiser&#x27;s television campaigns. Applicable only when the advertiser has a CM360 hybrid ad server configuration.
  },
  &quot;dataAccessConfig&quot;: { # Settings that control how advertiser related data may be accessed. # Settings that control how advertiser data may be accessed.
    &quot;sdfConfig&quot;: { # Structured Data Files (SDF) settings of an advertiser. # Structured Data Files (SDF) settings for the advertiser. If not specified, the SDF settings of the parent partner are used.
      &quot;overridePartnerSdfConfig&quot;: True or False, # Whether or not this advertiser overrides the SDF configuration of its parent partner. By default, an advertiser inherits the SDF configuration from the parent partner. To override the partner configuration, set this field to `true` and provide the new configuration in sdfConfig.
      &quot;sdfConfig&quot;: { # Structured Data File (SDF) related settings. # The SDF configuration for the advertiser. * Required when overridePartnerSdfConfig is `true`. * Output only when overridePartnerSdfConfig is `false`.
        &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;, # Required. The display name of the advertiser. Must be UTF-8 encoded with a maximum size of 240 bytes.
  &quot;entityStatus&quot;: &quot;A String&quot;, # Required. Controls whether or not insertion orders and line items of the advertiser can spend their budgets and bid on inventory. * Accepted values are `ENTITY_STATUS_ACTIVE`, `ENTITY_STATUS_PAUSED` and `ENTITY_STATUS_SCHEDULED_FOR_DELETION`. * If set to `ENTITY_STATUS_SCHEDULED_FOR_DELETION`, the advertiser will be deleted 30 days from when it was first scheduled for deletion.
  &quot;generalConfig&quot;: { # General settings of an advertiser. # Required. General settings of the advertiser.
    &quot;currencyCode&quot;: &quot;A String&quot;, # Required. Immutable. Advertiser&#x27;s currency in ISO 4217 format. Accepted codes and the currencies they represent are: Currency Code : Currency Name * `ARS` : Argentine Peso * `AUD` : Australian Dollar * `BRL` : Brazilian Real * `CAD` : Canadian Dollar * `CHF` : Swiss Franc * `CLP` : Chilean Peso * `CNY` : Chinese Yuan * `COP` : Colombian Peso * `CZK` : Czech Koruna * `DKK` : Danish Krone * `EGP` : Egyption Pound * `EUR` : Euro * `GBP` : British Pound * `HKD` : Hong Kong Dollar * `HUF` : Hungarian Forint * `IDR` : Indonesian Rupiah * `ILS` : Israeli Shekel * `INR` : Indian Rupee * `JPY` : Japanese Yen * `KRW` : South Korean Won * `MXN` : Mexican Pesos * `MYR` : Malaysian Ringgit * `NGN` : Nigerian Naira * `NOK` : Norwegian Krone * `NZD` : New Zealand Dollar * `PEN` : Peruvian Nuevo Sol * `PLN` : Polish Zloty * `RON` : New Romanian Leu * `RUB` : Russian Ruble * `SEK` : Swedish Krona * `TRY` : Turkish Lira * `TWD` : New Taiwan Dollar * `USD` : US Dollar * `ZAR` : South African Rand
    &quot;domainUrl&quot;: &quot;A String&quot;, # Required. The domain URL of the advertiser&#x27;s primary website. The system will send this information to publishers that require website URL to associate a campaign with an advertiser. Provide a URL with no path or query string, beginning with `http:` or `https:`. For example, http://www.example.com
    &quot;timeZone&quot;: &quot;A String&quot;, # Output only. The standard TZ database name of the advertiser&#x27;s time zone. For example, `America/New_York`. See more at: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones For CM360 hybrid advertisers, the time zone is the same as that of the associated CM360 account; for third-party only advertisers, the time zone is the same as that of the parent partner.
  },
  &quot;integrationDetails&quot;: { # Integration details of an entry. # Integration details of the advertiser. Only integrationCode is currently applicable to advertiser. Other fields of IntegrationDetails are not supported and will be ignored if provided.
    &quot;details&quot;: &quot;A String&quot;, # Additional details of the entry in string format. Must be UTF-8 encoded with a length of no more than 1000 characters.
    &quot;integrationCode&quot;: &quot;A String&quot;, # An external identifier to be associated with the entry. The integration code will show up together with the entry in many places in the system, for example, reporting. Must be UTF-8 encoded with a length of no more than 500 characters.
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the advertiser.
  &quot;partnerId&quot;: &quot;A String&quot;, # Required. Immutable. The unique ID of the partner that the advertiser belongs to.
  &quot;prismaEnabled&quot;: True or False, # Whether integration with Mediaocean (Prisma) is enabled. By enabling this, you agree to the following: On behalf of my company, I authorize Mediaocean (Prisma) to send budget segment plans to Google, and I authorize Google to send corresponding reporting and invoices from DV360 to Mediaocean for the purposes of budget planning, billing, and reconciliation for this advertiser.
  &quot;servingConfig&quot;: { # Targeting settings related to ad serving of an advertiser. # Targeting settings related to ad serving of the advertiser.
    &quot;exemptTvFromViewabilityTargeting&quot;: True or False, # Whether or not connected TV devices are exempt from viewability targeting for all video line items under the advertiser.
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the advertiser was last updated. Assigned by the system.
}</pre>
</div>

</body></html>