<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.dataStreams.html">dataStreams</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="analyticsadmin_v1alpha.properties.dataStreams.eventCreateRules.html">eventCreateRules()</a></code>
</p>
<p class="firstline">Returns the eventCreateRules Resource.</p>

<p class="toc_element">
  <code><a href="analyticsadmin_v1alpha.properties.dataStreams.measurementProtocolSecrets.html">measurementProtocolSecrets()</a></code>
</p>
<p class="firstline">Returns the measurementProtocolSecrets Resource.</p>

<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 DataStream.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a DataStream 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 DataStream.</p>
<p class="toc_element">
  <code><a href="#getEnhancedMeasurementSettings">getEnhancedMeasurementSettings(name, x__xgafv=None)</a></code></p>
<p class="firstline">Returns the enhanced measurement settings for this data stream. Note that the stream must enable enhanced measurement for these settings to take effect.</p>
<p class="toc_element">
  <code><a href="#getGlobalSiteTag">getGlobalSiteTag(name, x__xgafv=None)</a></code></p>
<p class="firstline">Returns the Site Tag for the specified web stream. Site Tags are immutable singletons.</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 DataStreams 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 DataStream on a property.</p>
<p class="toc_element">
  <code><a href="#updateEnhancedMeasurementSettings">updateEnhancedMeasurementSettings(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the enhanced measurement settings for this data stream. Note that the stream must enable enhanced measurement for these settings to take effect.</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 DataStream.

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 data stream.
  &quot;androidAppStreamData&quot;: { # Data specific to Android app streams. # Data specific to Android app streams. Must be populated if type is ANDROID_APP_DATA_STREAM.
    &quot;firebaseAppId&quot;: &quot;A String&quot;, # Output only. ID of the corresponding Android app in Firebase, if any. This ID can change if the Android app is deleted and recreated.
    &quot;packageName&quot;: &quot;A String&quot;, # Immutable. The package name for the app being measured. Example: &quot;com.example.myandroidapp&quot;
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time when this stream was originally created.
  &quot;displayName&quot;: &quot;A String&quot;, # Human-readable display name for the Data Stream. Required for web data streams. The max allowed display name length is 255 UTF-16 code units.
  &quot;iosAppStreamData&quot;: { # Data specific to iOS app streams. # Data specific to iOS app streams. Must be populated if type is IOS_APP_DATA_STREAM.
    &quot;bundleId&quot;: &quot;A String&quot;, # Required. Immutable. The Apple App Store Bundle ID for the app Example: &quot;com.example.myiosapp&quot;
    &quot;firebaseAppId&quot;: &quot;A String&quot;, # Output only. ID of the corresponding iOS app in Firebase, if any. This ID can change if the iOS app is deleted and recreated.
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of this Data Stream. Format: properties/{property_id}/dataStreams/{stream_id} Example: &quot;properties/1000/dataStreams/2000&quot;
  &quot;type&quot;: &quot;A String&quot;, # Required. Immutable. The type of this DataStream resource.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Time when stream payload fields were last updated.
  &quot;webStreamData&quot;: { # Data specific to web streams. # Data specific to web streams. Must be populated if type is WEB_DATA_STREAM.
    &quot;defaultUri&quot;: &quot;A String&quot;, # Immutable. Domain name of the web app being measured, or empty. Example: &quot;http://www.google.com&quot;, &quot;https://www.google.com&quot;
    &quot;firebaseAppId&quot;: &quot;A String&quot;, # Output only. ID of the corresponding web app in Firebase, if any. This ID can change if the web app is deleted and recreated.
    &quot;measurementId&quot;: &quot;A String&quot;, # Output only. Analytics &quot;Measurement ID&quot;, without the &quot;G-&quot; prefix. Example: &quot;G-1A2BCD345E&quot; would just be &quot;1A2BCD345E&quot;
  },
}

  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 data stream.
  &quot;androidAppStreamData&quot;: { # Data specific to Android app streams. # Data specific to Android app streams. Must be populated if type is ANDROID_APP_DATA_STREAM.
    &quot;firebaseAppId&quot;: &quot;A String&quot;, # Output only. ID of the corresponding Android app in Firebase, if any. This ID can change if the Android app is deleted and recreated.
    &quot;packageName&quot;: &quot;A String&quot;, # Immutable. The package name for the app being measured. Example: &quot;com.example.myandroidapp&quot;
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time when this stream was originally created.
  &quot;displayName&quot;: &quot;A String&quot;, # Human-readable display name for the Data Stream. Required for web data streams. The max allowed display name length is 255 UTF-16 code units.
  &quot;iosAppStreamData&quot;: { # Data specific to iOS app streams. # Data specific to iOS app streams. Must be populated if type is IOS_APP_DATA_STREAM.
    &quot;bundleId&quot;: &quot;A String&quot;, # Required. Immutable. The Apple App Store Bundle ID for the app Example: &quot;com.example.myiosapp&quot;
    &quot;firebaseAppId&quot;: &quot;A String&quot;, # Output only. ID of the corresponding iOS app in Firebase, if any. This ID can change if the iOS app is deleted and recreated.
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of this Data Stream. Format: properties/{property_id}/dataStreams/{stream_id} Example: &quot;properties/1000/dataStreams/2000&quot;
  &quot;type&quot;: &quot;A String&quot;, # Required. Immutable. The type of this DataStream resource.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Time when stream payload fields were last updated.
  &quot;webStreamData&quot;: { # Data specific to web streams. # Data specific to web streams. Must be populated if type is WEB_DATA_STREAM.
    &quot;defaultUri&quot;: &quot;A String&quot;, # Immutable. Domain name of the web app being measured, or empty. Example: &quot;http://www.google.com&quot;, &quot;https://www.google.com&quot;
    &quot;firebaseAppId&quot;: &quot;A String&quot;, # Output only. ID of the corresponding web app in Firebase, if any. This ID can change if the web app is deleted and recreated.
    &quot;measurementId&quot;: &quot;A String&quot;, # Output only. Analytics &quot;Measurement ID&quot;, without the &quot;G-&quot; prefix. Example: &quot;G-1A2BCD345E&quot; would just be &quot;1A2BCD345E&quot;
  },
}</pre>
</div>

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

Args:
  name: string, Required. The name of the DataStream to delete. Example format: properties/1234/dataStreams/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 DataStream.

Args:
  name: string, Required. The name of the DataStream to get. Example format: properties/1234/dataStreams/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 data stream.
  &quot;androidAppStreamData&quot;: { # Data specific to Android app streams. # Data specific to Android app streams. Must be populated if type is ANDROID_APP_DATA_STREAM.
    &quot;firebaseAppId&quot;: &quot;A String&quot;, # Output only. ID of the corresponding Android app in Firebase, if any. This ID can change if the Android app is deleted and recreated.
    &quot;packageName&quot;: &quot;A String&quot;, # Immutable. The package name for the app being measured. Example: &quot;com.example.myandroidapp&quot;
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time when this stream was originally created.
  &quot;displayName&quot;: &quot;A String&quot;, # Human-readable display name for the Data Stream. Required for web data streams. The max allowed display name length is 255 UTF-16 code units.
  &quot;iosAppStreamData&quot;: { # Data specific to iOS app streams. # Data specific to iOS app streams. Must be populated if type is IOS_APP_DATA_STREAM.
    &quot;bundleId&quot;: &quot;A String&quot;, # Required. Immutable. The Apple App Store Bundle ID for the app Example: &quot;com.example.myiosapp&quot;
    &quot;firebaseAppId&quot;: &quot;A String&quot;, # Output only. ID of the corresponding iOS app in Firebase, if any. This ID can change if the iOS app is deleted and recreated.
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of this Data Stream. Format: properties/{property_id}/dataStreams/{stream_id} Example: &quot;properties/1000/dataStreams/2000&quot;
  &quot;type&quot;: &quot;A String&quot;, # Required. Immutable. The type of this DataStream resource.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Time when stream payload fields were last updated.
  &quot;webStreamData&quot;: { # Data specific to web streams. # Data specific to web streams. Must be populated if type is WEB_DATA_STREAM.
    &quot;defaultUri&quot;: &quot;A String&quot;, # Immutable. Domain name of the web app being measured, or empty. Example: &quot;http://www.google.com&quot;, &quot;https://www.google.com&quot;
    &quot;firebaseAppId&quot;: &quot;A String&quot;, # Output only. ID of the corresponding web app in Firebase, if any. This ID can change if the web app is deleted and recreated.
    &quot;measurementId&quot;: &quot;A String&quot;, # Output only. Analytics &quot;Measurement ID&quot;, without the &quot;G-&quot; prefix. Example: &quot;G-1A2BCD345E&quot; would just be &quot;1A2BCD345E&quot;
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="getEnhancedMeasurementSettings">getEnhancedMeasurementSettings(name, x__xgafv=None)</code>
  <pre>Returns the enhanced measurement settings for this data stream. Note that the stream must enable enhanced measurement for these settings to take effect.

Args:
  name: string, Required. The name of the settings to lookup. Format: properties/{property}/dataStreams/{data_stream}/enhancedMeasurementSettings Example: &quot;properties/1000/dataStreams/2000/enhancedMeasurementSettings&quot; (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Singleton resource under a WebDataStream, configuring measurement of additional site interactions and content.
  &quot;fileDownloadsEnabled&quot;: True or False, # If enabled, capture a file download event each time a link is clicked with a common document, compressed file, application, video, or audio extension.
  &quot;formInteractionsEnabled&quot;: True or False, # If enabled, capture a form interaction event each time a visitor interacts with a form on your website. False by default.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of the Enhanced Measurement Settings. Format: properties/{property_id}/dataStreams/{data_stream}/enhancedMeasurementSettings Example: &quot;properties/1000/dataStreams/2000/enhancedMeasurementSettings&quot;
  &quot;outboundClicksEnabled&quot;: True or False, # If enabled, capture an outbound click event each time a visitor clicks a link that leads them away from your domain.
  &quot;pageChangesEnabled&quot;: True or False, # If enabled, capture a page view event each time the website changes the browser history state.
  &quot;scrollsEnabled&quot;: True or False, # If enabled, capture scroll events each time a visitor gets to the bottom of a page.
  &quot;searchQueryParameter&quot;: &quot;A String&quot;, # Required. URL query parameters to interpret as site search parameters. Max length is 1024 characters. Must not be empty.
  &quot;siteSearchEnabled&quot;: True or False, # If enabled, capture a view search results event each time a visitor performs a search on your site (based on a query parameter).
  &quot;streamEnabled&quot;: True or False, # Indicates whether Enhanced Measurement Settings will be used to automatically measure interactions and content on this web stream. Changing this value does not affect the settings themselves, but determines whether they are respected.
  &quot;uriQueryParameter&quot;: &quot;A String&quot;, # Additional URL query parameters. Max length is 1024 characters.
  &quot;videoEngagementEnabled&quot;: True or False, # If enabled, capture video play, progress, and complete events as visitors view embedded videos on your site.
}</pre>
</div>

<div class="method">
    <code class="details" id="getGlobalSiteTag">getGlobalSiteTag(name, x__xgafv=None)</code>
  <pre>Returns the Site Tag for the specified web stream. Site Tags are immutable singletons.

Args:
  name: string, Required. The name of the site tag to lookup. Note that site tags are singletons and do not have unique IDs. Format: properties/{property_id}/dataStreams/{stream_id}/globalSiteTag Example: &quot;properties/123/dataStreams/456/globalSiteTag&quot; (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Read-only resource with the tag for sending data from a website to a DataStream. Only present for web DataStream resources.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name for this GlobalSiteTag resource. Format: properties/{property_id}/dataStreams/{stream_id}/globalSiteTag Example: &quot;properties/123/dataStreams/456/globalSiteTag&quot;
  &quot;snippet&quot;: &quot;A String&quot;, # Immutable. JavaScript code snippet to be pasted as the first item into the head tag of every webpage to measure.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists DataStreams 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 `ListDataStreams` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListDataStreams` 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 ListDataStreams RPC.
  &quot;dataStreams&quot;: [ # List of DataStreams.
    { # A resource message representing a data stream.
      &quot;androidAppStreamData&quot;: { # Data specific to Android app streams. # Data specific to Android app streams. Must be populated if type is ANDROID_APP_DATA_STREAM.
        &quot;firebaseAppId&quot;: &quot;A String&quot;, # Output only. ID of the corresponding Android app in Firebase, if any. This ID can change if the Android app is deleted and recreated.
        &quot;packageName&quot;: &quot;A String&quot;, # Immutable. The package name for the app being measured. Example: &quot;com.example.myandroidapp&quot;
      },
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time when this stream was originally created.
      &quot;displayName&quot;: &quot;A String&quot;, # Human-readable display name for the Data Stream. Required for web data streams. The max allowed display name length is 255 UTF-16 code units.
      &quot;iosAppStreamData&quot;: { # Data specific to iOS app streams. # Data specific to iOS app streams. Must be populated if type is IOS_APP_DATA_STREAM.
        &quot;bundleId&quot;: &quot;A String&quot;, # Required. Immutable. The Apple App Store Bundle ID for the app Example: &quot;com.example.myiosapp&quot;
        &quot;firebaseAppId&quot;: &quot;A String&quot;, # Output only. ID of the corresponding iOS app in Firebase, if any. This ID can change if the iOS app is deleted and recreated.
      },
      &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of this Data Stream. Format: properties/{property_id}/dataStreams/{stream_id} Example: &quot;properties/1000/dataStreams/2000&quot;
      &quot;type&quot;: &quot;A String&quot;, # Required. Immutable. The type of this DataStream resource.
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Time when stream payload fields were last updated.
      &quot;webStreamData&quot;: { # Data specific to web streams. # Data specific to web streams. Must be populated if type is WEB_DATA_STREAM.
        &quot;defaultUri&quot;: &quot;A String&quot;, # Immutable. Domain name of the web app being measured, or empty. Example: &quot;http://www.google.com&quot;, &quot;https://www.google.com&quot;
        &quot;firebaseAppId&quot;: &quot;A String&quot;, # Output only. ID of the corresponding web app in Firebase, if any. This ID can change if the web app is deleted and recreated.
        &quot;measurementId&quot;: &quot;A String&quot;, # Output only. Analytics &quot;Measurement ID&quot;, without the &quot;G-&quot; prefix. Example: &quot;G-1A2BCD345E&quot; would just be &quot;1A2BCD345E&quot;
      },
    },
  ],
  &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 DataStream on a property.

Args:
  name: string, Output only. Resource name of this Data Stream. Format: properties/{property_id}/dataStreams/{stream_id} Example: &quot;properties/1000/dataStreams/2000&quot; (required)
  body: object, The request body.
    The object takes the form of:

{ # A resource message representing a data stream.
  &quot;androidAppStreamData&quot;: { # Data specific to Android app streams. # Data specific to Android app streams. Must be populated if type is ANDROID_APP_DATA_STREAM.
    &quot;firebaseAppId&quot;: &quot;A String&quot;, # Output only. ID of the corresponding Android app in Firebase, if any. This ID can change if the Android app is deleted and recreated.
    &quot;packageName&quot;: &quot;A String&quot;, # Immutable. The package name for the app being measured. Example: &quot;com.example.myandroidapp&quot;
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time when this stream was originally created.
  &quot;displayName&quot;: &quot;A String&quot;, # Human-readable display name for the Data Stream. Required for web data streams. The max allowed display name length is 255 UTF-16 code units.
  &quot;iosAppStreamData&quot;: { # Data specific to iOS app streams. # Data specific to iOS app streams. Must be populated if type is IOS_APP_DATA_STREAM.
    &quot;bundleId&quot;: &quot;A String&quot;, # Required. Immutable. The Apple App Store Bundle ID for the app Example: &quot;com.example.myiosapp&quot;
    &quot;firebaseAppId&quot;: &quot;A String&quot;, # Output only. ID of the corresponding iOS app in Firebase, if any. This ID can change if the iOS app is deleted and recreated.
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of this Data Stream. Format: properties/{property_id}/dataStreams/{stream_id} Example: &quot;properties/1000/dataStreams/2000&quot;
  &quot;type&quot;: &quot;A String&quot;, # Required. Immutable. The type of this DataStream resource.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Time when stream payload fields were last updated.
  &quot;webStreamData&quot;: { # Data specific to web streams. # Data specific to web streams. Must be populated if type is WEB_DATA_STREAM.
    &quot;defaultUri&quot;: &quot;A String&quot;, # Immutable. Domain name of the web app being measured, or empty. Example: &quot;http://www.google.com&quot;, &quot;https://www.google.com&quot;
    &quot;firebaseAppId&quot;: &quot;A String&quot;, # Output only. ID of the corresponding web app in Firebase, if any. This ID can change if the web app is deleted and recreated.
    &quot;measurementId&quot;: &quot;A String&quot;, # Output only. Analytics &quot;Measurement ID&quot;, without the &quot;G-&quot; prefix. Example: &quot;G-1A2BCD345E&quot; would just be &quot;1A2BCD345E&quot;
  },
}

  updateMask: string, Required. The list of fields to be updated. 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 data stream.
  &quot;androidAppStreamData&quot;: { # Data specific to Android app streams. # Data specific to Android app streams. Must be populated if type is ANDROID_APP_DATA_STREAM.
    &quot;firebaseAppId&quot;: &quot;A String&quot;, # Output only. ID of the corresponding Android app in Firebase, if any. This ID can change if the Android app is deleted and recreated.
    &quot;packageName&quot;: &quot;A String&quot;, # Immutable. The package name for the app being measured. Example: &quot;com.example.myandroidapp&quot;
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time when this stream was originally created.
  &quot;displayName&quot;: &quot;A String&quot;, # Human-readable display name for the Data Stream. Required for web data streams. The max allowed display name length is 255 UTF-16 code units.
  &quot;iosAppStreamData&quot;: { # Data specific to iOS app streams. # Data specific to iOS app streams. Must be populated if type is IOS_APP_DATA_STREAM.
    &quot;bundleId&quot;: &quot;A String&quot;, # Required. Immutable. The Apple App Store Bundle ID for the app Example: &quot;com.example.myiosapp&quot;
    &quot;firebaseAppId&quot;: &quot;A String&quot;, # Output only. ID of the corresponding iOS app in Firebase, if any. This ID can change if the iOS app is deleted and recreated.
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of this Data Stream. Format: properties/{property_id}/dataStreams/{stream_id} Example: &quot;properties/1000/dataStreams/2000&quot;
  &quot;type&quot;: &quot;A String&quot;, # Required. Immutable. The type of this DataStream resource.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Time when stream payload fields were last updated.
  &quot;webStreamData&quot;: { # Data specific to web streams. # Data specific to web streams. Must be populated if type is WEB_DATA_STREAM.
    &quot;defaultUri&quot;: &quot;A String&quot;, # Immutable. Domain name of the web app being measured, or empty. Example: &quot;http://www.google.com&quot;, &quot;https://www.google.com&quot;
    &quot;firebaseAppId&quot;: &quot;A String&quot;, # Output only. ID of the corresponding web app in Firebase, if any. This ID can change if the web app is deleted and recreated.
    &quot;measurementId&quot;: &quot;A String&quot;, # Output only. Analytics &quot;Measurement ID&quot;, without the &quot;G-&quot; prefix. Example: &quot;G-1A2BCD345E&quot; would just be &quot;1A2BCD345E&quot;
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="updateEnhancedMeasurementSettings">updateEnhancedMeasurementSettings(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates the enhanced measurement settings for this data stream. Note that the stream must enable enhanced measurement for these settings to take effect.

Args:
  name: string, Output only. Resource name of the Enhanced Measurement Settings. Format: properties/{property_id}/dataStreams/{data_stream}/enhancedMeasurementSettings Example: &quot;properties/1000/dataStreams/2000/enhancedMeasurementSettings&quot; (required)
  body: object, The request body.
    The object takes the form of:

{ # Singleton resource under a WebDataStream, configuring measurement of additional site interactions and content.
  &quot;fileDownloadsEnabled&quot;: True or False, # If enabled, capture a file download event each time a link is clicked with a common document, compressed file, application, video, or audio extension.
  &quot;formInteractionsEnabled&quot;: True or False, # If enabled, capture a form interaction event each time a visitor interacts with a form on your website. False by default.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of the Enhanced Measurement Settings. Format: properties/{property_id}/dataStreams/{data_stream}/enhancedMeasurementSettings Example: &quot;properties/1000/dataStreams/2000/enhancedMeasurementSettings&quot;
  &quot;outboundClicksEnabled&quot;: True or False, # If enabled, capture an outbound click event each time a visitor clicks a link that leads them away from your domain.
  &quot;pageChangesEnabled&quot;: True or False, # If enabled, capture a page view event each time the website changes the browser history state.
  &quot;scrollsEnabled&quot;: True or False, # If enabled, capture scroll events each time a visitor gets to the bottom of a page.
  &quot;searchQueryParameter&quot;: &quot;A String&quot;, # Required. URL query parameters to interpret as site search parameters. Max length is 1024 characters. Must not be empty.
  &quot;siteSearchEnabled&quot;: True or False, # If enabled, capture a view search results event each time a visitor performs a search on your site (based on a query parameter).
  &quot;streamEnabled&quot;: True or False, # Indicates whether Enhanced Measurement Settings will be used to automatically measure interactions and content on this web stream. Changing this value does not affect the settings themselves, but determines whether they are respected.
  &quot;uriQueryParameter&quot;: &quot;A String&quot;, # Additional URL query parameters. Max length is 1024 characters.
  &quot;videoEngagementEnabled&quot;: True or False, # If enabled, capture video play, progress, and complete events as visitors view embedded videos on your site.
}

  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:

    { # Singleton resource under a WebDataStream, configuring measurement of additional site interactions and content.
  &quot;fileDownloadsEnabled&quot;: True or False, # If enabled, capture a file download event each time a link is clicked with a common document, compressed file, application, video, or audio extension.
  &quot;formInteractionsEnabled&quot;: True or False, # If enabled, capture a form interaction event each time a visitor interacts with a form on your website. False by default.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of the Enhanced Measurement Settings. Format: properties/{property_id}/dataStreams/{data_stream}/enhancedMeasurementSettings Example: &quot;properties/1000/dataStreams/2000/enhancedMeasurementSettings&quot;
  &quot;outboundClicksEnabled&quot;: True or False, # If enabled, capture an outbound click event each time a visitor clicks a link that leads them away from your domain.
  &quot;pageChangesEnabled&quot;: True or False, # If enabled, capture a page view event each time the website changes the browser history state.
  &quot;scrollsEnabled&quot;: True or False, # If enabled, capture scroll events each time a visitor gets to the bottom of a page.
  &quot;searchQueryParameter&quot;: &quot;A String&quot;, # Required. URL query parameters to interpret as site search parameters. Max length is 1024 characters. Must not be empty.
  &quot;siteSearchEnabled&quot;: True or False, # If enabled, capture a view search results event each time a visitor performs a search on your site (based on a query parameter).
  &quot;streamEnabled&quot;: True or False, # Indicates whether Enhanced Measurement Settings will be used to automatically measure interactions and content on this web stream. Changing this value does not affect the settings themselves, but determines whether they are respected.
  &quot;uriQueryParameter&quot;: &quot;A String&quot;, # Additional URL query parameters. Max length is 1024 characters.
  &quot;videoEngagementEnabled&quot;: True or False, # If enabled, capture video play, progress, and complete events as visitors view embedded videos on your site.
}</pre>
</div>

</body></html>