<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="analyticsadmin_v1beta.html">Google Analytics Admin API</a> . <a href="analyticsadmin_v1beta.properties.html">properties</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="analyticsadmin_v1beta.properties.conversionEvents.html">conversionEvents()</a></code>
</p>
<p class="firstline">Returns the conversionEvents Resource.</p>

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

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

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

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

<p class="toc_element">
  <code><a href="analyticsadmin_v1beta.properties.googleAdsLinks.html">googleAdsLinks()</a></code>
</p>
<p class="firstline">Returns the googleAdsLinks 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="#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="#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="#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="#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="#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="#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>
<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="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="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="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="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="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: GoogleAnalyticsAdminV1betaAccessFilterExpression
      ],
    },
    &quot;notExpression&quot;: # Object with schema name: GoogleAnalyticsAdminV1betaAccessFilterExpression # 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: GoogleAnalyticsAdminV1betaAccessFilterExpression
      ],
    },
  },
  &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: GoogleAnalyticsAdminV1betaAccessFilterExpression
      ],
    },
    &quot;notExpression&quot;: # Object with schema name: GoogleAnalyticsAdminV1betaAccessFilterExpression # 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: GoogleAnalyticsAdminV1betaAccessFilterExpression
      ],
    },
  },
  &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="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>

</body></html>