<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="people_v1.html">Google People API</a> . <a href="people_v1.people.html">people</a> . <a href="people_v1.people.connections.html">connections</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#list">list(resourceName, pageSize=None, x__xgafv=None, pageToken=None, sortOrder=None, requestSyncToken=None, syncToken=None, requestMask_includeField=None)</a></code></p>
<p class="firstline">Provides a list of the authenticated user's contacts merged with any</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(resourceName, pageSize=None, x__xgafv=None, pageToken=None, sortOrder=None, requestSyncToken=None, syncToken=None, requestMask_includeField=None)</code>
  <pre>Provides a list of the authenticated user's contacts merged with any
linked profiles.

Args:
  resourceName: string, The resource name to return connections for. Only `people/me` is valid. (required)
  pageSize: integer, The number of connections to include in the response. Valid values are
between 1 and 2000, inclusive. Defaults to 100.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
  pageToken: string, The token of the page to be returned.
  sortOrder: string, The order in which the connections should be sorted. Defaults to
`LAST_MODIFIED_ASCENDING`.
  requestSyncToken: boolean, Whether the response should include a sync token, which can be used to get
all changes since the last request.
  syncToken: string, A sync token, returned by a previous call to `people.connections.list`.
Only resources changed since the sync token was created will be returned.
  requestMask_includeField: string, Required. Comma-separated list of person fields to be included in the
response. Each path should start with `person.`: for example,
`person.names` or `person.photos`.

