<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.expandedDataSets.html">expandedDataSets</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 ExpandedDataSet.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a ExpandedDataSet 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 ExpandedDataSet.</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 ExpandedDataSets 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 ExpandedDataSet on a property.</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 ExpandedDataSet.

Args:
  parent: string, Required. Example format: properties/1234 (required)
  body: object, The request body.
    The object takes the form of:

{ # A resource message representing a GA4 ExpandedDataSet.
  &quot;dataCollectionStartTime&quot;: &quot;A String&quot;, # Output only. Time when expanded data set began (or will begin) collecing data.
  &quot;description&quot;: &quot;A String&quot;, # Optional. The description of the ExpandedDataSet. Max 50 chars.
  &quot;dimensionFilterExpression&quot;: { # A logical expression of EnhancedDataSet dimension filters. # Immutable. A logical expression of ExpandedDataSet filters applied to dimension included in the ExpandedDataSet. This filter is used to reduce the number of rows and thus the chance of encountering `other` row.
    &quot;andGroup&quot;: { # A list of ExpandedDataSet filter expressions. # A list of expressions to be AND’ed together. It must contain a ExpandedDataSetFilterExpression with either not_expression or dimension_filter. This must be set for the top level ExpandedDataSetFilterExpression.
      &quot;filterExpressions&quot;: [ # A list of ExpandedDataSet filter expressions.
        # Object with schema name: GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression
      ],
    },
    &quot;filter&quot;: { # A specific filter for a single dimension # A filter on a single dimension. This cannot be set on the top level ExpandedDataSetFilterExpression.
      &quot;fieldName&quot;: &quot;A String&quot;, # Required. The dimension name to filter.
      &quot;inListFilter&quot;: { # A filter for a string dimension that matches a particular list of options. # A filter for a string dimension that matches a particular list of options.
        &quot;caseSensitive&quot;: True or False, # Optional. If true, the match is case-sensitive. If false, the match is case-insensitive. Must be true.
        &quot;values&quot;: [ # Required. The list of possible string values to match against. Must be non-empty.
          &quot;A String&quot;,
        ],
      },
      &quot;stringFilter&quot;: { # A filter for a string-type dimension that matches a particular pattern. # A filter for a string-type dimension that matches a particular pattern.
        &quot;caseSensitive&quot;: True or False, # Optional. If true, the match is case-sensitive. If false, the match is case-insensitive. Must be true when match_type is EXACT. Must be false when match_type is CONTAINS.
        &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: GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression # A filter expression to be NOT&#x27;ed (that is, inverted, complemented). It must include a dimension_filter. This cannot be set on the top level ExpandedDataSetFilterExpression.
  },
  &quot;dimensionNames&quot;: [ # Immutable. The list of dimensions included in the ExpandedDataSet. See the [API Dimensions](https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema#dimensions) for the list of dimension names.
    &quot;A String&quot;,
  ],
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the ExpandedDataSet. Max 200 chars.
  &quot;metricNames&quot;: [ # Immutable. The list of metrics included in the ExpandedDataSet. See the [API Metrics](https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema#metrics) for the list of dimension names.
    &quot;A String&quot;,
  ],
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name for this ExpandedDataSet resource. Format: properties/{property_id}/expandedDataSets/{expanded_data_set}
}

  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 GA4 ExpandedDataSet.
  &quot;dataCollectionStartTime&quot;: &quot;A String&quot;, # Output only. Time when expanded data set began (or will begin) collecing data.
  &quot;description&quot;: &quot;A String&quot;, # Optional. The description of the ExpandedDataSet. Max 50 chars.
  &quot;dimensionFilterExpression&quot;: { # A logical expression of EnhancedDataSet dimension filters. # Immutable. A logical expression of ExpandedDataSet filters applied to dimension included in the ExpandedDataSet. This filter is used to reduce the number of rows and thus the chance of encountering `other` row.
    &quot;andGroup&quot;: { # A list of ExpandedDataSet filter expressions. # A list of expressions to be AND’ed together. It must contain a ExpandedDataSetFilterExpression with either not_expression or dimension_filter. This must be set for the top level ExpandedDataSetFilterExpression.
      &quot;filterExpressions&quot;: [ # A list of ExpandedDataSet filter expressions.
        # Object with schema name: GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression
      ],
    },
    &quot;filter&quot;: { # A specific filter for a single dimension # A filter on a single dimension. This cannot be set on the top level ExpandedDataSetFilterExpression.
      &quot;fieldName&quot;: &quot;A String&quot;, # Required. The dimension name to filter.
      &quot;inListFilter&quot;: { # A filter for a string dimension that matches a particular list of options. # A filter for a string dimension that matches a particular list of options.
        &quot;caseSensitive&quot;: True or False, # Optional. If true, the match is case-sensitive. If false, the match is case-insensitive. Must be true.
        &quot;values&quot;: [ # Required. The list of possible string values to match against. Must be non-empty.
          &quot;A String&quot;,
        ],
      },
      &quot;stringFilter&quot;: { # A filter for a string-type dimension that matches a particular pattern. # A filter for a string-type dimension that matches a particular pattern.
        &quot;caseSensitive&quot;: True or False, # Optional. If true, the match is case-sensitive. If false, the match is case-insensitive. Must be true when match_type is EXACT. Must be false when match_type is CONTAINS.
        &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: GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression # A filter expression to be NOT&#x27;ed (that is, inverted, complemented). It must include a dimension_filter. This cannot be set on the top level ExpandedDataSetFilterExpression.
  },
  &quot;dimensionNames&quot;: [ # Immutable. The list of dimensions included in the ExpandedDataSet. See the [API Dimensions](https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema#dimensions) for the list of dimension names.
    &quot;A String&quot;,
  ],
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the ExpandedDataSet. Max 200 chars.
  &quot;metricNames&quot;: [ # Immutable. The list of metrics included in the ExpandedDataSet. See the [API Metrics](https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema#metrics) for the list of dimension names.
    &quot;A String&quot;,
  ],
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name for this ExpandedDataSet resource. Format: properties/{property_id}/expandedDataSets/{expanded_data_set}
}</pre>
</div>

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

Args:
  name: string, Required. Example format: properties/1234/expandedDataSets/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 ExpandedDataSet.

Args:
  name: string, Required. The name of the ExpandedDataSet to get. Example format: properties/1234/expandedDataSets/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 GA4 ExpandedDataSet.
  &quot;dataCollectionStartTime&quot;: &quot;A String&quot;, # Output only. Time when expanded data set began (or will begin) collecing data.
  &quot;description&quot;: &quot;A String&quot;, # Optional. The description of the ExpandedDataSet. Max 50 chars.
  &quot;dimensionFilterExpression&quot;: { # A logical expression of EnhancedDataSet dimension filters. # Immutable. A logical expression of ExpandedDataSet filters applied to dimension included in the ExpandedDataSet. This filter is used to reduce the number of rows and thus the chance of encountering `other` row.
    &quot;andGroup&quot;: { # A list of ExpandedDataSet filter expressions. # A list of expressions to be AND’ed together. It must contain a ExpandedDataSetFilterExpression with either not_expression or dimension_filter. This must be set for the top level ExpandedDataSetFilterExpression.
      &quot;filterExpressions&quot;: [ # A list of ExpandedDataSet filter expressions.
        # Object with schema name: GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression
      ],
    },
    &quot;filter&quot;: { # A specific filter for a single dimension # A filter on a single dimension. This cannot be set on the top level ExpandedDataSetFilterExpression.
      &quot;fieldName&quot;: &quot;A String&quot;, # Required. The dimension name to filter.
      &quot;inListFilter&quot;: { # A filter for a string dimension that matches a particular list of options. # A filter for a string dimension that matches a particular list of options.
        &quot;caseSensitive&quot;: True or False, # Optional. If true, the match is case-sensitive. If false, the match is case-insensitive. Must be true.
        &quot;values&quot;: [ # Required. The list of possible string values to match against. Must be non-empty.
          &quot;A String&quot;,
        ],
      },
      &quot;stringFilter&quot;: { # A filter for a string-type dimension that matches a particular pattern. # A filter for a string-type dimension that matches a particular pattern.
        &quot;caseSensitive&quot;: True or False, # Optional. If true, the match is case-sensitive. If false, the match is case-insensitive. Must be true when match_type is EXACT. Must be false when match_type is CONTAINS.
        &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: GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression # A filter expression to be NOT&#x27;ed (that is, inverted, complemented). It must include a dimension_filter. This cannot be set on the top level ExpandedDataSetFilterExpression.
  },
  &quot;dimensionNames&quot;: [ # Immutable. The list of dimensions included in the ExpandedDataSet. See the [API Dimensions](https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema#dimensions) for the list of dimension names.
    &quot;A String&quot;,
  ],
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the ExpandedDataSet. Max 200 chars.
  &quot;metricNames&quot;: [ # Immutable. The list of metrics included in the ExpandedDataSet. See the [API Metrics](https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema#metrics) for the list of dimension names.
    &quot;A String&quot;,
  ],
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name for this ExpandedDataSet resource. Format: properties/{property_id}/expandedDataSets/{expanded_data_set}
}</pre>
</div>

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

Args:
  parent: string, Required. 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 `ListExpandedDataSets` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListExpandedDataSet` 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 ListExpandedDataSets RPC.
  &quot;expandedDataSets&quot;: [ # List of ExpandedDataSet. These will be ordered stably, but in an arbitrary order.
    { # A resource message representing a GA4 ExpandedDataSet.
      &quot;dataCollectionStartTime&quot;: &quot;A String&quot;, # Output only. Time when expanded data set began (or will begin) collecing data.
      &quot;description&quot;: &quot;A String&quot;, # Optional. The description of the ExpandedDataSet. Max 50 chars.
      &quot;dimensionFilterExpression&quot;: { # A logical expression of EnhancedDataSet dimension filters. # Immutable. A logical expression of ExpandedDataSet filters applied to dimension included in the ExpandedDataSet. This filter is used to reduce the number of rows and thus the chance of encountering `other` row.
        &quot;andGroup&quot;: { # A list of ExpandedDataSet filter expressions. # A list of expressions to be AND’ed together. It must contain a ExpandedDataSetFilterExpression with either not_expression or dimension_filter. This must be set for the top level ExpandedDataSetFilterExpression.
          &quot;filterExpressions&quot;: [ # A list of ExpandedDataSet filter expressions.
            # Object with schema name: GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression
          ],
        },
        &quot;filter&quot;: { # A specific filter for a single dimension # A filter on a single dimension. This cannot be set on the top level ExpandedDataSetFilterExpression.
          &quot;fieldName&quot;: &quot;A String&quot;, # Required. The dimension name to filter.
          &quot;inListFilter&quot;: { # A filter for a string dimension that matches a particular list of options. # A filter for a string dimension that matches a particular list of options.
            &quot;caseSensitive&quot;: True or False, # Optional. If true, the match is case-sensitive. If false, the match is case-insensitive. Must be true.
            &quot;values&quot;: [ # Required. The list of possible string values to match against. Must be non-empty.
              &quot;A String&quot;,
            ],
          },
          &quot;stringFilter&quot;: { # A filter for a string-type dimension that matches a particular pattern. # A filter for a string-type dimension that matches a particular pattern.
            &quot;caseSensitive&quot;: True or False, # Optional. If true, the match is case-sensitive. If false, the match is case-insensitive. Must be true when match_type is EXACT. Must be false when match_type is CONTAINS.
            &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: GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression # A filter expression to be NOT&#x27;ed (that is, inverted, complemented). It must include a dimension_filter. This cannot be set on the top level ExpandedDataSetFilterExpression.
      },
      &quot;dimensionNames&quot;: [ # Immutable. The list of dimensions included in the ExpandedDataSet. See the [API Dimensions](https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema#dimensions) for the list of dimension names.
        &quot;A String&quot;,
      ],
      &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the ExpandedDataSet. Max 200 chars.
      &quot;metricNames&quot;: [ # Immutable. The list of metrics included in the ExpandedDataSet. See the [API Metrics](https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema#metrics) for the list of dimension names.
        &quot;A String&quot;,
      ],
      &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name for this ExpandedDataSet resource. Format: properties/{property_id}/expandedDataSets/{expanded_data_set}
    },
  ],
  &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 ExpandedDataSet on a property.

Args:
  name: string, Output only. The resource name for this ExpandedDataSet resource. Format: properties/{property_id}/expandedDataSets/{expanded_data_set} (required)
  body: object, The request body.
    The object takes the form of:

{ # A resource message representing a GA4 ExpandedDataSet.
  &quot;dataCollectionStartTime&quot;: &quot;A String&quot;, # Output only. Time when expanded data set began (or will begin) collecing data.
  &quot;description&quot;: &quot;A String&quot;, # Optional. The description of the ExpandedDataSet. Max 50 chars.
  &quot;dimensionFilterExpression&quot;: { # A logical expression of EnhancedDataSet dimension filters. # Immutable. A logical expression of ExpandedDataSet filters applied to dimension included in the ExpandedDataSet. This filter is used to reduce the number of rows and thus the chance of encountering `other` row.
    &quot;andGroup&quot;: { # A list of ExpandedDataSet filter expressions. # A list of expressions to be AND’ed together. It must contain a ExpandedDataSetFilterExpression with either not_expression or dimension_filter. This must be set for the top level ExpandedDataSetFilterExpression.
      &quot;filterExpressions&quot;: [ # A list of ExpandedDataSet filter expressions.
        # Object with schema name: GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression
      ],
    },
    &quot;filter&quot;: { # A specific filter for a single dimension # A filter on a single dimension. This cannot be set on the top level ExpandedDataSetFilterExpression.
      &quot;fieldName&quot;: &quot;A String&quot;, # Required. The dimension name to filter.
      &quot;inListFilter&quot;: { # A filter for a string dimension that matches a particular list of options. # A filter for a string dimension that matches a particular list of options.
        &quot;caseSensitive&quot;: True or False, # Optional. If true, the match is case-sensitive. If false, the match is case-insensitive. Must be true.
        &quot;values&quot;: [ # Required. The list of possible string values to match against. Must be non-empty.
          &quot;A String&quot;,
        ],
      },
      &quot;stringFilter&quot;: { # A filter for a string-type dimension that matches a particular pattern. # A filter for a string-type dimension that matches a particular pattern.
        &quot;caseSensitive&quot;: True or False, # Optional. If true, the match is case-sensitive. If false, the match is case-insensitive. Must be true when match_type is EXACT. Must be false when match_type is CONTAINS.
        &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: GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression # A filter expression to be NOT&#x27;ed (that is, inverted, complemented). It must include a dimension_filter. This cannot be set on the top level ExpandedDataSetFilterExpression.
  },
  &quot;dimensionNames&quot;: [ # Immutable. The list of dimensions included in the ExpandedDataSet. See the [API Dimensions](https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema#dimensions) for the list of dimension names.
    &quot;A String&quot;,
  ],
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the ExpandedDataSet. Max 200 chars.
  &quot;metricNames&quot;: [ # Immutable. The list of metrics included in the ExpandedDataSet. See the [API Metrics](https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema#metrics) for the list of dimension names.
    &quot;A String&quot;,
  ],
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name for this ExpandedDataSet resource. Format: properties/{property_id}/expandedDataSets/{expanded_data_set}
}

  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 GA4 ExpandedDataSet.
  &quot;dataCollectionStartTime&quot;: &quot;A String&quot;, # Output only. Time when expanded data set began (or will begin) collecing data.
  &quot;description&quot;: &quot;A String&quot;, # Optional. The description of the ExpandedDataSet. Max 50 chars.
  &quot;dimensionFilterExpression&quot;: { # A logical expression of EnhancedDataSet dimension filters. # Immutable. A logical expression of ExpandedDataSet filters applied to dimension included in the ExpandedDataSet. This filter is used to reduce the number of rows and thus the chance of encountering `other` row.
    &quot;andGroup&quot;: { # A list of ExpandedDataSet filter expressions. # A list of expressions to be AND’ed together. It must contain a ExpandedDataSetFilterExpression with either not_expression or dimension_filter. This must be set for the top level ExpandedDataSetFilterExpression.
      &quot;filterExpressions&quot;: [ # A list of ExpandedDataSet filter expressions.
        # Object with schema name: GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression
      ],
    },
    &quot;filter&quot;: { # A specific filter for a single dimension # A filter on a single dimension. This cannot be set on the top level ExpandedDataSetFilterExpression.
      &quot;fieldName&quot;: &quot;A String&quot;, # Required. The dimension name to filter.
      &quot;inListFilter&quot;: { # A filter for a string dimension that matches a particular list of options. # A filter for a string dimension that matches a particular list of options.
        &quot;caseSensitive&quot;: True or False, # Optional. If true, the match is case-sensitive. If false, the match is case-insensitive. Must be true.
        &quot;values&quot;: [ # Required. The list of possible string values to match against. Must be non-empty.
          &quot;A String&quot;,
        ],
      },
      &quot;stringFilter&quot;: { # A filter for a string-type dimension that matches a particular pattern. # A filter for a string-type dimension that matches a particular pattern.
        &quot;caseSensitive&quot;: True or False, # Optional. If true, the match is case-sensitive. If false, the match is case-insensitive. Must be true when match_type is EXACT. Must be false when match_type is CONTAINS.
        &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: GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression # A filter expression to be NOT&#x27;ed (that is, inverted, complemented). It must include a dimension_filter. This cannot be set on the top level ExpandedDataSetFilterExpression.
  },
  &quot;dimensionNames&quot;: [ # Immutable. The list of dimensions included in the ExpandedDataSet. See the [API Dimensions](https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema#dimensions) for the list of dimension names.
    &quot;A String&quot;,
  ],
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the ExpandedDataSet. Max 200 chars.
  &quot;metricNames&quot;: [ # Immutable. The list of metrics included in the ExpandedDataSet. See the [API Metrics](https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema#metrics) for the list of dimension names.
    &quot;A String&quot;,
  ],
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name for this ExpandedDataSet resource. Format: properties/{property_id}/expandedDataSets/{expanded_data_set}
}</pre>
</div>

</body></html>