<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.floodlightGroups.html">floodlightGroups</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#get">get(floodlightGroupId, partnerId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a Floodlight group.</p>
<p class="toc_element">
  <code><a href="#patch">patch(floodlightGroupId, body=None, updateMask=None, partnerId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates an existing Floodlight group. Returns the updated Floodlight group if successful.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="get">get(floodlightGroupId, partnerId=None, x__xgafv=None)</code>
  <pre>Gets a Floodlight group.

Args:
  floodlightGroupId: string, Required. The ID of the Floodlight group to fetch. (required)
  partnerId: string, Required. The partner context by which the Floodlight group is being accessed.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A single Floodlight group.
      &quot;lookbackWindow&quot;: { # Specifies how many days into the past to look when determining whether to record a conversion. # Required. The lookback window for the Floodlight group. Both click_days and impression_days are required. Acceptable values for both are `0` to `90`, inclusive.
        &quot;clickDays&quot;: 42, # Lookback window, in days, from the last time a given user clicked on one of your ads.
        &quot;impressionDays&quot;: 42, # Lookback window, in days, from the last time a given user viewed one of your ads.
      },
      &quot;customVariables&quot;: { # User-defined custom variables owned by the Floodlight group. Use custom Floodlight variables to create reporting data that is tailored to your unique business needs. Custom Floodlight variables use the keys `U1=`, `U2=`, and so on, and can take any values that you choose to pass to them. You can use them to track virtually any type of data that you collect about your customers, such as the genre of movie that a customer purchases, the country to which the item is shipped, and so on. Custom Floodlight variables may not be used to pass any data that could be used or recognized as personally identifiable information (PII). Example: `custom_variables { fields { &quot;U1&quot;: value { number_value: 123.4 }, &quot;U2&quot;: value { string_value: &quot;MyVariable2&quot; }, &quot;U3&quot;: value { string_value: &quot;MyVariable3&quot; } } }` Acceptable values for keys are &quot;U1&quot; through &quot;U100&quot;, inclusive. String values must be less than 64 characters long, and cannot contain the following characters: `&quot;&lt;&gt;`.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
      &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the Floodlight group.
      &quot;webTagType&quot;: &quot;A String&quot;, # Required. The web tag type enabled for the Floodlight group.
      &quot;floodlightGroupId&quot;: &quot;A String&quot;, # Output only. The unique ID of the Floodlight group. Assigned by the system.
      &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the Floodlight group.
      &quot;activeViewConfig&quot;: { # Configuration for custom Active View video viewability metrics. # The Active View video viewability metric configuration for the Floodlight group.
        &quot;minimumVolume&quot;: &quot;A String&quot;, # Required. The minimum percentage of the video ad&#x27;s volume required in order for an impression to be recorded.
        &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the custom metric.
        &quot;minimumDuration&quot;: &quot;A String&quot;, # The minimum visible video duration required (in seconds) in order for an impression to be recorded. You must specify minimum_duration, minimum_quartile or both. If both are specified, an impression meets the metric criteria if either requirement is met (whichever happens first).
        &quot;minimumQuartile&quot;: &quot;A String&quot;, # The minimum visible video duration required, based on the video quartiles, in order for an impression to be recorded. You must specify minimum_duration, minimum_quartile or both. If both are specified, an impression meets the metric criteria if either requirement is met (whichever happens first).
        &quot;minimumViewability&quot;: &quot;A String&quot;, # Required. The minimum percentage of the video ad&#x27;s pixels visible on the screen in order for an impression to be recorded.
      },
    }</pre>
</div>

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

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

{ # A single Floodlight group.
    &quot;lookbackWindow&quot;: { # Specifies how many days into the past to look when determining whether to record a conversion. # Required. The lookback window for the Floodlight group. Both click_days and impression_days are required. Acceptable values for both are `0` to `90`, inclusive.
      &quot;clickDays&quot;: 42, # Lookback window, in days, from the last time a given user clicked on one of your ads.
      &quot;impressionDays&quot;: 42, # Lookback window, in days, from the last time a given user viewed one of your ads.
    },
    &quot;customVariables&quot;: { # User-defined custom variables owned by the Floodlight group. Use custom Floodlight variables to create reporting data that is tailored to your unique business needs. Custom Floodlight variables use the keys `U1=`, `U2=`, and so on, and can take any values that you choose to pass to them. You can use them to track virtually any type of data that you collect about your customers, such as the genre of movie that a customer purchases, the country to which the item is shipped, and so on. Custom Floodlight variables may not be used to pass any data that could be used or recognized as personally identifiable information (PII). Example: `custom_variables { fields { &quot;U1&quot;: value { number_value: 123.4 }, &quot;U2&quot;: value { string_value: &quot;MyVariable2&quot; }, &quot;U3&quot;: value { string_value: &quot;MyVariable3&quot; } } }` Acceptable values for keys are &quot;U1&quot; through &quot;U100&quot;, inclusive. String values must be less than 64 characters long, and cannot contain the following characters: `&quot;&lt;&gt;`.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
    },
    &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the Floodlight group.
    &quot;webTagType&quot;: &quot;A String&quot;, # Required. The web tag type enabled for the Floodlight group.
    &quot;floodlightGroupId&quot;: &quot;A String&quot;, # Output only. The unique ID of the Floodlight group. Assigned by the system.
    &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the Floodlight group.
    &quot;activeViewConfig&quot;: { # Configuration for custom Active View video viewability metrics. # The Active View video viewability metric configuration for the Floodlight group.
      &quot;minimumVolume&quot;: &quot;A String&quot;, # Required. The minimum percentage of the video ad&#x27;s volume required in order for an impression to be recorded.
      &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the custom metric.
      &quot;minimumDuration&quot;: &quot;A String&quot;, # The minimum visible video duration required (in seconds) in order for an impression to be recorded. You must specify minimum_duration, minimum_quartile or both. If both are specified, an impression meets the metric criteria if either requirement is met (whichever happens first).
      &quot;minimumQuartile&quot;: &quot;A String&quot;, # The minimum visible video duration required, based on the video quartiles, in order for an impression to be recorded. You must specify minimum_duration, minimum_quartile or both. If both are specified, an impression meets the metric criteria if either requirement is met (whichever happens first).
      &quot;minimumViewability&quot;: &quot;A String&quot;, # Required. The minimum percentage of the video ad&#x27;s pixels visible on the screen in order for an impression to be recorded.
    },
  }

  updateMask: string, Required. The mask to control which fields to update.
  partnerId: string, Required. The partner context by which the Floodlight group is being accessed.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A single Floodlight group.
      &quot;lookbackWindow&quot;: { # Specifies how many days into the past to look when determining whether to record a conversion. # Required. The lookback window for the Floodlight group. Both click_days and impression_days are required. Acceptable values for both are `0` to `90`, inclusive.
        &quot;clickDays&quot;: 42, # Lookback window, in days, from the last time a given user clicked on one of your ads.
        &quot;impressionDays&quot;: 42, # Lookback window, in days, from the last time a given user viewed one of your ads.
      },
      &quot;customVariables&quot;: { # User-defined custom variables owned by the Floodlight group. Use custom Floodlight variables to create reporting data that is tailored to your unique business needs. Custom Floodlight variables use the keys `U1=`, `U2=`, and so on, and can take any values that you choose to pass to them. You can use them to track virtually any type of data that you collect about your customers, such as the genre of movie that a customer purchases, the country to which the item is shipped, and so on. Custom Floodlight variables may not be used to pass any data that could be used or recognized as personally identifiable information (PII). Example: `custom_variables { fields { &quot;U1&quot;: value { number_value: 123.4 }, &quot;U2&quot;: value { string_value: &quot;MyVariable2&quot; }, &quot;U3&quot;: value { string_value: &quot;MyVariable3&quot; } } }` Acceptable values for keys are &quot;U1&quot; through &quot;U100&quot;, inclusive. String values must be less than 64 characters long, and cannot contain the following characters: `&quot;&lt;&gt;`.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
      &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the Floodlight group.
      &quot;webTagType&quot;: &quot;A String&quot;, # Required. The web tag type enabled for the Floodlight group.
      &quot;floodlightGroupId&quot;: &quot;A String&quot;, # Output only. The unique ID of the Floodlight group. Assigned by the system.
      &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the Floodlight group.
      &quot;activeViewConfig&quot;: { # Configuration for custom Active View video viewability metrics. # The Active View video viewability metric configuration for the Floodlight group.
        &quot;minimumVolume&quot;: &quot;A String&quot;, # Required. The minimum percentage of the video ad&#x27;s volume required in order for an impression to be recorded.
        &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the custom metric.
        &quot;minimumDuration&quot;: &quot;A String&quot;, # The minimum visible video duration required (in seconds) in order for an impression to be recorded. You must specify minimum_duration, minimum_quartile or both. If both are specified, an impression meets the metric criteria if either requirement is met (whichever happens first).
        &quot;minimumQuartile&quot;: &quot;A String&quot;, # The minimum visible video duration required, based on the video quartiles, in order for an impression to be recorded. You must specify minimum_duration, minimum_quartile or both. If both are specified, an impression meets the metric criteria if either requirement is met (whichever happens first).
        &quot;minimumViewability&quot;: &quot;A String&quot;, # Required. The minimum percentage of the video ad&#x27;s pixels visible on the screen in order for an impression to be recorded.
      },
    }</pre>
</div>

</body></html>