<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="plus_v1.html">Google+ API</a> . <a href="plus_v1.people.html">people</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#get">get(userId)</a></code></p>
<p class="firstline">Get a person's profile. If your app uses scope https://www.googleapis.com/auth/plus.login, this method is guaranteed to return ageRange and language.</p>
<p class="toc_element">
  <code><a href="#list">list(userId, collection, maxResults=None, orderBy=None, pageToken=None)</a></code></p>
<p class="firstline">List all of the people in the specified collection.</p>
<p class="toc_element">
  <code><a href="#listByActivity">listByActivity(activityId, collection, maxResults=None, pageToken=None)</a></code></p>
<p class="firstline">Shut down. See https://developers.google.com/+/api-shutdown for more details.</p>
<p class="toc_element">
  <code><a href="#listByActivity_next">listByActivity_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="#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="#search">search(query, language=None, maxResults=None, pageToken=None)</a></code></p>
<p class="firstline">Shut down. See https://developers.google.com/+/api-shutdown for more details.</p>
<p class="toc_element">
  <code><a href="#search_next">search_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(userId)</code>
  <pre>Get a person&#x27;s profile. If your app uses scope https://www.googleapis.com/auth/plus.login, this method is guaranteed to return ageRange and language.

Args:
  userId: string, The ID of the person to get the profile for. The special value &quot;me&quot; can be used to indicate the authenticated user. (required)

