<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="analyticsadmin_v1alpha.html">Google Analytics Admin API</a> . <a href="analyticsadmin_v1alpha.properties.html">properties</a> . <a href="analyticsadmin_v1alpha.properties.channelGroups.html">channelGroups</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="#create">create(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a ChannelGroup.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a ChannelGroup on a property.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Lookup for a single ChannelGroup.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists ChannelGroups on a property.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next()</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates a ChannelGroup.</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="create">create(parent, body=None, x__xgafv=None)</code>
  <pre>Creates a ChannelGroup.

Args:
  parent: string, Required. The property for which to create a ChannelGroup. Example format: properties/1234 (required)
  body: object, The request body.
    The object takes the form of:

{ # A resource message representing a Channel Group.
  &quot;description&quot;: &quot;A String&quot;, # The description of the Channel Group. Max length of 256 characters.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the Channel Group. Max length of 80 characters.
  &quot;groupingRule&quot;: [ # Required. The grouping rules of channels. Maximum number of rules is 50.
    { # The rules that govern how traffic is grouped into one channel.
      &quot;displayName&quot;: &quot;A String&quot;, # Required. Customer defined display name for the channel.
      &quot;expression&quot;: { # A logical expression of Channel Group dimension filters. # Required. The Filter Expression that defines the Grouping Rule.
        &quot;andGroup&quot;: { # A list of Channel Group filter expressions. # A list of expressions to be AND’ed together. It can only contain ChannelGroupFilterExpressions with or_group. This must be set for the top level ChannelGroupFilterExpression.
          &quot;filterExpressions&quot;: [ # A list of Channel Group filter expressions.
            # Object with schema name: GoogleAnalyticsAdminV1alphaChannelGroupFilterExpression
          ],
        },
        &quot;filter&quot;: { # A specific filter for a single dimension. # A filter on a single dimension. This cannot be set on the top level ChannelGroupFilterExpression.
          &quot;fieldName&quot;: &quot;A String&quot;, # Required. Immutable. The dimension name to filter.
          &quot;inListFilter&quot;: { # A filter for a string dimension that matches a particular list of options. The match is case insensitive. # A filter for a string dimension that matches a particular list of options.
            &quot;values&quot;: [ # Required. The list of possible string values to match against. Must be non-empty.
              &quot;A String&quot;,
            ],
          },
          &quot;stringFilter&quot;: { # Filter where the field value is a String. The match is case insensitive. # A filter for a string-type dimension that matches a particular pattern.
            &quot;matchType&quot;: &quot;A String&quot;, # Required. The match type for the string filter.
            &quot;value&quot;: &quot;A String&quot;, # Required. The string value to be matched against.
          },
        },
        &quot;notExpression&quot;: # Object with schema name: GoogleAnalyticsAdminV1alphaChannelGroupFilterExpression # A filter expression to be NOT&#x27;ed (that is inverted, complemented). It can only include a dimension_or_metric_filter. This cannot be set on the top level ChannelGroupFilterExpression.
        &quot;orGroup&quot;: { # A list of Channel Group filter expressions. # A list of expressions to OR’ed together. It cannot contain ChannelGroupFilterExpressions with and_group or or_group.
          &quot;filterExpressions&quot;: [ # A list of Channel Group filter expressions.
            # Object with schema name: GoogleAnalyticsAdminV1alphaChannelGroupFilterExpression
          ],
        },
      },
    },
  ],
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name for this Channel Group resource. Format: properties/{property}/channelGroups/{channel_group}
  &quot;primary&quot;: True or False, # Optional. If true, this channel group will be used as the default channel group for reports. Only one channel group can be set as `primary` at any time. If the `primary` field gets set on a channel group, it will get unset on the previous primary channel group. The Google Analytics predefined channel group is the primary by default.
  &quot;systemDefined&quot;: True or False, # Output only. If true, then this channel group is the Default Channel Group predefined by Google Analytics. Display name and grouping rules cannot be updated for this channel group.
}

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

Returns:
  An object of the form:

    { # A resource message representing a Channel Group.
  &quot;description&quot;: &quot;A String&quot;, # The description of the Channel Group. Max length of 256 characters.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the Channel Group. Max length of 80 characters.
  &quot;groupingRule&quot;: [ # Required. The grouping rules of channels. Maximum number of rules is 50.
    { # The rules that govern how traffic is grouped into one channel.
      &quot;displayName&quot;: &quot;A String&quot;, # Required. Customer defined display name for the channel.
      &quot;expression&quot;: { # A logical expression of Channel Group dimension filters. # Required. The Filter Expression that defines the Grouping Rule.
        &quot;andGroup&quot;: { # A list of Channel Group filter expressions. # A list of expressions to be AND’ed together. It can only contain ChannelGroupFilterExpressions with or_group. This must be set for the top level ChannelGroupFilterExpression.
          &quot;filterExpressions&quot;: [ # A list of Channel Group filter expressions.
            # Object with schema name: GoogleAnalyticsAdminV1alphaChannelGroupFilterExpression
          ],
        },
        &quot;filter&quot;: { # A specific filter for a single dimension. # A filter on a single dimension. This cannot be set on the top level ChannelGroupFilterExpression.
          &quot;fieldName&quot;: &quot;A String&quot;, # Required. Immutable. The dimension name to filter.
          &quot;inListFilter&quot;: { # A filter for a string dimension that matches a particular list of options. The match is case insensitive. # A filter for a string dimension that matches a particular list of options.
            &quot;values&quot;: [ # Required. The list of possible string values to match against. Must be non-empty.
              &quot;A String&quot;,
            ],
          },
          &quot;stringFilter&quot;: { # Filter where the field value is a String. The match is case insensitive. # A filter for a string-type dimension that matches a particular pattern.
            &quot;matchType&quot;: &quot;A String&quot;, # Required. The match type for the string filter.
            &quot;value&quot;: &quot;A String&quot;, # Required. The string value to be matched against.
          },
        },
        &quot;notExpression&quot;: # Object with schema name: GoogleAnalyticsAdminV1alphaChannelGroupFilterExpression # A filter expression to be NOT&#x27;ed (that is inverted, complemented). It can only include a dimension_or_metric_filter. This cannot be set on the top level ChannelGroupFilterExpression.
        &quot;orGroup&quot;: { # A list of Channel Group filter expressions. # A list of expressions to OR’ed together. It cannot contain ChannelGroupFilterExpressions with and_group or or_group.
          &quot;filterExpressions&quot;: [ # A list of Channel Group filter expressions.
            # Object with schema name: GoogleAnalyticsAdminV1alphaChannelGroupFilterExpression
          ],
        },
      },
    },
  ],
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name for this Channel Group resource. Format: properties/{property}/channelGroups/{channel_group}
  &quot;primary&quot;: True or False, # Optional. If true, this channel group will be used as the default channel group for reports. Only one channel group can be set as `primary` at any time. If the `primary` field gets set on a channel group, it will get unset on the previous primary channel group. The Google Analytics predefined channel group is the primary by default.
  &quot;systemDefined&quot;: True or False, # Output only. If true, then this channel group is the Default Channel Group predefined by Google Analytics. Display name and grouping rules cannot be updated for this channel group.
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes a ChannelGroup on a property.

Args:
  name: string, Required. The ChannelGroup to delete. Example format: properties/1234/channelGroups/5678 (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); }
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Lookup for a single ChannelGroup.

Args:
  name: string, Required. The ChannelGroup to get. Example format: properties/1234/channelGroups/5678 (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A resource message representing a Channel Group.
  &quot;description&quot;: &quot;A String&quot;, # The description of the Channel Group. Max length of 256 characters.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the Channel Group. Max length of 80 characters.
  &quot;groupingRule&quot;: [ # Required. The grouping rules of channels. Maximum number of rules is 50.
    { # The rules that govern how traffic is grouped into one channel.
      &quot;displayName&quot;: &quot;A String&quot;, # Required. Customer defined display name for the channel.
      &quot;expression&quot;: { # A logical expression of Channel Group dimension filters. # Required. The Filter Expression that defines the Grouping Rule.
        &quot;andGroup&quot;: { # A list of Channel Group filter expressions. # A list of expressions to be AND’ed together. It can only contain ChannelGroupFilterExpressions with or_group. This must be set for the top level ChannelGroupFilterExpression.
          &quot;filterExpressions&quot;: [ # A list of Channel Group filter expressions.
            # Object with schema name: GoogleAnalyticsAdminV1alphaChannelGroupFilterExpression
          ],
        },
        &quot;filter&quot;: { # A specific filter for a single dimension. # A filter on a single dimension. This cannot be set on the top level ChannelGroupFilterExpression.
          &quot;fieldName&quot;: &quot;A String&quot;, # Required. Immutable. The dimension name to filter.
          &quot;inListFilter&quot;: { # A filter for a string dimension that matches a particular list of options. The match is case insensitive. # A filter for a string dimension that matches a particular list of options.
            &quot;values&quot;: [ # Required. The list of possible string values to match against. Must be non-empty.
              &quot;A String&quot;,
            ],
          },
          &quot;stringFilter&quot;: { # Filter where the field value is a String. The match is case insensitive. # A filter for a string-type dimension that matches a particular pattern.
            &quot;matchType&quot;: &quot;A String&quot;, # Required. The match type for the string filter.
            &quot;value&quot;: &quot;A String&quot;, # Required. The string value to be matched against.
          },
        },
        &quot;notExpression&quot;: # Object with schema name: GoogleAnalyticsAdminV1alphaChannelGroupFilterExpression # A filter expression to be NOT&#x27;ed (that is inverted, complemented). It can only include a dimension_or_metric_filter. This cannot be set on the top level ChannelGroupFilterExpression.
        &quot;orGroup&quot;: { # A list of Channel Group filter expressions. # A list of expressions to OR’ed together. It cannot contain ChannelGroupFilterExpressions with and_group or or_group.
          &quot;filterExpressions&quot;: [ # A list of Channel Group filter expressions.
            # Object with schema name: GoogleAnalyticsAdminV1alphaChannelGroupFilterExpression
          ],
        },
      },
    },
  ],
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name for this Channel Group resource. Format: properties/{property}/channelGroups/{channel_group}
  &quot;primary&quot;: True or False, # Optional. If true, this channel group will be used as the default channel group for reports. Only one channel group can be set as `primary` at any time. If the `primary` field gets set on a channel group, it will get unset on the previous primary channel group. The Google Analytics predefined channel group is the primary by default.
  &quot;systemDefined&quot;: True or False, # Output only. If true, then this channel group is the Default Channel Group predefined by Google Analytics. Display name and grouping rules cannot be updated for this channel group.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists ChannelGroups on a property.

Args:
  parent: string, Required. The property for which to list ChannelGroups. Example format: properties/1234 (required)
  pageSize: integer, The maximum number of resources to return. If unspecified, at most 50 resources will be returned. The maximum value is 200 (higher values will be coerced to the maximum).
  pageToken: string, A page token, received from a previous `ListChannelGroups` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListChannelGroups` must match the call that provided the page token.
  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 ListChannelGroups RPC.
  &quot;channelGroups&quot;: [ # List of ChannelGroup. These will be ordered stably, but in an arbitrary order.
    { # A resource message representing a Channel Group.
      &quot;description&quot;: &quot;A String&quot;, # The description of the Channel Group. Max length of 256 characters.
      &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the Channel Group. Max length of 80 characters.
      &quot;groupingRule&quot;: [ # Required. The grouping rules of channels. Maximum number of rules is 50.
        { # The rules that govern how traffic is grouped into one channel.
          &quot;displayName&quot;: &quot;A String&quot;, # Required. Customer defined display name for the channel.
          &quot;expression&quot;: { # A logical expression of Channel Group dimension filters. # Required. The Filter Expression that defines the Grouping Rule.
            &quot;andGroup&quot;: { # A list of Channel Group filter expressions. # A list of expressions to be AND’ed together. It can only contain ChannelGroupFilterExpressions with or_group. This must be set for the top level ChannelGroupFilterExpression.
              &quot;filterExpressions&quot;: [ # A list of Channel Group filter expressions.
                # Object with schema name: GoogleAnalyticsAdminV1alphaChannelGroupFilterExpression
              ],
            },
            &quot;filter&quot;: { # A specific filter for a single dimension. # A filter on a single dimension. This cannot be set on the top level ChannelGroupFilterExpression.
              &quot;fieldName&quot;: &quot;A String&quot;, # Required. Immutable. The dimension name to filter.
              &quot;inListFilter&quot;: { # A filter for a string dimension that matches a particular list of options. The match is case insensitive. # A filter for a string dimension that matches a particular list of options.
                &quot;values&quot;: [ # Required. The list of possible string values to match against. Must be non-empty.
                  &quot;A String&quot;,
                ],
              },
              &quot;stringFilter&quot;: { # Filter where the field value is a String. The match is case insensitive. # A filter for a string-type dimension that matches a particular pattern.
                &quot;matchType&quot;: &quot;A String&quot;, # Required. The match type for the string filter.
                &quot;value&quot;: &quot;A String&quot;, # Required. The string value to be matched against.
              },
            },
            &quot;notExpression&quot;: # Object with schema name: GoogleAnalyticsAdminV1alphaChannelGroupFilterExpression # A filter expression to be NOT&#x27;ed (that is inverted, complemented). It can only include a dimension_or_metric_filter. This cannot be set on the top level ChannelGroupFilterExpression.
            &quot;orGroup&quot;: { # A list of Channel Group filter expressions. # A list of expressions to OR’ed together. It cannot contain ChannelGroupFilterExpressions with and_group or or_group.
              &quot;filterExpressions&quot;: [ # A list of Channel Group filter expressions.
                # Object with schema name: GoogleAnalyticsAdminV1alphaChannelGroupFilterExpression
              ],
            },
          },
        },
      ],
      &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name for this Channel Group resource. Format: properties/{property}/channelGroups/{channel_group}
      &quot;primary&quot;: True or False, # Optional. If true, this channel group will be used as the default channel group for reports. Only one channel group can be set as `primary` at any time. If the `primary` field gets set on a channel group, it will get unset on the previous primary channel group. The Google Analytics predefined channel group is the primary by default.
      &quot;systemDefined&quot;: True or False, # Output only. If true, then this channel group is the Default Channel Group predefined by Google Analytics. Display name and grouping rules cannot be updated for this channel group.
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next()</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(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates a ChannelGroup.

Args:
  name: string, Output only. The resource name for this Channel Group resource. Format: properties/{property}/channelGroups/{channel_group} (required)
  body: object, The request body.
    The object takes the form of:

{ # A resource message representing a Channel Group.
  &quot;description&quot;: &quot;A String&quot;, # The description of the Channel Group. Max length of 256 characters.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the Channel Group. Max length of 80 characters.
  &quot;groupingRule&quot;: [ # Required. The grouping rules of channels. Maximum number of rules is 50.
    { # The rules that govern how traffic is grouped into one channel.
      &quot;displayName&quot;: &quot;A String&quot;, # Required. Customer defined display name for the channel.
      &quot;expression&quot;: { # A logical expression of Channel Group dimension filters. # Required. The Filter Expression that defines the Grouping Rule.
        &quot;andGroup&quot;: { # A list of Channel Group filter expressions. # A list of expressions to be AND’ed together. It can only contain ChannelGroupFilterExpressions with or_group. This must be set for the top level ChannelGroupFilterExpression.
          &quot;filterExpressions&quot;: [ # A list of Channel Group filter expressions.
            # Object with schema name: GoogleAnalyticsAdminV1alphaChannelGroupFilterExpression
          ],
        },
        &quot;filter&quot;: { # A specific filter for a single dimension. # A filter on a single dimension. This cannot be set on the top level ChannelGroupFilterExpression.
          &quot;fieldName&quot;: &quot;A String&quot;, # Required. Immutable. The dimension name to filter.
          &quot;inListFilter&quot;: { # A filter for a string dimension that matches a particular list of options. The match is case insensitive. # A filter for a string dimension that matches a particular list of options.
            &quot;values&quot;: [ # Required. The list of possible string values to match against. Must be non-empty.
              &quot;A String&quot;,
            ],
          },
          &quot;stringFilter&quot;: { # Filter where the field value is a String. The match is case insensitive. # A filter for a string-type dimension that matches a particular pattern.
            &quot;matchType&quot;: &quot;A String&quot;, # Required. The match type for the string filter.
            &quot;value&quot;: &quot;A String&quot;, # Required. The string value to be matched against.
          },
        },
        &quot;notExpression&quot;: # Object with schema name: GoogleAnalyticsAdminV1alphaChannelGroupFilterExpression # A filter expression to be NOT&#x27;ed (that is inverted, complemented). It can only include a dimension_or_metric_filter. This cannot be set on the top level ChannelGroupFilterExpression.
        &quot;orGroup&quot;: { # A list of Channel Group filter expressions. # A list of expressions to OR’ed together. It cannot contain ChannelGroupFilterExpressions with and_group or or_group.
          &quot;filterExpressions&quot;: [ # A list of Channel Group filter expressions.
            # Object with schema name: GoogleAnalyticsAdminV1alphaChannelGroupFilterExpression
          ],
        },
      },
    },
  ],
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name for this Channel Group resource. Format: properties/{property}/channelGroups/{channel_group}
  &quot;primary&quot;: True or False, # Optional. If true, this channel group will be used as the default channel group for reports. Only one channel group can be set as `primary` at any time. If the `primary` field gets set on a channel group, it will get unset on the previous primary channel group. The Google Analytics predefined channel group is the primary by default.
  &quot;systemDefined&quot;: True or False, # Output only. If true, then this channel group is the Default Channel Group predefined by Google Analytics. Display name and grouping rules cannot be updated for this channel group.
}

  updateMask: string, Required. The list of fields to be updated. Field names must be in snake case (e.g., &quot;field_to_update&quot;). Omitted fields will not be updated. To replace the entire entity, use one path with the string &quot;*&quot; to match all fields.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A resource message representing a Channel Group.
  &quot;description&quot;: &quot;A String&quot;, # The description of the Channel Group. Max length of 256 characters.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the Channel Group. Max length of 80 characters.
  &quot;groupingRule&quot;: [ # Required. The grouping rules of channels. Maximum number of rules is 50.
    { # The rules that govern how traffic is grouped into one channel.
      &quot;displayName&quot;: &quot;A String&quot;, # Required. Customer defined display name for the channel.
      &quot;expression&quot;: { # A logical expression of Channel Group dimension filters. # Required. The Filter Expression that defines the Grouping Rule.
        &quot;andGroup&quot;: { # A list of Channel Group filter expressions. # A list of expressions to be AND’ed together. It can only contain ChannelGroupFilterExpressions with or_group. This must be set for the top level ChannelGroupFilterExpression.
          &quot;filterExpressions&quot;: [ # A list of Channel Group filter expressions.
            # Object with schema name: GoogleAnalyticsAdminV1alphaChannelGroupFilterExpression
          ],
        },
        &quot;filter&quot;: { # A specific filter for a single dimension. # A filter on a single dimension. This cannot be set on the top level ChannelGroupFilterExpression.
          &quot;fieldName&quot;: &quot;A String&quot;, # Required. Immutable. The dimension name to filter.
          &quot;inListFilter&quot;: { # A filter for a string dimension that matches a particular list of options. The match is case insensitive. # A filter for a string dimension that matches a particular list of options.
            &quot;values&quot;: [ # Required. The list of possible string values to match against. Must be non-empty.
              &quot;A String&quot;,
            ],
          },
          &quot;stringFilter&quot;: { # Filter where the field value is a String. The match is case insensitive. # A filter for a string-type dimension that matches a particular pattern.
            &quot;matchType&quot;: &quot;A String&quot;, # Required. The match type for the string filter.
            &quot;value&quot;: &quot;A String&quot;, # Required. The string value to be matched against.
          },
        },
        &quot;notExpression&quot;: # Object with schema name: GoogleAnalyticsAdminV1alphaChannelGroupFilterExpression # A filter expression to be NOT&#x27;ed (that is inverted, complemented). It can only include a dimension_or_metric_filter. This cannot be set on the top level ChannelGroupFilterExpression.
        &quot;orGroup&quot;: { # A list of Channel Group filter expressions. # A list of expressions to OR’ed together. It cannot contain ChannelGroupFilterExpressions with and_group or or_group.
          &quot;filterExpressions&quot;: [ # A list of Channel Group filter expressions.
            # Object with schema name: GoogleAnalyticsAdminV1alphaChannelGroupFilterExpression
          ],
        },
      },
    },
  ],
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name for this Channel Group resource. Format: properties/{property}/channelGroups/{channel_group}
  &quot;primary&quot;: True or False, # Optional. If true, this channel group will be used as the default channel group for reports. Only one channel group can be set as `primary` at any time. If the `primary` field gets set on a channel group, it will get unset on the previous primary channel group. The Google Analytics predefined channel group is the primary by default.
  &quot;systemDefined&quot;: True or False, # Output only. If true, then this channel group is the Default Channel Group predefined by Google Analytics. Display name and grouping rules cannot be updated for this channel group.
}</pre>
</div>

</body></html>