<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="partners_v2.html">Google Partners API</a> . <a href="partners_v2.leads.html">leads</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#list">list(orderBy=None, pageSize=None, requestMetadata_userOverrides_ipAddress=None, requestMetadata_trafficSource_trafficSubId=None, requestMetadata_userOverrides_userId=None, x__xgafv=None, requestMetadata_locale=None, pageToken=None, requestMetadata_experimentIds=None, requestMetadata_trafficSource_trafficSourceId=None, requestMetadata_partnersSessionId=None)</a></code></p>
<p class="firstline">Lists advertiser leads for a user's associated company.</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="list">list(orderBy=None, pageSize=None, requestMetadata_userOverrides_ipAddress=None, requestMetadata_trafficSource_trafficSubId=None, requestMetadata_userOverrides_userId=None, x__xgafv=None, requestMetadata_locale=None, pageToken=None, requestMetadata_experimentIds=None, requestMetadata_trafficSource_trafficSourceId=None, requestMetadata_partnersSessionId=None)</code>
  <pre>Lists advertiser leads for a user's associated company.
Should only be called within the context of an authorized logged in user.

Args:
  orderBy: string, How to order Leads. Currently, only `create_time`
and `create_time desc` are supported
  pageSize: integer, Requested page size. Server may return fewer leads than requested.
If unspecified, server picks an appropriate default.
  requestMetadata_userOverrides_ipAddress: string, IP address to use instead of the user's geo-located IP address.
  requestMetadata_trafficSource_trafficSubId: string, Second level identifier to indicate where the traffic comes from.
An identifier has multiple letters created by a team which redirected the
traffic to us.
  requestMetadata_userOverrides_userId: string, Logged-in user ID to impersonate instead of the user's ID.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
  requestMetadata_locale: string, Locale to use for the current request.
  pageToken: string, A token identifying a page of results that the server returns.
Typically, this is the value of `ListLeadsResponse.next_page_token`
returned from the previous call to
ListLeads.
  requestMetadata_experimentIds: string, Experiment IDs the current request belongs to. (repeated)
  requestMetadata_trafficSource_trafficSourceId: string, Identifier to indicate where the traffic comes from.
An identifier has multiple letters created by a team which redirected the
traffic to us.
  requestMetadata_partnersSessionId: string, Google Partners session ID.

Returns:
  An object of the form:

    { # Response message for ListLeads.
    "nextPageToken": "A String", # A token to retrieve next page of results.
        # Pass this value in the `ListLeadsRequest.page_token` field in the
        # subsequent call to
        # ListLeads to retrieve the
        # next page of results.
    "totalSize": 42, # The total count of leads for the given company.
    "leads": [ # The list of leads.
      { # A lead resource that represents an advertiser contact for a `Company`. These
          # are usually generated via Google Partner Search (the advertiser portal).
        "marketingOptIn": True or False, # Whether or not the lead signed up for marketing emails
        "languageCode": "A String", # Language code of the lead's language preference, as defined by
            # <a href="https://tools.ietf.org/html/bcp47">BCP 47</a>
            # (IETF BCP 47, "Tags for Identifying Languages").
        "type": "A String", # Type of lead.
        "familyName": "A String", # Last name of lead source.
        "minMonthlyBudget": { # Represents an amount of money with its currency type. # The minimum monthly budget lead source is willing to spend.
          "nanos": 42, # Number of nano (10^-9) units of the amount.
              # The value must be between -999,999,999 and +999,999,999 inclusive.
              # If `units` is positive, `nanos` must be positive or zero.
              # If `units` is zero, `nanos` can be positive, zero, or negative.
              # If `units` is negative, `nanos` must be negative or zero.
              # For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
          "units": "A String", # The whole units of the amount.
              # For example if `currencyCode` is `"USD"`, then 1 unit is one US dollar.
          "currencyCode": "A String", # The 3-letter currency code defined in ISO 4217.
        },
        "comments": "A String", # Comments lead source gave.
        "createTime": "A String", # Timestamp of when this lead was created.
        "websiteUrl": "A String", # Website URL of lead source.
        "email": "A String", # Email address of lead source.
        "state": "A String", # The lead's state in relation to the company.
        "phoneNumber": "A String", # Phone number of lead source.
        "gpsMotivations": [ # List of reasons for using Google Partner Search and creating a lead.
          "A String",
        ],
        "givenName": "A String", # First name of lead source.
        "adwordsCustomerId": "A String", # The AdWords Customer ID of the lead.
        "id": "A String", # ID of the lead.
      },
    ],
    "responseMetadata": { # Common data that is in each API response. # Current response metadata.
      "debugInfo": { # Debug information about this request. # Debug information about this request.
        "serverTraceInfo": "A String", # Server-side debug stack trace.
        "serviceUrl": "A String", # URL of the service that handled this request.
        "serverInfo": "A String", # Info about the server that serviced this request.
      },
    },
  }</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>