Returns:
  An object of the form:

    {
    "totalPeople": 42, # DEPRECATED(Please use total_items). The total number of people in the list
        # without pagination.
    "nextPageToken": "A String", # The token that can be used to retrieve the next page of results.
    "connections": [ # The list of people that the requestor is connected to.
      { # Information about a person merged from various data sources such as the
          # authenticated user's contacts and profile data.
          #
          # Most fields can have multiple items. The items in a field have no guaranteed
          # order, but each non-empty field is guaranteed to have exactly one field with
          # `metadata.primary` set to true.
        "braggingRights": [ # The person's bragging rights.
          { # A person's bragging rights.
            "value": "A String", # The bragging rights; for example, `climbed mount everest`.
            "metadata": { # Metadata about a field. # Metadata about the bragging rights.
              "source": { # The source of a field. # The source of the field.
                "etag": "A String", # The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the
                    # source. Used for web cache validation. Only populated in
                    # person.metadata.sources.
                "type": "A String", # The source type.
                "id": "A String", # The unique identifier within the source type generated by the server.
                "profileMetadata": { # The read-only metadata about a profile. # Metadata about a source of type PROFILE.
                  "objectType": "A String", # The profile object type.
                },
              },
              "verified": True or False, # True if the field is verified; false if the field is unverified. A
                  # verified field is typically a name, email address, phone number, or
                  # website that has been confirmed to be owned by the person.
              "primary": True or False, # True if the field is the primary field; false if the field is a secondary
                  # field.
            },
          },
        ],
        "addresses": [ # The person's street addresses.
          { # A person's physical address. May be a P.O. box or street address. All fields
              # are optional.
            "formattedType": "A String", # The read-only type of the address translated and formatted in the viewer's
                # account locale or the `Accept-Language` HTTP header locale.
            "countryCode": "A String", # The [ISO 3166-1 alpha-2](http://www.iso.org/iso/country_codes.htm) country
                # code of the address.
            "city": "A String", # The city of the address.
            "formattedValue": "A String", # The unstructured value of the address. If this is not set by the user it
                # will be automatically constructed from structured values.
            "region": "A String", # The region of the address; for example, the state or province.
            "poBox": "A String", # The P.O. box of the address.
            "streetAddress": "A String", # The street address.
            "country": "A String", # The country of the address.
            "postalCode": "A String", # The postal code of the address.
            "extendedAddress": "A String", # The extended address of the address; for example, the apartment number.
            "type": "A String", # The type of the address. The type can be custom or predefined.
                # Possible values include, but are not limited to, the following:
                #
                # * `home`
                # * `work`
                # * `other`
            "metadata": { # Metadata about a field. # Metadata about the address.
              "source": { # The source of a field. # The source of the field.
                "etag": "A String", # The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the
                    # source. Used for web cache validation. Only populated in
                    # person.metadata.sources.
                "type": "A String", # The source type.
                "id": "A String", # The unique identifier within the source type generated by the server.
                "profileMetadata": { # The read-only metadata about a profile. # Metadata about a source of type PROFILE.
                  "objectType": "A String", # The profile object type.
                },
              },
              "verified": True or False, # True if the field is verified; false if the field is unverified. A
                  # verified field is typically a name, email address, phone number, or
                  # website that has been confirmed to be owned by the person.
              "primary": True or False, # True if the field is the primary field; false if the field is a secondary
                  # field.
            },
          },
        ],
        "nicknames": [ # The person's nicknames.
          { # A person's nickname.
            "type": "A String", # The type of the nickname.
            "value": "A String", # The nickname.
            "metadata": { # Metadata about a field. # Metadata about the nickname.
              "source": { # The source of a field. # The source of the field.
                "etag": "A String", # The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the
                    # source. Used for web cache validation. Only populated in
                    # person.metadata.sources.
                "type": "A String", # The source type.
                "id": "A String", # The unique identifier within the source type generated by the server.
                "profileMetadata": { # The read-only metadata about a profile. # Metadata about a source of type PROFILE.
                  "objectType": "A String", # The profile object type.
                },
              },
              "verified": True or False, # True if the field is verified; false if the field is unverified. A
                  # verified field is typically a name, email address, phone number, or
                  # website that has been confirmed to be owned by the person.
              "primary": True or False, # True if the field is the primary field; false if the field is a secondary
                  # field.
            },
          },
        ],
        "occupations": [ # The person's occupations.
          { # A person's occupation.
            "value": "A String", # The occupation; for example, `carpenter`.
            "metadata": { # Metadata about a field. # Metadata about the occupation.
              "source": { # The source of a field. # The source of the field.
                "etag": "A String", # The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the
                    # source. Used for web cache validation. Only populated in
                    # person.metadata.sources.
                "type": "A String", # The source type.
                "id": "A String", # The unique identifier within the source type generated by the server.
                "profileMetadata": { # The read-only metadata about a profile. # Metadata about a source of type PROFILE.
                  "objectType": "A String", # The profile object type.
                },
              },
              "verified": True or False, # True if the field is verified; false if the field is unverified. A
                  # verified field is typically a name, email address, phone number, or
                  # website that has been confirmed to be owned by the person.
              "primary": True or False, # True if the field is the primary field; false if the field is a secondary
                  # field.
            },
          },
        ],
        "phoneNumbers": [ # The person's phone numbers.
          { # A person's phone number.
            "formattedType": "A String", # The read-only type of the phone number translated and formatted in the
                # viewer's account locale or the the `Accept-Language` HTTP header locale.
            "canonicalForm": "A String", # The read-only canonicalized [ITU-T E.164](https://law.resource.org/pub/us/cfr/ibr/004/itu-t.E.164.1.2008.pdf)
                # form of the phone number.
            "type": "A String", # The type of the phone number. The type can be custom or predefined.
                # Possible values include, but are not limited to, the following:
                #
                # * `home`
                # * `work`
                # * `mobile`
                # * `homeFax`
                # * `workFax`
                # * `otherFax`
                # * `pager`
                # * `workMobile`
                # * `workPager`
                # * `main`
                # * `googleVoice`
                # * `other`
            "value": "A String", # The phone number.
            "metadata": { # Metadata about a field. # Metadata about the phone number.
              "source": { # The source of a field. # The source of the field.
                "etag": "A String", # The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the
                    # source. Used for web cache validation. Only populated in
                    # person.metadata.sources.
                "type": "A String", # The source type.
                "id": "A String", # The unique identifier within the source type generated by the server.
                "profileMetadata": { # The read-only metadata about a profile. # Metadata about a source of type PROFILE.
                  "objectType": "A String", # The profile object type.
                },
              },
              "verified": True or False, # True if the field is verified; false if the field is unverified. A
                  # verified field is typically a name, email address, phone number, or
                  # website that has been confirmed to be owned by the person.
              "primary": True or False, # True if the field is the primary field; false if the field is a secondary
                  # field.
            },
          },
        ],
        "names": [ # The person's names.
          { # A person's name. If the name is a mononym, the family name is empty.
            "phoneticMiddleName": "A String", # The middle name(s) spelled as they sound.
            "honorificPrefix": "A String", # The honorific prefixes, such as `Mrs.` or `Dr.`
            "phoneticFamilyName": "A String", # The family name spelled as it sounds.
            "displayName": "A String", # The read-only display name formatted according to the locale specified by
                # the viewer's account or the <code>Accept-Language</code> HTTP header.
            "displayNameLastFirst": "A String", # The read-only display name with the last name first formatted according to
                # the locale specified by the viewer's account or the
                # <code>Accept-Language</code> HTTP header.
            "middleName": "A String", # The middle name(s).
            "phoneticHonorificPrefix": "A String", # The honorific prefixes spelled as they sound.
            "familyName": "A String", # The family name.
            "phoneticFullName": "A String", # The full name spelled as it sounds.
            "phoneticGivenName": "A String", # The given name spelled as it sounds.
            "phoneticHonorificSuffix": "A String", # The honorific suffixes spelled as they sound.
            "givenName": "A String", # The given name.
            "honorificSuffix": "A String", # The honorific suffixes, such as `Jr.`
            "metadata": { # Metadata about a field. # Metadata about the name.
              "source": { # The source of a field. # The source of the field.
                "etag": "A String", # The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the
                    # source. Used for web cache validation. Only populated in
                    # person.metadata.sources.
                "type": "A String", # The source type.
                "id": "A String", # The unique identifier within the source type generated by the server.
                "profileMetadata": { # The read-only metadata about a profile. # Metadata about a source of type PROFILE.
                  "objectType": "A String", # The profile object type.
                },
              },
              "verified": True or False, # True if the field is verified; false if the field is unverified. A
                  # verified field is typically a name, email address, phone number, or
                  # website that has been confirmed to be owned by the person.
              "primary": True or False, # True if the field is the primary field; false if the field is a secondary
                  # field.
            },
          },
        ],
        "resourceName": "A String", # The resource name for the person, assigned by the server. An ASCII string
            # with a max length of 27 characters, in the form of `people/<person_id>`.
        "ageRanges": [ # The person's age ranges.
          { # A person's age range.
            "ageRange": "A String", # The age range.
            "metadata": { # Metadata about a field. # Metadata about the age range.
              "source": { # The source of a field. # The source of the field.
                "etag": "A String", # The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the
                    # source. Used for web cache validation. Only populated in
                    # person.metadata.sources.
                "type": "A String", # The source type.
                "id": "A String", # The unique identifier within the source type generated by the server.
                "profileMetadata": { # The read-only metadata about a profile. # Metadata about a source of type PROFILE.
                  "objectType": "A String", # The profile object type.
                },
              },
              "verified": True or False, # True if the field is verified; false if the field is unverified. A
                  # verified field is typically a name, email address, phone number, or
                  # website that has been confirmed to be owned by the person.
              "primary": True or False, # True if the field is the primary field; false if the field is a secondary
                  # field.
            },
          },
        ],
        "birthdays": [ # The person's birthdays.
          { # A person's birthday. At least one of the `date` and `text` fields are
              # specified. The `date` and `text` fields typically represent the same
              # date, but are not guaranteed to.
            "date": { # Represents a whole calendar date, for example a date of birth. The time # The date of the birthday.
                # of day and time zone are either specified elsewhere or are not
                # significant. The date is relative to the
                # [Proleptic Gregorian Calendar](https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar).
                # The day may be 0 to represent a year and month where the day is not
                # significant. The year may be 0 to represent a month and day independent
                # of year; for example, anniversary date.
              "month": 42, # Month of year. Must be from 1 to 12.
              "day": 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
                  # if specifying a year/month where the day is not significant.
              "year": 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
                  # a year.
            },
            "text": "A String", # A free-form string representing the user's birthday.
            "metadata": { # Metadata about a field. # Metadata about the birthday.
              "source": { # The source of a field. # The source of the field.
                "etag": "A String", # The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the
                    # source. Used for web cache validation. Only populated in
                    # person.metadata.sources.
                "type": "A String", # The source type.
                "id": "A String", # The unique identifier within the source type generated by the server.
                "profileMetadata": { # The read-only metadata about a profile. # Metadata about a source of type PROFILE.
                  "objectType": "A String", # The profile object type.
                },
              },
              "verified": True or False, # True if the field is verified; false if the field is unverified. A
                  # verified field is typically a name, email address, phone number, or
                  # website that has been confirmed to be owned by the person.
              "primary": True or False, # True if the field is the primary field; false if the field is a secondary
                  # field.
            },
          },
        ],
        "relations": [ # The person's relations.
          { # A person's relation to another person.
            "formattedType": "A String", # The type of the relation translated and formatted in the viewer's account
                # locale or the locale specified in the Accept-Language HTTP header.
            "metadata": { # Metadata about a field. # Metadata about the relation.
              "source": { # The source of a field. # The source of the field.
                "etag": "A String", # The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the
                    # source. Used for web cache validation. Only populated in
                    # person.metadata.sources.
                "type": "A String", # The source type.
                "id": "A String", # The unique identifier within the source type generated by the server.
                "profileMetadata": { # The read-only metadata about a profile. # Metadata about a source of type PROFILE.
                  "objectType": "A String", # The profile object type.
                },
              },
              "verified": True or False, # True if the field is verified; false if the field is unverified. A
                  # verified field is typically a name, email address, phone number, or
                  # website that has been confirmed to be owned by the person.
              "primary": True or False, # True if the field is the primary field; false if the field is a secondary
                  # field.
            },
            "type": "A String", # The person's relation to the other person. The type can be custom or predefined.
                # Possible values include, but are not limited to, the following values:
                #
                # * `spouse`
                # * `child`
                # * `mother`
                # * `father`
                # * `parent`
                # * `brother`
                # * `sister`
                # * `friend`
                # * `relative`
                # * `domesticPartner`
                # * `manager`
                # * `assistant`
                # * `referredBy`
                # * `partner`
            "person": "A String", # The name of the other person this relation refers to.
          },
        ],
        "etag": "A String", # The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the
            # resource. Used for web cache validation.
        "relationshipStatuses": [ # The person's relationship statuses.
          { # A person's read-only relationship status.
            "formattedValue": "A String", # The read-only value of the relationship status translated and formatted in
                # the viewer's account locale or the `Accept-Language` HTTP header locale.
            "value": "A String", # The relationship status. The value can be custom or predefined.
                # Possible values include, but are not limited to, the following:
                #
                # * `single`
                # * `inARelationship`
                # * `engaged`
                # * `married`
                # * `itsComplicated`
                # * `openRelationship`
                # * `widowed`
                # * `inDomesticPartnership`
                # * `inCivilUnion`
            "metadata": { # Metadata about a field. # Metadata about the relationship status.
              "source": { # The source of a field. # The source of the field.
                "etag": "A String", # The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the
                    # source. Used for web cache validation. Only populated in
                    # person.metadata.sources.
                "type": "A String", # The source type.
                "id": "A String", # The unique identifier within the source type generated by the server.
                "profileMetadata": { # The read-only metadata about a profile. # Metadata about a source of type PROFILE.
                  "objectType": "A String", # The profile object type.
                },
              },
              "verified": True or False, # True if the field is verified; false if the field is unverified. A
                  # verified field is typically a name, email address, phone number, or
                  # website that has been confirmed to be owned by the person.
              "primary": True or False, # True if the field is the primary field; false if the field is a secondary
                  # field.
            },
          },
        ],
        "skills": [ # The person's skills.
          { # A skill that the person has.
            "value": "A String", # The skill; for example, `underwater basket weaving`.
            "metadata": { # Metadata about a field. # Metadata about the skill.
              "source": { # The source of a field. # The source of the field.
                "etag": "A String", # The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the
                    # source. Used for web cache validation. Only populated in
                    # person.metadata.sources.
                "type": "A String", # The source type.
                "id": "A String", # The unique identifier within the source type generated by the server.
                "profileMetadata": { # The read-only metadata about a profile. # Metadata about a source of type PROFILE.
                  "objectType": "A String", # The profile object type.
                },
              },
              "verified": True or False, # True if the field is verified; false if the field is unverified. A
                  # verified field is typically a name, email address, phone number, or
                  # website that has been confirmed to be owned by the person.
              "primary": True or False, # True if the field is the primary field; false if the field is a secondary
                  # field.
            },
          },
        ],
        "imClients": [ # The person's instant messaging clients.
          { # A person's instant messaging client.
            "username": "A String", # The user name used in the IM client.
            "formattedType": "A String", # The read-only type of the IM client translated and formatted in the
                # viewer's account locale or the `Accept-Language` HTTP header locale.
            "protocol": "A String", # The protocol of the IM client. The protocol can be custom or predefined.
                # Possible values include, but are not limited to, the following:
                #
                # * `aim`
                # * `msn`
                # * `yahoo`
                # * `skype`
                # * `qq`
                # * `googleTalk`
                # * `icq`
                # * `jabber`
                # * `netMeeting`
            "formattedProtocol": "A String", # The read-only protocol of the IM client formatted in the viewer's account
                # locale or the `Accept-Language` HTTP header locale.
            "type": "A String", # The type of the IM client. The type can be custom or predefined.
                # Possible values include, but are not limited to, the following:
                #
                # * `home`
                # * `work`
                # * `other`
            "metadata": { # Metadata about a field. # Metadata about the IM client.
              "source": { # The source of a field. # The source of the field.
                "etag": "A String", # The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the
                    # source. Used for web cache validation. Only populated in
                    # person.metadata.sources.
                "type": "A String", # The source type.
                "id": "A String", # The unique identifier within the source type generated by the server.
                "profileMetadata": { # The read-only metadata about a profile. # Metadata about a source of type PROFILE.
                  "objectType": "A String", # The profile object type.
                },
              },
              "verified": True or False, # True if the field is verified; false if the field is unverified. A
                  # verified field is typically a name, email address, phone number, or
                  # website that has been confirmed to be owned by the person.
              "primary": True or False, # True if the field is the primary field; false if the field is a secondary
                  # field.
            },
          },
        ],
        "events": [ # The person's events.
          { # An event related to the person.
            "date": { # Represents a whole calendar date, for example a date of birth. The time # The date of the event.
                # of day and time zone are either specified elsewhere or are not
                # significant. The date is relative to the
                # [Proleptic Gregorian Calendar](https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar).
                # The day may be 0 to represent a year and month where the day is not
                # significant. The year may be 0 to represent a month and day independent
                # of year; for example, anniversary date.
              "month": 42, # Month of year. Must be from 1 to 12.
              "day": 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
                  # if specifying a year/month where the day is not significant.
              "year": 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
                  # a year.
            },
            "formattedType": "A String", # The read-only type of the event translated and formatted in the
                # viewer's account locale or the `Accept-Language` HTTP header locale.
            "type": "A String", # The type of the event. The type can be custom or predefined.
                # Possible values include, but are not limited to, the following:
                #
                # * `anniversary`
                # * `other`
            "metadata": { # Metadata about a field. # Metadata about the event.
              "source": { # The source of a field. # The source of the field.
                "etag": "A String", # The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the
                    # source. Used for web cache validation. Only populated in
                    # person.metadata.sources.
                "type": "A String", # The source type.
                "id": "A String", # The unique identifier within the source type generated by the server.
                "profileMetadata": { # The read-only metadata about a profile. # Metadata about a source of type PROFILE.
                  "objectType": "A String", # The profile object type.
                },
              },
              "verified": True or False, # True if the field is verified; false if the field is unverified. A
                  # verified field is typically a name, email address, phone number, or
                  # website that has been confirmed to be owned by the person.
              "primary": True or False, # True if the field is the primary field; false if the field is a secondary
                  # field.
            },
          },
        ],
        "metadata": { # The read-only metadata about a person. # Metadata about the person.
          "previousResourceNames": [ # Any former resource names this person has had. Populated only for
              # [`connections.list`](/people/api/rest/v1/people.connections/list) requests
              # that include a sync token.
              #
              # The resource name may change when adding or removing fields that link a
              # contact and profile such as a verified email, verified phone number, or
              # profile URL.
            "A String",
          ],
          "sources": [ # The sources of data for the person.
            { # The source of a field.
              "etag": "A String", # The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the
                  # source. Used for web cache validation. Only populated in
                  # person.metadata.sources.
              "type": "A String", # The source type.
              "id": "A String", # The unique identifier within the source type generated by the server.
              "profileMetadata": { # The read-only metadata about a profile. # Metadata about a source of type PROFILE.
                "objectType": "A String", # The profile object type.
              },
            },
          ],
          "linkedPeopleResourceNames": [ # Resource names of people linked to this resource.
            "A String",
          ],
          "deleted": True or False, # True if the person resource has been deleted. Populated only for
              # [`connections.list`](/people/api/rest/v1/people.connections/list) requests
              # that include a sync token.
          "objectType": "A String", # DEPRECATED(Please read person.metadata.sources.profile_metadata instead).
              # The type of the person object.
        },
        "interests": [ # The person's interests.
          { # One of the person's interests.
            "value": "A String", # The interest; for example, `stargazing`.
            "metadata": { # Metadata about a field. # Metadata about the interest.
              "source": { # The source of a field. # The source of the field.
                "etag": "A String", # The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the
                    # source. Used for web cache validation. Only populated in
                    # person.metadata.sources.
                "type": "A String", # The source type.
                "id": "A String", # The unique identifier within the source type generated by the server.
                "profileMetadata": { # The read-only metadata about a profile. # Metadata about a source of type PROFILE.
                  "objectType": "A String", # The profile object type.
                },
              },
              "verified": True or False, # True if the field is verified; false if the field is unverified. A
                  # verified field is typically a name, email address, phone number, or
                  # website that has been confirmed to be owned by the person.
              "primary": True or False, # True if the field is the primary field; false if the field is a secondary
                  # field.
            },
          },
        ],
        "photos": [ # The person's photos.
          { # A person's read-only photo. A picture shown next to the person's name to
              # help others recognize the person.
            "url": "A String", # The URL of the photo. You can change the desired size by appending a query
                # parameter `sz=<size>` at the end of the url. Example:
                # `https://lh3.googleusercontent.com/-T_wVWLlmg7w/AAAAAAAAAAI/AAAAAAAABa8/00gzXvDBYqw/s100/photo.jpg?sz=50`
            "metadata": { # Metadata about a field. # Metadata about the photo.
              "source": { # The source of a field. # The source of the field.
                "etag": "A String", # The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the
                    # source. Used for web cache validation. Only populated in
                    # person.metadata.sources.
                "type": "A String", # The source type.
                "id": "A String", # The unique identifier within the source type generated by the server.
                "profileMetadata": { # The read-only metadata about a profile. # Metadata about a source of type PROFILE.
                  "objectType": "A String", # The profile object type.
                },
              },
              "verified": True or False, # True if the field is verified; false if the field is unverified. A
                  # verified field is typically a name, email address, phone number, or
                  # website that has been confirmed to be owned by the person.
              "primary": True or False, # True if the field is the primary field; false if the field is a secondary
                  # field.
            },
          },
        ],
        "residences": [ # The person's residences.
          { # A person's past or current residence.
            "current": True or False, # True if the residence is the person's current residence;
                # false if the residence is a past residence.
            "value": "A String", # The address of the residence.
            "metadata": { # Metadata about a field. # Metadata about the residence.
              "source": { # The source of a field. # The source of the field.
                "etag": "A String", # The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the
                    # source. Used for web cache validation. Only populated in
                    # person.metadata.sources.
                "type": "A String", # The source type.
                "id": "A String", # The unique identifier within the source type generated by the server.
                "profileMetadata": { # The read-only metadata about a profile. # Metadata about a source of type PROFILE.
                  "objectType": "A String", # The profile object type.
                },
              },
              "verified": True or False, # True if the field is verified; false if the field is unverified. A
                  # verified field is typically a name, email address, phone number, or
                  # website that has been confirmed to be owned by the person.
              "primary": True or False, # True if the field is the primary field; false if the field is a secondary
                  # field.
            },
          },
        ],
        "relationshipInterests": [ # The kind of relationship the person is looking for.
          { # A person's read-only relationship interest .
            "formattedValue": "A String", # The value of the relationship interest translated and formatted in the
                # viewer's account locale or the locale specified in the Accept-Language
                # HTTP header.
            "value": "A String", # The kind of relationship the person is looking for. The value can be custom
                # or predefined. Possible values include, but are not limited to, the
                # following values:
                #
                # * `friend`
                # * `date`
                # * `relationship`
                # * `networking`
            "metadata": { # Metadata about a field. # Metadata about the relationship interest.
              "source": { # The source of a field. # The source of the field.
                "etag": "A String", # The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the
                    # source. Used for web cache validation. Only populated in
                    # person.metadata.sources.
                "type": "A String", # The source type.
                "id": "A String", # The unique identifier within the source type generated by the server.
                "profileMetadata": { # The read-only metadata about a profile. # Metadata about a source of type PROFILE.
                  "objectType": "A String", # The profile object type.
                },
              },
              "verified": True or False, # True if the field is verified; false if the field is unverified. A
                  # verified field is typically a name, email address, phone number, or
                  # website that has been confirmed to be owned by the person.
              "primary": True or False, # True if the field is the primary field; false if the field is a secondary
                  # field.
            },
          },
        ],
        "coverPhotos": [ # The person's cover photos.
          { # A person's read-only cover photo. A large image shown on the person's
              # profile page that represents who they are or what they care about.
            "default": True or False, # True if the cover photo is the default cover photo;
                # false if the cover photo is a user-provided cover photo.
            "url": "A String", # The URL of the cover photo.
            "metadata": { # Metadata about a field. # Metadata about the cover photo.
              "source": { # The source of a field. # The source of the field.
                "etag": "A String", # The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the
                    # source. Used for web cache validation. Only populated in
                    # person.metadata.sources.
                "type": "A String", # The source type.
                "id": "A String", # The unique identifier within the source type generated by the server.
                "profileMetadata": { # The read-only metadata about a profile. # Metadata about a source of type PROFILE.
                  "objectType": "A String", # The profile object type.
                },
              },
              "verified": True or False, # True if the field is verified; false if the field is unverified. A
                  # verified field is typically a name, email address, phone number, or
                  # website that has been confirmed to be owned by the person.
              "primary": True or False, # True if the field is the primary field; false if the field is a secondary
                  # field.
            },
          },
        ],
        "locales": [ # The person's locale preferences.
          { # A person's locale preference.
            "value": "A String", # The well-formed [IETF BCP 47](https://tools.ietf.org/html/bcp47)
                # language tag representing the locale.
            "metadata": { # Metadata about a field. # Metadata about the locale.
              "source": { # The source of a field. # The source of the field.
                "etag": "A String", # The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the
                    # source. Used for web cache validation. Only populated in
                    # person.metadata.sources.
                "type": "A String", # The source type.
                "id": "A String", # The unique identifier within the source type generated by the server.
                "profileMetadata": { # The read-only metadata about a profile. # Metadata about a source of type PROFILE.
                  "objectType": "A String", # The profile object type.
                },
              },
              "verified": True or False, # True if the field is verified; false if the field is unverified. A
                  # verified field is typically a name, email address, phone number, or
                  # website that has been confirmed to be owned by the person.
              "primary": True or False, # True if the field is the primary field; false if the field is a secondary
                  # field.
            },
          },
        ],
        "organizations": [ # The person's past or current organizations.
          { # A person's past or current organization. Overlapping date ranges are
              # permitted.
            "startDate": { # Represents a whole calendar date, for example a date of birth. The time # The start date when the person joined the organization.
                # of day and time zone are either specified elsewhere or are not
                # significant. The date is relative to the
                # [Proleptic Gregorian Calendar](https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar).
                # The day may be 0 to represent a year and month where the day is not
                # significant. The year may be 0 to represent a month and day independent
                # of year; for example, anniversary date.
              "month": 42, # Month of year. Must be from 1 to 12.
              "day": 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
                  # if specifying a year/month where the day is not significant.
              "year": 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
                  # a year.
            },
            "domain": "A String", # The domain name associated with the organization; for example, `google.com`.
            "endDate": { # Represents a whole calendar date, for example a date of birth. The time # The end date when the person left the organization.
                # of day and time zone are either specified elsewhere or are not
                # significant. The date is relative to the
                # [Proleptic Gregorian Calendar](https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar).
                # The day may be 0 to represent a year and month where the day is not
                # significant. The year may be 0 to represent a month and day independent
                # of year; for example, anniversary date.
              "month": 42, # Month of year. Must be from 1 to 12.
              "day": 42, # Day of month. Must be from 1 to 31 and valid for the year and month, or 0
                  # if specifying a year/month where the day is not significant.
              "year": 42, # Year of date. Must be from 1 to 9999, or 0 if specifying a date without
                  # a year.
            },
            "name": "A String", # The name of the organization.
            "title": "A String", # The person's job title at the organization.
            "symbol": "A String", # The symbol associated with the organization; for example, a stock ticker
                # symbol, abbreviation, or acronym.
            "current": True or False, # True if the organization is the person's current organization;
                # false if the organization is a past organization.
            "jobDescription": "A String", # The person's job description at the organization.
            "location": "A String", # The location of the organization office the person works at.
            "department": "A String", # The person's department at the organization.
            "formattedType": "A String", # The read-only type of the organization translated and formatted in the
                # viewer's account locale or the `Accept-Language` HTTP header locale.
            "type": "A String", # The type of the organization. The type can be custom or predefined.
                # Possible values include, but are not limited to, the following:
                #
                # * `work`
                # * `school`
            "phoneticName": "A String", # The phonetic name of the organization.
            "metadata": { # Metadata about a field. # Metadata about the organization.
              "source": { # The source of a field. # The source of the field.
                "etag": "A String", # The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the
                    # source. Used for web cache validation. Only populated in
                    # person.metadata.sources.
                "type": "A String", # The source type.
                "id": "A String", # The unique identifier within the source type generated by the server.
                "profileMetadata": { # The read-only metadata about a profile. # Metadata about a source of type PROFILE.
                  "objectType": "A String", # The profile object type.
                },
              },
              "verified": True or False, # True if the field is verified; false if the field is unverified. A
                  # verified field is typically a name, email address, phone number, or
                  # website that has been confirmed to be owned by the person.
              "primary": True or False, # True if the field is the primary field; false if the field is a secondary
                  # field.
            },
          },
        ],
        "biographies": [ # The person's biographies.
          { # A person's short biography.
            "contentType": "A String", # The content type of the biography.
            "value": "A String", # The short biography.
            "metadata": { # Metadata about a field. # Metadata about the biography.
              "source": { # The source of a field. # The source of the field.
                "etag": "A String", # The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the
                    # source. Used for web cache validation. Only populated in
                    # person.metadata.sources.
                "type": "A String", # The source type.
                "id": "A String", # The unique identifier within the source type generated by the server.
                "profileMetadata": { # The read-only metadata about a profile. # Metadata about a source of type PROFILE.
                  "objectType": "A String", # The profile object type.
                },
              },
              "verified": True or False, # True if the field is verified; false if the field is unverified. A
                  # verified field is typically a name, email address, phone number, or
                  # website that has been confirmed to be owned by the person.
              "primary": True or False, # True if the field is the primary field; false if the field is a secondary
                  # field.
            },
          },
        ],
        "memberships": [ # The person's group memberships.
          { # A person's read-only membership in a group.
            "contactGroupMembership": { # A Google contact group membership. # The contact group membership.
              "contactGroupId": "A String", # The contact group ID for the contact group membership. The contact group
                  # ID can be custom or predefined. Possible values include, but are not
                  # limited to, the following:
                  #
                  # *  `myContacts`
                  # *  `starred`
                  # *  A numerical ID for user-created groups.
            },
            "domainMembership": { # A Google Apps Domain membership. # The domain membership.
              "inViewerDomain": True or False, # True if the person is in the viewer's Google Apps domain.
            },
            "metadata": { # Metadata about a field. # Metadata about the membership.
              "source": { # The source of a field. # The source of the field.
                "etag": "A String", # The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the
                    # source. Used for web cache validation. Only populated in
                    # person.metadata.sources.
                "type": "A String", # The source type.
                "id": "A String", # The unique identifier within the source type generated by the server.
                "profileMetadata": { # The read-only metadata about a profile. # Metadata about a source of type PROFILE.
                  "objectType": "A String", # The profile object type.
                },
              },
              "verified": True or False, # True if the field is verified; false if the field is unverified. A
                  # verified field is typically a name, email address, phone number, or
                  # website that has been confirmed to be owned by the person.
              "primary": True or False, # True if the field is the primary field; false if the field is a secondary
                  # field.
            },
          },
        ],
        "taglines": [ # The person's taglines.
          { # A read-only brief one-line description of the person.
            "value": "A String", # The tagline.
            "metadata": { # Metadata about a field. # Metadata about the tagline.
              "source": { # The source of a field. # The source of the field.
                "etag": "A String", # The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the
                    # source. Used for web cache validation. Only populated in
                    # person.metadata.sources.
                "type": "A String", # The source type.
                "id": "A String", # The unique identifier within the source type generated by the server.
                "profileMetadata": { # The read-only metadata about a profile. # Metadata about a source of type PROFILE.
                  "objectType": "A String", # The profile object type.
                },
              },
              "verified": True or False, # True if the field is verified; false if the field is unverified. A
                  # verified field is typically a name, email address, phone number, or
                  # website that has been confirmed to be owned by the person.
              "primary": True or False, # True if the field is the primary field; false if the field is a secondary
                  # field.
            },
          },
        ],
        "urls": [ # The person's associated URLs.
          { # A person's associated URLs.
            "formattedType": "A String", # The read-only type of the URL translated and formatted in the viewer's
                # account locale or the `Accept-Language` HTTP header locale.
            "type": "A String", # The type of the URL. The type can be custom or predefined.
                # Possible values include, but are not limited to, the following:
                #
                # * `home`
                # * `work`
                # * `blog`
                # * `profile`
                # * `homePage`
                # * `ftp`
                # * `reservations`
                # * `appInstallPage`: website for a Google+ application.
                # * `other`
            "value": "A String", # The URL.
            "metadata": { # Metadata about a field. # Metadata about the URL.
              "source": { # The source of a field. # The source of the field.
                "etag": "A String", # The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the
                    # source. Used for web cache validation. Only populated in
                    # person.metadata.sources.
                "type": "A String", # The source type.
                "id": "A String", # The unique identifier within the source type generated by the server.
                "profileMetadata": { # The read-only metadata about a profile. # Metadata about a source of type PROFILE.
                  "objectType": "A String", # The profile object type.
                },
              },
              "verified": True or False, # True if the field is verified; false if the field is unverified. A
                  # verified field is typically a name, email address, phone number, or
                  # website that has been confirmed to be owned by the person.
              "primary": True or False, # True if the field is the primary field; false if the field is a secondary
                  # field.
            },
          },
        ],
        "ageRange": "A String", # DEPRECATED(Please read person.age_ranges instead). The person's age range.
        "genders": [ # The person's genders.
          { # A person's gender.
            "formattedValue": "A String", # The read-only value of the gender translated and formatted in the viewer's
                # account locale or the `Accept-Language` HTTP header locale.
            "value": "A String", # The gender for the person. The gender can be custom or predefined.
                # Possible values include, but are not limited to, the
                # following:
                #
                # * `male`
                # * `female`
                # * `other`
                # * `unknown`
            "metadata": { # Metadata about a field. # Metadata about the gender.
              "source": { # The source of a field. # The source of the field.
                "etag": "A String", # The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the
                    # source. Used for web cache validation. Only populated in
                    # person.metadata.sources.
                "type": "A String", # The source type.
                "id": "A String", # The unique identifier within the source type generated by the server.
                "profileMetadata": { # The read-only metadata about a profile. # Metadata about a source of type PROFILE.
                  "objectType": "A String", # The profile object type.
                },
              },
              "verified": True or False, # True if the field is verified; false if the field is unverified. A
                  # verified field is typically a name, email address, phone number, or
                  # website that has been confirmed to be owned by the person.
              "primary": True or False, # True if the field is the primary field; false if the field is a secondary
                  # field.
            },
          },
        ],
        "emailAddresses": [ # The person's email addresses.
          { # A person's email address.
            "type": "A String", # The type of the email address. The type can be custom or predefined.
                # Possible values include, but are not limited to, the following:
                #
                # * `home`
                # * `work`
                # * `other`
            "formattedType": "A String", # The read-only type of the email address translated and formatted in the
                # viewer's account locale or the `Accept-Language` HTTP header locale.
            "displayName": "A String", # The display name of the email.
            "value": "A String", # The email address.
            "metadata": { # Metadata about a field. # Metadata about the email address.
              "source": { # The source of a field. # The source of the field.
                "etag": "A String", # The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the
                    # source. Used for web cache validation. Only populated in
                    # person.metadata.sources.
                "type": "A String", # The source type.
                "id": "A String", # The unique identifier within the source type generated by the server.
                "profileMetadata": { # The read-only metadata about a profile. # Metadata about a source of type PROFILE.
                  "objectType": "A String", # The profile object type.
                },
              },
              "verified": True or False, # True if the field is verified; false if the field is unverified. A
                  # verified field is typically a name, email address, phone number, or
                  # website that has been confirmed to be owned by the person.
              "primary": True or False, # True if the field is the primary field; false if the field is a secondary
                  # field.
            },
          },
        ],
      },
    ],
    "nextSyncToken": "A String", # The token that can be used to retrieve changes since the last request.
    "totalItems": 42, # The total number of items in the list without pagination.
  }</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>