<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.userDeletion.html">userDeletion</a> . <a href="analytics_v3.userDeletion.userDeletionRequest.html">userDeletionRequest</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="#upsert">upsert(body=None)</a></code></p>
<p class="firstline">Insert or update a user deletion requests.</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="upsert">upsert(body=None)</code>
  <pre>Insert or update a user deletion requests.

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

{ # JSON template for a user deletion request resource.
  &quot;deletionRequestTime&quot;: &quot;A String&quot;, # This marks the point in time for which all user data before should be deleted
  &quot;firebaseProjectId&quot;: &quot;A String&quot;, # Firebase Project Id
  &quot;id&quot;: { # User ID.
    &quot;type&quot;: &quot;A String&quot;, # Type of user
    &quot;userId&quot;: &quot;A String&quot;, # The User&#x27;s id
  },
  &quot;kind&quot;: &quot;analytics#userDeletionRequest&quot;, # Value is &quot;analytics#userDeletionRequest&quot;.
  &quot;propertyId&quot;: &quot;A String&quot;, # Property ID
  &quot;webPropertyId&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY.
}


Returns:
  An object of the form:

    { # JSON template for a user deletion request resource.
  &quot;deletionRequestTime&quot;: &quot;A String&quot;, # This marks the point in time for which all user data before should be deleted
  &quot;firebaseProjectId&quot;: &quot;A String&quot;, # Firebase Project Id
  &quot;id&quot;: { # User ID.
    &quot;type&quot;: &quot;A String&quot;, # Type of user
    &quot;userId&quot;: &quot;A String&quot;, # The User&#x27;s id
  },
  &quot;kind&quot;: &quot;analytics#userDeletionRequest&quot;, # Value is &quot;analytics#userDeletionRequest&quot;.
  &quot;propertyId&quot;: &quot;A String&quot;, # Property ID
  &quot;webPropertyId&quot;: &quot;A String&quot;, # Web property ID of the form UA-XXXXX-YY.
}</pre>
</div>

</body></html>