<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.provisioning.html">provisioning</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="#createAccountTicket">createAccountTicket(body=None)</a></code></p>
<p class="firstline">Creates an account ticket.</p>
<p class="toc_element">
  <code><a href="#createAccountTree">createAccountTree(body=None)</a></code></p>
<p class="firstline">Provision account.</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="createAccountTicket">createAccountTicket(body=None)</code>
  <pre>Creates an account ticket.

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

{ # JSON template for an Analytics account ticket. The account ticket consists of the ticket ID and the basic information for the account, property and profile.
    &quot;webproperty&quot;: { # JSON template for an Analytics web property. # Web property for the account.
        &quot;level&quot;: &quot;A String&quot;, # Level for this web property. Possible values are STANDARD or PREMIUM.
        &quot;name&quot;: &quot;A String&quot;, # Name of this web property.
        &quot;websiteUrl&quot;: &quot;A String&quot;, # Website url for this web property.
        &quot;selfLink&quot;: &quot;A String&quot;, # Link for this web property.
        &quot;profileCount&quot;: 42, # View (Profile) count for this web property.
        &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for this web property.
        &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this web property belongs.
        &quot;kind&quot;: &quot;analytics#webproperty&quot;, # Resource type for Analytics WebProperty.
        &quot;defaultProfileId&quot;: &quot;A String&quot;, # Default view (profile) ID.
        &quot;childLink&quot;: { # Child link for this web property. Points to the list of views (profiles) for this web property.
          &quot;href&quot;: &quot;A String&quot;, # Link 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;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;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;starred&quot;: True or False, # Indicates whether this web property is starred or not.
        &quot;industryVertical&quot;: &quot;A String&quot;, # The industry vertical/category selected for this web property.
        &quot;id&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY.
        &quot;updated&quot;: &quot;A String&quot;, # Time this web property was last modified.
        &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;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;created&quot;: &quot;A String&quot;, # Time this web property was created.
      },
    &quot;kind&quot;: &quot;analytics#accountTicket&quot;, # Resource type for account ticket.
    &quot;account&quot;: { # JSON template for Analytics account entry. # Account for this ticket.
      &quot;selfLink&quot;: &quot;A String&quot;, # Link for this account.
      &quot;kind&quot;: &quot;analytics#account&quot;, # Resource type for Analytics account.
      &quot;name&quot;: &quot;A String&quot;, # Account name.
      &quot;created&quot;: &quot;A String&quot;, # Time the account was created.
      &quot;childLink&quot;: { # Child link for an account entry. Points to the list of web properties for this account.
        &quot;href&quot;: &quot;A String&quot;, # Link to the list of web properties for this account.
        &quot;type&quot;: &quot;analytics#webproperties&quot;, # Type of the child link. Its value is &quot;analytics#webproperties&quot;.
      },
      &quot;permissions&quot;: { # Permissions the user has for this account.
        &quot;effective&quot;: [ # All the permissions that the user has for this account. These include any implied permissions (e.g., EDIT implies VIEW).
          &quot;A String&quot;,
        ],
      },
      &quot;updated&quot;: &quot;A String&quot;, # Time the account was last modified.
      &quot;starred&quot;: True or False, # Indicates whether this account is starred or not.
      &quot;id&quot;: &quot;A String&quot;, # Account ID.
    },
    &quot;id&quot;: &quot;A String&quot;, # Account ticket ID used to access the account ticket.
    &quot;redirectUri&quot;: &quot;A String&quot;, # Redirect URI where the user will be sent after accepting Terms of Service. Must be configured in APIs console as a callback URL.
    &quot;profile&quot;: { # JSON template for an Analytics view (profile). # View (Profile) for the account.
        &quot;updated&quot;: &quot;A String&quot;, # Time this view (profile) was last modified.
        &quot;botFilteringEnabled&quot;: True or False, # Indicates whether bot filtering is enabled for this view (profile).
        &quot;stripSiteSearchCategoryParameters&quot;: True or False, # Whether or not Analytics will strip search category parameters from the URLs in your reports.
        &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this view (profile) belongs.
        &quot;excludeQueryParameters&quot;: &quot;A String&quot;, # The query parameters that are excluded from this view (profile).
        &quot;websiteUrl&quot;: &quot;A String&quot;, # Website URL for this view (profile).
        &quot;id&quot;: &quot;A String&quot;, # View (Profile) ID.
        &quot;childLink&quot;: { # Child link for this view (profile). Points to the list of goals for this view (profile).
          &quot;href&quot;: &quot;A String&quot;, # Link to the list of goals for this view (profile).
          &quot;type&quot;: &quot;analytics#goals&quot;, # Value is &quot;analytics#goals&quot;.
        },
        &quot;permissions&quot;: { # Permissions the user has for this view (profile).
          &quot;effective&quot;: [ # All the permissions that the user has for this view (profile). These include any implied permissions (e.g., EDIT implies VIEW) or inherited permissions from the parent web property.
            &quot;A String&quot;,
          ],
        },
        &quot;type&quot;: &quot;A String&quot;, # View (Profile) type. Supported types: WEB or APP.
        &quot;defaultPage&quot;: &quot;A String&quot;, # Default page for this view (profile).
        &quot;webPropertyId&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY to which this view (profile) belongs.
        &quot;created&quot;: &quot;A String&quot;, # Time this view (profile) was created.
        &quot;siteSearchCategoryParameters&quot;: &quot;A String&quot;, # Site search category parameters for this view (profile).
        &quot;name&quot;: &quot;A String&quot;, # Name of this view (profile).
        &quot;timezone&quot;: &quot;A String&quot;, # Time zone for which this view (profile) has been configured. Time zones are identified by strings from the TZ database.
        &quot;starred&quot;: True or False, # Indicates whether this view (profile) is starred or not.
        &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for the web property to which this view (profile) belongs.
        &quot;parentLink&quot;: { # Parent link for this view (profile). Points to the web property to which this view (profile) belongs.
          &quot;type&quot;: &quot;analytics#webproperty&quot;, # Value is &quot;analytics#webproperty&quot;.
          &quot;href&quot;: &quot;A String&quot;, # Link to the web property to which this view (profile) belongs.
        },
        &quot;enhancedECommerceTracking&quot;: True or False, # Indicates whether enhanced ecommerce tracking is enabled for this view (profile). This property can only be enabled if ecommerce tracking is enabled.
        &quot;eCommerceTracking&quot;: True or False, # Indicates whether ecommerce tracking is enabled for this view (profile).
        &quot;kind&quot;: &quot;analytics#profile&quot;, # Resource type for Analytics view (profile).
        &quot;siteSearchQueryParameters&quot;: &quot;A String&quot;, # The site search query parameters for this view (profile).
        &quot;currency&quot;: &quot;A String&quot;, # The currency type associated with this view (profile), defaults to USD. The supported values are:
            # USD, JPY, EUR, GBP, AUD, KRW, BRL, CNY, DKK, RUB, SEK, NOK, PLN, TRY, TWD, HKD, THB, IDR, ARS, MXN, VND, PHP, INR, CHF, CAD, CZK, NZD, HUF, BGN, LTL, ZAR, UAH, AED, BOB, CLP, COP, EGP, HRK, ILS, MAD, MYR, PEN, PKR, RON, RSD, SAR, SGD, VEF, LVL
        &quot;selfLink&quot;: &quot;A String&quot;, # Link for this view (profile).
        &quot;stripSiteSearchQueryParameters&quot;: True or False, # Whether or not Analytics will strip search query parameters from the URLs in your reports.
      },
  }


Returns:
  An object of the form:

    { # JSON template for an Analytics account ticket. The account ticket consists of the ticket ID and the basic information for the account, property and profile.
      &quot;webproperty&quot;: { # JSON template for an Analytics web property. # Web property for the account.
          &quot;level&quot;: &quot;A String&quot;, # Level for this web property. Possible values are STANDARD or PREMIUM.
          &quot;name&quot;: &quot;A String&quot;, # Name of this web property.
          &quot;websiteUrl&quot;: &quot;A String&quot;, # Website url for this web property.
          &quot;selfLink&quot;: &quot;A String&quot;, # Link for this web property.
          &quot;profileCount&quot;: 42, # View (Profile) count for this web property.
          &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for this web property.
          &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this web property belongs.
          &quot;kind&quot;: &quot;analytics#webproperty&quot;, # Resource type for Analytics WebProperty.
          &quot;defaultProfileId&quot;: &quot;A String&quot;, # Default view (profile) ID.
          &quot;childLink&quot;: { # Child link for this web property. Points to the list of views (profiles) for this web property.
            &quot;href&quot;: &quot;A String&quot;, # Link 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;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;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;starred&quot;: True or False, # Indicates whether this web property is starred or not.
          &quot;industryVertical&quot;: &quot;A String&quot;, # The industry vertical/category selected for this web property.
          &quot;id&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY.
          &quot;updated&quot;: &quot;A String&quot;, # Time this web property was last modified.
          &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;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;created&quot;: &quot;A String&quot;, # Time this web property was created.
        },
      &quot;kind&quot;: &quot;analytics#accountTicket&quot;, # Resource type for account ticket.
      &quot;account&quot;: { # JSON template for Analytics account entry. # Account for this ticket.
        &quot;selfLink&quot;: &quot;A String&quot;, # Link for this account.
        &quot;kind&quot;: &quot;analytics#account&quot;, # Resource type for Analytics account.
        &quot;name&quot;: &quot;A String&quot;, # Account name.
        &quot;created&quot;: &quot;A String&quot;, # Time the account was created.
        &quot;childLink&quot;: { # Child link for an account entry. Points to the list of web properties for this account.
          &quot;href&quot;: &quot;A String&quot;, # Link to the list of web properties for this account.
          &quot;type&quot;: &quot;analytics#webproperties&quot;, # Type of the child link. Its value is &quot;analytics#webproperties&quot;.
        },
        &quot;permissions&quot;: { # Permissions the user has for this account.
          &quot;effective&quot;: [ # All the permissions that the user has for this account. These include any implied permissions (e.g., EDIT implies VIEW).
            &quot;A String&quot;,
          ],
        },
        &quot;updated&quot;: &quot;A String&quot;, # Time the account was last modified.
        &quot;starred&quot;: True or False, # Indicates whether this account is starred or not.
        &quot;id&quot;: &quot;A String&quot;, # Account ID.
      },
      &quot;id&quot;: &quot;A String&quot;, # Account ticket ID used to access the account ticket.
      &quot;redirectUri&quot;: &quot;A String&quot;, # Redirect URI where the user will be sent after accepting Terms of Service. Must be configured in APIs console as a callback URL.
      &quot;profile&quot;: { # JSON template for an Analytics view (profile). # View (Profile) for the account.
          &quot;updated&quot;: &quot;A String&quot;, # Time this view (profile) was last modified.
          &quot;botFilteringEnabled&quot;: True or False, # Indicates whether bot filtering is enabled for this view (profile).
          &quot;stripSiteSearchCategoryParameters&quot;: True or False, # Whether or not Analytics will strip search category parameters from the URLs in your reports.
          &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this view (profile) belongs.
          &quot;excludeQueryParameters&quot;: &quot;A String&quot;, # The query parameters that are excluded from this view (profile).
          &quot;websiteUrl&quot;: &quot;A String&quot;, # Website URL for this view (profile).
          &quot;id&quot;: &quot;A String&quot;, # View (Profile) ID.
          &quot;childLink&quot;: { # Child link for this view (profile). Points to the list of goals for this view (profile).
            &quot;href&quot;: &quot;A String&quot;, # Link to the list of goals for this view (profile).
            &quot;type&quot;: &quot;analytics#goals&quot;, # Value is &quot;analytics#goals&quot;.
          },
          &quot;permissions&quot;: { # Permissions the user has for this view (profile).
            &quot;effective&quot;: [ # All the permissions that the user has for this view (profile). These include any implied permissions (e.g., EDIT implies VIEW) or inherited permissions from the parent web property.
              &quot;A String&quot;,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # View (Profile) type. Supported types: WEB or APP.
          &quot;defaultPage&quot;: &quot;A String&quot;, # Default page for this view (profile).
          &quot;webPropertyId&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY to which this view (profile) belongs.
          &quot;created&quot;: &quot;A String&quot;, # Time this view (profile) was created.
          &quot;siteSearchCategoryParameters&quot;: &quot;A String&quot;, # Site search category parameters for this view (profile).
          &quot;name&quot;: &quot;A String&quot;, # Name of this view (profile).
          &quot;timezone&quot;: &quot;A String&quot;, # Time zone for which this view (profile) has been configured. Time zones are identified by strings from the TZ database.
          &quot;starred&quot;: True or False, # Indicates whether this view (profile) is starred or not.
          &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for the web property to which this view (profile) belongs.
          &quot;parentLink&quot;: { # Parent link for this view (profile). Points to the web property to which this view (profile) belongs.
            &quot;type&quot;: &quot;analytics#webproperty&quot;, # Value is &quot;analytics#webproperty&quot;.
            &quot;href&quot;: &quot;A String&quot;, # Link to the web property to which this view (profile) belongs.
          },
          &quot;enhancedECommerceTracking&quot;: True or False, # Indicates whether enhanced ecommerce tracking is enabled for this view (profile). This property can only be enabled if ecommerce tracking is enabled.
          &quot;eCommerceTracking&quot;: True or False, # Indicates whether ecommerce tracking is enabled for this view (profile).
          &quot;kind&quot;: &quot;analytics#profile&quot;, # Resource type for Analytics view (profile).
          &quot;siteSearchQueryParameters&quot;: &quot;A String&quot;, # The site search query parameters for this view (profile).
          &quot;currency&quot;: &quot;A String&quot;, # The currency type associated with this view (profile), defaults to USD. The supported values are:
              # USD, JPY, EUR, GBP, AUD, KRW, BRL, CNY, DKK, RUB, SEK, NOK, PLN, TRY, TWD, HKD, THB, IDR, ARS, MXN, VND, PHP, INR, CHF, CAD, CZK, NZD, HUF, BGN, LTL, ZAR, UAH, AED, BOB, CLP, COP, EGP, HRK, ILS, MAD, MYR, PEN, PKR, RON, RSD, SAR, SGD, VEF, LVL
          &quot;selfLink&quot;: &quot;A String&quot;, # Link for this view (profile).
          &quot;stripSiteSearchQueryParameters&quot;: True or False, # Whether or not Analytics will strip search query parameters from the URLs in your reports.
        },
    }</pre>
</div>

<div class="method">
    <code class="details" id="createAccountTree">createAccountTree(body=None)</code>
  <pre>Provision account.

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

{ # JSON template for an Analytics account tree requests. The account tree request is used in the provisioning api to create an account, property, and view (profile). It contains the basic information required to make these fields.
    &quot;kind&quot;: &quot;analytics#accountTreeRequest&quot;, # Resource type for account ticket.
    &quot;timezone&quot;: &quot;A String&quot;,
    &quot;profileName&quot;: &quot;A String&quot;,
    &quot;accountName&quot;: &quot;A String&quot;,
    &quot;webpropertyName&quot;: &quot;A String&quot;,
    &quot;websiteUrl&quot;: &quot;A String&quot;,
  }


Returns:
  An object of the form:

    { # JSON template for an Analytics account tree response. The account tree response is used in the provisioning api to return the result of creating an account, property, and view (profile).
    &quot;kind&quot;: &quot;analytics#accountTreeResponse&quot;, # Resource type for account ticket.
    &quot;profile&quot;: { # JSON template for an Analytics view (profile). # View (Profile) for the account.
        &quot;updated&quot;: &quot;A String&quot;, # Time this view (profile) was last modified.
        &quot;botFilteringEnabled&quot;: True or False, # Indicates whether bot filtering is enabled for this view (profile).
        &quot;stripSiteSearchCategoryParameters&quot;: True or False, # Whether or not Analytics will strip search category parameters from the URLs in your reports.
        &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this view (profile) belongs.
        &quot;excludeQueryParameters&quot;: &quot;A String&quot;, # The query parameters that are excluded from this view (profile).
        &quot;websiteUrl&quot;: &quot;A String&quot;, # Website URL for this view (profile).
        &quot;id&quot;: &quot;A String&quot;, # View (Profile) ID.
        &quot;childLink&quot;: { # Child link for this view (profile). Points to the list of goals for this view (profile).
          &quot;href&quot;: &quot;A String&quot;, # Link to the list of goals for this view (profile).
          &quot;type&quot;: &quot;analytics#goals&quot;, # Value is &quot;analytics#goals&quot;.
        },
        &quot;permissions&quot;: { # Permissions the user has for this view (profile).
          &quot;effective&quot;: [ # All the permissions that the user has for this view (profile). These include any implied permissions (e.g., EDIT implies VIEW) or inherited permissions from the parent web property.
            &quot;A String&quot;,
          ],
        },
        &quot;type&quot;: &quot;A String&quot;, # View (Profile) type. Supported types: WEB or APP.
        &quot;defaultPage&quot;: &quot;A String&quot;, # Default page for this view (profile).
        &quot;webPropertyId&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY to which this view (profile) belongs.
        &quot;created&quot;: &quot;A String&quot;, # Time this view (profile) was created.
        &quot;siteSearchCategoryParameters&quot;: &quot;A String&quot;, # Site search category parameters for this view (profile).
        &quot;name&quot;: &quot;A String&quot;, # Name of this view (profile).
        &quot;timezone&quot;: &quot;A String&quot;, # Time zone for which this view (profile) has been configured. Time zones are identified by strings from the TZ database.
        &quot;starred&quot;: True or False, # Indicates whether this view (profile) is starred or not.
        &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for the web property to which this view (profile) belongs.
        &quot;parentLink&quot;: { # Parent link for this view (profile). Points to the web property to which this view (profile) belongs.
          &quot;type&quot;: &quot;analytics#webproperty&quot;, # Value is &quot;analytics#webproperty&quot;.
          &quot;href&quot;: &quot;A String&quot;, # Link to the web property to which this view (profile) belongs.
        },
        &quot;enhancedECommerceTracking&quot;: True or False, # Indicates whether enhanced ecommerce tracking is enabled for this view (profile). This property can only be enabled if ecommerce tracking is enabled.
        &quot;eCommerceTracking&quot;: True or False, # Indicates whether ecommerce tracking is enabled for this view (profile).
        &quot;kind&quot;: &quot;analytics#profile&quot;, # Resource type for Analytics view (profile).
        &quot;siteSearchQueryParameters&quot;: &quot;A String&quot;, # The site search query parameters for this view (profile).
        &quot;currency&quot;: &quot;A String&quot;, # The currency type associated with this view (profile), defaults to USD. The supported values are:
            # USD, JPY, EUR, GBP, AUD, KRW, BRL, CNY, DKK, RUB, SEK, NOK, PLN, TRY, TWD, HKD, THB, IDR, ARS, MXN, VND, PHP, INR, CHF, CAD, CZK, NZD, HUF, BGN, LTL, ZAR, UAH, AED, BOB, CLP, COP, EGP, HRK, ILS, MAD, MYR, PEN, PKR, RON, RSD, SAR, SGD, VEF, LVL
        &quot;selfLink&quot;: &quot;A String&quot;, # Link for this view (profile).
        &quot;stripSiteSearchQueryParameters&quot;: True or False, # Whether or not Analytics will strip search query parameters from the URLs in your reports.
      },
    &quot;webproperty&quot;: { # JSON template for an Analytics web property. # Web property for the account.
        &quot;level&quot;: &quot;A String&quot;, # Level for this web property. Possible values are STANDARD or PREMIUM.
        &quot;name&quot;: &quot;A String&quot;, # Name of this web property.
        &quot;websiteUrl&quot;: &quot;A String&quot;, # Website url for this web property.
        &quot;selfLink&quot;: &quot;A String&quot;, # Link for this web property.
        &quot;profileCount&quot;: 42, # View (Profile) count for this web property.
        &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for this web property.
        &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this web property belongs.
        &quot;kind&quot;: &quot;analytics#webproperty&quot;, # Resource type for Analytics WebProperty.
        &quot;defaultProfileId&quot;: &quot;A String&quot;, # Default view (profile) ID.
        &quot;childLink&quot;: { # Child link for this web property. Points to the list of views (profiles) for this web property.
          &quot;href&quot;: &quot;A String&quot;, # Link 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;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;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;starred&quot;: True or False, # Indicates whether this web property is starred or not.
        &quot;industryVertical&quot;: &quot;A String&quot;, # The industry vertical/category selected for this web property.
        &quot;id&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY.
        &quot;updated&quot;: &quot;A String&quot;, # Time this web property was last modified.
        &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;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;created&quot;: &quot;A String&quot;, # Time this web property was created.
      },
    &quot;account&quot;: { # JSON template for Analytics account entry. # The account created.
      &quot;selfLink&quot;: &quot;A String&quot;, # Link for this account.
      &quot;kind&quot;: &quot;analytics#account&quot;, # Resource type for Analytics account.
      &quot;name&quot;: &quot;A String&quot;, # Account name.
      &quot;created&quot;: &quot;A String&quot;, # Time the account was created.
      &quot;childLink&quot;: { # Child link for an account entry. Points to the list of web properties for this account.
        &quot;href&quot;: &quot;A String&quot;, # Link to the list of web properties for this account.
        &quot;type&quot;: &quot;analytics#webproperties&quot;, # Type of the child link. Its value is &quot;analytics#webproperties&quot;.
      },
      &quot;permissions&quot;: { # Permissions the user has for this account.
        &quot;effective&quot;: [ # All the permissions that the user has for this account. These include any implied permissions (e.g., EDIT implies VIEW).
          &quot;A String&quot;,
        ],
      },
      &quot;updated&quot;: &quot;A String&quot;, # Time the account was last modified.
      &quot;starred&quot;: True or False, # Indicates whether this account is starred or not.
      &quot;id&quot;: &quot;A String&quot;, # Account ID.
    },
  }</pre>
</div>

</body></html>