<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="displayvideo_v1.html">Display & Video 360 API</a> . <a href="displayvideo_v1.googleAudiences.html">googleAudiences</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#get">get(googleAudienceId, partnerId=None, advertiserId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a Google audience.</p>
<p class="toc_element">
  <code><a href="#list">list(partnerId=None, orderBy=None, pageToken=None, filter=None, advertiserId=None, pageSize=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists Google audiences. The order is defined by the order_by parameter.</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="get">get(googleAudienceId, partnerId=None, advertiserId=None, x__xgafv=None)</code>
  <pre>Gets a Google audience.

Args:
  googleAudienceId: string, Required. The ID of the Google audience to fetch. (required)
  partnerId: string, The ID of the partner that has access to the fetched Google audience.
  advertiserId: string, The ID of the advertiser that has access to the fetched Google audience.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Describes a Google audience resource. Includes Google audience lists.
    &quot;googleAudienceType&quot;: &quot;A String&quot;, # Output only. The type of Google audience. .
    &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the Google audience. .
    &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the google audience.
    &quot;googleAudienceId&quot;: &quot;A String&quot;, # Output only. The unique ID of the Google audience. Assigned by the system.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(partnerId=None, orderBy=None, pageToken=None, filter=None, advertiserId=None, pageSize=None, x__xgafv=None)</code>
  <pre>Lists Google audiences. The order is defined by the order_by parameter.

Args:
  partnerId: string, The ID of the partner that has access to the fetched Google audiences.
  orderBy: string, Field by which to sort the list. Acceptable values are: * `googleAudienceId` (default) * `displayName` The default sorting order is ascending. To specify descending order for a field, a suffix &quot;desc&quot; should be added to the field name. Example: `displayName desc`.
  pageToken: string, A token identifying a page of results the server should return. Typically, this is the value of next_page_token returned from the previous call to `ListGoogleAudiences` method. If not specified, the first page of results will be returned.
  filter: string, Allows filtering by Google audience fields. Supported syntax: * Filter expressions for Google audiences currently can only contain at most one restriction. * A restriction has the form of `{field} {operator} {value}`. * The operator must be `CONTAINS (:)`. * Supported fields: - `displayName` Examples: * All Google audiences for which the display name contains &quot;Google&quot;: `displayName : &quot;Google&quot;`. The length of this field should be no more than 500 characters.
  advertiserId: string, The ID of the advertiser that has access to the fetched Google audiences.
  pageSize: integer, Requested page size. Must be between `1` and `100`. If unspecified will default to `100`. Returns error code `INVALID_ARGUMENT` if an invalid value is specified.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;googleAudiences&quot;: [ # The list of Google audiences. This list will be absent if empty.
      { # Describes a Google audience resource. Includes Google audience lists.
        &quot;googleAudienceType&quot;: &quot;A String&quot;, # Output only. The type of Google audience. .
        &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name of the Google audience. .
        &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the google audience.
        &quot;googleAudienceId&quot;: &quot;A String&quot;, # Output only. The unique ID of the Google audience. Assigned by the system.
      },
    ],
    &quot;nextPageToken&quot;: &quot;A String&quot;, # A token to retrieve the next page of results. Pass this value in the page_token field in the subsequent call to `ListGoogleAudiences` 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>

</body></html>