Returns:
  An object of the form:

    {
    &quot;aboutMe&quot;: &quot;A String&quot;, # A short biography for this person.
    &quot;ageRange&quot;: { # The age range of the person. Valid ranges are 17 or younger, 18 to 20, and 21 or older. Age is determined from the user&#x27;s birthday using Western age reckoning.
      &quot;max&quot;: 42, # The age range&#x27;s upper bound, if any. Possible values include, but are not limited to, the following:
          # - &quot;17&quot; - for age 17
          # - &quot;20&quot; - for age 20
      &quot;min&quot;: 42, # The age range&#x27;s lower bound, if any. Possible values include, but are not limited to, the following:
          # - &quot;21&quot; - for age 21
          # - &quot;18&quot; - for age 18
    },
    &quot;birthday&quot;: &quot;A String&quot;, # The person&#x27;s date of birth, represented as YYYY-MM-DD.
    &quot;braggingRights&quot;: &quot;A String&quot;, # The &quot;bragging rights&quot; line of this person.
    &quot;circledByCount&quot;: 42, # For followers who are visible, the number of people who have added this person or page to a circle.
    &quot;cover&quot;: { # The cover photo content.
      &quot;coverInfo&quot;: { # Extra information about the cover photo.
        &quot;leftImageOffset&quot;: 42, # The difference between the left position of the cover image and the actual displayed cover image. Only valid for banner layout.
        &quot;topImageOffset&quot;: 42, # The difference between the top position of the cover image and the actual displayed cover image. Only valid for banner layout.
      },
      &quot;coverPhoto&quot;: { # The person&#x27;s primary cover image.
        &quot;height&quot;: 42, # The height of the image.
        &quot;url&quot;: &quot;A String&quot;, # The URL of the image.
        &quot;width&quot;: 42, # The width of the image.
      },
      &quot;layout&quot;: &quot;A String&quot;, # The layout of the cover art. Possible values include, but are not limited to, the following values:
          # - &quot;banner&quot; - One large image banner.
    },
    &quot;currentLocation&quot;: &quot;A String&quot;, # (this field is not currently used)
    &quot;displayName&quot;: &quot;A String&quot;, # The name of this person, which is suitable for display.
    &quot;domain&quot;: &quot;A String&quot;, # The hosted domain name for the user&#x27;s Google Apps account. For instance, example.com. The plus.profile.emails.read or email scope is needed to get this domain name.
    &quot;emails&quot;: [ # A list of email addresses that this person has, including their Google account email address, and the public verified email addresses on their Google+ profile. The plus.profile.emails.read scope is needed to retrieve these email addresses, or the email scope can be used to retrieve just the Google account email address.
      {
        &quot;type&quot;: &quot;A String&quot;, # The type of address. Possible values include, but are not limited to, the following values:
            # - &quot;account&quot; - Google account email address.
            # - &quot;home&quot; - Home email address.
            # - &quot;work&quot; - Work email address.
            # - &quot;other&quot; - Other.
        &quot;value&quot;: &quot;A String&quot;, # The email address.
      },
    ],
    &quot;etag&quot;: &quot;A String&quot;, # ETag of this response for caching purposes.
    &quot;gender&quot;: &quot;A String&quot;, # The person&#x27;s gender. Possible values include, but are not limited to, the following values:
        # - &quot;male&quot; - Male gender.
        # - &quot;female&quot; - Female gender.
        # - &quot;other&quot; - Other.
    &quot;id&quot;: &quot;A String&quot;, # The ID of this person.
    &quot;image&quot;: { # The representation of the person&#x27;s profile photo.
      &quot;isDefault&quot;: True or False, # Whether the person&#x27;s profile photo is the default one
      &quot;url&quot;: &quot;A String&quot;, # The URL of the person&#x27;s profile photo. To resize the image and crop it to a square, append the query string ?sz=x, where x is the dimension in pixels of each side.
    },
    &quot;isPlusUser&quot;: True or False, # Whether this user has signed up for Google+.
    &quot;kind&quot;: &quot;plus#person&quot;, # Identifies this resource as a person. Value: &quot;plus#person&quot;.
    &quot;language&quot;: &quot;A String&quot;, # The user&#x27;s preferred language for rendering.
    &quot;name&quot;: { # An object representation of the individual components of a person&#x27;s name.
      &quot;familyName&quot;: &quot;A String&quot;, # The family name (last name) of this person.
      &quot;formatted&quot;: &quot;A String&quot;, # The full name of this person, including middle names, suffixes, etc.
      &quot;givenName&quot;: &quot;A String&quot;, # The given name (first name) of this person.
      &quot;honorificPrefix&quot;: &quot;A String&quot;, # The honorific prefixes (such as &quot;Dr.&quot; or &quot;Mrs.&quot;) for this person.
      &quot;honorificSuffix&quot;: &quot;A String&quot;, # The honorific suffixes (such as &quot;Jr.&quot;) for this person.
      &quot;middleName&quot;: &quot;A String&quot;, # The middle name of this person.
    },
    &quot;nickname&quot;: &quot;A String&quot;, # The nickname of this person.
    &quot;objectType&quot;: &quot;A String&quot;, # Type of person within Google+. Possible values include, but are not limited to, the following values:
        # - &quot;person&quot; - represents an actual person.
        # - &quot;page&quot; - represents a page.
    &quot;occupation&quot;: &quot;A String&quot;, # The occupation of this person.
    &quot;organizations&quot;: [ # A list of current or past organizations with which this person is associated.
      {
        &quot;department&quot;: &quot;A String&quot;, # The department within the organization. Deprecated.
        &quot;description&quot;: &quot;A String&quot;, # A short description of the person&#x27;s role in this organization. Deprecated.
        &quot;endDate&quot;: &quot;A String&quot;, # The date that the person left this organization.
        &quot;location&quot;: &quot;A String&quot;, # The location of this organization. Deprecated.
        &quot;name&quot;: &quot;A String&quot;, # The name of the organization.
        &quot;primary&quot;: True or False, # If &quot;true&quot;, indicates this organization is the person&#x27;s primary one, which is typically interpreted as the current one.
        &quot;startDate&quot;: &quot;A String&quot;, # The date that the person joined this organization.
        &quot;title&quot;: &quot;A String&quot;, # The person&#x27;s job title or role within the organization.
        &quot;type&quot;: &quot;A String&quot;, # The type of organization. Possible values include, but are not limited to, the following values:
            # - &quot;work&quot; - Work.
            # - &quot;school&quot; - School.
      },
    ],
    &quot;placesLived&quot;: [ # A list of places where this person has lived.
      {
        &quot;primary&quot;: True or False, # If &quot;true&quot;, this place of residence is this person&#x27;s primary residence.
        &quot;value&quot;: &quot;A String&quot;, # A place where this person has lived. For example: &quot;Seattle, WA&quot;, &quot;Near Toronto&quot;.
      },
    ],
    &quot;plusOneCount&quot;: 42, # If a Google+ Page, the number of people who have +1&#x27;d this page.
    &quot;relationshipStatus&quot;: &quot;A String&quot;, # The person&#x27;s relationship status. Possible values include, but are not limited to, the following values:
        # - &quot;single&quot; - Person is single.
        # - &quot;in_a_relationship&quot; - Person is in a relationship.
        # - &quot;engaged&quot; - Person is engaged.
        # - &quot;married&quot; - Person is married.
        # - &quot;its_complicated&quot; - The relationship is complicated.
        # - &quot;open_relationship&quot; - Person is in an open relationship.
        # - &quot;widowed&quot; - Person is widowed.
        # - &quot;in_domestic_partnership&quot; - Person is in a domestic partnership.
        # - &quot;in_civil_union&quot; - Person is in a civil union.
    &quot;skills&quot;: &quot;A String&quot;, # The person&#x27;s skills.
    &quot;tagline&quot;: &quot;A String&quot;, # The brief description (tagline) of this person.
    &quot;url&quot;: &quot;A String&quot;, # The URL of this person&#x27;s profile.
    &quot;urls&quot;: [ # A list of URLs for this person.
      {
        &quot;label&quot;: &quot;A String&quot;, # The label of the URL.
        &quot;type&quot;: &quot;A String&quot;, # The type of URL. Possible values include, but are not limited to, the following values:
            # - &quot;otherProfile&quot; - URL for another profile.
            # - &quot;contributor&quot; - URL to a site for which this person is a contributor.
            # - &quot;website&quot; - URL for this Google+ Page&#x27;s primary website.
            # - &quot;other&quot; - Other URL.
        &quot;value&quot;: &quot;A String&quot;, # The URL value.
      },
    ],
    &quot;verified&quot;: True or False, # Whether the person or Google+ Page has been verified.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(userId, collection, maxResults=None, orderBy=None, pageToken=None)</code>
  <pre>List all of the people in the specified collection.

Args:
  userId: string, Get the collection of people for the person identified. Use &quot;me&quot; to indicate the authenticated user. (required)
  collection: string, The collection of people to list. (required)
    Allowed values
      connected - The list of visible people in the authenticated user&#x27;s circles who also use the requesting app. This list is limited to users who made their app activities visible to the authenticated user.
      visible - The list of people who this user has added to one or more circles, limited to the circles visible to the requesting application.
  maxResults: integer, The maximum number of people to include in the response, which is used for paging. For any response, the actual number returned might be less than the specified maxResults.
  orderBy: string, The order to return people in.
    Allowed values
      alphabetical - Order the people by their display name.
      best - Order people based on the relevence to the viewer.
  pageToken: string, The continuation token, which is used to page through large result sets. To get the next page of results, set this parameter to the value of &quot;nextPageToken&quot; from the previous response.

Returns:
  An object of the form:

    {
    &quot;etag&quot;: &quot;A String&quot;, # ETag of this response for caching purposes.
    &quot;items&quot;: [ # The people in this page of results. Each item includes the id, displayName, image, and url for the person. To retrieve additional profile data, see the people.get method.
      {
        &quot;aboutMe&quot;: &quot;A String&quot;, # A short biography for this person.
        &quot;ageRange&quot;: { # The age range of the person. Valid ranges are 17 or younger, 18 to 20, and 21 or older. Age is determined from the user&#x27;s birthday using Western age reckoning.
          &quot;max&quot;: 42, # The age range&#x27;s upper bound, if any. Possible values include, but are not limited to, the following:
              # - &quot;17&quot; - for age 17
              # - &quot;20&quot; - for age 20
          &quot;min&quot;: 42, # The age range&#x27;s lower bound, if any. Possible values include, but are not limited to, the following:
              # - &quot;21&quot; - for age 21
              # - &quot;18&quot; - for age 18
        },
        &quot;birthday&quot;: &quot;A String&quot;, # The person&#x27;s date of birth, represented as YYYY-MM-DD.
        &quot;braggingRights&quot;: &quot;A String&quot;, # The &quot;bragging rights&quot; line of this person.
        &quot;circledByCount&quot;: 42, # For followers who are visible, the number of people who have added this person or page to a circle.
        &quot;cover&quot;: { # The cover photo content.
          &quot;coverInfo&quot;: { # Extra information about the cover photo.
            &quot;leftImageOffset&quot;: 42, # The difference between the left position of the cover image and the actual displayed cover image. Only valid for banner layout.
            &quot;topImageOffset&quot;: 42, # The difference between the top position of the cover image and the actual displayed cover image. Only valid for banner layout.
          },
          &quot;coverPhoto&quot;: { # The person&#x27;s primary cover image.
            &quot;height&quot;: 42, # The height of the image.
            &quot;url&quot;: &quot;A String&quot;, # The URL of the image.
            &quot;width&quot;: 42, # The width of the image.
          },
          &quot;layout&quot;: &quot;A String&quot;, # The layout of the cover art. Possible values include, but are not limited to, the following values:
              # - &quot;banner&quot; - One large image banner.
        },
        &quot;currentLocation&quot;: &quot;A String&quot;, # (this field is not currently used)
        &quot;displayName&quot;: &quot;A String&quot;, # The name of this person, which is suitable for display.
        &quot;domain&quot;: &quot;A String&quot;, # The hosted domain name for the user&#x27;s Google Apps account. For instance, example.com. The plus.profile.emails.read or email scope is needed to get this domain name.
        &quot;emails&quot;: [ # A list of email addresses that this person has, including their Google account email address, and the public verified email addresses on their Google+ profile. The plus.profile.emails.read scope is needed to retrieve these email addresses, or the email scope can be used to retrieve just the Google account email address.
          {
            &quot;type&quot;: &quot;A String&quot;, # The type of address. Possible values include, but are not limited to, the following values:
                # - &quot;account&quot; - Google account email address.
                # - &quot;home&quot; - Home email address.
                # - &quot;work&quot; - Work email address.
                # - &quot;other&quot; - Other.
            &quot;value&quot;: &quot;A String&quot;, # The email address.
          },
        ],
        &quot;etag&quot;: &quot;A String&quot;, # ETag of this response for caching purposes.
        &quot;gender&quot;: &quot;A String&quot;, # The person&#x27;s gender. Possible values include, but are not limited to, the following values:
            # - &quot;male&quot; - Male gender.
            # - &quot;female&quot; - Female gender.
            # - &quot;other&quot; - Other.
        &quot;id&quot;: &quot;A String&quot;, # The ID of this person.
        &quot;image&quot;: { # The representation of the person&#x27;s profile photo.
          &quot;isDefault&quot;: True or False, # Whether the person&#x27;s profile photo is the default one
          &quot;url&quot;: &quot;A String&quot;, # The URL of the person&#x27;s profile photo. To resize the image and crop it to a square, append the query string ?sz=x, where x is the dimension in pixels of each side.
        },
        &quot;isPlusUser&quot;: True or False, # Whether this user has signed up for Google+.
        &quot;kind&quot;: &quot;plus#person&quot;, # Identifies this resource as a person. Value: &quot;plus#person&quot;.
        &quot;language&quot;: &quot;A String&quot;, # The user&#x27;s preferred language for rendering.
        &quot;name&quot;: { # An object representation of the individual components of a person&#x27;s name.
          &quot;familyName&quot;: &quot;A String&quot;, # The family name (last name) of this person.
          &quot;formatted&quot;: &quot;A String&quot;, # The full name of this person, including middle names, suffixes, etc.
          &quot;givenName&quot;: &quot;A String&quot;, # The given name (first name) of this person.
          &quot;honorificPrefix&quot;: &quot;A String&quot;, # The honorific prefixes (such as &quot;Dr.&quot; or &quot;Mrs.&quot;) for this person.
          &quot;honorificSuffix&quot;: &quot;A String&quot;, # The honorific suffixes (such as &quot;Jr.&quot;) for this person.
          &quot;middleName&quot;: &quot;A String&quot;, # The middle name of this person.
        },
        &quot;nickname&quot;: &quot;A String&quot;, # The nickname of this person.
        &quot;objectType&quot;: &quot;A String&quot;, # Type of person within Google+. Possible values include, but are not limited to, the following values:
            # - &quot;person&quot; - represents an actual person.
            # - &quot;page&quot; - represents a page.
        &quot;occupation&quot;: &quot;A String&quot;, # The occupation of this person.
        &quot;organizations&quot;: [ # A list of current or past organizations with which this person is associated.
          {
            &quot;department&quot;: &quot;A String&quot;, # The department within the organization. Deprecated.
            &quot;description&quot;: &quot;A String&quot;, # A short description of the person&#x27;s role in this organization. Deprecated.
            &quot;endDate&quot;: &quot;A String&quot;, # The date that the person left this organization.
            &quot;location&quot;: &quot;A String&quot;, # The location of this organization. Deprecated.
            &quot;name&quot;: &quot;A String&quot;, # The name of the organization.
            &quot;primary&quot;: True or False, # If &quot;true&quot;, indicates this organization is the person&#x27;s primary one, which is typically interpreted as the current one.
            &quot;startDate&quot;: &quot;A String&quot;, # The date that the person joined this organization.
            &quot;title&quot;: &quot;A String&quot;, # The person&#x27;s job title or role within the organization.
            &quot;type&quot;: &quot;A String&quot;, # The type of organization. Possible values include, but are not limited to, the following values:
                # - &quot;work&quot; - Work.
                # - &quot;school&quot; - School.
          },
        ],
        &quot;placesLived&quot;: [ # A list of places where this person has lived.
          {
            &quot;primary&quot;: True or False, # If &quot;true&quot;, this place of residence is this person&#x27;s primary residence.
            &quot;value&quot;: &quot;A String&quot;, # A place where this person has lived. For example: &quot;Seattle, WA&quot;, &quot;Near Toronto&quot;.
          },
        ],
        &quot;plusOneCount&quot;: 42, # If a Google+ Page, the number of people who have +1&#x27;d this page.
        &quot;relationshipStatus&quot;: &quot;A String&quot;, # The person&#x27;s relationship status. Possible values include, but are not limited to, the following values:
            # - &quot;single&quot; - Person is single.
            # - &quot;in_a_relationship&quot; - Person is in a relationship.
            # - &quot;engaged&quot; - Person is engaged.
            # - &quot;married&quot; - Person is married.
            # - &quot;its_complicated&quot; - The relationship is complicated.
            # - &quot;open_relationship&quot; - Person is in an open relationship.
            # - &quot;widowed&quot; - Person is widowed.
            # - &quot;in_domestic_partnership&quot; - Person is in a domestic partnership.
            # - &quot;in_civil_union&quot; - Person is in a civil union.
        &quot;skills&quot;: &quot;A String&quot;, # The person&#x27;s skills.
        &quot;tagline&quot;: &quot;A String&quot;, # The brief description (tagline) of this person.
        &quot;url&quot;: &quot;A String&quot;, # The URL of this person&#x27;s profile.
        &quot;urls&quot;: [ # A list of URLs for this person.
          {
            &quot;label&quot;: &quot;A String&quot;, # The label of the URL.
            &quot;type&quot;: &quot;A String&quot;, # The type of URL. Possible values include, but are not limited to, the following values:
                # - &quot;otherProfile&quot; - URL for another profile.
                # - &quot;contributor&quot; - URL to a site for which this person is a contributor.
                # - &quot;website&quot; - URL for this Google+ Page&#x27;s primary website.
                # - &quot;other&quot; - Other URL.
            &quot;value&quot;: &quot;A String&quot;, # The URL value.
          },
        ],
        &quot;verified&quot;: True or False, # Whether the person or Google+ Page has been verified.
      },
    ],
    &quot;kind&quot;: &quot;plus#peopleFeed&quot;, # Identifies this resource as a collection of people. Value: &quot;plus#peopleFeed&quot;.
    &quot;nextPageToken&quot;: &quot;A String&quot;, # The continuation token, which is used to page through large result sets. Provide this value in a subsequent request to return the next page of results.
    &quot;selfLink&quot;: &quot;A String&quot;, # Link to this resource.
    &quot;title&quot;: &quot;A String&quot;, # The title of this collection of people.
    &quot;totalItems&quot;: 42, # The total number of people available in this list. The number of people in a response might be smaller due to paging. This might not be set for all collections.
  }</pre>
</div>

<div class="method">
    <code class="details" id="listByActivity">listByActivity(activityId, collection, maxResults=None, pageToken=None)</code>
  <pre>Shut down. See https://developers.google.com/+/api-shutdown for more details.

Args:
  activityId: string, The ID of the activity to get the list of people for. (required)
  collection: string, The collection of people to list. (required)
    Allowed values
      plusoners - List all people who have +1&#x27;d this activity.
      resharers - List all people who have reshared this activity.
  maxResults: integer, The maximum number of people to include in the response, which is used for paging. For any response, the actual number returned might be less than the specified maxResults.
  pageToken: string, The continuation token, which is used to page through large result sets. To get the next page of results, set this parameter to the value of &quot;nextPageToken&quot; from the previous response.

Returns:
  An object of the form:

    {
    &quot;etag&quot;: &quot;A String&quot;, # ETag of this response for caching purposes.
    &quot;items&quot;: [ # The people in this page of results. Each item includes the id, displayName, image, and url for the person. To retrieve additional profile data, see the people.get method.
      {
        &quot;aboutMe&quot;: &quot;A String&quot;, # A short biography for this person.
        &quot;ageRange&quot;: { # The age range of the person. Valid ranges are 17 or younger, 18 to 20, and 21 or older. Age is determined from the user&#x27;s birthday using Western age reckoning.
          &quot;max&quot;: 42, # The age range&#x27;s upper bound, if any. Possible values include, but are not limited to, the following:
              # - &quot;17&quot; - for age 17
              # - &quot;20&quot; - for age 20
          &quot;min&quot;: 42, # The age range&#x27;s lower bound, if any. Possible values include, but are not limited to, the following:
              # - &quot;21&quot; - for age 21
              # - &quot;18&quot; - for age 18
        },
        &quot;birthday&quot;: &quot;A String&quot;, # The person&#x27;s date of birth, represented as YYYY-MM-DD.
        &quot;braggingRights&quot;: &quot;A String&quot;, # The &quot;bragging rights&quot; line of this person.
        &quot;circledByCount&quot;: 42, # For followers who are visible, the number of people who have added this person or page to a circle.
        &quot;cover&quot;: { # The cover photo content.
          &quot;coverInfo&quot;: { # Extra information about the cover photo.
            &quot;leftImageOffset&quot;: 42, # The difference between the left position of the cover image and the actual displayed cover image. Only valid for banner layout.
            &quot;topImageOffset&quot;: 42, # The difference between the top position of the cover image and the actual displayed cover image. Only valid for banner layout.
          },
          &quot;coverPhoto&quot;: { # The person&#x27;s primary cover image.
            &quot;height&quot;: 42, # The height of the image.
            &quot;url&quot;: &quot;A String&quot;, # The URL of the image.
            &quot;width&quot;: 42, # The width of the image.
          },
          &quot;layout&quot;: &quot;A String&quot;, # The layout of the cover art. Possible values include, but are not limited to, the following values:
              # - &quot;banner&quot; - One large image banner.
        },
        &quot;currentLocation&quot;: &quot;A String&quot;, # (this field is not currently used)
        &quot;displayName&quot;: &quot;A String&quot;, # The name of this person, which is suitable for display.
        &quot;domain&quot;: &quot;A String&quot;, # The hosted domain name for the user&#x27;s Google Apps account. For instance, example.com. The plus.profile.emails.read or email scope is needed to get this domain name.
        &quot;emails&quot;: [ # A list of email addresses that this person has, including their Google account email address, and the public verified email addresses on their Google+ profile. The plus.profile.emails.read scope is needed to retrieve these email addresses, or the email scope can be used to retrieve just the Google account email address.
          {
            &quot;type&quot;: &quot;A String&quot;, # The type of address. Possible values include, but are not limited to, the following values:
                # - &quot;account&quot; - Google account email address.
                # - &quot;home&quot; - Home email address.
                # - &quot;work&quot; - Work email address.
                # - &quot;other&quot; - Other.
            &quot;value&quot;: &quot;A String&quot;, # The email address.
          },
        ],
        &quot;etag&quot;: &quot;A String&quot;, # ETag of this response for caching purposes.
        &quot;gender&quot;: &quot;A String&quot;, # The person&#x27;s gender. Possible values include, but are not limited to, the following values:
            # - &quot;male&quot; - Male gender.
            # - &quot;female&quot; - Female gender.
            # - &quot;other&quot; - Other.
        &quot;id&quot;: &quot;A String&quot;, # The ID of this person.
        &quot;image&quot;: { # The representation of the person&#x27;s profile photo.
          &quot;isDefault&quot;: True or False, # Whether the person&#x27;s profile photo is the default one
          &quot;url&quot;: &quot;A String&quot;, # The URL of the person&#x27;s profile photo. To resize the image and crop it to a square, append the query string ?sz=x, where x is the dimension in pixels of each side.
        },
        &quot;isPlusUser&quot;: True or False, # Whether this user has signed up for Google+.
        &quot;kind&quot;: &quot;plus#person&quot;, # Identifies this resource as a person. Value: &quot;plus#person&quot;.
        &quot;language&quot;: &quot;A String&quot;, # The user&#x27;s preferred language for rendering.
        &quot;name&quot;: { # An object representation of the individual components of a person&#x27;s name.
          &quot;familyName&quot;: &quot;A String&quot;, # The family name (last name) of this person.
          &quot;formatted&quot;: &quot;A String&quot;, # The full name of this person, including middle names, suffixes, etc.
          &quot;givenName&quot;: &quot;A String&quot;, # The given name (first name) of this person.
          &quot;honorificPrefix&quot;: &quot;A String&quot;, # The honorific prefixes (such as &quot;Dr.&quot; or &quot;Mrs.&quot;) for this person.
          &quot;honorificSuffix&quot;: &quot;A String&quot;, # The honorific suffixes (such as &quot;Jr.&quot;) for this person.
          &quot;middleName&quot;: &quot;A String&quot;, # The middle name of this person.
        },
        &quot;nickname&quot;: &quot;A String&quot;, # The nickname of this person.
        &quot;objectType&quot;: &quot;A String&quot;, # Type of person within Google+. Possible values include, but are not limited to, the following values:
            # - &quot;person&quot; - represents an actual person.
            # - &quot;page&quot; - represents a page.
        &quot;occupation&quot;: &quot;A String&quot;, # The occupation of this person.
        &quot;organizations&quot;: [ # A list of current or past organizations with which this person is associated.
          {
            &quot;department&quot;: &quot;A String&quot;, # The department within the organization. Deprecated.
            &quot;description&quot;: &quot;A String&quot;, # A short description of the person&#x27;s role in this organization. Deprecated.
            &quot;endDate&quot;: &quot;A String&quot;, # The date that the person left this organization.
            &quot;location&quot;: &quot;A String&quot;, # The location of this organization. Deprecated.
            &quot;name&quot;: &quot;A String&quot;, # The name of the organization.
            &quot;primary&quot;: True or False, # If &quot;true&quot;, indicates this organization is the person&#x27;s primary one, which is typically interpreted as the current one.
            &quot;startDate&quot;: &quot;A String&quot;, # The date that the person joined this organization.
            &quot;title&quot;: &quot;A String&quot;, # The person&#x27;s job title or role within the organization.
            &quot;type&quot;: &quot;A String&quot;, # The type of organization. Possible values include, but are not limited to, the following values:
                # - &quot;work&quot; - Work.
                # - &quot;school&quot; - School.
          },
        ],
        &quot;placesLived&quot;: [ # A list of places where this person has lived.
          {
            &quot;primary&quot;: True or False, # If &quot;true&quot;, this place of residence is this person&#x27;s primary residence.
            &quot;value&quot;: &quot;A String&quot;, # A place where this person has lived. For example: &quot;Seattle, WA&quot;, &quot;Near Toronto&quot;.
          },
        ],
        &quot;plusOneCount&quot;: 42, # If a Google+ Page, the number of people who have +1&#x27;d this page.
        &quot;relationshipStatus&quot;: &quot;A String&quot;, # The person&#x27;s relationship status. Possible values include, but are not limited to, the following values:
            # - &quot;single&quot; - Person is single.
            # - &quot;in_a_relationship&quot; - Person is in a relationship.
            # - &quot;engaged&quot; - Person is engaged.
            # - &quot;married&quot; - Person is married.
            # - &quot;its_complicated&quot; - The relationship is complicated.
            # - &quot;open_relationship&quot; - Person is in an open relationship.
            # - &quot;widowed&quot; - Person is widowed.
            # - &quot;in_domestic_partnership&quot; - Person is in a domestic partnership.
            # - &quot;in_civil_union&quot; - Person is in a civil union.
        &quot;skills&quot;: &quot;A String&quot;, # The person&#x27;s skills.
        &quot;tagline&quot;: &quot;A String&quot;, # The brief description (tagline) of this person.
        &quot;url&quot;: &quot;A String&quot;, # The URL of this person&#x27;s profile.
        &quot;urls&quot;: [ # A list of URLs for this person.
          {
            &quot;label&quot;: &quot;A String&quot;, # The label of the URL.
            &quot;type&quot;: &quot;A String&quot;, # The type of URL. Possible values include, but are not limited to, the following values:
                # - &quot;otherProfile&quot; - URL for another profile.
                # - &quot;contributor&quot; - URL to a site for which this person is a contributor.
                # - &quot;website&quot; - URL for this Google+ Page&#x27;s primary website.
                # - &quot;other&quot; - Other URL.
            &quot;value&quot;: &quot;A String&quot;, # The URL value.
          },
        ],
        &quot;verified&quot;: True or False, # Whether the person or Google+ Page has been verified.
      },
    ],
    &quot;kind&quot;: &quot;plus#peopleFeed&quot;, # Identifies this resource as a collection of people. Value: &quot;plus#peopleFeed&quot;.
    &quot;nextPageToken&quot;: &quot;A String&quot;, # The continuation token, which is used to page through large result sets. Provide this value in a subsequent request to return the next page of results.
    &quot;selfLink&quot;: &quot;A String&quot;, # Link to this resource.
    &quot;title&quot;: &quot;A String&quot;, # The title of this collection of people.
    &quot;totalItems&quot;: 42, # The total number of people available in this list. The number of people in a response might be smaller due to paging. This might not be set for all collections.
  }</pre>
</div>

<div class="method">
    <code class="details" id="listByActivity_next">listByActivity_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="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="search">search(query, language=None, maxResults=None, pageToken=None)</code>
  <pre>Shut down. See https://developers.google.com/+/api-shutdown for more details.

Args:
  query: string, Specify a query string for full text search of public text in all profiles. (required)
  language: string, Specify the preferred language to search with. See search language codes for available values.
  maxResults: integer, The maximum number of people to include in the response, which is used for paging. For any response, the actual number returned might be less than the specified maxResults.
  pageToken: string, The continuation token, which is used to page through large result sets. To get the next page of results, set this parameter to the value of &quot;nextPageToken&quot; from the previous response. This token can be of any length.

Returns:
  An object of the form:

    {
    &quot;etag&quot;: &quot;A String&quot;, # ETag of this response for caching purposes.
    &quot;items&quot;: [ # The people in this page of results. Each item includes the id, displayName, image, and url for the person. To retrieve additional profile data, see the people.get method.
      {
        &quot;aboutMe&quot;: &quot;A String&quot;, # A short biography for this person.
        &quot;ageRange&quot;: { # The age range of the person. Valid ranges are 17 or younger, 18 to 20, and 21 or older. Age is determined from the user&#x27;s birthday using Western age reckoning.
          &quot;max&quot;: 42, # The age range&#x27;s upper bound, if any. Possible values include, but are not limited to, the following:
              # - &quot;17&quot; - for age 17
              # - &quot;20&quot; - for age 20
          &quot;min&quot;: 42, # The age range&#x27;s lower bound, if any. Possible values include, but are not limited to, the following:
              # - &quot;21&quot; - for age 21
              # - &quot;18&quot; - for age 18
        },
        &quot;birthday&quot;: &quot;A String&quot;, # The person&#x27;s date of birth, represented as YYYY-MM-DD.
        &quot;braggingRights&quot;: &quot;A String&quot;, # The &quot;bragging rights&quot; line of this person.
        &quot;circledByCount&quot;: 42, # For followers who are visible, the number of people who have added this person or page to a circle.
        &quot;cover&quot;: { # The cover photo content.
          &quot;coverInfo&quot;: { # Extra information about the cover photo.
            &quot;leftImageOffset&quot;: 42, # The difference between the left position of the cover image and the actual displayed cover image. Only valid for banner layout.
            &quot;topImageOffset&quot;: 42, # The difference between the top position of the cover image and the actual displayed cover image. Only valid for banner layout.
          },
          &quot;coverPhoto&quot;: { # The person&#x27;s primary cover image.
            &quot;height&quot;: 42, # The height of the image.
            &quot;url&quot;: &quot;A String&quot;, # The URL of the image.
            &quot;width&quot;: 42, # The width of the image.
          },
          &quot;layout&quot;: &quot;A String&quot;, # The layout of the cover art. Possible values include, but are not limited to, the following values:
              # - &quot;banner&quot; - One large image banner.
        },
        &quot;currentLocation&quot;: &quot;A String&quot;, # (this field is not currently used)
        &quot;displayName&quot;: &quot;A String&quot;, # The name of this person, which is suitable for display.
        &quot;domain&quot;: &quot;A String&quot;, # The hosted domain name for the user&#x27;s Google Apps account. For instance, example.com. The plus.profile.emails.read or email scope is needed to get this domain name.
        &quot;emails&quot;: [ # A list of email addresses that this person has, including their Google account email address, and the public verified email addresses on their Google+ profile. The plus.profile.emails.read scope is needed to retrieve these email addresses, or the email scope can be used to retrieve just the Google account email address.
          {
            &quot;type&quot;: &quot;A String&quot;, # The type of address. Possible values include, but are not limited to, the following values:
                # - &quot;account&quot; - Google account email address.
                # - &quot;home&quot; - Home email address.
                # - &quot;work&quot; - Work email address.
                # - &quot;other&quot; - Other.
            &quot;value&quot;: &quot;A String&quot;, # The email address.
          },
        ],
        &quot;etag&quot;: &quot;A String&quot;, # ETag of this response for caching purposes.
        &quot;gender&quot;: &quot;A String&quot;, # The person&#x27;s gender. Possible values include, but are not limited to, the following values:
            # - &quot;male&quot; - Male gender.
            # - &quot;female&quot; - Female gender.
            # - &quot;other&quot; - Other.
        &quot;id&quot;: &quot;A String&quot;, # The ID of this person.
        &quot;image&quot;: { # The representation of the person&#x27;s profile photo.
          &quot;isDefault&quot;: True or False, # Whether the person&#x27;s profile photo is the default one
          &quot;url&quot;: &quot;A String&quot;, # The URL of the person&#x27;s profile photo. To resize the image and crop it to a square, append the query string ?sz=x, where x is the dimension in pixels of each side.
        },
        &quot;isPlusUser&quot;: True or False, # Whether this user has signed up for Google+.
        &quot;kind&quot;: &quot;plus#person&quot;, # Identifies this resource as a person. Value: &quot;plus#person&quot;.
        &quot;language&quot;: &quot;A String&quot;, # The user&#x27;s preferred language for rendering.
        &quot;name&quot;: { # An object representation of the individual components of a person&#x27;s name.
          &quot;familyName&quot;: &quot;A String&quot;, # The family name (last name) of this person.
          &quot;formatted&quot;: &quot;A String&quot;, # The full name of this person, including middle names, suffixes, etc.
          &quot;givenName&quot;: &quot;A String&quot;, # The given name (first name) of this person.
          &quot;honorificPrefix&quot;: &quot;A String&quot;, # The honorific prefixes (such as &quot;Dr.&quot; or &quot;Mrs.&quot;) for this person.
          &quot;honorificSuffix&quot;: &quot;A String&quot;, # The honorific suffixes (such as &quot;Jr.&quot;) for this person.
          &quot;middleName&quot;: &quot;A String&quot;, # The middle name of this person.
        },
        &quot;nickname&quot;: &quot;A String&quot;, # The nickname of this person.
        &quot;objectType&quot;: &quot;A String&quot;, # Type of person within Google+. Possible values include, but are not limited to, the following values:
            # - &quot;person&quot; - represents an actual person.
            # - &quot;page&quot; - represents a page.
        &quot;occupation&quot;: &quot;A String&quot;, # The occupation of this person.
        &quot;organizations&quot;: [ # A list of current or past organizations with which this person is associated.
          {
            &quot;department&quot;: &quot;A String&quot;, # The department within the organization. Deprecated.
            &quot;description&quot;: &quot;A String&quot;, # A short description of the person&#x27;s role in this organization. Deprecated.
            &quot;endDate&quot;: &quot;A String&quot;, # The date that the person left this organization.
            &quot;location&quot;: &quot;A String&quot;, # The location of this organization. Deprecated.
            &quot;name&quot;: &quot;A String&quot;, # The name of the organization.
            &quot;primary&quot;: True or False, # If &quot;true&quot;, indicates this organization is the person&#x27;s primary one, which is typically interpreted as the current one.
            &quot;startDate&quot;: &quot;A String&quot;, # The date that the person joined this organization.
            &quot;title&quot;: &quot;A String&quot;, # The person&#x27;s job title or role within the organization.
            &quot;type&quot;: &quot;A String&quot;, # The type of organization. Possible values include, but are not limited to, the following values:
                # - &quot;work&quot; - Work.
                # - &quot;school&quot; - School.
          },
        ],
        &quot;placesLived&quot;: [ # A list of places where this person has lived.
          {
            &quot;primary&quot;: True or False, # If &quot;true&quot;, this place of residence is this person&#x27;s primary residence.
            &quot;value&quot;: &quot;A String&quot;, # A place where this person has lived. For example: &quot;Seattle, WA&quot;, &quot;Near Toronto&quot;.
          },
        ],
        &quot;plusOneCount&quot;: 42, # If a Google+ Page, the number of people who have +1&#x27;d this page.
        &quot;relationshipStatus&quot;: &quot;A String&quot;, # The person&#x27;s relationship status. Possible values include, but are not limited to, the following values:
            # - &quot;single&quot; - Person is single.
            # - &quot;in_a_relationship&quot; - Person is in a relationship.
            # - &quot;engaged&quot; - Person is engaged.
            # - &quot;married&quot; - Person is married.
            # - &quot;its_complicated&quot; - The relationship is complicated.
            # - &quot;open_relationship&quot; - Person is in an open relationship.
            # - &quot;widowed&quot; - Person is widowed.
            # - &quot;in_domestic_partnership&quot; - Person is in a domestic partnership.
            # - &quot;in_civil_union&quot; - Person is in a civil union.
        &quot;skills&quot;: &quot;A String&quot;, # The person&#x27;s skills.
        &quot;tagline&quot;: &quot;A String&quot;, # The brief description (tagline) of this person.
        &quot;url&quot;: &quot;A String&quot;, # The URL of this person&#x27;s profile.
        &quot;urls&quot;: [ # A list of URLs for this person.
          {
            &quot;label&quot;: &quot;A String&quot;, # The label of the URL.
            &quot;type&quot;: &quot;A String&quot;, # The type of URL. Possible values include, but are not limited to, the following values:
                # - &quot;otherProfile&quot; - URL for another profile.
                # - &quot;contributor&quot; - URL to a site for which this person is a contributor.
                # - &quot;website&quot; - URL for this Google+ Page&#x27;s primary website.
                # - &quot;other&quot; - Other URL.
            &quot;value&quot;: &quot;A String&quot;, # The URL value.
          },
        ],
        &quot;verified&quot;: True or False, # Whether the person or Google+ Page has been verified.
      },
    ],
    &quot;kind&quot;: &quot;plus#peopleFeed&quot;, # Identifies this resource as a collection of people. Value: &quot;plus#peopleFeed&quot;.
    &quot;nextPageToken&quot;: &quot;A String&quot;, # The continuation token, which is used to page through large result sets. Provide this value in a subsequent request to return the next page of results.
    &quot;selfLink&quot;: &quot;A String&quot;, # Link to this resource.
    &quot;title&quot;: &quot;A String&quot;, # The title of this collection of people.
    &quot;totalItems&quot;: 42, # The total number of people available in this list. The number of people in a response might be smaller due to paging. This might not be set for all collections.
  }</pre>
</div>

<div class="method">
    <code class="details" id="search_next">search_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>