<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, orderBy=None, pageToken=None, maxResults=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, pageToken=None, maxResults=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, pageToken=None, language=None, maxResults=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'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 "me" can be used to indicate the authenticated user. (required)

Returns:
  An object of the form:

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

<div class="method">
    <code class="details" id="list">list(userId, collection, orderBy=None, pageToken=None, maxResults=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 "me" 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'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.
  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 "nextPageToken" from the previous response.
  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.

Returns:
  An object of the form:

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

<div class="method">
    <code class="details" id="listByActivity">listByActivity(activityId, collection, pageToken=None, maxResults=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'd this activity.
      resharers - List all people who have reshared this activity.
  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 "nextPageToken" from the previous response.
  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.

Returns:
  An object of the form:

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

Returns:
  An object of the form:

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

</body></html>