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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<p class="toc_element">
  <code><a href="#acknowledgeUserDataCollection">acknowledgeUserDataCollection(property, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Acknowledges the terms of user data collection for the specified property. This acknowledgement must be completed (either in the Google Analytics UI or through this API) before MeasurementProtocolSecret resources may be created.</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(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates an "GA4" property with the specified location and attributes.</p>
<p class="toc_element">
  <code><a href="#createConnectedSiteTag">createConnectedSiteTag(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a connected site tag for a Universal Analytics property. You can create a maximum of 20 connected site tags per property. Note: This API cannot be used on GA4 properties.</p>
<p class="toc_element">
  <code><a href="#createRollupProperty">createRollupProperty(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Create a roll-up property and all roll-up property source links.</p>
<p class="toc_element">
  <code><a href="#createSubproperty">createSubproperty(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Create a subproperty and a subproperty event filter that applies to the created subproperty.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Marks target Property as soft-deleted (ie: "trashed") and returns it. This API does not have a method to restore soft-deleted properties. However, they can be restored using the Trash Can UI. If the properties are not restored before the expiration time, the Property and all child resources (eg: GoogleAdsLinks, Streams, AccessBindings) will be permanently purged. https://support.google.com/analytics/answer/6154772 Returns an error if the target is not found, or is not a GA4 Property.</p>
<p class="toc_element">
  <code><a href="#deleteConnectedSiteTag">deleteConnectedSiteTag(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a connected site tag for a Universal Analytics property. Note: this has no effect on GA4 properties.</p>
<p class="toc_element">
  <code><a href="#fetchAutomatedGa4ConfigurationOptOut">fetchAutomatedGa4ConfigurationOptOut(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Fetches the opt out status for the automated GA4 setup process for a UA property. Note: this has no effect on GA4 property.</p>
<p class="toc_element">
  <code><a href="#fetchConnectedGa4Property">fetchConnectedGa4Property(property=None, x__xgafv=None)</a></code></p>
<p class="firstline">Given a specified UA property, looks up the GA4 property connected to it. Note: this cannot be used with GA4 properties.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Lookup for a single "GA4" Property.</p>
<p class="toc_element">
  <code><a href="#getAttributionSettings">getAttributionSettings(name, x__xgafv=None)</a></code></p>
<p class="firstline">Lookup for a AttributionSettings singleton.</p>
<p class="toc_element">
  <code><a href="#getDataRetentionSettings">getDataRetentionSettings(name, x__xgafv=None)</a></code></p>
<p class="firstline">Returns the singleton data retention settings for this property.</p>
<p class="toc_element">
  <code><a href="#getGoogleSignalsSettings">getGoogleSignalsSettings(name, x__xgafv=None)</a></code></p>
<p class="firstline">Lookup for Google Signals settings for a property.</p>
<p class="toc_element">
  <code><a href="#list">list(filter=None, pageSize=None, pageToken=None, showDeleted=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns child Properties under the specified parent Account. Only "GA4" properties will be returned. Properties will be excluded if the caller does not have access. Soft-deleted (ie: "trashed") properties are excluded by default. Returns an empty list if no relevant properties are found.</p>
<p class="toc_element">
  <code><a href="#listConnectedSiteTags">listConnectedSiteTags(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists the connected site tags for a Universal Analytics property. A maximum of 20 connected site tags will be returned. Note: this has no effect on GA4 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 property.</p>
<p class="toc_element">
  <code><a href="#runAccessReport">runAccessReport(entity, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns a customized report of data access records. The report provides records of each time a user reads Google Analytics reporting data. Access records are retained for up to 2 years. Data Access Reports can be requested for a property. The property must be in Google Analytics 360. This method is only available to Administrators. These data access records include GA4 UI Reporting, GA4 UI Explorations, GA4 Data API, and other products like Firebase & Admob that can retrieve data from Google Analytics through a linkage. These records don't include property configuration changes like adding a stream or changing a property's time zone. For configuration change history, see [searchChangeHistoryEvents](https://developers.google.com/analytics/devguides/config/admin/v1/rest/v1alpha/accounts/searchChangeHistoryEvents).</p>
<p class="toc_element">
  <code><a href="#setAutomatedGa4ConfigurationOptOut">setAutomatedGa4ConfigurationOptOut(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Sets the opt out status for the automated GA4 setup process for a UA property. Note: this has no effect on GA4 property.</p>
<p class="toc_element">
  <code><a href="#updateAttributionSettings">updateAttributionSettings(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates attribution settings on a property.</p>
<p class="toc_element">
  <code><a href="#updateDataRetentionSettings">updateDataRetentionSettings(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the singleton data retention settings for this property.</p>
<p class="toc_element">
  <code><a href="#updateGoogleSignalsSettings">updateGoogleSignalsSettings(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates Google Signals settings for a property.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="acknowledgeUserDataCollection">acknowledgeUserDataCollection(property, body=None, x__xgafv=None)</code>
  <pre>Acknowledges the terms of user data collection for the specified property. This acknowledgement must be completed (either in the Google Analytics UI or through this API) before MeasurementProtocolSecret resources may be created.

Args:
  property: string, Required. The property for which to acknowledge user data collection. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for AcknowledgeUserDataCollection RPC.
  &quot;acknowledgement&quot;: &quot;A String&quot;, # Required. An acknowledgement that the caller of this method understands the terms of user data collection. This field must contain the exact value: &quot;I acknowledge that I have the necessary privacy disclosures and rights from my end users for the collection and processing of their data, including the association of such data with the visitation information Google Analytics collects from my site and/or app property.&quot;
}

  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 AcknowledgeUserDataCollection RPC.
}</pre>
</div>

<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(body=None, x__xgafv=None)</code>
  <pre>Creates an &quot;GA4&quot; property with the specified location and attributes.

Args:
  body: object, The request body.
    The object takes the form of:

{ # A resource message representing a Google Analytics GA4 property.
  &quot;account&quot;: &quot;A String&quot;, # Immutable. The resource name of the parent account Format: accounts/{account_id} Example: &quot;accounts/123&quot;
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time when the entity was originally created.
  &quot;currencyCode&quot;: &quot;A String&quot;, # The currency type used in reports involving monetary values. Format: https://en.wikipedia.org/wiki/ISO_4217 Examples: &quot;USD&quot;, &quot;EUR&quot;, &quot;JPY&quot;
  &quot;deleteTime&quot;: &quot;A String&quot;, # Output only. If set, the time at which this property was trashed. If not set, then this property is not currently in the trash can.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. Human-readable display name for this property. The max allowed display name length is 100 UTF-16 code units.
  &quot;expireTime&quot;: &quot;A String&quot;, # Output only. If set, the time at which this trashed property will be permanently deleted. If not set, then this property is not currently in the trash can and is not slated to be deleted.
  &quot;industryCategory&quot;: &quot;A String&quot;, # Industry associated with this property Example: AUTOMOTIVE, FOOD_AND_DRINK
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of this property. Format: properties/{property_id} Example: &quot;properties/1000&quot;
  &quot;parent&quot;: &quot;A String&quot;, # Immutable. Resource name of this property&#x27;s logical parent. Note: The Property-Moving UI can be used to change the parent. Format: accounts/{account}, properties/{property} Example: &quot;accounts/100&quot;, &quot;properties/101&quot;
  &quot;propertyType&quot;: &quot;A String&quot;, # Immutable. The property type for this Property resource. When creating a property, if the type is &quot;PROPERTY_TYPE_UNSPECIFIED&quot;, then &quot;ORDINARY_PROPERTY&quot; will be implied.
  &quot;serviceLevel&quot;: &quot;A String&quot;, # Output only. The Google Analytics service level that applies to this property.
  &quot;timeZone&quot;: &quot;A String&quot;, # Required. Reporting Time Zone, used as the day boundary for reports, regardless of where the data originates. If the time zone honors DST, Analytics will automatically adjust for the changes. NOTE: Changing the time zone only affects data going forward, and is not applied retroactively. Format: https://www.iana.org/time-zones Example: &quot;America/Los_Angeles&quot;
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Time when entity payload fields were last updated.
}

  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 Google Analytics GA4 property.
  &quot;account&quot;: &quot;A String&quot;, # Immutable. The resource name of the parent account Format: accounts/{account_id} Example: &quot;accounts/123&quot;
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time when the entity was originally created.
  &quot;currencyCode&quot;: &quot;A String&quot;, # The currency type used in reports involving monetary values. Format: https://en.wikipedia.org/wiki/ISO_4217 Examples: &quot;USD&quot;, &quot;EUR&quot;, &quot;JPY&quot;
  &quot;deleteTime&quot;: &quot;A String&quot;, # Output only. If set, the time at which this property was trashed. If not set, then this property is not currently in the trash can.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. Human-readable display name for this property. The max allowed display name length is 100 UTF-16 code units.
  &quot;expireTime&quot;: &quot;A String&quot;, # Output only. If set, the time at which this trashed property will be permanently deleted. If not set, then this property is not currently in the trash can and is not slated to be deleted.
  &quot;industryCategory&quot;: &quot;A String&quot;, # Industry associated with this property Example: AUTOMOTIVE, FOOD_AND_DRINK
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of this property. Format: properties/{property_id} Example: &quot;properties/1000&quot;
  &quot;parent&quot;: &quot;A String&quot;, # Immutable. Resource name of this property&#x27;s logical parent. Note: The Property-Moving UI can be used to change the parent. Format: accounts/{account}, properties/{property} Example: &quot;accounts/100&quot;, &quot;properties/101&quot;
  &quot;propertyType&quot;: &quot;A String&quot;, # Immutable. The property type for this Property resource. When creating a property, if the type is &quot;PROPERTY_TYPE_UNSPECIFIED&quot;, then &quot;ORDINARY_PROPERTY&quot; will be implied.
  &quot;serviceLevel&quot;: &quot;A String&quot;, # Output only. The Google Analytics service level that applies to this property.
  &quot;timeZone&quot;: &quot;A String&quot;, # Required. Reporting Time Zone, used as the day boundary for reports, regardless of where the data originates. If the time zone honors DST, Analytics will automatically adjust for the changes. NOTE: Changing the time zone only affects data going forward, and is not applied retroactively. Format: https://www.iana.org/time-zones Example: &quot;America/Los_Angeles&quot;
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Time when entity payload fields were last updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="createConnectedSiteTag">createConnectedSiteTag(body=None, x__xgafv=None)</code>
  <pre>Creates a connected site tag for a Universal Analytics property. You can create a maximum of 20 connected site tags per property. Note: This API cannot be used on GA4 properties.

Args:
  body: object, The request body.
    The object takes the form of:

{ # Request message for CreateConnectedSiteTag RPC.
  &quot;connectedSiteTag&quot;: { # Configuration for a specific Connected Site Tag. # Required. The tag to add to the Universal Analytics property
    &quot;displayName&quot;: &quot;A String&quot;, # Required. User-provided display name for the connected site tag. Must be less than 256 characters.
    &quot;tagId&quot;: &quot;A String&quot;, # Required. &quot;Tag ID to forward events to. Also known as the Measurement ID, or the &quot;G-ID&quot; (For example: G-12345).
  },
  &quot;property&quot;: &quot;A String&quot;, # The Universal Analytics property to create connected site tags for. This API does not support GA4 properties. Format: properties/{universalAnalyticsPropertyId} Example: properties/1234
}

  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 CreateConnectedSiteTag RPC.
}</pre>
</div>

<div class="method">
    <code class="details" id="createRollupProperty">createRollupProperty(body=None, x__xgafv=None)</code>
  <pre>Create a roll-up property and all roll-up property source links.

Args:
  body: object, The request body.
    The object takes the form of:

{ # Request message for CreateRollupProperty RPC.
  &quot;rollupProperty&quot;: { # A resource message representing a Google Analytics GA4 property. # Required. The roll-up property to create.
    &quot;account&quot;: &quot;A String&quot;, # Immutable. The resource name of the parent account Format: accounts/{account_id} Example: &quot;accounts/123&quot;
    &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time when the entity was originally created.
    &quot;currencyCode&quot;: &quot;A String&quot;, # The currency type used in reports involving monetary values. Format: https://en.wikipedia.org/wiki/ISO_4217 Examples: &quot;USD&quot;, &quot;EUR&quot;, &quot;JPY&quot;
    &quot;deleteTime&quot;: &quot;A String&quot;, # Output only. If set, the time at which this property was trashed. If not set, then this property is not currently in the trash can.
    &quot;displayName&quot;: &quot;A String&quot;, # Required. Human-readable display name for this property. The max allowed display name length is 100 UTF-16 code units.
    &quot;expireTime&quot;: &quot;A String&quot;, # Output only. If set, the time at which this trashed property will be permanently deleted. If not set, then this property is not currently in the trash can and is not slated to be deleted.
    &quot;industryCategory&quot;: &quot;A String&quot;, # Industry associated with this property Example: AUTOMOTIVE, FOOD_AND_DRINK
    &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of this property. Format: properties/{property_id} Example: &quot;properties/1000&quot;
    &quot;parent&quot;: &quot;A String&quot;, # Immutable. Resource name of this property&#x27;s logical parent. Note: The Property-Moving UI can be used to change the parent. Format: accounts/{account}, properties/{property} Example: &quot;accounts/100&quot;, &quot;properties/101&quot;
    &quot;propertyType&quot;: &quot;A String&quot;, # Immutable. The property type for this Property resource. When creating a property, if the type is &quot;PROPERTY_TYPE_UNSPECIFIED&quot;, then &quot;ORDINARY_PROPERTY&quot; will be implied.
    &quot;serviceLevel&quot;: &quot;A String&quot;, # Output only. The Google Analytics service level that applies to this property.
    &quot;timeZone&quot;: &quot;A String&quot;, # Required. Reporting Time Zone, used as the day boundary for reports, regardless of where the data originates. If the time zone honors DST, Analytics will automatically adjust for the changes. NOTE: Changing the time zone only affects data going forward, and is not applied retroactively. Format: https://www.iana.org/time-zones Example: &quot;America/Los_Angeles&quot;
    &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Time when entity payload fields were last updated.
  },
  &quot;sourceProperties&quot;: [ # Optional. The resource names of properties that will be sources to the created roll-up property.
    &quot;A String&quot;,
  ],
}

  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 CreateRollupProperty RPC.
  &quot;rollupProperty&quot;: { # A resource message representing a Google Analytics GA4 property. # The created roll-up property.
    &quot;account&quot;: &quot;A String&quot;, # Immutable. The resource name of the parent account Format: accounts/{account_id} Example: &quot;accounts/123&quot;
    &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time when the entity was originally created.
    &quot;currencyCode&quot;: &quot;A String&quot;, # The currency type used in reports involving monetary values. Format: https://en.wikipedia.org/wiki/ISO_4217 Examples: &quot;USD&quot;, &quot;EUR&quot;, &quot;JPY&quot;
    &quot;deleteTime&quot;: &quot;A String&quot;, # Output only. If set, the time at which this property was trashed. If not set, then this property is not currently in the trash can.
    &quot;displayName&quot;: &quot;A String&quot;, # Required. Human-readable display name for this property. The max allowed display name length is 100 UTF-16 code units.
    &quot;expireTime&quot;: &quot;A String&quot;, # Output only. If set, the time at which this trashed property will be permanently deleted. If not set, then this property is not currently in the trash can and is not slated to be deleted.
    &quot;industryCategory&quot;: &quot;A String&quot;, # Industry associated with this property Example: AUTOMOTIVE, FOOD_AND_DRINK
    &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of this property. Format: properties/{property_id} Example: &quot;properties/1000&quot;
    &quot;parent&quot;: &quot;A String&quot;, # Immutable. Resource name of this property&#x27;s logical parent. Note: The Property-Moving UI can be used to change the parent. Format: accounts/{account}, properties/{property} Example: &quot;accounts/100&quot;, &quot;properties/101&quot;
    &quot;propertyType&quot;: &quot;A String&quot;, # Immutable. The property type for this Property resource. When creating a property, if the type is &quot;PROPERTY_TYPE_UNSPECIFIED&quot;, then &quot;ORDINARY_PROPERTY&quot; will be implied.
    &quot;serviceLevel&quot;: &quot;A String&quot;, # Output only. The Google Analytics service level that applies to this property.
    &quot;timeZone&quot;: &quot;A String&quot;, # Required. Reporting Time Zone, used as the day boundary for reports, regardless of where the data originates. If the time zone honors DST, Analytics will automatically adjust for the changes. NOTE: Changing the time zone only affects data going forward, and is not applied retroactively. Format: https://www.iana.org/time-zones Example: &quot;America/Los_Angeles&quot;
    &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Time when entity payload fields were last updated.
  },
  &quot;rollupPropertySourceLinks&quot;: [ # The created roll-up property source links.
    { # A link that references a source property under the parent rollup property.
      &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of this RollupPropertySourceLink. Format: &#x27;properties/{property_id}/rollupPropertySourceLinks/{rollup_property_source_link}&#x27; Format: &#x27;properties/123/rollupPropertySourceLinks/456&#x27;
      &quot;sourceProperty&quot;: &quot;A String&quot;, # Immutable. Resource name of the source property. Format: properties/{property_id} Example: &quot;properties/789&quot;
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="createSubproperty">createSubproperty(body=None, x__xgafv=None)</code>
  <pre>Create a subproperty and a subproperty event filter that applies to the created subproperty.

Args:
  body: object, The request body.
    The object takes the form of:

{ # Request message for CreateSubproperty RPC.
  &quot;parent&quot;: &quot;A String&quot;, # Required. The ordinary property for which to create a subproperty. Format: properties/property_id Example: properties/123
  &quot;subproperty&quot;: { # A resource message representing a Google Analytics GA4 property. # Required. The subproperty to create.
    &quot;account&quot;: &quot;A String&quot;, # Immutable. The resource name of the parent account Format: accounts/{account_id} Example: &quot;accounts/123&quot;
    &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time when the entity was originally created.
    &quot;currencyCode&quot;: &quot;A String&quot;, # The currency type used in reports involving monetary values. Format: https://en.wikipedia.org/wiki/ISO_4217 Examples: &quot;USD&quot;, &quot;EUR&quot;, &quot;JPY&quot;
    &quot;deleteTime&quot;: &quot;A String&quot;, # Output only. If set, the time at which this property was trashed. If not set, then this property is not currently in the trash can.
    &quot;displayName&quot;: &quot;A String&quot;, # Required. Human-readable display name for this property. The max allowed display name length is 100 UTF-16 code units.
    &quot;expireTime&quot;: &quot;A String&quot;, # Output only. If set, the time at which this trashed property will be permanently deleted. If not set, then this property is not currently in the trash can and is not slated to be deleted.
    &quot;industryCategory&quot;: &quot;A String&quot;, # Industry associated with this property Example: AUTOMOTIVE, FOOD_AND_DRINK
    &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of this property. Format: properties/{property_id} Example: &quot;properties/1000&quot;
    &quot;parent&quot;: &quot;A String&quot;, # Immutable. Resource name of this property&#x27;s logical parent. Note: The Property-Moving UI can be used to change the parent. Format: accounts/{account}, properties/{property} Example: &quot;accounts/100&quot;, &quot;properties/101&quot;
    &quot;propertyType&quot;: &quot;A String&quot;, # Immutable. The property type for this Property resource. When creating a property, if the type is &quot;PROPERTY_TYPE_UNSPECIFIED&quot;, then &quot;ORDINARY_PROPERTY&quot; will be implied.
    &quot;serviceLevel&quot;: &quot;A String&quot;, # Output only. The Google Analytics service level that applies to this property.
    &quot;timeZone&quot;: &quot;A String&quot;, # Required. Reporting Time Zone, used as the day boundary for reports, regardless of where the data originates. If the time zone honors DST, Analytics will automatically adjust for the changes. NOTE: Changing the time zone only affects data going forward, and is not applied retroactively. Format: https://www.iana.org/time-zones Example: &quot;America/Los_Angeles&quot;
    &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Time when entity payload fields were last updated.
  },
  &quot;subpropertyEventFilter&quot;: { # A resource message representing a GA4 Subproperty event filter. # Optional. The subproperty event filter to create on an ordinary property.
    &quot;applyToProperty&quot;: &quot;A String&quot;, # Immutable. Resource name of the Subproperty that uses this filter.
    &quot;filterClauses&quot;: [ # Required. Unordered list. Filter clauses that define the SubpropertyEventFilter. All clauses are AND&#x27;ed together to determine what data is sent to the subproperty.
      { # A clause for defining a filter. A filter may be inclusive (events satisfying the filter clause are included in the subproperty&#x27;s data) or exclusive (events satisfying the filter clause are excluded from the subproperty&#x27;s data).
        &quot;filterClauseType&quot;: &quot;A String&quot;, # Required. The type for the filter clause.
        &quot;filterExpression&quot;: { # A logical expression of Subproperty event filters. # Required. The logical expression for what events are sent to the subproperty.
          &quot;filterCondition&quot;: { # A specific filter expression # Creates a filter that matches a specific event. This cannot be set on the top level SubpropertyEventFilterExpression.
            &quot;fieldName&quot;: &quot;A String&quot;, # Required. The field that is being filtered.
            &quot;nullFilter&quot;: True or False, # A filter for null values.
            &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 string value is case sensitive. If false, the match is case-insensitive.
              &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 used for the matching.
            },
          },
          &quot;notExpression&quot;: # Object with schema name: GoogleAnalyticsAdminV1alphaSubpropertyEventFilterExpression # A filter expression to be NOT&#x27;ed (inverted, complemented). It can only include a filter. This cannot be set on the top level SubpropertyEventFilterExpression.
          &quot;orGroup&quot;: { # A list of Subproperty event filter expressions. # A list of expressions to OR’ed together. Must only contain not_expression or filter_condition expressions.
            &quot;filterExpressions&quot;: [ # Required. Unordered list. A list of Subproperty event filter expressions
              # Object with schema name: GoogleAnalyticsAdminV1alphaSubpropertyEventFilterExpression
            ],
          },
        },
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # Output only. Format: properties/{ordinary_property_id}/subpropertyEventFilters/{sub_property_event_filter} Example: properties/1234/subpropertyEventFilters/5678
  },
}

  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 CreateSubproperty RPC.
  &quot;subproperty&quot;: { # A resource message representing a Google Analytics GA4 property. # The created subproperty.
    &quot;account&quot;: &quot;A String&quot;, # Immutable. The resource name of the parent account Format: accounts/{account_id} Example: &quot;accounts/123&quot;
    &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time when the entity was originally created.
    &quot;currencyCode&quot;: &quot;A String&quot;, # The currency type used in reports involving monetary values. Format: https://en.wikipedia.org/wiki/ISO_4217 Examples: &quot;USD&quot;, &quot;EUR&quot;, &quot;JPY&quot;
    &quot;deleteTime&quot;: &quot;A String&quot;, # Output only. If set, the time at which this property was trashed. If not set, then this property is not currently in the trash can.
    &quot;displayName&quot;: &quot;A String&quot;, # Required. Human-readable display name for this property. The max allowed display name length is 100 UTF-16 code units.
    &quot;expireTime&quot;: &quot;A String&quot;, # Output only. If set, the time at which this trashed property will be permanently deleted. If not set, then this property is not currently in the trash can and is not slated to be deleted.
    &quot;industryCategory&quot;: &quot;A String&quot;, # Industry associated with this property Example: AUTOMOTIVE, FOOD_AND_DRINK
    &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of this property. Format: properties/{property_id} Example: &quot;properties/1000&quot;
    &quot;parent&quot;: &quot;A String&quot;, # Immutable. Resource name of this property&#x27;s logical parent. Note: The Property-Moving UI can be used to change the parent. Format: accounts/{account}, properties/{property} Example: &quot;accounts/100&quot;, &quot;properties/101&quot;
    &quot;propertyType&quot;: &quot;A String&quot;, # Immutable. The property type for this Property resource. When creating a property, if the type is &quot;PROPERTY_TYPE_UNSPECIFIED&quot;, then &quot;ORDINARY_PROPERTY&quot; will be implied.
    &quot;serviceLevel&quot;: &quot;A String&quot;, # Output only. The Google Analytics service level that applies to this property.
    &quot;timeZone&quot;: &quot;A String&quot;, # Required. Reporting Time Zone, used as the day boundary for reports, regardless of where the data originates. If the time zone honors DST, Analytics will automatically adjust for the changes. NOTE: Changing the time zone only affects data going forward, and is not applied retroactively. Format: https://www.iana.org/time-zones Example: &quot;America/Los_Angeles&quot;
    &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Time when entity payload fields were last updated.
  },
  &quot;subpropertyEventFilter&quot;: { # A resource message representing a GA4 Subproperty event filter. # The created subproperty event filter.
    &quot;applyToProperty&quot;: &quot;A String&quot;, # Immutable. Resource name of the Subproperty that uses this filter.
    &quot;filterClauses&quot;: [ # Required. Unordered list. Filter clauses that define the SubpropertyEventFilter. All clauses are AND&#x27;ed together to determine what data is sent to the subproperty.
      { # A clause for defining a filter. A filter may be inclusive (events satisfying the filter clause are included in the subproperty&#x27;s data) or exclusive (events satisfying the filter clause are excluded from the subproperty&#x27;s data).
        &quot;filterClauseType&quot;: &quot;A String&quot;, # Required. The type for the filter clause.
        &quot;filterExpression&quot;: { # A logical expression of Subproperty event filters. # Required. The logical expression for what events are sent to the subproperty.
          &quot;filterCondition&quot;: { # A specific filter expression # Creates a filter that matches a specific event. This cannot be set on the top level SubpropertyEventFilterExpression.
            &quot;fieldName&quot;: &quot;A String&quot;, # Required. The field that is being filtered.
            &quot;nullFilter&quot;: True or False, # A filter for null values.
            &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 string value is case sensitive. If false, the match is case-insensitive.
              &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 used for the matching.
            },
          },
          &quot;notExpression&quot;: # Object with schema name: GoogleAnalyticsAdminV1alphaSubpropertyEventFilterExpression # A filter expression to be NOT&#x27;ed (inverted, complemented). It can only include a filter. This cannot be set on the top level SubpropertyEventFilterExpression.
          &quot;orGroup&quot;: { # A list of Subproperty event filter expressions. # A list of expressions to OR’ed together. Must only contain not_expression or filter_condition expressions.
            &quot;filterExpressions&quot;: [ # Required. Unordered list. A list of Subproperty event filter expressions
              # Object with schema name: GoogleAnalyticsAdminV1alphaSubpropertyEventFilterExpression
            ],
          },
        },
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # Output only. Format: properties/{ordinary_property_id}/subpropertyEventFilters/{sub_property_event_filter} Example: properties/1234/subpropertyEventFilters/5678
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Marks target Property as soft-deleted (ie: &quot;trashed&quot;) and returns it. This API does not have a method to restore soft-deleted properties. However, they can be restored using the Trash Can UI. If the properties are not restored before the expiration time, the Property and all child resources (eg: GoogleAdsLinks, Streams, AccessBindings) will be permanently purged. https://support.google.com/analytics/answer/6154772 Returns an error if the target is not found, or is not a GA4 Property.

Args:
  name: string, Required. The name of the Property to soft-delete. Format: properties/{property_id} Example: &quot;properties/1000&quot; (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 Google Analytics GA4 property.
  &quot;account&quot;: &quot;A String&quot;, # Immutable. The resource name of the parent account Format: accounts/{account_id} Example: &quot;accounts/123&quot;
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time when the entity was originally created.
  &quot;currencyCode&quot;: &quot;A String&quot;, # The currency type used in reports involving monetary values. Format: https://en.wikipedia.org/wiki/ISO_4217 Examples: &quot;USD&quot;, &quot;EUR&quot;, &quot;JPY&quot;
  &quot;deleteTime&quot;: &quot;A String&quot;, # Output only. If set, the time at which this property was trashed. If not set, then this property is not currently in the trash can.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. Human-readable display name for this property. The max allowed display name length is 100 UTF-16 code units.
  &quot;expireTime&quot;: &quot;A String&quot;, # Output only. If set, the time at which this trashed property will be permanently deleted. If not set, then this property is not currently in the trash can and is not slated to be deleted.
  &quot;industryCategory&quot;: &quot;A String&quot;, # Industry associated with this property Example: AUTOMOTIVE, FOOD_AND_DRINK
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of this property. Format: properties/{property_id} Example: &quot;properties/1000&quot;
  &quot;parent&quot;: &quot;A String&quot;, # Immutable. Resource name of this property&#x27;s logical parent. Note: The Property-Moving UI can be used to change the parent. Format: accounts/{account}, properties/{property} Example: &quot;accounts/100&quot;, &quot;properties/101&quot;
  &quot;propertyType&quot;: &quot;A String&quot;, # Immutable. The property type for this Property resource. When creating a property, if the type is &quot;PROPERTY_TYPE_UNSPECIFIED&quot;, then &quot;ORDINARY_PROPERTY&quot; will be implied.
  &quot;serviceLevel&quot;: &quot;A String&quot;, # Output only. The Google Analytics service level that applies to this property.
  &quot;timeZone&quot;: &quot;A String&quot;, # Required. Reporting Time Zone, used as the day boundary for reports, regardless of where the data originates. If the time zone honors DST, Analytics will automatically adjust for the changes. NOTE: Changing the time zone only affects data going forward, and is not applied retroactively. Format: https://www.iana.org/time-zones Example: &quot;America/Los_Angeles&quot;
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Time when entity payload fields were last updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="deleteConnectedSiteTag">deleteConnectedSiteTag(body=None, x__xgafv=None)</code>
  <pre>Deletes a connected site tag for a Universal Analytics property. Note: this has no effect on GA4 properties.

Args:
  body: object, The request body.
    The object takes the form of:

{ # Request message for DeleteConnectedSiteTag RPC.
  &quot;property&quot;: &quot;A String&quot;, # The Universal Analytics property to delete connected site tags for. This API does not support GA4 properties. Format: properties/{universalAnalyticsPropertyId} Example: properties/1234
  &quot;tagId&quot;: &quot;A String&quot;, # Tag ID to forward events to. Also known as the Measurement ID, or the &quot;G-ID&quot; (For example: G-12345).
}

  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="fetchAutomatedGa4ConfigurationOptOut">fetchAutomatedGa4ConfigurationOptOut(body=None, x__xgafv=None)</code>
  <pre>Fetches the opt out status for the automated GA4 setup process for a UA property. Note: this has no effect on GA4 property.

Args:
  body: object, The request body.
    The object takes the form of:

{ # Request for fetching the opt out status for the automated GA4 setup process.
  &quot;property&quot;: &quot;A String&quot;, # Required. The UA property to get the opt out status. Note this request uses the internal property ID, not the tracking ID of the form UA-XXXXXX-YY. Format: properties/{internalWebPropertyId} Example: properties/1234
}

  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 fetching the opt out status for the automated GA4 setup process.
  &quot;optOut&quot;: True or False, # The opt out status for the UA property.
}</pre>
</div>

<div class="method">
    <code class="details" id="fetchConnectedGa4Property">fetchConnectedGa4Property(property=None, x__xgafv=None)</code>
  <pre>Given a specified UA property, looks up the GA4 property connected to it. Note: this cannot be used with GA4 properties.

Args:
  property: string, Required. The UA property for which to look up the connected GA4 property. Note this request uses the internal property ID, not the tracking ID of the form UA-XXXXXX-YY. Format: properties/{internal_web_property_id} Example: properties/1234
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response for looking up GA4 property connected to a UA property.
  &quot;property&quot;: &quot;A String&quot;, # The GA4 property connected to the UA property. An empty string is returned when there is no connected GA4 property. Format: properties/{property_id} Example: properties/1234
}</pre>
</div>

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

Args:
  name: string, Required. The name of the property to lookup. Format: properties/{property_id} Example: &quot;properties/1000&quot; (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 Google Analytics GA4 property.
  &quot;account&quot;: &quot;A String&quot;, # Immutable. The resource name of the parent account Format: accounts/{account_id} Example: &quot;accounts/123&quot;
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time when the entity was originally created.
  &quot;currencyCode&quot;: &quot;A String&quot;, # The currency type used in reports involving monetary values. Format: https://en.wikipedia.org/wiki/ISO_4217 Examples: &quot;USD&quot;, &quot;EUR&quot;, &quot;JPY&quot;
  &quot;deleteTime&quot;: &quot;A String&quot;, # Output only. If set, the time at which this property was trashed. If not set, then this property is not currently in the trash can.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. Human-readable display name for this property. The max allowed display name length is 100 UTF-16 code units.
  &quot;expireTime&quot;: &quot;A String&quot;, # Output only. If set, the time at which this trashed property will be permanently deleted. If not set, then this property is not currently in the trash can and is not slated to be deleted.
  &quot;industryCategory&quot;: &quot;A String&quot;, # Industry associated with this property Example: AUTOMOTIVE, FOOD_AND_DRINK
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of this property. Format: properties/{property_id} Example: &quot;properties/1000&quot;
  &quot;parent&quot;: &quot;A String&quot;, # Immutable. Resource name of this property&#x27;s logical parent. Note: The Property-Moving UI can be used to change the parent. Format: accounts/{account}, properties/{property} Example: &quot;accounts/100&quot;, &quot;properties/101&quot;
  &quot;propertyType&quot;: &quot;A String&quot;, # Immutable. The property type for this Property resource. When creating a property, if the type is &quot;PROPERTY_TYPE_UNSPECIFIED&quot;, then &quot;ORDINARY_PROPERTY&quot; will be implied.
  &quot;serviceLevel&quot;: &quot;A String&quot;, # Output only. The Google Analytics service level that applies to this property.
  &quot;timeZone&quot;: &quot;A String&quot;, # Required. Reporting Time Zone, used as the day boundary for reports, regardless of where the data originates. If the time zone honors DST, Analytics will automatically adjust for the changes. NOTE: Changing the time zone only affects data going forward, and is not applied retroactively. Format: https://www.iana.org/time-zones Example: &quot;America/Los_Angeles&quot;
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Time when entity payload fields were last updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="getAttributionSettings">getAttributionSettings(name, x__xgafv=None)</code>
  <pre>Lookup for a AttributionSettings singleton.

Args:
  name: string, Required. The name of the attribution settings to retrieve. Format: properties/{property}/attributionSettings (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The attribution settings used for a given property. This is a singleton resource.
  &quot;acquisitionConversionEventLookbackWindow&quot;: &quot;A String&quot;, # Required. The lookback window configuration for acquisition conversion events. The default window size is 30 days.
  &quot;adsWebConversionDataExportScope&quot;: &quot;A String&quot;, # Required. The Conversion Export Scope for data exported to linked Ads Accounts.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of this attribution settings resource. Format: properties/{property_id}/attributionSettings Example: &quot;properties/1000/attributionSettings&quot;
  &quot;otherConversionEventLookbackWindow&quot;: &quot;A String&quot;, # Required. The lookback window for all other, non-acquisition conversion events. The default window size is 90 days.
  &quot;reportingAttributionModel&quot;: &quot;A String&quot;, # Required. The reporting attribution model used to calculate conversion credit in this property&#x27;s reports. Changing the attribution model will apply to both historical and future data. These changes will be reflected in reports with conversion and revenue data. User and session data will be unaffected.
}</pre>
</div>

<div class="method">
    <code class="details" id="getDataRetentionSettings">getDataRetentionSettings(name, x__xgafv=None)</code>
  <pre>Returns the singleton data retention settings for this property.

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

Returns:
  An object of the form:

    { # Settings values for data retention. This is a singleton resource.
  &quot;eventDataRetention&quot;: &quot;A String&quot;, # The length of time that event-level data is retained.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name for this DataRetentionSetting resource. Format: properties/{property}/dataRetentionSettings
  &quot;resetUserDataOnNewActivity&quot;: True or False, # If true, reset the retention period for the user identifier with every event from that user.
}</pre>
</div>

<div class="method">
    <code class="details" id="getGoogleSignalsSettings">getGoogleSignalsSettings(name, x__xgafv=None)</code>
  <pre>Lookup for Google Signals settings for a property.

Args:
  name: string, Required. The name of the google signals settings to retrieve. Format: properties/{property}/googleSignalsSettings (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Settings values for Google Signals. This is a singleton resource.
  &quot;consent&quot;: &quot;A String&quot;, # Output only. Terms of Service acceptance.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of this setting. Format: properties/{property_id}/googleSignalsSettings Example: &quot;properties/1000/googleSignalsSettings&quot;
  &quot;state&quot;: &quot;A String&quot;, # Status of this setting.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(filter=None, pageSize=None, pageToken=None, showDeleted=None, x__xgafv=None)</code>
  <pre>Returns child Properties under the specified parent Account. Only &quot;GA4&quot; properties will be returned. Properties will be excluded if the caller does not have access. Soft-deleted (ie: &quot;trashed&quot;) properties are excluded by default. Returns an empty list if no relevant properties are found.

Args:
  filter: string, Required. An expression for filtering the results of the request. Fields eligible for filtering are: `parent:`(The resource name of the parent account/property) or `ancestor:`(The resource name of the parent account) or `firebase_project:`(The id or number of the linked firebase project). Some examples of filters: ``` | Filter | Description | |-----------------------------|-------------------------------------------| | parent:accounts/123 | The account with account id: 123. | | parent:properties/123 | The property with property id: 123. | | ancestor:accounts/123 | The account with account id: 123. | | firebase_project:project-id | The firebase project with id: project-id. | | firebase_project:123 | The firebase project with number: 123. | ```
  pageSize: integer, The maximum number of resources to return. The service may return fewer than this value, even if there are additional pages. 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 `ListProperties` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListProperties` must match the call that provided the page token.
  showDeleted: boolean, Whether to include soft-deleted (ie: &quot;trashed&quot;) Properties in the results. Properties can be inspected to determine whether they are deleted or not.
  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 ListProperties RPC.
  &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.
  &quot;properties&quot;: [ # Results that matched the filter criteria and were accessible to the caller.
    { # A resource message representing a Google Analytics GA4 property.
      &quot;account&quot;: &quot;A String&quot;, # Immutable. The resource name of the parent account Format: accounts/{account_id} Example: &quot;accounts/123&quot;
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time when the entity was originally created.
      &quot;currencyCode&quot;: &quot;A String&quot;, # The currency type used in reports involving monetary values. Format: https://en.wikipedia.org/wiki/ISO_4217 Examples: &quot;USD&quot;, &quot;EUR&quot;, &quot;JPY&quot;
      &quot;deleteTime&quot;: &quot;A String&quot;, # Output only. If set, the time at which this property was trashed. If not set, then this property is not currently in the trash can.
      &quot;displayName&quot;: &quot;A String&quot;, # Required. Human-readable display name for this property. The max allowed display name length is 100 UTF-16 code units.
      &quot;expireTime&quot;: &quot;A String&quot;, # Output only. If set, the time at which this trashed property will be permanently deleted. If not set, then this property is not currently in the trash can and is not slated to be deleted.
      &quot;industryCategory&quot;: &quot;A String&quot;, # Industry associated with this property Example: AUTOMOTIVE, FOOD_AND_DRINK
      &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of this property. Format: properties/{property_id} Example: &quot;properties/1000&quot;
      &quot;parent&quot;: &quot;A String&quot;, # Immutable. Resource name of this property&#x27;s logical parent. Note: The Property-Moving UI can be used to change the parent. Format: accounts/{account}, properties/{property} Example: &quot;accounts/100&quot;, &quot;properties/101&quot;
      &quot;propertyType&quot;: &quot;A String&quot;, # Immutable. The property type for this Property resource. When creating a property, if the type is &quot;PROPERTY_TYPE_UNSPECIFIED&quot;, then &quot;ORDINARY_PROPERTY&quot; will be implied.
      &quot;serviceLevel&quot;: &quot;A String&quot;, # Output only. The Google Analytics service level that applies to this property.
      &quot;timeZone&quot;: &quot;A String&quot;, # Required. Reporting Time Zone, used as the day boundary for reports, regardless of where the data originates. If the time zone honors DST, Analytics will automatically adjust for the changes. NOTE: Changing the time zone only affects data going forward, and is not applied retroactively. Format: https://www.iana.org/time-zones Example: &quot;America/Los_Angeles&quot;
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Time when entity payload fields were last updated.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="listConnectedSiteTags">listConnectedSiteTags(body=None, x__xgafv=None)</code>
  <pre>Lists the connected site tags for a Universal Analytics property. A maximum of 20 connected site tags will be returned. Note: this has no effect on GA4 property.

Args:
  body: object, The request body.
    The object takes the form of:

{ # Request message for ListConnectedSiteTags RPC.
  &quot;property&quot;: &quot;A String&quot;, # The Universal Analytics property to fetch connected site tags for. This does not work on GA4 properties. A maximum of 20 connected site tags will be returned. Example Format: `properties/1234`
}

  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 ListConnectedSiteTags RPC.
  &quot;connectedSiteTags&quot;: [ # The site tags for the Universal Analytics property. A maximum of 20 connected site tags will be returned.
    { # Configuration for a specific Connected Site Tag.
      &quot;displayName&quot;: &quot;A String&quot;, # Required. User-provided display name for the connected site tag. Must be less than 256 characters.
      &quot;tagId&quot;: &quot;A String&quot;, # Required. &quot;Tag ID to forward events to. Also known as the Measurement ID, or the &quot;G-ID&quot; (For example: G-12345).
    },
  ],
}</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 property.

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

{ # A resource message representing a Google Analytics GA4 property.
  &quot;account&quot;: &quot;A String&quot;, # Immutable. The resource name of the parent account Format: accounts/{account_id} Example: &quot;accounts/123&quot;
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time when the entity was originally created.
  &quot;currencyCode&quot;: &quot;A String&quot;, # The currency type used in reports involving monetary values. Format: https://en.wikipedia.org/wiki/ISO_4217 Examples: &quot;USD&quot;, &quot;EUR&quot;, &quot;JPY&quot;
  &quot;deleteTime&quot;: &quot;A String&quot;, # Output only. If set, the time at which this property was trashed. If not set, then this property is not currently in the trash can.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. Human-readable display name for this property. The max allowed display name length is 100 UTF-16 code units.
  &quot;expireTime&quot;: &quot;A String&quot;, # Output only. If set, the time at which this trashed property will be permanently deleted. If not set, then this property is not currently in the trash can and is not slated to be deleted.
  &quot;industryCategory&quot;: &quot;A String&quot;, # Industry associated with this property Example: AUTOMOTIVE, FOOD_AND_DRINK
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of this property. Format: properties/{property_id} Example: &quot;properties/1000&quot;
  &quot;parent&quot;: &quot;A String&quot;, # Immutable. Resource name of this property&#x27;s logical parent. Note: The Property-Moving UI can be used to change the parent. Format: accounts/{account}, properties/{property} Example: &quot;accounts/100&quot;, &quot;properties/101&quot;
  &quot;propertyType&quot;: &quot;A String&quot;, # Immutable. The property type for this Property resource. When creating a property, if the type is &quot;PROPERTY_TYPE_UNSPECIFIED&quot;, then &quot;ORDINARY_PROPERTY&quot; will be implied.
  &quot;serviceLevel&quot;: &quot;A String&quot;, # Output only. The Google Analytics service level that applies to this property.
  &quot;timeZone&quot;: &quot;A String&quot;, # Required. Reporting Time Zone, used as the day boundary for reports, regardless of where the data originates. If the time zone honors DST, Analytics will automatically adjust for the changes. NOTE: Changing the time zone only affects data going forward, and is not applied retroactively. Format: https://www.iana.org/time-zones Example: &quot;America/Los_Angeles&quot;
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Time when entity payload fields were last updated.
}

  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 Google Analytics GA4 property.
  &quot;account&quot;: &quot;A String&quot;, # Immutable. The resource name of the parent account Format: accounts/{account_id} Example: &quot;accounts/123&quot;
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time when the entity was originally created.
  &quot;currencyCode&quot;: &quot;A String&quot;, # The currency type used in reports involving monetary values. Format: https://en.wikipedia.org/wiki/ISO_4217 Examples: &quot;USD&quot;, &quot;EUR&quot;, &quot;JPY&quot;
  &quot;deleteTime&quot;: &quot;A String&quot;, # Output only. If set, the time at which this property was trashed. If not set, then this property is not currently in the trash can.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. Human-readable display name for this property. The max allowed display name length is 100 UTF-16 code units.
  &quot;expireTime&quot;: &quot;A String&quot;, # Output only. If set, the time at which this trashed property will be permanently deleted. If not set, then this property is not currently in the trash can and is not slated to be deleted.
  &quot;industryCategory&quot;: &quot;A String&quot;, # Industry associated with this property Example: AUTOMOTIVE, FOOD_AND_DRINK
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of this property. Format: properties/{property_id} Example: &quot;properties/1000&quot;
  &quot;parent&quot;: &quot;A String&quot;, # Immutable. Resource name of this property&#x27;s logical parent. Note: The Property-Moving UI can be used to change the parent. Format: accounts/{account}, properties/{property} Example: &quot;accounts/100&quot;, &quot;properties/101&quot;
  &quot;propertyType&quot;: &quot;A String&quot;, # Immutable. The property type for this Property resource. When creating a property, if the type is &quot;PROPERTY_TYPE_UNSPECIFIED&quot;, then &quot;ORDINARY_PROPERTY&quot; will be implied.
  &quot;serviceLevel&quot;: &quot;A String&quot;, # Output only. The Google Analytics service level that applies to this property.
  &quot;timeZone&quot;: &quot;A String&quot;, # Required. Reporting Time Zone, used as the day boundary for reports, regardless of where the data originates. If the time zone honors DST, Analytics will automatically adjust for the changes. NOTE: Changing the time zone only affects data going forward, and is not applied retroactively. Format: https://www.iana.org/time-zones Example: &quot;America/Los_Angeles&quot;
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Time when entity payload fields were last updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="runAccessReport">runAccessReport(entity, body=None, x__xgafv=None)</code>
  <pre>Returns a customized report of data access records. The report provides records of each time a user reads Google Analytics reporting data. Access records are retained for up to 2 years. Data Access Reports can be requested for a property. The property must be in Google Analytics 360. This method is only available to Administrators. These data access records include GA4 UI Reporting, GA4 UI Explorations, GA4 Data API, and other products like Firebase &amp; Admob that can retrieve data from Google Analytics through a linkage. These records don&#x27;t include property configuration changes like adding a stream or changing a property&#x27;s time zone. For configuration change history, see [searchChangeHistoryEvents](https://developers.google.com/analytics/devguides/config/admin/v1/rest/v1alpha/accounts/searchChangeHistoryEvents).

Args:
  entity: string, The Data Access Report supports requesting at the property level or account level. If requested at the account level, Data Access Reports include all access for all properties under that account. To request at the property level, entity should be for example &#x27;properties/123&#x27; if &quot;123&quot; is your GA4 property ID. To request at the account level, entity should be for example &#x27;accounts/1234&#x27; if &quot;1234&quot; is your GA4 Account ID. (required)
  body: object, The request body.
    The object takes the form of:

{ # The request for a Data Access Record Report.
  &quot;dateRanges&quot;: [ # Date ranges of access records to read. If multiple date ranges are requested, each response row will contain a zero based date range index. If two date ranges overlap, the access records for the overlapping days is included in the response rows for both date ranges. Requests are allowed up to 2 date ranges.
    { # A contiguous range of days: startDate, startDate + 1, ..., endDate.
      &quot;endDate&quot;: &quot;A String&quot;, # The inclusive end date for the query in the format `YYYY-MM-DD`. Cannot be before `startDate`. The format `NdaysAgo`, `yesterday`, or `today` is also accepted, and in that case, the date is inferred based on the current time in the request&#x27;s time zone.
      &quot;startDate&quot;: &quot;A String&quot;, # The inclusive start date for the query in the format `YYYY-MM-DD`. Cannot be after `endDate`. The format `NdaysAgo`, `yesterday`, or `today` is also accepted, and in that case, the date is inferred based on the current time in the request&#x27;s time zone.
    },
  ],
  &quot;dimensionFilter&quot;: { # Expresses dimension or metric filters. The fields in the same expression need to be either all dimensions or all metrics. # Dimension filters let you restrict report response to specific dimension values which match the filter. For example, filtering on access records of a single user. To learn more, see [Fundamentals of Dimension Filters](https://developers.google.com/analytics/devguides/reporting/data/v1/basics#dimension_filters) for examples. Metrics cannot be used in this filter.
    &quot;accessFilter&quot;: { # An expression to filter dimension or metric values. # A primitive filter. In the same FilterExpression, all of the filter&#x27;s field names need to be either all dimensions or all metrics.
      &quot;betweenFilter&quot;: { # To express that the result needs to be between two numbers (inclusive). # A filter for two values.
        &quot;fromValue&quot;: { # To represent a number. # Begins with this number.
          &quot;doubleValue&quot;: 3.14, # Double value
          &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
        },
        &quot;toValue&quot;: { # To represent a number. # Ends with this number.
          &quot;doubleValue&quot;: 3.14, # Double value
          &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
        },
      },
      &quot;fieldName&quot;: &quot;A String&quot;, # The dimension name or metric name.
      &quot;inListFilter&quot;: { # The result needs to be in a list of string values. # A filter for in list values.
        &quot;caseSensitive&quot;: True or False, # If true, the string value is case sensitive.
        &quot;values&quot;: [ # The list of string values. Must be non-empty.
          &quot;A String&quot;,
        ],
      },
      &quot;numericFilter&quot;: { # Filters for numeric or date values. # A filter for numeric or date values.
        &quot;operation&quot;: &quot;A String&quot;, # The operation type for this filter.
        &quot;value&quot;: { # To represent a number. # A numeric value or a date value.
          &quot;doubleValue&quot;: 3.14, # Double value
          &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
        },
      },
      &quot;stringFilter&quot;: { # The filter for strings. # Strings related filter.
        &quot;caseSensitive&quot;: True or False, # If true, the string value is case sensitive.
        &quot;matchType&quot;: &quot;A String&quot;, # The match type for this filter.
        &quot;value&quot;: &quot;A String&quot;, # The string value used for the matching.
      },
    },
    &quot;andGroup&quot;: { # A list of filter expressions. # Each of the FilterExpressions in the and_group has an AND relationship.
      &quot;expressions&quot;: [ # A list of filter expressions.
        # Object with schema name: GoogleAnalyticsAdminV1alphaAccessFilterExpression
      ],
    },
    &quot;notExpression&quot;: # Object with schema name: GoogleAnalyticsAdminV1alphaAccessFilterExpression # The FilterExpression is NOT of not_expression.
    &quot;orGroup&quot;: { # A list of filter expressions. # Each of the FilterExpressions in the or_group has an OR relationship.
      &quot;expressions&quot;: [ # A list of filter expressions.
        # Object with schema name: GoogleAnalyticsAdminV1alphaAccessFilterExpression
      ],
    },
  },
  &quot;dimensions&quot;: [ # The dimensions requested and displayed in the response. Requests are allowed up to 9 dimensions.
    { # Dimensions are attributes of your data. For example, the dimension `userEmail` indicates the email of the user that accessed reporting data. Dimension values in report responses are strings.
      &quot;dimensionName&quot;: &quot;A String&quot;, # The API name of the dimension. See [Data Access Schema](https://developers.google.com/analytics/devguides/config/admin/v1/access-api-schema) for the list of dimensions supported in this API. Dimensions are referenced by name in `dimensionFilter` and `orderBys`.
    },
  ],
  &quot;expandGroups&quot;: True or False, # Optional. Decides whether to return the users within user groups. This field works only when include_all_users is set to true. If true, it will return all users with access to the specified property or account. If false, only the users with direct access will be returned.
  &quot;includeAllUsers&quot;: True or False, # Optional. Determines whether to include users who have never made an API call in the response. If true, all users with access to the specified property or account are included in the response, regardless of whether they have made an API call or not. If false, only the users who have made an API call will be included.
  &quot;limit&quot;: &quot;A String&quot;, # The number of rows to return. If unspecified, 10,000 rows are returned. The API returns a maximum of 100,000 rows per request, no matter how many you ask for. `limit` must be positive. The API may return fewer rows than the requested `limit`, if there aren&#x27;t as many remaining rows as the `limit`. For instance, there are fewer than 300 possible values for the dimension `country`, so when reporting on only `country`, you can&#x27;t get more than 300 rows, even if you set `limit` to a higher value. To learn more about this pagination parameter, see [Pagination](https://developers.google.com/analytics/devguides/reporting/data/v1/basics#pagination).
  &quot;metricFilter&quot;: { # Expresses dimension or metric filters. The fields in the same expression need to be either all dimensions or all metrics. # Metric filters allow you to restrict report response to specific metric values which match the filter. Metric filters are applied after aggregating the report&#x27;s rows, similar to SQL having-clause. Dimensions cannot be used in this filter.
    &quot;accessFilter&quot;: { # An expression to filter dimension or metric values. # A primitive filter. In the same FilterExpression, all of the filter&#x27;s field names need to be either all dimensions or all metrics.
      &quot;betweenFilter&quot;: { # To express that the result needs to be between two numbers (inclusive). # A filter for two values.
        &quot;fromValue&quot;: { # To represent a number. # Begins with this number.
          &quot;doubleValue&quot;: 3.14, # Double value
          &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
        },
        &quot;toValue&quot;: { # To represent a number. # Ends with this number.
          &quot;doubleValue&quot;: 3.14, # Double value
          &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
        },
      },
      &quot;fieldName&quot;: &quot;A String&quot;, # The dimension name or metric name.
      &quot;inListFilter&quot;: { # The result needs to be in a list of string values. # A filter for in list values.
        &quot;caseSensitive&quot;: True or False, # If true, the string value is case sensitive.
        &quot;values&quot;: [ # The list of string values. Must be non-empty.
          &quot;A String&quot;,
        ],
      },
      &quot;numericFilter&quot;: { # Filters for numeric or date values. # A filter for numeric or date values.
        &quot;operation&quot;: &quot;A String&quot;, # The operation type for this filter.
        &quot;value&quot;: { # To represent a number. # A numeric value or a date value.
          &quot;doubleValue&quot;: 3.14, # Double value
          &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
        },
      },
      &quot;stringFilter&quot;: { # The filter for strings. # Strings related filter.
        &quot;caseSensitive&quot;: True or False, # If true, the string value is case sensitive.
        &quot;matchType&quot;: &quot;A String&quot;, # The match type for this filter.
        &quot;value&quot;: &quot;A String&quot;, # The string value used for the matching.
      },
    },
    &quot;andGroup&quot;: { # A list of filter expressions. # Each of the FilterExpressions in the and_group has an AND relationship.
      &quot;expressions&quot;: [ # A list of filter expressions.
        # Object with schema name: GoogleAnalyticsAdminV1alphaAccessFilterExpression
      ],
    },
    &quot;notExpression&quot;: # Object with schema name: GoogleAnalyticsAdminV1alphaAccessFilterExpression # The FilterExpression is NOT of not_expression.
    &quot;orGroup&quot;: { # A list of filter expressions. # Each of the FilterExpressions in the or_group has an OR relationship.
      &quot;expressions&quot;: [ # A list of filter expressions.
        # Object with schema name: GoogleAnalyticsAdminV1alphaAccessFilterExpression
      ],
    },
  },
  &quot;metrics&quot;: [ # The metrics requested and displayed in the response. Requests are allowed up to 10 metrics.
    { # The quantitative measurements of a report. For example, the metric `accessCount` is the total number of data access records.
      &quot;metricName&quot;: &quot;A String&quot;, # The API name of the metric. See [Data Access Schema](https://developers.google.com/analytics/devguides/config/admin/v1/access-api-schema) for the list of metrics supported in this API. Metrics are referenced by name in `metricFilter` &amp; `orderBys`.
    },
  ],
  &quot;offset&quot;: &quot;A String&quot;, # The row count of the start row. The first row is counted as row 0. If offset is unspecified, it is treated as 0. If offset is zero, then this method will return the first page of results with `limit` entries. To learn more about this pagination parameter, see [Pagination](https://developers.google.com/analytics/devguides/reporting/data/v1/basics#pagination).
  &quot;orderBys&quot;: [ # Specifies how rows are ordered in the response.
    { # Order bys define how rows will be sorted in the response. For example, ordering rows by descending access count is one ordering, and ordering rows by the country string is a different ordering.
      &quot;desc&quot;: True or False, # If true, sorts by descending order. If false or unspecified, sorts in ascending order.
      &quot;dimension&quot;: { # Sorts by dimension values. # Sorts results by a dimension&#x27;s values.
        &quot;dimensionName&quot;: &quot;A String&quot;, # A dimension name in the request to order by.
        &quot;orderType&quot;: &quot;A String&quot;, # Controls the rule for dimension value ordering.
      },
      &quot;metric&quot;: { # Sorts by metric values. # Sorts results by a metric&#x27;s values.
        &quot;metricName&quot;: &quot;A String&quot;, # A metric name in the request to order by.
      },
    },
  ],
  &quot;returnEntityQuota&quot;: True or False, # Toggles whether to return the current state of this Analytics Property&#x27;s quota. Quota is returned in [AccessQuota](#AccessQuota). For account-level requests, this field must be false.
  &quot;timeZone&quot;: &quot;A String&quot;, # This request&#x27;s time zone if specified. If unspecified, the property&#x27;s time zone is used. The request&#x27;s time zone is used to interpret the start &amp; end dates of the report. Formatted as strings from the IANA Time Zone database (https://www.iana.org/time-zones); for example &quot;America/New_York&quot; or &quot;Asia/Tokyo&quot;.
}

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

Returns:
  An object of the form:

    { # The customized Data Access Record Report response.
  &quot;dimensionHeaders&quot;: [ # The header for a column in the report that corresponds to a specific dimension. The number of DimensionHeaders and ordering of DimensionHeaders matches the dimensions present in rows.
    { # Describes a dimension column in the report. Dimensions requested in a report produce column entries within rows and DimensionHeaders. However, dimensions used exclusively within filters or expressions do not produce columns in a report; correspondingly, those dimensions do not produce headers.
      &quot;dimensionName&quot;: &quot;A String&quot;, # The dimension&#x27;s name; for example &#x27;userEmail&#x27;.
    },
  ],
  &quot;metricHeaders&quot;: [ # The header for a column in the report that corresponds to a specific metric. The number of MetricHeaders and ordering of MetricHeaders matches the metrics present in rows.
    { # Describes a metric column in the report. Visible metrics requested in a report produce column entries within rows and MetricHeaders. However, metrics used exclusively within filters or expressions do not produce columns in a report; correspondingly, those metrics do not produce headers.
      &quot;metricName&quot;: &quot;A String&quot;, # The metric&#x27;s name; for example &#x27;accessCount&#x27;.
    },
  ],
  &quot;quota&quot;: { # Current state of all quotas for this Analytics property. If any quota for a property is exhausted, all requests to that property will return Resource Exhausted errors. # The quota state for this Analytics property including this request. This field doesn&#x27;t work with account-level requests.
    &quot;concurrentRequests&quot;: { # Current state for a particular quota group. # Properties can use up to 50 concurrent requests.
      &quot;consumed&quot;: 42, # Quota consumed by this request.
      &quot;remaining&quot;: 42, # Quota remaining after this request.
    },
    &quot;serverErrorsPerProjectPerHour&quot;: { # Current state for a particular quota group. # Properties and cloud project pairs can have up to 50 server errors per hour.
      &quot;consumed&quot;: 42, # Quota consumed by this request.
      &quot;remaining&quot;: 42, # Quota remaining after this request.
    },
    &quot;tokensPerDay&quot;: { # Current state for a particular quota group. # Properties can use 250,000 tokens per day. Most requests consume fewer than 10 tokens.
      &quot;consumed&quot;: 42, # Quota consumed by this request.
      &quot;remaining&quot;: 42, # Quota remaining after this request.
    },
    &quot;tokensPerHour&quot;: { # Current state for a particular quota group. # Properties can use 50,000 tokens per hour. An API request consumes a single number of tokens, and that number is deducted from all of the hourly, daily, and per project hourly quotas.
      &quot;consumed&quot;: 42, # Quota consumed by this request.
      &quot;remaining&quot;: 42, # Quota remaining after this request.
    },
    &quot;tokensPerProjectPerHour&quot;: { # Current state for a particular quota group. # Properties can use up to 25% of their tokens per project per hour. This amounts to Analytics 360 Properties can use 12,500 tokens per project per hour. An API request consumes a single number of tokens, and that number is deducted from all of the hourly, daily, and per project hourly quotas.
      &quot;consumed&quot;: 42, # Quota consumed by this request.
      &quot;remaining&quot;: 42, # Quota remaining after this request.
    },
  },
  &quot;rowCount&quot;: 42, # The total number of rows in the query result. `rowCount` is independent of the number of rows returned in the response, the `limit` request parameter, and the `offset` request parameter. For example if a query returns 175 rows and includes `limit` of 50 in the API request, the response will contain `rowCount` of 175 but only 50 rows. To learn more about this pagination parameter, see [Pagination](https://developers.google.com/analytics/devguides/reporting/data/v1/basics#pagination).
  &quot;rows&quot;: [ # Rows of dimension value combinations and metric values in the report.
    { # Access report data for each row.
      &quot;dimensionValues&quot;: [ # List of dimension values. These values are in the same order as specified in the request.
        { # The value of a dimension.
          &quot;value&quot;: &quot;A String&quot;, # The dimension value. For example, this value may be &#x27;France&#x27; for the &#x27;country&#x27; dimension.
        },
      ],
      &quot;metricValues&quot;: [ # List of metric values. These values are in the same order as specified in the request.
        { # The value of a metric.
          &quot;value&quot;: &quot;A String&quot;, # The measurement value. For example, this value may be &#x27;13&#x27;.
        },
      ],
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="setAutomatedGa4ConfigurationOptOut">setAutomatedGa4ConfigurationOptOut(body=None, x__xgafv=None)</code>
  <pre>Sets the opt out status for the automated GA4 setup process for a UA property. Note: this has no effect on GA4 property.

Args:
  body: object, The request body.
    The object takes the form of:

{ # Request for setting the opt out status for the automated GA4 setup process.
  &quot;optOut&quot;: True or False, # The status to set.
  &quot;property&quot;: &quot;A String&quot;, # Required. The UA property to set the opt out status. Note this request uses the internal property ID, not the tracking ID of the form UA-XXXXXX-YY. Format: properties/{internalWebPropertyId} Example: properties/1234
}

  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 setting the opt out status for the automated GA4 setup process.
}</pre>
</div>

<div class="method">
    <code class="details" id="updateAttributionSettings">updateAttributionSettings(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates attribution settings on a property.

Args:
  name: string, Output only. Resource name of this attribution settings resource. Format: properties/{property_id}/attributionSettings Example: &quot;properties/1000/attributionSettings&quot; (required)
  body: object, The request body.
    The object takes the form of:

{ # The attribution settings used for a given property. This is a singleton resource.
  &quot;acquisitionConversionEventLookbackWindow&quot;: &quot;A String&quot;, # Required. The lookback window configuration for acquisition conversion events. The default window size is 30 days.
  &quot;adsWebConversionDataExportScope&quot;: &quot;A String&quot;, # Required. The Conversion Export Scope for data exported to linked Ads Accounts.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of this attribution settings resource. Format: properties/{property_id}/attributionSettings Example: &quot;properties/1000/attributionSettings&quot;
  &quot;otherConversionEventLookbackWindow&quot;: &quot;A String&quot;, # Required. The lookback window for all other, non-acquisition conversion events. The default window size is 90 days.
  &quot;reportingAttributionModel&quot;: &quot;A String&quot;, # Required. The reporting attribution model used to calculate conversion credit in this property&#x27;s reports. Changing the attribution model will apply to both historical and future data. These changes will be reflected in reports with conversion and revenue data. User and session data will be unaffected.
}

  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:

    { # The attribution settings used for a given property. This is a singleton resource.
  &quot;acquisitionConversionEventLookbackWindow&quot;: &quot;A String&quot;, # Required. The lookback window configuration for acquisition conversion events. The default window size is 30 days.
  &quot;adsWebConversionDataExportScope&quot;: &quot;A String&quot;, # Required. The Conversion Export Scope for data exported to linked Ads Accounts.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of this attribution settings resource. Format: properties/{property_id}/attributionSettings Example: &quot;properties/1000/attributionSettings&quot;
  &quot;otherConversionEventLookbackWindow&quot;: &quot;A String&quot;, # Required. The lookback window for all other, non-acquisition conversion events. The default window size is 90 days.
  &quot;reportingAttributionModel&quot;: &quot;A String&quot;, # Required. The reporting attribution model used to calculate conversion credit in this property&#x27;s reports. Changing the attribution model will apply to both historical and future data. These changes will be reflected in reports with conversion and revenue data. User and session data will be unaffected.
}</pre>
</div>

<div class="method">
    <code class="details" id="updateDataRetentionSettings">updateDataRetentionSettings(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates the singleton data retention settings for this property.

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

{ # Settings values for data retention. This is a singleton resource.
  &quot;eventDataRetention&quot;: &quot;A String&quot;, # The length of time that event-level data is retained.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name for this DataRetentionSetting resource. Format: properties/{property}/dataRetentionSettings
  &quot;resetUserDataOnNewActivity&quot;: True or False, # If true, reset the retention period for the user identifier with every event from that user.
}

  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:

    { # Settings values for data retention. This is a singleton resource.
  &quot;eventDataRetention&quot;: &quot;A String&quot;, # The length of time that event-level data is retained.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name for this DataRetentionSetting resource. Format: properties/{property}/dataRetentionSettings
  &quot;resetUserDataOnNewActivity&quot;: True or False, # If true, reset the retention period for the user identifier with every event from that user.
}</pre>
</div>

<div class="method">
    <code class="details" id="updateGoogleSignalsSettings">updateGoogleSignalsSettings(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates Google Signals settings for a property.

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

{ # Settings values for Google Signals. This is a singleton resource.
  &quot;consent&quot;: &quot;A String&quot;, # Output only. Terms of Service acceptance.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of this setting. Format: properties/{property_id}/googleSignalsSettings Example: &quot;properties/1000/googleSignalsSettings&quot;
  &quot;state&quot;: &quot;A String&quot;, # Status of this setting.
}

  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:

    { # Settings values for Google Signals. This is a singleton resource.
  &quot;consent&quot;: &quot;A String&quot;, # Output only. Terms of Service acceptance.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of this setting. Format: properties/{property_id}/googleSignalsSettings Example: &quot;properties/1000/googleSignalsSettings&quot;
  &quot;state&quot;: &quot;A String&quot;, # Status of this setting.
}</pre>
</div>

</body></html>