<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="analytics_v3.html">Google Analytics API</a> . <a href="analytics_v3.management.html">management</a> . <a href="analytics_v3.management.webproperties.html">webproperties</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#get">get(accountId, webPropertyId)</a></code></p>
<p class="firstline">Gets a web property to which the user has access.</p>
<p class="toc_element">
  <code><a href="#insert">insert(accountId, body=None)</a></code></p>
<p class="firstline">Create a new property if the account has fewer than 20 properties. Web properties are visible in the Google Analytics interface only if they have at least one profile.</p>
<p class="toc_element">
  <code><a href="#list">list(accountId, max_results=None, start_index=None)</a></code></p>
<p class="firstline">Lists web properties to which the user has access.</p>
<p class="toc_element">
  <code><a href="#patch">patch(accountId, webPropertyId, body=None)</a></code></p>
<p class="firstline">Updates an existing web property. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#update">update(accountId, webPropertyId, body=None)</a></code></p>
<p class="firstline">Updates an existing web property.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="get">get(accountId, webPropertyId)</code>
  <pre>Gets a web property to which the user has access.

Args:
  accountId: string, Account ID to retrieve the web property for. (required)
  webPropertyId: string, ID to retrieve the web property for. (required)

Returns:
  An object of the form:

    { # JSON template for an Analytics web property.
    &quot;starred&quot;: True or False, # Indicates whether this web property is starred or not.
    &quot;level&quot;: &quot;A String&quot;, # Level for this web property. Possible values are STANDARD or PREMIUM.
    &quot;dataRetentionTtl&quot;: &quot;A String&quot;, # The length of time for which user and event data is retained.
        # This property cannot be set on insert.
    &quot;profileCount&quot;: 42, # View (Profile) count for this web property.
    &quot;kind&quot;: &quot;analytics#webproperty&quot;, # Resource type for Analytics WebProperty.
    &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this web property belongs.
    &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for this web property.
    &quot;defaultProfileId&quot;: &quot;A String&quot;, # Default view (profile) ID.
    &quot;created&quot;: &quot;A String&quot;, # Time this web property was created.
    &quot;updated&quot;: &quot;A String&quot;, # Time this web property was last modified.
    &quot;permissions&quot;: { # Permissions the user has for this web property.
      &quot;effective&quot;: [ # All the permissions that the user has for this web property. These include any implied permissions (e.g., EDIT implies VIEW) or inherited permissions from the parent account.
        &quot;A String&quot;,
      ],
    },
    &quot;industryVertical&quot;: &quot;A String&quot;, # The industry vertical/category selected for this web property.
    &quot;childLink&quot;: { # Child link for this web property. Points to the list of views (profiles) for this web property.
      &quot;type&quot;: &quot;analytics#profiles&quot;, # Type of the parent link. Its value is &quot;analytics#profiles&quot;.
      &quot;href&quot;: &quot;A String&quot;, # Link to the list of views (profiles) for this web property.
    },
    &quot;selfLink&quot;: &quot;A String&quot;, # Link for this web property.
    &quot;websiteUrl&quot;: &quot;A String&quot;, # Website url for this web property.
    &quot;dataRetentionResetOnNewActivity&quot;: True or False, # Set to true to reset the retention period of the user identifier with each new event from that user (thus setting the expiration date to current time plus retention period).
        # Set to false to delete data associated with the user identifier automatically after the rentention period.
        # This property cannot be set on insert.
    &quot;name&quot;: &quot;A String&quot;, # Name of this web property.
    &quot;id&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY.
    &quot;parentLink&quot;: { # Parent link for this web property. Points to the account to which this web property belongs.
      &quot;type&quot;: &quot;analytics#account&quot;, # Type of the parent link. Its value is &quot;analytics#account&quot;.
      &quot;href&quot;: &quot;A String&quot;, # Link to the account for this web property.
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(accountId, body=None)</code>
  <pre>Create a new property if the account has fewer than 20 properties. Web properties are visible in the Google Analytics interface only if they have at least one profile.

Args:
  accountId: string, Account ID to create the web property for. (required)
  body: object, The request body.
    The object takes the form of:

{ # JSON template for an Analytics web property.
  &quot;starred&quot;: True or False, # Indicates whether this web property is starred or not.
  &quot;level&quot;: &quot;A String&quot;, # Level for this web property. Possible values are STANDARD or PREMIUM.
  &quot;dataRetentionTtl&quot;: &quot;A String&quot;, # The length of time for which user and event data is retained.
      # This property cannot be set on insert.
  &quot;profileCount&quot;: 42, # View (Profile) count for this web property.
  &quot;kind&quot;: &quot;analytics#webproperty&quot;, # Resource type for Analytics WebProperty.
  &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this web property belongs.
  &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for this web property.
  &quot;defaultProfileId&quot;: &quot;A String&quot;, # Default view (profile) ID.
  &quot;created&quot;: &quot;A String&quot;, # Time this web property was created.
  &quot;updated&quot;: &quot;A String&quot;, # Time this web property was last modified.
  &quot;permissions&quot;: { # Permissions the user has for this web property.
    &quot;effective&quot;: [ # All the permissions that the user has for this web property. These include any implied permissions (e.g., EDIT implies VIEW) or inherited permissions from the parent account.
      &quot;A String&quot;,
    ],
  },
  &quot;industryVertical&quot;: &quot;A String&quot;, # The industry vertical/category selected for this web property.
  &quot;childLink&quot;: { # Child link for this web property. Points to the list of views (profiles) for this web property.
    &quot;type&quot;: &quot;analytics#profiles&quot;, # Type of the parent link. Its value is &quot;analytics#profiles&quot;.
    &quot;href&quot;: &quot;A String&quot;, # Link to the list of views (profiles) for this web property.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # Link for this web property.
  &quot;websiteUrl&quot;: &quot;A String&quot;, # Website url for this web property.
  &quot;dataRetentionResetOnNewActivity&quot;: True or False, # Set to true to reset the retention period of the user identifier with each new event from that user (thus setting the expiration date to current time plus retention period).
      # Set to false to delete data associated with the user identifier automatically after the rentention period.
      # This property cannot be set on insert.
  &quot;name&quot;: &quot;A String&quot;, # Name of this web property.
  &quot;id&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY.
  &quot;parentLink&quot;: { # Parent link for this web property. Points to the account to which this web property belongs.
    &quot;type&quot;: &quot;analytics#account&quot;, # Type of the parent link. Its value is &quot;analytics#account&quot;.
    &quot;href&quot;: &quot;A String&quot;, # Link to the account for this web property.
  },
}


Returns:
  An object of the form:

    { # JSON template for an Analytics web property.
    &quot;starred&quot;: True or False, # Indicates whether this web property is starred or not.
    &quot;level&quot;: &quot;A String&quot;, # Level for this web property. Possible values are STANDARD or PREMIUM.
    &quot;dataRetentionTtl&quot;: &quot;A String&quot;, # The length of time for which user and event data is retained.
        # This property cannot be set on insert.
    &quot;profileCount&quot;: 42, # View (Profile) count for this web property.
    &quot;kind&quot;: &quot;analytics#webproperty&quot;, # Resource type for Analytics WebProperty.
    &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this web property belongs.
    &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for this web property.
    &quot;defaultProfileId&quot;: &quot;A String&quot;, # Default view (profile) ID.
    &quot;created&quot;: &quot;A String&quot;, # Time this web property was created.
    &quot;updated&quot;: &quot;A String&quot;, # Time this web property was last modified.
    &quot;permissions&quot;: { # Permissions the user has for this web property.
      &quot;effective&quot;: [ # All the permissions that the user has for this web property. These include any implied permissions (e.g., EDIT implies VIEW) or inherited permissions from the parent account.
        &quot;A String&quot;,
      ],
    },
    &quot;industryVertical&quot;: &quot;A String&quot;, # The industry vertical/category selected for this web property.
    &quot;childLink&quot;: { # Child link for this web property. Points to the list of views (profiles) for this web property.
      &quot;type&quot;: &quot;analytics#profiles&quot;, # Type of the parent link. Its value is &quot;analytics#profiles&quot;.
      &quot;href&quot;: &quot;A String&quot;, # Link to the list of views (profiles) for this web property.
    },
    &quot;selfLink&quot;: &quot;A String&quot;, # Link for this web property.
    &quot;websiteUrl&quot;: &quot;A String&quot;, # Website url for this web property.
    &quot;dataRetentionResetOnNewActivity&quot;: True or False, # Set to true to reset the retention period of the user identifier with each new event from that user (thus setting the expiration date to current time plus retention period).
        # Set to false to delete data associated with the user identifier automatically after the rentention period.
        # This property cannot be set on insert.
    &quot;name&quot;: &quot;A String&quot;, # Name of this web property.
    &quot;id&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY.
    &quot;parentLink&quot;: { # Parent link for this web property. Points to the account to which this web property belongs.
      &quot;type&quot;: &quot;analytics#account&quot;, # Type of the parent link. Its value is &quot;analytics#account&quot;.
      &quot;href&quot;: &quot;A String&quot;, # Link to the account for this web property.
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(accountId, max_results=None, start_index=None)</code>
  <pre>Lists web properties to which the user has access.

Args:
  accountId: string, Account ID to retrieve web properties for. Can either be a specific account ID or &#x27;~all&#x27;, which refers to all the accounts that user has access to. (required)
  max_results: integer, The maximum number of web properties to include in this response.
  start_index: integer, An index of the first entity to retrieve. Use this parameter as a pagination mechanism along with the max-results parameter.

Returns:
  An object of the form:

    { # A web property collection lists Analytics web properties to which the user has access. Each resource in the collection corresponds to a single Analytics web property.
    &quot;previousLink&quot;: &quot;A String&quot;, # Link to previous page for this web property collection.
    &quot;startIndex&quot;: 42, # The starting index of the resources, which is 1 by default or otherwise specified by the start-index query parameter.
    &quot;totalResults&quot;: 42, # The total number of results for the query, regardless of the number of results in the response.
    &quot;nextLink&quot;: &quot;A String&quot;, # Link to next page for this web property collection.
    &quot;username&quot;: &quot;A String&quot;, # Email ID of the authenticated user
    &quot;itemsPerPage&quot;: 42, # The maximum number of resources the response can contain, regardless of the actual number of resources returned. Its value ranges from 1 to 1000 with a value of 1000 by default, or otherwise specified by the max-results query parameter.
    &quot;items&quot;: [ # A list of web properties.
      { # JSON template for an Analytics web property.
        &quot;starred&quot;: True or False, # Indicates whether this web property is starred or not.
        &quot;level&quot;: &quot;A String&quot;, # Level for this web property. Possible values are STANDARD or PREMIUM.
        &quot;dataRetentionTtl&quot;: &quot;A String&quot;, # The length of time for which user and event data is retained.
            # This property cannot be set on insert.
        &quot;profileCount&quot;: 42, # View (Profile) count for this web property.
        &quot;kind&quot;: &quot;analytics#webproperty&quot;, # Resource type for Analytics WebProperty.
        &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this web property belongs.
        &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for this web property.
        &quot;defaultProfileId&quot;: &quot;A String&quot;, # Default view (profile) ID.
        &quot;created&quot;: &quot;A String&quot;, # Time this web property was created.
        &quot;updated&quot;: &quot;A String&quot;, # Time this web property was last modified.
        &quot;permissions&quot;: { # Permissions the user has for this web property.
          &quot;effective&quot;: [ # All the permissions that the user has for this web property. These include any implied permissions (e.g., EDIT implies VIEW) or inherited permissions from the parent account.
            &quot;A String&quot;,
          ],
        },
        &quot;industryVertical&quot;: &quot;A String&quot;, # The industry vertical/category selected for this web property.
        &quot;childLink&quot;: { # Child link for this web property. Points to the list of views (profiles) for this web property.
          &quot;type&quot;: &quot;analytics#profiles&quot;, # Type of the parent link. Its value is &quot;analytics#profiles&quot;.
          &quot;href&quot;: &quot;A String&quot;, # Link to the list of views (profiles) for this web property.
        },
        &quot;selfLink&quot;: &quot;A String&quot;, # Link for this web property.
        &quot;websiteUrl&quot;: &quot;A String&quot;, # Website url for this web property.
        &quot;dataRetentionResetOnNewActivity&quot;: True or False, # Set to true to reset the retention period of the user identifier with each new event from that user (thus setting the expiration date to current time plus retention period).
            # Set to false to delete data associated with the user identifier automatically after the rentention period.
            # This property cannot be set on insert.
        &quot;name&quot;: &quot;A String&quot;, # Name of this web property.
        &quot;id&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY.
        &quot;parentLink&quot;: { # Parent link for this web property. Points to the account to which this web property belongs.
          &quot;type&quot;: &quot;analytics#account&quot;, # Type of the parent link. Its value is &quot;analytics#account&quot;.
          &quot;href&quot;: &quot;A String&quot;, # Link to the account for this web property.
        },
      },
    ],
    &quot;kind&quot;: &quot;analytics#webproperties&quot;, # Collection type.
  }</pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(accountId, webPropertyId, body=None)</code>
  <pre>Updates an existing web property. This method supports patch semantics.

Args:
  accountId: string, Account ID to which the web property belongs (required)
  webPropertyId: string, Web property ID (required)
  body: object, The request body.
    The object takes the form of:

{ # JSON template for an Analytics web property.
  &quot;starred&quot;: True or False, # Indicates whether this web property is starred or not.
  &quot;level&quot;: &quot;A String&quot;, # Level for this web property. Possible values are STANDARD or PREMIUM.
  &quot;dataRetentionTtl&quot;: &quot;A String&quot;, # The length of time for which user and event data is retained.
      # This property cannot be set on insert.
  &quot;profileCount&quot;: 42, # View (Profile) count for this web property.
  &quot;kind&quot;: &quot;analytics#webproperty&quot;, # Resource type for Analytics WebProperty.
  &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this web property belongs.
  &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for this web property.
  &quot;defaultProfileId&quot;: &quot;A String&quot;, # Default view (profile) ID.
  &quot;created&quot;: &quot;A String&quot;, # Time this web property was created.
  &quot;updated&quot;: &quot;A String&quot;, # Time this web property was last modified.
  &quot;permissions&quot;: { # Permissions the user has for this web property.
    &quot;effective&quot;: [ # All the permissions that the user has for this web property. These include any implied permissions (e.g., EDIT implies VIEW) or inherited permissions from the parent account.
      &quot;A String&quot;,
    ],
  },
  &quot;industryVertical&quot;: &quot;A String&quot;, # The industry vertical/category selected for this web property.
  &quot;childLink&quot;: { # Child link for this web property. Points to the list of views (profiles) for this web property.
    &quot;type&quot;: &quot;analytics#profiles&quot;, # Type of the parent link. Its value is &quot;analytics#profiles&quot;.
    &quot;href&quot;: &quot;A String&quot;, # Link to the list of views (profiles) for this web property.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # Link for this web property.
  &quot;websiteUrl&quot;: &quot;A String&quot;, # Website url for this web property.
  &quot;dataRetentionResetOnNewActivity&quot;: True or False, # Set to true to reset the retention period of the user identifier with each new event from that user (thus setting the expiration date to current time plus retention period).
      # Set to false to delete data associated with the user identifier automatically after the rentention period.
      # This property cannot be set on insert.
  &quot;name&quot;: &quot;A String&quot;, # Name of this web property.
  &quot;id&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY.
  &quot;parentLink&quot;: { # Parent link for this web property. Points to the account to which this web property belongs.
    &quot;type&quot;: &quot;analytics#account&quot;, # Type of the parent link. Its value is &quot;analytics#account&quot;.
    &quot;href&quot;: &quot;A String&quot;, # Link to the account for this web property.
  },
}


Returns:
  An object of the form:

    { # JSON template for an Analytics web property.
    &quot;starred&quot;: True or False, # Indicates whether this web property is starred or not.
    &quot;level&quot;: &quot;A String&quot;, # Level for this web property. Possible values are STANDARD or PREMIUM.
    &quot;dataRetentionTtl&quot;: &quot;A String&quot;, # The length of time for which user and event data is retained.
        # This property cannot be set on insert.
    &quot;profileCount&quot;: 42, # View (Profile) count for this web property.
    &quot;kind&quot;: &quot;analytics#webproperty&quot;, # Resource type for Analytics WebProperty.
    &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this web property belongs.
    &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for this web property.
    &quot;defaultProfileId&quot;: &quot;A String&quot;, # Default view (profile) ID.
    &quot;created&quot;: &quot;A String&quot;, # Time this web property was created.
    &quot;updated&quot;: &quot;A String&quot;, # Time this web property was last modified.
    &quot;permissions&quot;: { # Permissions the user has for this web property.
      &quot;effective&quot;: [ # All the permissions that the user has for this web property. These include any implied permissions (e.g., EDIT implies VIEW) or inherited permissions from the parent account.
        &quot;A String&quot;,
      ],
    },
    &quot;industryVertical&quot;: &quot;A String&quot;, # The industry vertical/category selected for this web property.
    &quot;childLink&quot;: { # Child link for this web property. Points to the list of views (profiles) for this web property.
      &quot;type&quot;: &quot;analytics#profiles&quot;, # Type of the parent link. Its value is &quot;analytics#profiles&quot;.
      &quot;href&quot;: &quot;A String&quot;, # Link to the list of views (profiles) for this web property.
    },
    &quot;selfLink&quot;: &quot;A String&quot;, # Link for this web property.
    &quot;websiteUrl&quot;: &quot;A String&quot;, # Website url for this web property.
    &quot;dataRetentionResetOnNewActivity&quot;: True or False, # Set to true to reset the retention period of the user identifier with each new event from that user (thus setting the expiration date to current time plus retention period).
        # Set to false to delete data associated with the user identifier automatically after the rentention period.
        # This property cannot be set on insert.
    &quot;name&quot;: &quot;A String&quot;, # Name of this web property.
    &quot;id&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY.
    &quot;parentLink&quot;: { # Parent link for this web property. Points to the account to which this web property belongs.
      &quot;type&quot;: &quot;analytics#account&quot;, # Type of the parent link. Its value is &quot;analytics#account&quot;.
      &quot;href&quot;: &quot;A String&quot;, # Link to the account for this web property.
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(accountId, webPropertyId, body=None)</code>
  <pre>Updates an existing web property.

Args:
  accountId: string, Account ID to which the web property belongs (required)
  webPropertyId: string, Web property ID (required)
  body: object, The request body.
    The object takes the form of:

{ # JSON template for an Analytics web property.
  &quot;starred&quot;: True or False, # Indicates whether this web property is starred or not.
  &quot;level&quot;: &quot;A String&quot;, # Level for this web property. Possible values are STANDARD or PREMIUM.
  &quot;dataRetentionTtl&quot;: &quot;A String&quot;, # The length of time for which user and event data is retained.
      # This property cannot be set on insert.
  &quot;profileCount&quot;: 42, # View (Profile) count for this web property.
  &quot;kind&quot;: &quot;analytics#webproperty&quot;, # Resource type for Analytics WebProperty.
  &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this web property belongs.
  &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for this web property.
  &quot;defaultProfileId&quot;: &quot;A String&quot;, # Default view (profile) ID.
  &quot;created&quot;: &quot;A String&quot;, # Time this web property was created.
  &quot;updated&quot;: &quot;A String&quot;, # Time this web property was last modified.
  &quot;permissions&quot;: { # Permissions the user has for this web property.
    &quot;effective&quot;: [ # All the permissions that the user has for this web property. These include any implied permissions (e.g., EDIT implies VIEW) or inherited permissions from the parent account.
      &quot;A String&quot;,
    ],
  },
  &quot;industryVertical&quot;: &quot;A String&quot;, # The industry vertical/category selected for this web property.
  &quot;childLink&quot;: { # Child link for this web property. Points to the list of views (profiles) for this web property.
    &quot;type&quot;: &quot;analytics#profiles&quot;, # Type of the parent link. Its value is &quot;analytics#profiles&quot;.
    &quot;href&quot;: &quot;A String&quot;, # Link to the list of views (profiles) for this web property.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # Link for this web property.
  &quot;websiteUrl&quot;: &quot;A String&quot;, # Website url for this web property.
  &quot;dataRetentionResetOnNewActivity&quot;: True or False, # Set to true to reset the retention period of the user identifier with each new event from that user (thus setting the expiration date to current time plus retention period).
      # Set to false to delete data associated with the user identifier automatically after the rentention period.
      # This property cannot be set on insert.
  &quot;name&quot;: &quot;A String&quot;, # Name of this web property.
  &quot;id&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY.
  &quot;parentLink&quot;: { # Parent link for this web property. Points to the account to which this web property belongs.
    &quot;type&quot;: &quot;analytics#account&quot;, # Type of the parent link. Its value is &quot;analytics#account&quot;.
    &quot;href&quot;: &quot;A String&quot;, # Link to the account for this web property.
  },
}


Returns:
  An object of the form:

    { # JSON template for an Analytics web property.
    &quot;starred&quot;: True or False, # Indicates whether this web property is starred or not.
    &quot;level&quot;: &quot;A String&quot;, # Level for this web property. Possible values are STANDARD or PREMIUM.
    &quot;dataRetentionTtl&quot;: &quot;A String&quot;, # The length of time for which user and event data is retained.
        # This property cannot be set on insert.
    &quot;profileCount&quot;: 42, # View (Profile) count for this web property.
    &quot;kind&quot;: &quot;analytics#webproperty&quot;, # Resource type for Analytics WebProperty.
    &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this web property belongs.
    &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for this web property.
    &quot;defaultProfileId&quot;: &quot;A String&quot;, # Default view (profile) ID.
    &quot;created&quot;: &quot;A String&quot;, # Time this web property was created.
    &quot;updated&quot;: &quot;A String&quot;, # Time this web property was last modified.
    &quot;permissions&quot;: { # Permissions the user has for this web property.
      &quot;effective&quot;: [ # All the permissions that the user has for this web property. These include any implied permissions (e.g., EDIT implies VIEW) or inherited permissions from the parent account.
        &quot;A String&quot;,
      ],
    },
    &quot;industryVertical&quot;: &quot;A String&quot;, # The industry vertical/category selected for this web property.
    &quot;childLink&quot;: { # Child link for this web property. Points to the list of views (profiles) for this web property.
      &quot;type&quot;: &quot;analytics#profiles&quot;, # Type of the parent link. Its value is &quot;analytics#profiles&quot;.
      &quot;href&quot;: &quot;A String&quot;, # Link to the list of views (profiles) for this web property.
    },
    &quot;selfLink&quot;: &quot;A String&quot;, # Link for this web property.
    &quot;websiteUrl&quot;: &quot;A String&quot;, # Website url for this web property.
    &quot;dataRetentionResetOnNewActivity&quot;: True or False, # Set to true to reset the retention period of the user identifier with each new event from that user (thus setting the expiration date to current time plus retention period).
        # Set to false to delete data associated with the user identifier automatically after the rentention period.
        # This property cannot be set on insert.
    &quot;name&quot;: &quot;A String&quot;, # Name of this web property.
    &quot;id&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY.
    &quot;parentLink&quot;: { # Parent link for this web property. Points to the account to which this web property belongs.
      &quot;type&quot;: &quot;analytics#account&quot;, # Type of the parent link. Its value is &quot;analytics#account&quot;.
      &quot;href&quot;: &quot;A String&quot;, # Link to the account for this web property.
    },
  }</pre>
</div>

</body></html>