<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="adexchangebuyer2_v2beta1.html">Ad Exchange Buyer API II</a> . <a href="adexchangebuyer2_v2beta1.accounts.html">accounts</a> . <a href="adexchangebuyer2_v2beta1.accounts.clients.html">clients</a> . <a href="adexchangebuyer2_v2beta1.accounts.clients.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="#get">get(accountId, clientAccountId, userId, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves an existing client user.</p>
<p class="toc_element">
  <code><a href="#list">list(accountId, clientAccountId, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all the known client users for a specified sponsor buyer account ID.</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="#update">update(accountId, clientAccountId, userId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates an existing client user. Only the user status can be changed on update.</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, clientAccountId, userId, x__xgafv=None)</code>
  <pre>Retrieves an existing client user.

Args:
  accountId: string, Numerical account ID of the client&#x27;s sponsor buyer. (required) (required)
  clientAccountId: string, Numerical account ID of the client buyer that the user to be retrieved is associated with. (required) (required)
  userId: string, Numerical identifier of the user to retrieve. (required) (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A client user is created under a client buyer and has restricted access to the Marketplace and certain other sections of the Authorized Buyers UI based on the role granted to the associated client buyer. The only way a new client user can be created is via accepting an email invitation (see the accounts.clients.invitations.create method). All fields are required unless otherwise specified.
  &quot;clientAccountId&quot;: &quot;A String&quot;, # Numerical account ID of the client buyer with which the user is associated; the buyer must be a client of the current sponsor buyer. The value of this field is ignored in an update operation.
  &quot;email&quot;: &quot;A String&quot;, # User&#x27;s email address. The value of this field is ignored in an update operation.
  &quot;status&quot;: &quot;A String&quot;, # The status of the client user.
  &quot;userId&quot;: &quot;A String&quot;, # The unique numerical ID of the client user that has accepted an invitation. The value of this field is ignored in an update operation.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(accountId, clientAccountId, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists all the known client users for a specified sponsor buyer account ID.

Args:
  accountId: string, Numerical account ID of the sponsor buyer of the client to list users for. (required) (required)
  clientAccountId: string, The account ID of the client buyer to list users for. (required) You must specify either a string representation of a numerical account identifier or the `-` character to list all the client users for all the clients of a given sponsor buyer. (required)
  pageSize: integer, Requested page size. The server may return fewer clients than requested. If unspecified, the server will pick an appropriate default.
  pageToken: string, A token identifying a page of results the server should return. Typically, this is the value of ListClientUsersResponse.nextPageToken returned from the previous call to the accounts.clients.users.list method.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token to retrieve the next page of results. Pass this value in the ListClientUsersRequest.pageToken field in the subsequent call to the clients.invitations.list method to retrieve the next page of results.
  &quot;users&quot;: [ # The returned list of client users.
    { # A client user is created under a client buyer and has restricted access to the Marketplace and certain other sections of the Authorized Buyers UI based on the role granted to the associated client buyer. The only way a new client user can be created is via accepting an email invitation (see the accounts.clients.invitations.create method). All fields are required unless otherwise specified.
      &quot;clientAccountId&quot;: &quot;A String&quot;, # Numerical account ID of the client buyer with which the user is associated; the buyer must be a client of the current sponsor buyer. The value of this field is ignored in an update operation.
      &quot;email&quot;: &quot;A String&quot;, # User&#x27;s email address. The value of this field is ignored in an update operation.
      &quot;status&quot;: &quot;A String&quot;, # The status of the client user.
      &quot;userId&quot;: &quot;A String&quot;, # The unique numerical ID of the client user that has accepted an invitation. The value of this field is ignored in an update operation.
    },
  ],
}</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="update">update(accountId, clientAccountId, userId, body=None, x__xgafv=None)</code>
  <pre>Updates an existing client user. Only the user status can be changed on update.

Args:
  accountId: string, Numerical account ID of the client&#x27;s sponsor buyer. (required) (required)
  clientAccountId: string, Numerical account ID of the client buyer that the user to be retrieved is associated with. (required) (required)
  userId: string, Numerical identifier of the user to retrieve. (required) (required)
  body: object, The request body.
    The object takes the form of:

{ # A client user is created under a client buyer and has restricted access to the Marketplace and certain other sections of the Authorized Buyers UI based on the role granted to the associated client buyer. The only way a new client user can be created is via accepting an email invitation (see the accounts.clients.invitations.create method). All fields are required unless otherwise specified.
  &quot;clientAccountId&quot;: &quot;A String&quot;, # Numerical account ID of the client buyer with which the user is associated; the buyer must be a client of the current sponsor buyer. The value of this field is ignored in an update operation.
  &quot;email&quot;: &quot;A String&quot;, # User&#x27;s email address. The value of this field is ignored in an update operation.
  &quot;status&quot;: &quot;A String&quot;, # The status of the client user.
  &quot;userId&quot;: &quot;A String&quot;, # The unique numerical ID of the client user that has accepted an invitation. The value of this field is ignored in an update operation.
}

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

Returns:
  An object of the form:

    { # A client user is created under a client buyer and has restricted access to the Marketplace and certain other sections of the Authorized Buyers UI based on the role granted to the associated client buyer. The only way a new client user can be created is via accepting an email invitation (see the accounts.clients.invitations.create method). All fields are required unless otherwise specified.
  &quot;clientAccountId&quot;: &quot;A String&quot;, # Numerical account ID of the client buyer with which the user is associated; the buyer must be a client of the current sponsor buyer. The value of this field is ignored in an update operation.
  &quot;email&quot;: &quot;A String&quot;, # User&#x27;s email address. The value of this field is ignored in an update operation.
  &quot;status&quot;: &quot;A String&quot;, # The status of the client user.
  &quot;userId&quot;: &quot;A String&quot;, # The unique numerical ID of the client user that has accepted an invitation. The value of this field is ignored in an update operation.
}</pre>
</div>

</body></html>