<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="authorizedbuyersmarketplace_v1.html">Authorized Buyers Marketplace API</a> . <a href="authorizedbuyersmarketplace_v1.buyers.html">buyers</a> . <a href="authorizedbuyersmarketplace_v1.buyers.clients.html">clients</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="authorizedbuyersmarketplace_v1.buyers.clients.users.html">users()</a></code>
</p>
<p class="firstline">Returns the users Resource.</p>

<p class="toc_element">
  <code><a href="#activate">activate(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Activates an existing client. The state of the client will be updated to "ACTIVE". This method has no effect if the client is already in "ACTIVE" state.</p>
<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">Creates a new client.</p>
<p class="toc_element">
  <code><a href="#deactivate">deactivate(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Deactivates an existing client. The state of the client will be updated to "INACTIVE". This method has no effect if the client is already in "INACTIVE" state.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a client with a given resource name.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all the clients for the current buyer.</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 an existing client.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="activate">activate(name, body=None, x__xgafv=None)</code>
  <pre>Activates an existing client. The state of the client will be updated to &quot;ACTIVE&quot;. This method has no effect if the client is already in &quot;ACTIVE&quot; state.

Args:
  name: string, Required. Format: `buyers/{buyerAccountId}/clients/{clientAccountId}` (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for activating a client.
}

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

Returns:
  An object of the form:

    { # A client represents an agency, a brand, or an advertiser customer of the buyer. Based on the client&#x27;s role, its client users will have varying levels of restricted access to the Marketplace and certain other sections of the Authorized Buyers UI.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name shown to publishers. Must be unique for clients without partnerClientId specified. Maximum length of 255 characters is allowed.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the client. Format: `buyers/{accountId}/clients/{clientAccountId}`
  &quot;partnerClientId&quot;: &quot;A String&quot;, # Arbitrary unique identifier provided by the buyer. This field can be used to associate a client with an identifier in the namespace of the buyer, lookup clients by that identifier and verify whether an Authorized Buyers account of the client already exists. If present, must be unique across all the clients.
  &quot;role&quot;: &quot;A String&quot;, # Required. The role assigned to the client. Each role implies a set of permissions granted to the client.
  &quot;sellerVisible&quot;: True or False, # Whether the client will be visible to sellers.
  &quot;state&quot;: &quot;A String&quot;, # Output only. The state of the client.
}</pre>
</div>

<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>Creates a new client.

Args:
  parent: string, Required. The name of the buyer. Format: `buyers/{accountId}` (required)
  body: object, The request body.
    The object takes the form of:

{ # A client represents an agency, a brand, or an advertiser customer of the buyer. Based on the client&#x27;s role, its client users will have varying levels of restricted access to the Marketplace and certain other sections of the Authorized Buyers UI.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name shown to publishers. Must be unique for clients without partnerClientId specified. Maximum length of 255 characters is allowed.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the client. Format: `buyers/{accountId}/clients/{clientAccountId}`
  &quot;partnerClientId&quot;: &quot;A String&quot;, # Arbitrary unique identifier provided by the buyer. This field can be used to associate a client with an identifier in the namespace of the buyer, lookup clients by that identifier and verify whether an Authorized Buyers account of the client already exists. If present, must be unique across all the clients.
  &quot;role&quot;: &quot;A String&quot;, # Required. The role assigned to the client. Each role implies a set of permissions granted to the client.
  &quot;sellerVisible&quot;: True or False, # Whether the client will be visible to sellers.
  &quot;state&quot;: &quot;A String&quot;, # Output only. The state of the client.
}

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

Returns:
  An object of the form:

    { # A client represents an agency, a brand, or an advertiser customer of the buyer. Based on the client&#x27;s role, its client users will have varying levels of restricted access to the Marketplace and certain other sections of the Authorized Buyers UI.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name shown to publishers. Must be unique for clients without partnerClientId specified. Maximum length of 255 characters is allowed.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the client. Format: `buyers/{accountId}/clients/{clientAccountId}`
  &quot;partnerClientId&quot;: &quot;A String&quot;, # Arbitrary unique identifier provided by the buyer. This field can be used to associate a client with an identifier in the namespace of the buyer, lookup clients by that identifier and verify whether an Authorized Buyers account of the client already exists. If present, must be unique across all the clients.
  &quot;role&quot;: &quot;A String&quot;, # Required. The role assigned to the client. Each role implies a set of permissions granted to the client.
  &quot;sellerVisible&quot;: True or False, # Whether the client will be visible to sellers.
  &quot;state&quot;: &quot;A String&quot;, # Output only. The state of the client.
}</pre>
</div>

<div class="method">
    <code class="details" id="deactivate">deactivate(name, body=None, x__xgafv=None)</code>
  <pre>Deactivates an existing client. The state of the client will be updated to &quot;INACTIVE&quot;. This method has no effect if the client is already in &quot;INACTIVE&quot; state.

Args:
  name: string, Required. Format: `buyers/{buyerAccountId}/clients/{clientAccountId}` (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for disabling a client.
}

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

Returns:
  An object of the form:

    { # A client represents an agency, a brand, or an advertiser customer of the buyer. Based on the client&#x27;s role, its client users will have varying levels of restricted access to the Marketplace and certain other sections of the Authorized Buyers UI.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name shown to publishers. Must be unique for clients without partnerClientId specified. Maximum length of 255 characters is allowed.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the client. Format: `buyers/{accountId}/clients/{clientAccountId}`
  &quot;partnerClientId&quot;: &quot;A String&quot;, # Arbitrary unique identifier provided by the buyer. This field can be used to associate a client with an identifier in the namespace of the buyer, lookup clients by that identifier and verify whether an Authorized Buyers account of the client already exists. If present, must be unique across all the clients.
  &quot;role&quot;: &quot;A String&quot;, # Required. The role assigned to the client. Each role implies a set of permissions granted to the client.
  &quot;sellerVisible&quot;: True or False, # Whether the client will be visible to sellers.
  &quot;state&quot;: &quot;A String&quot;, # Output only. The state of the client.
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Gets a client with a given resource name.

Args:
  name: string, Required. Format: `buyers/{accountId}/clients/{clientAccountId}` (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 represents an agency, a brand, or an advertiser customer of the buyer. Based on the client&#x27;s role, its client users will have varying levels of restricted access to the Marketplace and certain other sections of the Authorized Buyers UI.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name shown to publishers. Must be unique for clients without partnerClientId specified. Maximum length of 255 characters is allowed.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the client. Format: `buyers/{accountId}/clients/{clientAccountId}`
  &quot;partnerClientId&quot;: &quot;A String&quot;, # Arbitrary unique identifier provided by the buyer. This field can be used to associate a client with an identifier in the namespace of the buyer, lookup clients by that identifier and verify whether an Authorized Buyers account of the client already exists. If present, must be unique across all the clients.
  &quot;role&quot;: &quot;A String&quot;, # Required. The role assigned to the client. Each role implies a set of permissions granted to the client.
  &quot;sellerVisible&quot;: True or False, # Whether the client will be visible to sellers.
  &quot;state&quot;: &quot;A String&quot;, # Output only. The state of the client.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists all the clients for the current buyer.

Args:
  parent: string, Required. The name of the buyer. Format: `buyers/{accountId}` (required)
  filter: string, Query string using the [Filtering Syntax](https://developers.google.com/authorized-buyers/apis/guides/v2/list-filters) Supported fields for filtering are: * partnerClientId Use this field to filter the clients by the partnerClientId. For example, if the partnerClientId of the client is &quot;1234&quot;, the value of this field should be `partnerClientId = &quot;1234&quot;`, in order to get only the client whose partnerClientId is &quot;1234&quot; in the response.
  pageSize: integer, Requested page size. If left blank, a default page size of 500 will be applied.
  pageToken: string, A token identifying a page of results the server should return. Typically, this is the value of ListClientsResponse.nextPageToken returned from the previous call to the list method.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for the list method.
  &quot;clients&quot;: [ # The returned list of clients.
    { # A client represents an agency, a brand, or an advertiser customer of the buyer. Based on the client&#x27;s role, its client users will have varying levels of restricted access to the Marketplace and certain other sections of the Authorized Buyers UI.
      &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name shown to publishers. Must be unique for clients without partnerClientId specified. Maximum length of 255 characters is allowed.
      &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the client. Format: `buyers/{accountId}/clients/{clientAccountId}`
      &quot;partnerClientId&quot;: &quot;A String&quot;, # Arbitrary unique identifier provided by the buyer. This field can be used to associate a client with an identifier in the namespace of the buyer, lookup clients by that identifier and verify whether an Authorized Buyers account of the client already exists. If present, must be unique across all the clients.
      &quot;role&quot;: &quot;A String&quot;, # Required. The role assigned to the client. Each role implies a set of permissions granted to the client.
      &quot;sellerVisible&quot;: True or False, # Whether the client will be visible to sellers.
      &quot;state&quot;: &quot;A String&quot;, # Output only. The state of the client.
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token to retrieve the next page of results. Pass this value in the ListClientsRequest.pageToken field in the subsequent call to the list method to retrieve the next page of results.
}</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 an existing client.

Args:
  name: string, Output only. The resource name of the client. Format: `buyers/{accountId}/clients/{clientAccountId}` (required)
  body: object, The request body.
    The object takes the form of:

{ # A client represents an agency, a brand, or an advertiser customer of the buyer. Based on the client&#x27;s role, its client users will have varying levels of restricted access to the Marketplace and certain other sections of the Authorized Buyers UI.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name shown to publishers. Must be unique for clients without partnerClientId specified. Maximum length of 255 characters is allowed.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the client. Format: `buyers/{accountId}/clients/{clientAccountId}`
  &quot;partnerClientId&quot;: &quot;A String&quot;, # Arbitrary unique identifier provided by the buyer. This field can be used to associate a client with an identifier in the namespace of the buyer, lookup clients by that identifier and verify whether an Authorized Buyers account of the client already exists. If present, must be unique across all the clients.
  &quot;role&quot;: &quot;A String&quot;, # Required. The role assigned to the client. Each role implies a set of permissions granted to the client.
  &quot;sellerVisible&quot;: True or False, # Whether the client will be visible to sellers.
  &quot;state&quot;: &quot;A String&quot;, # Output only. The state of the client.
}

  updateMask: string, List of fields to be updated. If empty or unspecified, the service will update all fields populated in the update request excluding the output only fields and primitive fields with default value. Note that explicit field mask is required in order to reset a primitive field back to its default value, e.g. false for boolean fields, 0 for integer fields. A special field mask consisting of a single path &quot;*&quot; can be used to indicate full replacement(the equivalent of PUT method), updatable fields unset or unspecified in the input will be cleared or set to default value. Output only fields will be ignored regardless of the value of updateMask.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A client represents an agency, a brand, or an advertiser customer of the buyer. Based on the client&#x27;s role, its client users will have varying levels of restricted access to the Marketplace and certain other sections of the Authorized Buyers UI.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. Display name shown to publishers. Must be unique for clients without partnerClientId specified. Maximum length of 255 characters is allowed.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the client. Format: `buyers/{accountId}/clients/{clientAccountId}`
  &quot;partnerClientId&quot;: &quot;A String&quot;, # Arbitrary unique identifier provided by the buyer. This field can be used to associate a client with an identifier in the namespace of the buyer, lookup clients by that identifier and verify whether an Authorized Buyers account of the client already exists. If present, must be unique across all the clients.
  &quot;role&quot;: &quot;A String&quot;, # Required. The role assigned to the client. Each role implies a set of permissions granted to the client.
  &quot;sellerVisible&quot;: True or False, # Whether the client will be visible to sellers.
  &quot;state&quot;: &quot;A String&quot;, # Output only. The state of the client.
}</pre>
</div>

</body></html>