<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="androidpublisher_v3.html">Google Play Android Developer API</a> . <a href="androidpublisher_v3.users.html">users</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="#create">create(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Grant access for a user to the given developer account.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Removes all access for the user to the given developer account.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all users with access to a developer account.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</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 access for the user to the developer 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="create">create(parent, body=None, x__xgafv=None)</code>
  <pre>Grant access for a user to the given developer account.

Args:
  parent: string, Required. The developer account to add the user to. Format: developers/{developer} (required)
  body: object, The request body.
    The object takes the form of:

{ # A user resource.
  &quot;accessState&quot;: &quot;A String&quot;, # Output only. The state of the user&#x27;s access to the Play Console.
  &quot;developerAccountPermissions&quot;: [ # Permissions for the user which apply across the developer account.
    &quot;A String&quot;,
  ],
  &quot;email&quot;: &quot;A String&quot;, # Immutable. The user&#x27;s email address.
  &quot;expirationTime&quot;: &quot;A String&quot;, # The time at which the user&#x27;s access expires, if set.
  &quot;grants&quot;: [ # Output only. Per-app permissions for the user.
    { # An access grant resource.
      &quot;appLevelPermissions&quot;: [ # The permissions granted to the user for this app.
        &quot;A String&quot;,
      ],
      &quot;name&quot;: &quot;A String&quot;, # Required. Resource name for this grant, following the pattern &quot;developers/{developer}/users/{email}/grants/{package_name}&quot;.
      &quot;packageName&quot;: &quot;A String&quot;, # Immutable. The package name of the app.
    },
  ],
  &quot;name&quot;: &quot;A String&quot;, # Required. Resource name for this user, following the pattern &quot;developers/{developer}/users/{email}&quot;.
  &quot;partial&quot;: True or False, # Output only. Whether there are more permissions for the user that are not represented here.
}

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

Returns:
  An object of the form:

    { # A user resource.
  &quot;accessState&quot;: &quot;A String&quot;, # Output only. The state of the user&#x27;s access to the Play Console.
  &quot;developerAccountPermissions&quot;: [ # Permissions for the user which apply across the developer account.
    &quot;A String&quot;,
  ],
  &quot;email&quot;: &quot;A String&quot;, # Immutable. The user&#x27;s email address.
  &quot;expirationTime&quot;: &quot;A String&quot;, # The time at which the user&#x27;s access expires, if set.
  &quot;grants&quot;: [ # Output only. Per-app permissions for the user.
    { # An access grant resource.
      &quot;appLevelPermissions&quot;: [ # The permissions granted to the user for this app.
        &quot;A String&quot;,
      ],
      &quot;name&quot;: &quot;A String&quot;, # Required. Resource name for this grant, following the pattern &quot;developers/{developer}/users/{email}/grants/{package_name}&quot;.
      &quot;packageName&quot;: &quot;A String&quot;, # Immutable. The package name of the app.
    },
  ],
  &quot;name&quot;: &quot;A String&quot;, # Required. Resource name for this user, following the pattern &quot;developers/{developer}/users/{email}&quot;.
  &quot;partial&quot;: True or False, # Output only. Whether there are more permissions for the user that are not represented here.
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Removes all access for the user to the given developer account.

Args:
  name: string, Required. The name of the user to delete. Format: developers/{developer}/users/{email} (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists all users with access to a developer account.

Args:
  parent: string, Required. The developer account to fetch users from. Format: developers/{developer} (required)
  pageSize: integer, The maximum number of results to return. This must be set to -1 to disable pagination.
  pageToken: string, A token received from a previous call to this method, in order to retrieve further results.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A response containing one or more users with access to an account.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token to pass to subsequent calls in order to retrieve subsequent results. This will not be set if there are no more results to return.
  &quot;users&quot;: [ # The resulting users.
    { # A user resource.
      &quot;accessState&quot;: &quot;A String&quot;, # Output only. The state of the user&#x27;s access to the Play Console.
      &quot;developerAccountPermissions&quot;: [ # Permissions for the user which apply across the developer account.
        &quot;A String&quot;,
      ],
      &quot;email&quot;: &quot;A String&quot;, # Immutable. The user&#x27;s email address.
      &quot;expirationTime&quot;: &quot;A String&quot;, # The time at which the user&#x27;s access expires, if set.
      &quot;grants&quot;: [ # Output only. Per-app permissions for the user.
        { # An access grant resource.
          &quot;appLevelPermissions&quot;: [ # The permissions granted to the user for this app.
            &quot;A String&quot;,
          ],
          &quot;name&quot;: &quot;A String&quot;, # Required. Resource name for this grant, following the pattern &quot;developers/{developer}/users/{email}/grants/{package_name}&quot;.
          &quot;packageName&quot;: &quot;A String&quot;, # Immutable. The package name of the app.
        },
      ],
      &quot;name&quot;: &quot;A String&quot;, # Required. Resource name for this user, following the pattern &quot;developers/{developer}/users/{email}&quot;.
      &quot;partial&quot;: True or False, # Output only. Whether there are more permissions for the user that are not represented here.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</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 access for the user to the developer account.

Args:
  name: string, Required. Resource name for this user, following the pattern &quot;developers/{developer}/users/{email}&quot;. (required)
  body: object, The request body.
    The object takes the form of:

{ # A user resource.
  &quot;accessState&quot;: &quot;A String&quot;, # Output only. The state of the user&#x27;s access to the Play Console.
  &quot;developerAccountPermissions&quot;: [ # Permissions for the user which apply across the developer account.
    &quot;A String&quot;,
  ],
  &quot;email&quot;: &quot;A String&quot;, # Immutable. The user&#x27;s email address.
  &quot;expirationTime&quot;: &quot;A String&quot;, # The time at which the user&#x27;s access expires, if set.
  &quot;grants&quot;: [ # Output only. Per-app permissions for the user.
    { # An access grant resource.
      &quot;appLevelPermissions&quot;: [ # The permissions granted to the user for this app.
        &quot;A String&quot;,
      ],
      &quot;name&quot;: &quot;A String&quot;, # Required. Resource name for this grant, following the pattern &quot;developers/{developer}/users/{email}/grants/{package_name}&quot;.
      &quot;packageName&quot;: &quot;A String&quot;, # Immutable. The package name of the app.
    },
  ],
  &quot;name&quot;: &quot;A String&quot;, # Required. Resource name for this user, following the pattern &quot;developers/{developer}/users/{email}&quot;.
  &quot;partial&quot;: True or False, # Output only. Whether there are more permissions for the user that are not represented here.
}

  updateMask: string, Optional. The list of fields to be updated.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A user resource.
  &quot;accessState&quot;: &quot;A String&quot;, # Output only. The state of the user&#x27;s access to the Play Console.
  &quot;developerAccountPermissions&quot;: [ # Permissions for the user which apply across the developer account.
    &quot;A String&quot;,
  ],
  &quot;email&quot;: &quot;A String&quot;, # Immutable. The user&#x27;s email address.
  &quot;expirationTime&quot;: &quot;A String&quot;, # The time at which the user&#x27;s access expires, if set.
  &quot;grants&quot;: [ # Output only. Per-app permissions for the user.
    { # An access grant resource.
      &quot;appLevelPermissions&quot;: [ # The permissions granted to the user for this app.
        &quot;A String&quot;,
      ],
      &quot;name&quot;: &quot;A String&quot;, # Required. Resource name for this grant, following the pattern &quot;developers/{developer}/users/{email}/grants/{package_name}&quot;.
      &quot;packageName&quot;: &quot;A String&quot;, # Immutable. The package name of the app.
    },
  ],
  &quot;name&quot;: &quot;A String&quot;, # Required. Resource name for this user, following the pattern &quot;developers/{developer}/users/{email}&quot;.
  &quot;partial&quot;: True or False, # Output only. Whether there are more permissions for the user that are not represented here.
}</pre>
</div>

</body></html>