<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;activeViewConfig&quot;: { # Configuration for custom Active View video viewability metrics. # The Active View video viewability metric configuration for the Floodlight group.
    &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.
    &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;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;floodlightGroupId&quot;: &quot;A String&quot;, # Output only. The unique ID of the Floodlight group. Assigned by the system.
  &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;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.
}</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;activeViewConfig&quot;: { # Configuration for custom Active View video viewability metrics. # The Active View video viewability metric configuration for the Floodlight group.
    &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.
    &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;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;floodlightGroupId&quot;: &quot;A String&quot;, # Output only. The unique ID of the Floodlight group. Assigned by the system.
  &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;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.
}

  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;activeViewConfig&quot;: { # Configuration for custom Active View video viewability metrics. # The Active View video viewability metric configuration for the Floodlight group.
    &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.
    &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;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;floodlightGroupId&quot;: &quot;A String&quot;, # Output only. The unique ID of the Floodlight group. Assigned by the system.
  &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;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.
}</pre>
</div>

</body></html>