<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=None, 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=None, 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=None, 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=None, 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 AdExchange Buyer 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 AdExchange Buyer 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=None, 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 AdExchange Buyer 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=None, 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 AdExchange Buyer 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>