<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.invitations.html">invitations</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#create">create(accountId, clientAccountId, body, x__xgafv=None)</a></code></p>
<p class="firstline">Creates and sends out an email invitation to access</p>
<p class="toc_element">
  <code><a href="#get">get(accountId, clientAccountId, invitationId, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves an existing client user invitation.</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 client users invitations for a client</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>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="create">create(accountId, clientAccountId, body, x__xgafv=None)</code>
  <pre>Creates and sends out an email invitation to access
an Ad Exchange client buyer account.

Args:
  accountId: string, Numerical account ID of the client's sponsor buyer. (required) (required)
  clientAccountId: string, Numerical account ID of the client buyer that the user
should be associated with. (required) (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # An invitation for a new client user to get access to the Authorized Buyers
      # UI. All fields are required unless otherwise specified.
    "clientAccountId": "A String", # Numerical account ID of the client buyer
        # that the invited user is associated with.
        # The value of this field is ignored in create operations.
    "email": "A String", # The email address to which the invitation is sent. Email
        # addresses should be unique among all client users under each sponsor
        # buyer.
    "invitationId": "A String", # The unique numerical ID of the invitation that is sent to the user.
        # The value of this field is ignored in create operations.
  }

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

Returns:
  An object of the form:

    { # An invitation for a new client user to get access to the Authorized Buyers
        # UI. All fields are required unless otherwise specified.
      "clientAccountId": "A String", # Numerical account ID of the client buyer
          # that the invited user is associated with.
          # The value of this field is ignored in create operations.
      "email": "A String", # The email address to which the invitation is sent. Email
          # addresses should be unique among all client users under each sponsor
          # buyer.
      "invitationId": "A String", # The unique numerical ID of the invitation that is sent to the user.
          # The value of this field is ignored in create operations.
    }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(accountId, clientAccountId, invitationId, x__xgafv=None)</code>
  <pre>Retrieves an existing client user invitation.

Args:
  accountId: string, Numerical account ID of the client's sponsor buyer. (required) (required)
  clientAccountId: string, Numerical account ID of the client buyer that the user invitation
to be retrieved is associated with. (required) (required)
  invitationId: string, Numerical identifier of the user invitation 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:

    { # An invitation for a new client user to get access to the Authorized Buyers
        # UI. All fields are required unless otherwise specified.
      "clientAccountId": "A String", # Numerical account ID of the client buyer
          # that the invited user is associated with.
          # The value of this field is ignored in create operations.
      "email": "A String", # The email address to which the invitation is sent. Email
          # addresses should be unique among all client users under each sponsor
          # buyer.
      "invitationId": "A String", # The unique numerical ID of the invitation that is sent to the user.
          # The value of this field is ignored in create operations.
    }</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 client users invitations for a client
with a given account ID.

Args:
  accountId: string, Numerical account ID of the client's sponsor buyer. (required) (required)
  clientAccountId: string, Numerical account ID of the client buyer to list invitations for.
(required)
You must either specify a string representation of a
numerical account identifier or the `-` character
to list all the invitations for all the clients
of a given sponsor buyer. (required)
  pageSize: integer, Requested page size. Server may return fewer clients than requested.
If unspecified, 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
ListClientUserInvitationsResponse.nextPageToken
returned from the previous call to the
clients.invitations.list
method.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    "nextPageToken": "A String", # A token to retrieve the next page of results.
        # Pass this value in the
        # ListClientUserInvitationsRequest.pageToken
        # field in the subsequent call to the
        # clients.invitations.list
        # method to retrieve the next
        # page of results.
    "invitations": [ # The returned list of client users.
      { # An invitation for a new client user to get access to the Authorized Buyers
            # UI. All fields are required unless otherwise specified.
          "clientAccountId": "A String", # Numerical account ID of the client buyer
              # that the invited user is associated with.
              # The value of this field is ignored in create operations.
          "email": "A String", # The email address to which the invitation is sent. Email
              # addresses should be unique among all client users under each sponsor
              # buyer.
          "invitationId": "A String", # The unique numerical ID of the invitation that is sent to the user.
              # The value of this field is ignored in create operations.
        },
    ],
  }</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 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>