<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="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<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, partnerId=None, updateMask=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="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<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;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;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;displayName&quot;: &quot;A String&quot;, # Required. The display name of the custom metric.
      &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.
      &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;displayName&quot;: &quot;A String&quot;, # Required. The display name of the Floodlight group.
    &quot;name&quot;: &quot;A String&quot;, # Output only. The resource 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.
  }</pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(floodlightGroupId, body=None, partnerId=None, updateMask=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;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;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;displayName&quot;: &quot;A String&quot;, # Required. The display name of the custom metric.
    &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.
    &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;displayName&quot;: &quot;A String&quot;, # Required. The display name of the Floodlight group.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource 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.
}

  partnerId: string, Required. The partner context by which the Floodlight group is being accessed.
  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 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;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;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;displayName&quot;: &quot;A String&quot;, # Required. The display name of the custom metric.
      &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.
      &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;displayName&quot;: &quot;A String&quot;, # Required. The display name of the Floodlight group.
    &quot;name&quot;: &quot;A String&quot;, # Output only. The resource 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.
  }</pre>
</div>

</body></html>