<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_v1beta.html">Google Analytics Admin API</a> . <a href="analyticsadmin_v1beta.properties.html">properties</a> . <a href="analyticsadmin_v1beta.properties.dataStreams.html">dataStreams</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="analyticsadmin_v1beta.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="#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>
<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;, # 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 Measurement ID. Example: &quot;G-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;, # 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 Measurement ID. Example: &quot;G-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;, # 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 Measurement ID. Example: &quot;G-1A2BCD345E&quot;
  },
}</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;, # 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 Measurement ID. Example: &quot;G-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;, # 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 Measurement ID. Example: &quot;G-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;, # 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 Measurement ID. Example: &quot;G-1A2BCD345E&quot;
  },
}</pre>
</div>

</body></html>