<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="dfareporting_v3_4.html">Campaign Manager 360 API</a> . <a href="dfareporting_v3_4.floodlightActivityGroups.html">floodlightActivityGroups</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(profileId, id, x__xgafv=None)</a></code></p>
<p class="firstline">Gets one floodlight activity group by ID.</p>
<p class="toc_element">
  <code><a href="#insert">insert(profileId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Inserts a new floodlight activity group.</p>
<p class="toc_element">
  <code><a href="#list">list(profileId, advertiserId=None, floodlightConfigurationId=None, ids=None, maxResults=None, pageToken=None, searchString=None, sortField=None, sortOrder=None, type=None, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves a list of floodlight activity groups, possibly filtered. This method supports paging.</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(profileId, id, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates an existing floodlight activity group. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#update">update(profileId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates an existing floodlight activity group.</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(profileId, id, x__xgafv=None)</code>
  <pre>Gets one floodlight activity group by ID.

Args:
  profileId: string, User profile ID associated with this request. (required)
  id: string, Floodlight activity Group ID. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Contains properties of a Floodlight activity group.
  &quot;accountId&quot;: &quot;A String&quot;, # Account ID of this floodlight activity group. This is a read-only field that can be left blank.
  &quot;advertiserId&quot;: &quot;A String&quot;, # Advertiser ID of this floodlight activity group. If this field is left blank, the value will be copied over either from the floodlight configuration&#x27;s advertiser or from the existing activity group&#x27;s advertiser.
  &quot;advertiserIdDimensionValue&quot;: { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
    &quot;dimensionName&quot;: &quot;A String&quot;, # The name of the dimension.
    &quot;etag&quot;: &quot;A String&quot;, # The eTag of this response for caching purposes.
    &quot;id&quot;: &quot;A String&quot;, # The ID associated with the value if available.
    &quot;kind&quot;: &quot;A String&quot;, # The kind of resource this is, in this case dfareporting#dimensionValue.
    &quot;matchType&quot;: &quot;A String&quot;, # Determines how the &#x27;value&#x27; field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, &#x27;*&#x27; is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions (&#x27;dfa:paidSearch*&#x27;) allow a matchType other than EXACT.
    &quot;value&quot;: &quot;A String&quot;, # The value of the dimension.
  },
  &quot;floodlightConfigurationId&quot;: &quot;A String&quot;, # Floodlight configuration ID of this floodlight activity group. This is a required field.
  &quot;floodlightConfigurationIdDimensionValue&quot;: { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field.
    &quot;dimensionName&quot;: &quot;A String&quot;, # The name of the dimension.
    &quot;etag&quot;: &quot;A String&quot;, # The eTag of this response for caching purposes.
    &quot;id&quot;: &quot;A String&quot;, # The ID associated with the value if available.
    &quot;kind&quot;: &quot;A String&quot;, # The kind of resource this is, in this case dfareporting#dimensionValue.
    &quot;matchType&quot;: &quot;A String&quot;, # Determines how the &#x27;value&#x27; field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, &#x27;*&#x27; is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions (&#x27;dfa:paidSearch*&#x27;) allow a matchType other than EXACT.
    &quot;value&quot;: &quot;A String&quot;, # The value of the dimension.
  },
  &quot;id&quot;: &quot;A String&quot;, # ID of this floodlight activity group. This is a read-only, auto-generated field.
  &quot;idDimensionValue&quot;: { # Represents a DimensionValue resource. # Dimension value for the ID of this floodlight activity group. This is a read-only, auto-generated field.
    &quot;dimensionName&quot;: &quot;A String&quot;, # The name of the dimension.
    &quot;etag&quot;: &quot;A String&quot;, # The eTag of this response for caching purposes.
    &quot;id&quot;: &quot;A String&quot;, # The ID associated with the value if available.
    &quot;kind&quot;: &quot;A String&quot;, # The kind of resource this is, in this case dfareporting#dimensionValue.
    &quot;matchType&quot;: &quot;A String&quot;, # Determines how the &#x27;value&#x27; field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, &#x27;*&#x27; is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions (&#x27;dfa:paidSearch*&#x27;) allow a matchType other than EXACT.
    &quot;value&quot;: &quot;A String&quot;, # The value of the dimension.
  },
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;dfareporting#floodlightActivityGroup&quot;.
  &quot;name&quot;: &quot;A String&quot;, # Name of this floodlight activity group. This is a required field. Must be less than 65 characters long and cannot contain quotes.
  &quot;subaccountId&quot;: &quot;A String&quot;, # Subaccount ID of this floodlight activity group. This is a read-only field that can be left blank.
  &quot;tagString&quot;: &quot;A String&quot;, # Value of the type= parameter in the floodlight tag, which the ad servers use to identify the activity group that the activity belongs to. This is optional: if empty, a new tag string will be generated for you. This string must be 1 to 8 characters long, with valid characters being a-z0-9[ _ ]. This tag string must also be unique among activity groups of the same floodlight configuration. This field is read-only after insertion.
  &quot;type&quot;: &quot;A String&quot;, # Type of the floodlight activity group. This is a required field that is read-only after insertion.
}</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(profileId, body=None, x__xgafv=None)</code>
  <pre>Inserts a new floodlight activity group.

Args:
  profileId: string, User profile ID associated with this request. (required)
  body: object, The request body.
    The object takes the form of:

{ # Contains properties of a Floodlight activity group.
  &quot;accountId&quot;: &quot;A String&quot;, # Account ID of this floodlight activity group. This is a read-only field that can be left blank.
  &quot;advertiserId&quot;: &quot;A String&quot;, # Advertiser ID of this floodlight activity group. If this field is left blank, the value will be copied over either from the floodlight configuration&#x27;s advertiser or from the existing activity group&#x27;s advertiser.
  &quot;advertiserIdDimensionValue&quot;: { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
    &quot;dimensionName&quot;: &quot;A String&quot;, # The name of the dimension.
    &quot;etag&quot;: &quot;A String&quot;, # The eTag of this response for caching purposes.
    &quot;id&quot;: &quot;A String&quot;, # The ID associated with the value if available.
    &quot;kind&quot;: &quot;A String&quot;, # The kind of resource this is, in this case dfareporting#dimensionValue.
    &quot;matchType&quot;: &quot;A String&quot;, # Determines how the &#x27;value&#x27; field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, &#x27;*&#x27; is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions (&#x27;dfa:paidSearch*&#x27;) allow a matchType other than EXACT.
    &quot;value&quot;: &quot;A String&quot;, # The value of the dimension.
  },
  &quot;floodlightConfigurationId&quot;: &quot;A String&quot;, # Floodlight configuration ID of this floodlight activity group. This is a required field.
  &quot;floodlightConfigurationIdDimensionValue&quot;: { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field.
    &quot;dimensionName&quot;: &quot;A String&quot;, # The name of the dimension.
    &quot;etag&quot;: &quot;A String&quot;, # The eTag of this response for caching purposes.
    &quot;id&quot;: &quot;A String&quot;, # The ID associated with the value if available.
    &quot;kind&quot;: &quot;A String&quot;, # The kind of resource this is, in this case dfareporting#dimensionValue.
    &quot;matchType&quot;: &quot;A String&quot;, # Determines how the &#x27;value&#x27; field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, &#x27;*&#x27; is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions (&#x27;dfa:paidSearch*&#x27;) allow a matchType other than EXACT.
    &quot;value&quot;: &quot;A String&quot;, # The value of the dimension.
  },
  &quot;id&quot;: &quot;A String&quot;, # ID of this floodlight activity group. This is a read-only, auto-generated field.
  &quot;idDimensionValue&quot;: { # Represents a DimensionValue resource. # Dimension value for the ID of this floodlight activity group. This is a read-only, auto-generated field.
    &quot;dimensionName&quot;: &quot;A String&quot;, # The name of the dimension.
    &quot;etag&quot;: &quot;A String&quot;, # The eTag of this response for caching purposes.
    &quot;id&quot;: &quot;A String&quot;, # The ID associated with the value if available.
    &quot;kind&quot;: &quot;A String&quot;, # The kind of resource this is, in this case dfareporting#dimensionValue.
    &quot;matchType&quot;: &quot;A String&quot;, # Determines how the &#x27;value&#x27; field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, &#x27;*&#x27; is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions (&#x27;dfa:paidSearch*&#x27;) allow a matchType other than EXACT.
    &quot;value&quot;: &quot;A String&quot;, # The value of the dimension.
  },
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;dfareporting#floodlightActivityGroup&quot;.
  &quot;name&quot;: &quot;A String&quot;, # Name of this floodlight activity group. This is a required field. Must be less than 65 characters long and cannot contain quotes.
  &quot;subaccountId&quot;: &quot;A String&quot;, # Subaccount ID of this floodlight activity group. This is a read-only field that can be left blank.
  &quot;tagString&quot;: &quot;A String&quot;, # Value of the type= parameter in the floodlight tag, which the ad servers use to identify the activity group that the activity belongs to. This is optional: if empty, a new tag string will be generated for you. This string must be 1 to 8 characters long, with valid characters being a-z0-9[ _ ]. This tag string must also be unique among activity groups of the same floodlight configuration. This field is read-only after insertion.
  &quot;type&quot;: &quot;A String&quot;, # Type of the floodlight activity group. This is a required field that is read-only after insertion.
}

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

Returns:
  An object of the form:

    { # Contains properties of a Floodlight activity group.
  &quot;accountId&quot;: &quot;A String&quot;, # Account ID of this floodlight activity group. This is a read-only field that can be left blank.
  &quot;advertiserId&quot;: &quot;A String&quot;, # Advertiser ID of this floodlight activity group. If this field is left blank, the value will be copied over either from the floodlight configuration&#x27;s advertiser or from the existing activity group&#x27;s advertiser.
  &quot;advertiserIdDimensionValue&quot;: { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
    &quot;dimensionName&quot;: &quot;A String&quot;, # The name of the dimension.
    &quot;etag&quot;: &quot;A String&quot;, # The eTag of this response for caching purposes.
    &quot;id&quot;: &quot;A String&quot;, # The ID associated with the value if available.
    &quot;kind&quot;: &quot;A String&quot;, # The kind of resource this is, in this case dfareporting#dimensionValue.
    &quot;matchType&quot;: &quot;A String&quot;, # Determines how the &#x27;value&#x27; field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, &#x27;*&#x27; is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions (&#x27;dfa:paidSearch*&#x27;) allow a matchType other than EXACT.
    &quot;value&quot;: &quot;A String&quot;, # The value of the dimension.
  },
  &quot;floodlightConfigurationId&quot;: &quot;A String&quot;, # Floodlight configuration ID of this floodlight activity group. This is a required field.
  &quot;floodlightConfigurationIdDimensionValue&quot;: { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field.
    &quot;dimensionName&quot;: &quot;A String&quot;, # The name of the dimension.
    &quot;etag&quot;: &quot;A String&quot;, # The eTag of this response for caching purposes.
    &quot;id&quot;: &quot;A String&quot;, # The ID associated with the value if available.
    &quot;kind&quot;: &quot;A String&quot;, # The kind of resource this is, in this case dfareporting#dimensionValue.
    &quot;matchType&quot;: &quot;A String&quot;, # Determines how the &#x27;value&#x27; field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, &#x27;*&#x27; is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions (&#x27;dfa:paidSearch*&#x27;) allow a matchType other than EXACT.
    &quot;value&quot;: &quot;A String&quot;, # The value of the dimension.
  },
  &quot;id&quot;: &quot;A String&quot;, # ID of this floodlight activity group. This is a read-only, auto-generated field.
  &quot;idDimensionValue&quot;: { # Represents a DimensionValue resource. # Dimension value for the ID of this floodlight activity group. This is a read-only, auto-generated field.
    &quot;dimensionName&quot;: &quot;A String&quot;, # The name of the dimension.
    &quot;etag&quot;: &quot;A String&quot;, # The eTag of this response for caching purposes.
    &quot;id&quot;: &quot;A String&quot;, # The ID associated with the value if available.
    &quot;kind&quot;: &quot;A String&quot;, # The kind of resource this is, in this case dfareporting#dimensionValue.
    &quot;matchType&quot;: &quot;A String&quot;, # Determines how the &#x27;value&#x27; field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, &#x27;*&#x27; is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions (&#x27;dfa:paidSearch*&#x27;) allow a matchType other than EXACT.
    &quot;value&quot;: &quot;A String&quot;, # The value of the dimension.
  },
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;dfareporting#floodlightActivityGroup&quot;.
  &quot;name&quot;: &quot;A String&quot;, # Name of this floodlight activity group. This is a required field. Must be less than 65 characters long and cannot contain quotes.
  &quot;subaccountId&quot;: &quot;A String&quot;, # Subaccount ID of this floodlight activity group. This is a read-only field that can be left blank.
  &quot;tagString&quot;: &quot;A String&quot;, # Value of the type= parameter in the floodlight tag, which the ad servers use to identify the activity group that the activity belongs to. This is optional: if empty, a new tag string will be generated for you. This string must be 1 to 8 characters long, with valid characters being a-z0-9[ _ ]. This tag string must also be unique among activity groups of the same floodlight configuration. This field is read-only after insertion.
  &quot;type&quot;: &quot;A String&quot;, # Type of the floodlight activity group. This is a required field that is read-only after insertion.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(profileId, advertiserId=None, floodlightConfigurationId=None, ids=None, maxResults=None, pageToken=None, searchString=None, sortField=None, sortOrder=None, type=None, x__xgafv=None)</code>
  <pre>Retrieves a list of floodlight activity groups, possibly filtered. This method supports paging.

Args:
  profileId: string, User profile ID associated with this request. (required)
  advertiserId: string, Select only floodlight activity groups with the specified advertiser ID. Must specify either advertiserId or floodlightConfigurationId for a non-empty result.
  floodlightConfigurationId: string, Select only floodlight activity groups with the specified floodlight configuration ID. Must specify either advertiserId, or floodlightConfigurationId for a non-empty result.
  ids: string, Select only floodlight activity groups with the specified IDs. Must specify either advertiserId or floodlightConfigurationId for a non-empty result. (repeated)
  maxResults: integer, Maximum number of results to return.
  pageToken: string, Value of the nextPageToken from the previous result page.
  searchString: string, Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, &quot;floodlightactivitygroup*2015&quot; will return objects with names like &quot;floodlightactivitygroup June 2015&quot;, &quot;floodlightactivitygroup April 2015&quot;, or simply &quot;floodlightactivitygroup 2015&quot;. Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of &quot;floodlightactivitygroup&quot; will match objects with name &quot;my floodlightactivitygroup activity&quot;, &quot;floodlightactivitygroup 2015&quot;, or simply &quot;floodlightactivitygroup&quot;.
  sortField: string, Field by which to sort the list.
    Allowed values
      ID - 
      NAME - 
  sortOrder: string, Order of sorted results.
    Allowed values
      ASCENDING - 
      DESCENDING - 
  type: string, Select only floodlight activity groups with the specified floodlight activity group type.
    Allowed values
      COUNTER - 
      SALE - 
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Floodlight Activity Group List Response
  &quot;floodlightActivityGroups&quot;: [ # Floodlight activity group collection.
    { # Contains properties of a Floodlight activity group.
      &quot;accountId&quot;: &quot;A String&quot;, # Account ID of this floodlight activity group. This is a read-only field that can be left blank.
      &quot;advertiserId&quot;: &quot;A String&quot;, # Advertiser ID of this floodlight activity group. If this field is left blank, the value will be copied over either from the floodlight configuration&#x27;s advertiser or from the existing activity group&#x27;s advertiser.
      &quot;advertiserIdDimensionValue&quot;: { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
        &quot;dimensionName&quot;: &quot;A String&quot;, # The name of the dimension.
        &quot;etag&quot;: &quot;A String&quot;, # The eTag of this response for caching purposes.
        &quot;id&quot;: &quot;A String&quot;, # The ID associated with the value if available.
        &quot;kind&quot;: &quot;A String&quot;, # The kind of resource this is, in this case dfareporting#dimensionValue.
        &quot;matchType&quot;: &quot;A String&quot;, # Determines how the &#x27;value&#x27; field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, &#x27;*&#x27; is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions (&#x27;dfa:paidSearch*&#x27;) allow a matchType other than EXACT.
        &quot;value&quot;: &quot;A String&quot;, # The value of the dimension.
      },
      &quot;floodlightConfigurationId&quot;: &quot;A String&quot;, # Floodlight configuration ID of this floodlight activity group. This is a required field.
      &quot;floodlightConfigurationIdDimensionValue&quot;: { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field.
        &quot;dimensionName&quot;: &quot;A String&quot;, # The name of the dimension.
        &quot;etag&quot;: &quot;A String&quot;, # The eTag of this response for caching purposes.
        &quot;id&quot;: &quot;A String&quot;, # The ID associated with the value if available.
        &quot;kind&quot;: &quot;A String&quot;, # The kind of resource this is, in this case dfareporting#dimensionValue.
        &quot;matchType&quot;: &quot;A String&quot;, # Determines how the &#x27;value&#x27; field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, &#x27;*&#x27; is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions (&#x27;dfa:paidSearch*&#x27;) allow a matchType other than EXACT.
        &quot;value&quot;: &quot;A String&quot;, # The value of the dimension.
      },
      &quot;id&quot;: &quot;A String&quot;, # ID of this floodlight activity group. This is a read-only, auto-generated field.
      &quot;idDimensionValue&quot;: { # Represents a DimensionValue resource. # Dimension value for the ID of this floodlight activity group. This is a read-only, auto-generated field.
        &quot;dimensionName&quot;: &quot;A String&quot;, # The name of the dimension.
        &quot;etag&quot;: &quot;A String&quot;, # The eTag of this response for caching purposes.
        &quot;id&quot;: &quot;A String&quot;, # The ID associated with the value if available.
        &quot;kind&quot;: &quot;A String&quot;, # The kind of resource this is, in this case dfareporting#dimensionValue.
        &quot;matchType&quot;: &quot;A String&quot;, # Determines how the &#x27;value&#x27; field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, &#x27;*&#x27; is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions (&#x27;dfa:paidSearch*&#x27;) allow a matchType other than EXACT.
        &quot;value&quot;: &quot;A String&quot;, # The value of the dimension.
      },
      &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;dfareporting#floodlightActivityGroup&quot;.
      &quot;name&quot;: &quot;A String&quot;, # Name of this floodlight activity group. This is a required field. Must be less than 65 characters long and cannot contain quotes.
      &quot;subaccountId&quot;: &quot;A String&quot;, # Subaccount ID of this floodlight activity group. This is a read-only field that can be left blank.
      &quot;tagString&quot;: &quot;A String&quot;, # Value of the type= parameter in the floodlight tag, which the ad servers use to identify the activity group that the activity belongs to. This is optional: if empty, a new tag string will be generated for you. This string must be 1 to 8 characters long, with valid characters being a-z0-9[ _ ]. This tag string must also be unique among activity groups of the same floodlight configuration. This field is read-only after insertion.
      &quot;type&quot;: &quot;A String&quot;, # Type of the floodlight activity group. This is a required field that is read-only after insertion.
    },
  ],
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;dfareporting#floodlightActivityGroupsListResponse&quot;.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Pagination token to be used for the next list operation.
}</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(profileId, id, body=None, x__xgafv=None)</code>
  <pre>Updates an existing floodlight activity group. This method supports patch semantics.

Args:
  profileId: string, User profile ID associated with this request. (required)
  id: string, FloodlightActivityGroup ID. (required)
  body: object, The request body.
    The object takes the form of:

{ # Contains properties of a Floodlight activity group.
  &quot;accountId&quot;: &quot;A String&quot;, # Account ID of this floodlight activity group. This is a read-only field that can be left blank.
  &quot;advertiserId&quot;: &quot;A String&quot;, # Advertiser ID of this floodlight activity group. If this field is left blank, the value will be copied over either from the floodlight configuration&#x27;s advertiser or from the existing activity group&#x27;s advertiser.
  &quot;advertiserIdDimensionValue&quot;: { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
    &quot;dimensionName&quot;: &quot;A String&quot;, # The name of the dimension.
    &quot;etag&quot;: &quot;A String&quot;, # The eTag of this response for caching purposes.
    &quot;id&quot;: &quot;A String&quot;, # The ID associated with the value if available.
    &quot;kind&quot;: &quot;A String&quot;, # The kind of resource this is, in this case dfareporting#dimensionValue.
    &quot;matchType&quot;: &quot;A String&quot;, # Determines how the &#x27;value&#x27; field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, &#x27;*&#x27; is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions (&#x27;dfa:paidSearch*&#x27;) allow a matchType other than EXACT.
    &quot;value&quot;: &quot;A String&quot;, # The value of the dimension.
  },
  &quot;floodlightConfigurationId&quot;: &quot;A String&quot;, # Floodlight configuration ID of this floodlight activity group. This is a required field.
  &quot;floodlightConfigurationIdDimensionValue&quot;: { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field.
    &quot;dimensionName&quot;: &quot;A String&quot;, # The name of the dimension.
    &quot;etag&quot;: &quot;A String&quot;, # The eTag of this response for caching purposes.
    &quot;id&quot;: &quot;A String&quot;, # The ID associated with the value if available.
    &quot;kind&quot;: &quot;A String&quot;, # The kind of resource this is, in this case dfareporting#dimensionValue.
    &quot;matchType&quot;: &quot;A String&quot;, # Determines how the &#x27;value&#x27; field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, &#x27;*&#x27; is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions (&#x27;dfa:paidSearch*&#x27;) allow a matchType other than EXACT.
    &quot;value&quot;: &quot;A String&quot;, # The value of the dimension.
  },
  &quot;id&quot;: &quot;A String&quot;, # ID of this floodlight activity group. This is a read-only, auto-generated field.
  &quot;idDimensionValue&quot;: { # Represents a DimensionValue resource. # Dimension value for the ID of this floodlight activity group. This is a read-only, auto-generated field.
    &quot;dimensionName&quot;: &quot;A String&quot;, # The name of the dimension.
    &quot;etag&quot;: &quot;A String&quot;, # The eTag of this response for caching purposes.
    &quot;id&quot;: &quot;A String&quot;, # The ID associated with the value if available.
    &quot;kind&quot;: &quot;A String&quot;, # The kind of resource this is, in this case dfareporting#dimensionValue.
    &quot;matchType&quot;: &quot;A String&quot;, # Determines how the &#x27;value&#x27; field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, &#x27;*&#x27; is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions (&#x27;dfa:paidSearch*&#x27;) allow a matchType other than EXACT.
    &quot;value&quot;: &quot;A String&quot;, # The value of the dimension.
  },
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;dfareporting#floodlightActivityGroup&quot;.
  &quot;name&quot;: &quot;A String&quot;, # Name of this floodlight activity group. This is a required field. Must be less than 65 characters long and cannot contain quotes.
  &quot;subaccountId&quot;: &quot;A String&quot;, # Subaccount ID of this floodlight activity group. This is a read-only field that can be left blank.
  &quot;tagString&quot;: &quot;A String&quot;, # Value of the type= parameter in the floodlight tag, which the ad servers use to identify the activity group that the activity belongs to. This is optional: if empty, a new tag string will be generated for you. This string must be 1 to 8 characters long, with valid characters being a-z0-9[ _ ]. This tag string must also be unique among activity groups of the same floodlight configuration. This field is read-only after insertion.
  &quot;type&quot;: &quot;A String&quot;, # Type of the floodlight activity group. This is a required field that is read-only after insertion.
}

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

Returns:
  An object of the form:

    { # Contains properties of a Floodlight activity group.
  &quot;accountId&quot;: &quot;A String&quot;, # Account ID of this floodlight activity group. This is a read-only field that can be left blank.
  &quot;advertiserId&quot;: &quot;A String&quot;, # Advertiser ID of this floodlight activity group. If this field is left blank, the value will be copied over either from the floodlight configuration&#x27;s advertiser or from the existing activity group&#x27;s advertiser.
  &quot;advertiserIdDimensionValue&quot;: { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
    &quot;dimensionName&quot;: &quot;A String&quot;, # The name of the dimension.
    &quot;etag&quot;: &quot;A String&quot;, # The eTag of this response for caching purposes.
    &quot;id&quot;: &quot;A String&quot;, # The ID associated with the value if available.
    &quot;kind&quot;: &quot;A String&quot;, # The kind of resource this is, in this case dfareporting#dimensionValue.
    &quot;matchType&quot;: &quot;A String&quot;, # Determines how the &#x27;value&#x27; field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, &#x27;*&#x27; is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions (&#x27;dfa:paidSearch*&#x27;) allow a matchType other than EXACT.
    &quot;value&quot;: &quot;A String&quot;, # The value of the dimension.
  },
  &quot;floodlightConfigurationId&quot;: &quot;A String&quot;, # Floodlight configuration ID of this floodlight activity group. This is a required field.
  &quot;floodlightConfigurationIdDimensionValue&quot;: { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field.
    &quot;dimensionName&quot;: &quot;A String&quot;, # The name of the dimension.
    &quot;etag&quot;: &quot;A String&quot;, # The eTag of this response for caching purposes.
    &quot;id&quot;: &quot;A String&quot;, # The ID associated with the value if available.
    &quot;kind&quot;: &quot;A String&quot;, # The kind of resource this is, in this case dfareporting#dimensionValue.
    &quot;matchType&quot;: &quot;A String&quot;, # Determines how the &#x27;value&#x27; field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, &#x27;*&#x27; is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions (&#x27;dfa:paidSearch*&#x27;) allow a matchType other than EXACT.
    &quot;value&quot;: &quot;A String&quot;, # The value of the dimension.
  },
  &quot;id&quot;: &quot;A String&quot;, # ID of this floodlight activity group. This is a read-only, auto-generated field.
  &quot;idDimensionValue&quot;: { # Represents a DimensionValue resource. # Dimension value for the ID of this floodlight activity group. This is a read-only, auto-generated field.
    &quot;dimensionName&quot;: &quot;A String&quot;, # The name of the dimension.
    &quot;etag&quot;: &quot;A String&quot;, # The eTag of this response for caching purposes.
    &quot;id&quot;: &quot;A String&quot;, # The ID associated with the value if available.
    &quot;kind&quot;: &quot;A String&quot;, # The kind of resource this is, in this case dfareporting#dimensionValue.
    &quot;matchType&quot;: &quot;A String&quot;, # Determines how the &#x27;value&#x27; field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, &#x27;*&#x27; is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions (&#x27;dfa:paidSearch*&#x27;) allow a matchType other than EXACT.
    &quot;value&quot;: &quot;A String&quot;, # The value of the dimension.
  },
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;dfareporting#floodlightActivityGroup&quot;.
  &quot;name&quot;: &quot;A String&quot;, # Name of this floodlight activity group. This is a required field. Must be less than 65 characters long and cannot contain quotes.
  &quot;subaccountId&quot;: &quot;A String&quot;, # Subaccount ID of this floodlight activity group. This is a read-only field that can be left blank.
  &quot;tagString&quot;: &quot;A String&quot;, # Value of the type= parameter in the floodlight tag, which the ad servers use to identify the activity group that the activity belongs to. This is optional: if empty, a new tag string will be generated for you. This string must be 1 to 8 characters long, with valid characters being a-z0-9[ _ ]. This tag string must also be unique among activity groups of the same floodlight configuration. This field is read-only after insertion.
  &quot;type&quot;: &quot;A String&quot;, # Type of the floodlight activity group. This is a required field that is read-only after insertion.
}</pre>
</div>

<div class="method">
    <code class="details" id="update">update(profileId, body=None, x__xgafv=None)</code>
  <pre>Updates an existing floodlight activity group.

Args:
  profileId: string, User profile ID associated with this request. (required)
  body: object, The request body.
    The object takes the form of:

{ # Contains properties of a Floodlight activity group.
  &quot;accountId&quot;: &quot;A String&quot;, # Account ID of this floodlight activity group. This is a read-only field that can be left blank.
  &quot;advertiserId&quot;: &quot;A String&quot;, # Advertiser ID of this floodlight activity group. If this field is left blank, the value will be copied over either from the floodlight configuration&#x27;s advertiser or from the existing activity group&#x27;s advertiser.
  &quot;advertiserIdDimensionValue&quot;: { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
    &quot;dimensionName&quot;: &quot;A String&quot;, # The name of the dimension.
    &quot;etag&quot;: &quot;A String&quot;, # The eTag of this response for caching purposes.
    &quot;id&quot;: &quot;A String&quot;, # The ID associated with the value if available.
    &quot;kind&quot;: &quot;A String&quot;, # The kind of resource this is, in this case dfareporting#dimensionValue.
    &quot;matchType&quot;: &quot;A String&quot;, # Determines how the &#x27;value&#x27; field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, &#x27;*&#x27; is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions (&#x27;dfa:paidSearch*&#x27;) allow a matchType other than EXACT.
    &quot;value&quot;: &quot;A String&quot;, # The value of the dimension.
  },
  &quot;floodlightConfigurationId&quot;: &quot;A String&quot;, # Floodlight configuration ID of this floodlight activity group. This is a required field.
  &quot;floodlightConfigurationIdDimensionValue&quot;: { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field.
    &quot;dimensionName&quot;: &quot;A String&quot;, # The name of the dimension.
    &quot;etag&quot;: &quot;A String&quot;, # The eTag of this response for caching purposes.
    &quot;id&quot;: &quot;A String&quot;, # The ID associated with the value if available.
    &quot;kind&quot;: &quot;A String&quot;, # The kind of resource this is, in this case dfareporting#dimensionValue.
    &quot;matchType&quot;: &quot;A String&quot;, # Determines how the &#x27;value&#x27; field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, &#x27;*&#x27; is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions (&#x27;dfa:paidSearch*&#x27;) allow a matchType other than EXACT.
    &quot;value&quot;: &quot;A String&quot;, # The value of the dimension.
  },
  &quot;id&quot;: &quot;A String&quot;, # ID of this floodlight activity group. This is a read-only, auto-generated field.
  &quot;idDimensionValue&quot;: { # Represents a DimensionValue resource. # Dimension value for the ID of this floodlight activity group. This is a read-only, auto-generated field.
    &quot;dimensionName&quot;: &quot;A String&quot;, # The name of the dimension.
    &quot;etag&quot;: &quot;A String&quot;, # The eTag of this response for caching purposes.
    &quot;id&quot;: &quot;A String&quot;, # The ID associated with the value if available.
    &quot;kind&quot;: &quot;A String&quot;, # The kind of resource this is, in this case dfareporting#dimensionValue.
    &quot;matchType&quot;: &quot;A String&quot;, # Determines how the &#x27;value&#x27; field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, &#x27;*&#x27; is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions (&#x27;dfa:paidSearch*&#x27;) allow a matchType other than EXACT.
    &quot;value&quot;: &quot;A String&quot;, # The value of the dimension.
  },
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;dfareporting#floodlightActivityGroup&quot;.
  &quot;name&quot;: &quot;A String&quot;, # Name of this floodlight activity group. This is a required field. Must be less than 65 characters long and cannot contain quotes.
  &quot;subaccountId&quot;: &quot;A String&quot;, # Subaccount ID of this floodlight activity group. This is a read-only field that can be left blank.
  &quot;tagString&quot;: &quot;A String&quot;, # Value of the type= parameter in the floodlight tag, which the ad servers use to identify the activity group that the activity belongs to. This is optional: if empty, a new tag string will be generated for you. This string must be 1 to 8 characters long, with valid characters being a-z0-9[ _ ]. This tag string must also be unique among activity groups of the same floodlight configuration. This field is read-only after insertion.
  &quot;type&quot;: &quot;A String&quot;, # Type of the floodlight activity group. This is a required field that is read-only after insertion.
}

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

Returns:
  An object of the form:

    { # Contains properties of a Floodlight activity group.
  &quot;accountId&quot;: &quot;A String&quot;, # Account ID of this floodlight activity group. This is a read-only field that can be left blank.
  &quot;advertiserId&quot;: &quot;A String&quot;, # Advertiser ID of this floodlight activity group. If this field is left blank, the value will be copied over either from the floodlight configuration&#x27;s advertiser or from the existing activity group&#x27;s advertiser.
  &quot;advertiserIdDimensionValue&quot;: { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
    &quot;dimensionName&quot;: &quot;A String&quot;, # The name of the dimension.
    &quot;etag&quot;: &quot;A String&quot;, # The eTag of this response for caching purposes.
    &quot;id&quot;: &quot;A String&quot;, # The ID associated with the value if available.
    &quot;kind&quot;: &quot;A String&quot;, # The kind of resource this is, in this case dfareporting#dimensionValue.
    &quot;matchType&quot;: &quot;A String&quot;, # Determines how the &#x27;value&#x27; field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, &#x27;*&#x27; is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions (&#x27;dfa:paidSearch*&#x27;) allow a matchType other than EXACT.
    &quot;value&quot;: &quot;A String&quot;, # The value of the dimension.
  },
  &quot;floodlightConfigurationId&quot;: &quot;A String&quot;, # Floodlight configuration ID of this floodlight activity group. This is a required field.
  &quot;floodlightConfigurationIdDimensionValue&quot;: { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field.
    &quot;dimensionName&quot;: &quot;A String&quot;, # The name of the dimension.
    &quot;etag&quot;: &quot;A String&quot;, # The eTag of this response for caching purposes.
    &quot;id&quot;: &quot;A String&quot;, # The ID associated with the value if available.
    &quot;kind&quot;: &quot;A String&quot;, # The kind of resource this is, in this case dfareporting#dimensionValue.
    &quot;matchType&quot;: &quot;A String&quot;, # Determines how the &#x27;value&#x27; field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, &#x27;*&#x27; is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions (&#x27;dfa:paidSearch*&#x27;) allow a matchType other than EXACT.
    &quot;value&quot;: &quot;A String&quot;, # The value of the dimension.
  },
  &quot;id&quot;: &quot;A String&quot;, # ID of this floodlight activity group. This is a read-only, auto-generated field.
  &quot;idDimensionValue&quot;: { # Represents a DimensionValue resource. # Dimension value for the ID of this floodlight activity group. This is a read-only, auto-generated field.
    &quot;dimensionName&quot;: &quot;A String&quot;, # The name of the dimension.
    &quot;etag&quot;: &quot;A String&quot;, # The eTag of this response for caching purposes.
    &quot;id&quot;: &quot;A String&quot;, # The ID associated with the value if available.
    &quot;kind&quot;: &quot;A String&quot;, # The kind of resource this is, in this case dfareporting#dimensionValue.
    &quot;matchType&quot;: &quot;A String&quot;, # Determines how the &#x27;value&#x27; field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, &#x27;*&#x27; is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions (&#x27;dfa:paidSearch*&#x27;) allow a matchType other than EXACT.
    &quot;value&quot;: &quot;A String&quot;, # The value of the dimension.
  },
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;dfareporting#floodlightActivityGroup&quot;.
  &quot;name&quot;: &quot;A String&quot;, # Name of this floodlight activity group. This is a required field. Must be less than 65 characters long and cannot contain quotes.
  &quot;subaccountId&quot;: &quot;A String&quot;, # Subaccount ID of this floodlight activity group. This is a read-only field that can be left blank.
  &quot;tagString&quot;: &quot;A String&quot;, # Value of the type= parameter in the floodlight tag, which the ad servers use to identify the activity group that the activity belongs to. This is optional: if empty, a new tag string will be generated for you. This string must be 1 to 8 characters long, with valid characters being a-z0-9[ _ ]. This tag string must also be unique among activity groups of the same floodlight configuration. This field is read-only after insertion.
  &quot;type&quot;: &quot;A String&quot;, # Type of the floodlight activity group. This is a required field that is read-only after insertion.
}</pre>
</div>

</body></html>