<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">People API</a> . <a href="people_v1.otherContacts.html">otherContacts</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#copyOtherContactToMyContactsGroup">copyOtherContactToMyContactsGroup(resourceName, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Copies an "Other contact" to a new contact in the user's "myContacts" group</p>
<p class="toc_element">
  <code><a href="#list">list(pageSize=None, pageToken=None, readMask=None, requestSyncToken=None, syncToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">List all "Other contacts", that is contacts that are not in a contact group. "Other contacts" are typically auto created contacts from interactions.</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="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="copyOtherContactToMyContactsGroup">copyOtherContactToMyContactsGroup(resourceName, body=None, x__xgafv=None)</code>
  <pre>Copies an &quot;Other contact&quot; to a new contact in the user&#x27;s &quot;myContacts&quot; group

Args:
  resourceName: string, Required. The resource name of the &quot;Other contact&quot; to copy. (required)
  body: object, The request body.
    The object takes the form of:

{ # A request to copy an &quot;Other contact&quot; to my contacts group.
  &quot;copyMask&quot;: &quot;A String&quot;, # Required. A field mask to restrict which fields are copied into the new contact. Valid values are: * emailAddresses * names * phoneNumbers
  &quot;readMask&quot;: &quot;A String&quot;, # Optional. A field mask to restrict which fields on the person are returned. Multiple fields can be specified by separating them with commas. Defaults to the copy mask with metadata and membership fields if not set. Valid values are: * addresses * ageRanges * biographies * birthdays * calendarUrls * clientData * coverPhotos * emailAddresses * events * externalIds * genders * imClients * interests * locales * locations * memberships * metadata * miscKeywords * names * nicknames * occupations * organizations * phoneNumbers * photos * relations * sipAddresses * skills * urls * userDefined
  &quot;sources&quot;: [ # Optional. A mask of what source types to return. Defaults to READ_SOURCE_TYPE_CONTACT and READ_SOURCE_TYPE_PROFILE if not set.
    &quot;A String&quot;,
  ],
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Information about a person merged from various data sources such as the authenticated user&#x27;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.
  &quot;addresses&quot;: [ # The person&#x27;s street addresses.
    { # A person&#x27;s physical address. May be a P.O. box or street address. All fields are optional.
      &quot;city&quot;: &quot;A String&quot;, # The city of the address.
      &quot;country&quot;: &quot;A String&quot;, # The country of the address.
      &quot;countryCode&quot;: &quot;A String&quot;, # The [ISO 3166-1 alpha-2](http://www.iso.org/iso/country_codes.htm) country code of the address.
      &quot;extendedAddress&quot;: &quot;A String&quot;, # The extended address of the address; for example, the apartment number.
      &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
      &quot;formattedValue&quot;: &quot;A String&quot;, # The unstructured value of the address. If this is not set by the user it will be automatically constructed from structured values.
      &quot;metadata&quot;: { # Metadata about a field. # Metadata about the address.
        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
        &quot;source&quot;: { # The source of a field. # The source of the field.
          &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
          &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
            &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
            &quot;userTypes&quot;: [ # Output only. The user types.
              &quot;A String&quot;,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # The source type.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
        },
        &quot;verified&quot;: True or False, # Output only. 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.
      },
      &quot;poBox&quot;: &quot;A String&quot;, # The P.O. box of the address.
      &quot;postalCode&quot;: &quot;A String&quot;, # The postal code of the address.
      &quot;region&quot;: &quot;A String&quot;, # The region of the address; for example, the state or province.
      &quot;streetAddress&quot;: &quot;A String&quot;, # The street address.
      &quot;type&quot;: &quot;A String&quot;, # The type of the address. The type can be custom or one of these predefined values: * `home` * `work` * `other`
    },
  ],
  &quot;ageRange&quot;: &quot;A String&quot;, # Output only. **DEPRECATED** (Please use `person.ageRanges` instead) The person&#x27;s age range.
  &quot;ageRanges&quot;: [ # Output only. The person&#x27;s age ranges.
    { # A person&#x27;s age range.
      &quot;ageRange&quot;: &quot;A String&quot;, # The age range.
      &quot;metadata&quot;: { # Metadata about a field. # Metadata about the age range.
        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
        &quot;source&quot;: { # The source of a field. # The source of the field.
          &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
          &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
            &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
            &quot;userTypes&quot;: [ # Output only. The user types.
              &quot;A String&quot;,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # The source type.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
        },
        &quot;verified&quot;: True or False, # Output only. 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.
      },
    },
  ],
  &quot;biographies&quot;: [ # The person&#x27;s biographies. This field is a singleton for contact sources.
    { # A person&#x27;s short biography.
      &quot;contentType&quot;: &quot;A String&quot;, # The content type of the biography.
      &quot;metadata&quot;: { # Metadata about a field. # Metadata about the biography.
        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
        &quot;source&quot;: { # The source of a field. # The source of the field.
          &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
          &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
            &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
            &quot;userTypes&quot;: [ # Output only. The user types.
              &quot;A String&quot;,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # The source type.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
        },
        &quot;verified&quot;: True or False, # Output only. 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.
      },
      &quot;value&quot;: &quot;A String&quot;, # The short biography.
    },
  ],
  &quot;birthdays&quot;: [ # The person&#x27;s birthdays. This field is a singleton for contact sources.
    { # A person&#x27;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.
      &quot;date&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # The date of the birthday.
        &quot;day&quot;: 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn&#x27;t significant.
        &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
        &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
      },
      &quot;metadata&quot;: { # Metadata about a field. # Metadata about the birthday.
        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
        &quot;source&quot;: { # The source of a field. # The source of the field.
          &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
          &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
            &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
            &quot;userTypes&quot;: [ # Output only. The user types.
              &quot;A String&quot;,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # The source type.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
        },
        &quot;verified&quot;: True or False, # Output only. 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.
      },
      &quot;text&quot;: &quot;A String&quot;, # A free-form string representing the user&#x27;s birthday.
    },
  ],
  &quot;braggingRights&quot;: [ # **DEPRECATED**: No data will be returned The person&#x27;s bragging rights.
    { # **DEPRECATED**: No data will be returned A person&#x27;s bragging rights.
      &quot;metadata&quot;: { # Metadata about a field. # Metadata about the bragging rights.
        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
        &quot;source&quot;: { # The source of a field. # The source of the field.
          &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
          &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
            &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
            &quot;userTypes&quot;: [ # Output only. The user types.
              &quot;A String&quot;,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # The source type.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
        },
        &quot;verified&quot;: True or False, # Output only. 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.
      },
      &quot;value&quot;: &quot;A String&quot;, # The bragging rights; for example, `climbed mount everest`.
    },
  ],
  &quot;calendarUrls&quot;: [ # The person&#x27;s calendar URLs.
    { # A person&#x27;s calendar URL.
      &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the calendar URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
      &quot;metadata&quot;: { # Metadata about a field. # Metadata about the calendar URL.
        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
        &quot;source&quot;: { # The source of a field. # The source of the field.
          &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
          &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
            &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
            &quot;userTypes&quot;: [ # Output only. The user types.
              &quot;A String&quot;,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # The source type.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
        },
        &quot;verified&quot;: True or False, # Output only. 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.
      },
      &quot;type&quot;: &quot;A String&quot;, # The type of the calendar URL. The type can be custom or one of these predefined values: * `home` * `freeBusy` * `work`
      &quot;url&quot;: &quot;A String&quot;, # The calendar URL.
    },
  ],
  &quot;clientData&quot;: [ # The person&#x27;s client data.
    { # Arbitrary client data that is populated by clients. Duplicate keys and values are allowed.
      &quot;key&quot;: &quot;A String&quot;, # The client specified key of the client data.
      &quot;metadata&quot;: { # Metadata about a field. # Metadata about the client data.
        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
        &quot;source&quot;: { # The source of a field. # The source of the field.
          &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
          &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
            &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
            &quot;userTypes&quot;: [ # Output only. The user types.
              &quot;A String&quot;,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # The source type.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
        },
        &quot;verified&quot;: True or False, # Output only. 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.
      },
      &quot;value&quot;: &quot;A String&quot;, # The client specified value of the client data.
    },
  ],
  &quot;coverPhotos&quot;: [ # Output only. The person&#x27;s cover photos.
    { # A person&#x27;s cover photo. A large image shown on the person&#x27;s profile page that represents who they are or what they care about.
      &quot;default&quot;: True or False, # True if the cover photo is the default cover photo; false if the cover photo is a user-provided cover photo.
      &quot;metadata&quot;: { # Metadata about a field. # Metadata about the cover photo.
        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
        &quot;source&quot;: { # The source of a field. # The source of the field.
          &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
          &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
            &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
            &quot;userTypes&quot;: [ # Output only. The user types.
              &quot;A String&quot;,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # The source type.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
        },
        &quot;verified&quot;: True or False, # Output only. 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.
      },
      &quot;url&quot;: &quot;A String&quot;, # The URL of the cover photo.
    },
  ],
  &quot;emailAddresses&quot;: [ # The person&#x27;s email addresses.
    { # A person&#x27;s email address.
      &quot;displayName&quot;: &quot;A String&quot;, # The display name of the email.
      &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the email address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
      &quot;metadata&quot;: { # Metadata about a field. # Metadata about the email address.
        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
        &quot;source&quot;: { # The source of a field. # The source of the field.
          &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
          &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
            &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
            &quot;userTypes&quot;: [ # Output only. The user types.
              &quot;A String&quot;,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # The source type.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
        },
        &quot;verified&quot;: True or False, # Output only. 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.
      },
      &quot;type&quot;: &quot;A String&quot;, # The type of the email address. The type can be custom or one of these predefined values: * `home` * `work` * `other`
      &quot;value&quot;: &quot;A String&quot;, # The email address.
    },
  ],
  &quot;etag&quot;: &quot;A String&quot;, # The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the resource. Used for web cache validation.
  &quot;events&quot;: [ # The person&#x27;s events.
    { # An event related to the person.
      &quot;date&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # The date of the event.
        &quot;day&quot;: 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn&#x27;t significant.
        &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
        &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
      },
      &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
      &quot;metadata&quot;: { # Metadata about a field. # Metadata about the event.
        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
        &quot;source&quot;: { # The source of a field. # The source of the field.
          &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
          &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
            &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
            &quot;userTypes&quot;: [ # Output only. The user types.
              &quot;A String&quot;,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # The source type.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
        },
        &quot;verified&quot;: True or False, # Output only. 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.
      },
      &quot;type&quot;: &quot;A String&quot;, # The type of the event. The type can be custom or one of these predefined values: * `anniversary` * `other`
    },
  ],
  &quot;externalIds&quot;: [ # The person&#x27;s external IDs.
    { # An identifier from an external entity related to the person.
      &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
      &quot;metadata&quot;: { # Metadata about a field. # Metadata about the external ID.
        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
        &quot;source&quot;: { # The source of a field. # The source of the field.
          &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
          &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
            &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
            &quot;userTypes&quot;: [ # Output only. The user types.
              &quot;A String&quot;,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # The source type.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
        },
        &quot;verified&quot;: True or False, # Output only. 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.
      },
      &quot;type&quot;: &quot;A String&quot;, # The type of the external ID. The type can be custom or one of these predefined values: * `account` * `customer` * `loginId` * `network` * `organization`
      &quot;value&quot;: &quot;A String&quot;, # The value of the external ID.
    },
  ],
  &quot;fileAses&quot;: [ # The person&#x27;s file-ases.
    { # The name that should be used to sort the person in a list.
      &quot;metadata&quot;: { # Metadata about a field. # Metadata about the file-as.
        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
        &quot;source&quot;: { # The source of a field. # The source of the field.
          &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
          &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
            &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
            &quot;userTypes&quot;: [ # Output only. The user types.
              &quot;A String&quot;,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # The source type.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
        },
        &quot;verified&quot;: True or False, # Output only. 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.
      },
      &quot;value&quot;: &quot;A String&quot;, # The file-as value
    },
  ],
  &quot;genders&quot;: [ # The person&#x27;s genders. This field is a singleton for contact sources.
    { # A person&#x27;s gender.
      &quot;addressMeAs&quot;: &quot;A String&quot;, # The type of pronouns that should be used to address the person. The value can be custom or one of these predefined values: * `male` * `female` * `other`
      &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the gender translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale. Unspecified or custom value are not localized.
      &quot;metadata&quot;: { # Metadata about a field. # Metadata about the gender.
        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
        &quot;source&quot;: { # The source of a field. # The source of the field.
          &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
          &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
            &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
            &quot;userTypes&quot;: [ # Output only. The user types.
              &quot;A String&quot;,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # The source type.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
        },
        &quot;verified&quot;: True or False, # Output only. 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.
      },
      &quot;value&quot;: &quot;A String&quot;, # The gender for the person. The gender can be custom or one of these predefined values: * `male` * `female` * `unspecified`
    },
  ],
  &quot;imClients&quot;: [ # The person&#x27;s instant messaging clients.
    { # A person&#x27;s instant messaging client.
      &quot;formattedProtocol&quot;: &quot;A String&quot;, # Output only. The protocol of the IM client formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
      &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the IM client translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
      &quot;metadata&quot;: { # Metadata about a field. # Metadata about the IM client.
        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
        &quot;source&quot;: { # The source of a field. # The source of the field.
          &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
          &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
            &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
            &quot;userTypes&quot;: [ # Output only. The user types.
              &quot;A String&quot;,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # The source type.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
        },
        &quot;verified&quot;: True or False, # Output only. 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.
      },
      &quot;protocol&quot;: &quot;A String&quot;, # The protocol of the IM client. The protocol can be custom or one of these predefined values: * `aim` * `msn` * `yahoo` * `skype` * `qq` * `googleTalk` * `icq` * `jabber` * `netMeeting`
      &quot;type&quot;: &quot;A String&quot;, # The type of the IM client. The type can be custom or one of these predefined values: * `home` * `work` * `other`
      &quot;username&quot;: &quot;A String&quot;, # The user name used in the IM client.
    },
  ],
  &quot;interests&quot;: [ # The person&#x27;s interests.
    { # One of the person&#x27;s interests.
      &quot;metadata&quot;: { # Metadata about a field. # Metadata about the interest.
        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
        &quot;source&quot;: { # The source of a field. # The source of the field.
          &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
          &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
            &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
            &quot;userTypes&quot;: [ # Output only. The user types.
              &quot;A String&quot;,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # The source type.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
        },
        &quot;verified&quot;: True or False, # Output only. 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.
      },
      &quot;value&quot;: &quot;A String&quot;, # The interest; for example, `stargazing`.
    },
  ],
  &quot;locales&quot;: [ # The person&#x27;s locale preferences.
    { # A person&#x27;s locale preference.
      &quot;metadata&quot;: { # Metadata about a field. # Metadata about the locale.
        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
        &quot;source&quot;: { # The source of a field. # The source of the field.
          &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
          &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
            &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
            &quot;userTypes&quot;: [ # Output only. The user types.
              &quot;A String&quot;,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # The source type.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
        },
        &quot;verified&quot;: True or False, # Output only. 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.
      },
      &quot;value&quot;: &quot;A String&quot;, # The well-formed [IETF BCP 47](https://tools.ietf.org/html/bcp47) language tag representing the locale.
    },
  ],
  &quot;locations&quot;: [ # The person&#x27;s locations.
    { # A person&#x27;s location.
      &quot;buildingId&quot;: &quot;A String&quot;, # The building identifier.
      &quot;current&quot;: True or False, # Whether the location is the current location.
      &quot;deskCode&quot;: &quot;A String&quot;, # The individual desk location.
      &quot;floor&quot;: &quot;A String&quot;, # The floor name or number.
      &quot;floorSection&quot;: &quot;A String&quot;, # The floor section in `floor_name`.
      &quot;metadata&quot;: { # Metadata about a field. # Metadata about the location.
        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
        &quot;source&quot;: { # The source of a field. # The source of the field.
          &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
          &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
            &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
            &quot;userTypes&quot;: [ # Output only. The user types.
              &quot;A String&quot;,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # The source type.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
        },
        &quot;verified&quot;: True or False, # Output only. 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.
      },
      &quot;type&quot;: &quot;A String&quot;, # The type of the location. The type can be custom or one of these predefined values: * `desk` * `grewUp`
      &quot;value&quot;: &quot;A String&quot;, # The free-form value of the location.
    },
  ],
  &quot;memberships&quot;: [ # The person&#x27;s group memberships.
    { # A person&#x27;s membership in a group. Only contact group memberships can be modified.
      &quot;contactGroupMembership&quot;: { # A Google contact group membership. # The contact group membership.
        &quot;contactGroupId&quot;: &quot;A String&quot;, # Output only. The contact group ID for the contact group membership.
        &quot;contactGroupResourceName&quot;: &quot;A String&quot;, # The resource name for the contact group, assigned by the server. An ASCII string, in the form of `contactGroups/{contact_group_id}`. Only contact_group_resource_name can be used for modifying memberships. Any contact group membership can be removed, but only user group or &quot;myContacts&quot; or &quot;starred&quot; system groups memberships can be added. A contact must always have at least one contact group membership.
      },
      &quot;domainMembership&quot;: { # A G Suite Domain membership. # Output only. The domain membership.
        &quot;inViewerDomain&quot;: True or False, # True if the person is in the viewer&#x27;s G Suite domain.
      },
      &quot;metadata&quot;: { # Metadata about a field. # Metadata about the membership.
        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
        &quot;source&quot;: { # The source of a field. # The source of the field.
          &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
          &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
            &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
            &quot;userTypes&quot;: [ # Output only. The user types.
              &quot;A String&quot;,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # The source type.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
        },
        &quot;verified&quot;: True or False, # Output only. 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.
      },
    },
  ],
  &quot;metadata&quot;: { # The metadata about a person. # Output only. Metadata about the person.
    &quot;deleted&quot;: True or False, # Output only. 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.
    &quot;linkedPeopleResourceNames&quot;: [ # Output only. Resource names of people linked to this resource.
      &quot;A String&quot;,
    ],
    &quot;objectType&quot;: &quot;A String&quot;, # Output only. **DEPRECATED** (Please use `person.metadata.sources.profileMetadata.objectType` instead) The type of the person object.
    &quot;previousResourceNames&quot;: [ # Output only. 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.
      &quot;A String&quot;,
    ],
    &quot;sources&quot;: [ # The sources of data for the person.
      { # The source of a field.
        &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
        &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
        &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
          &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
          &quot;userTypes&quot;: [ # Output only. The user types.
            &quot;A String&quot;,
          ],
        },
        &quot;type&quot;: &quot;A String&quot;, # The source type.
        &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
      },
    ],
  },
  &quot;miscKeywords&quot;: [ # The person&#x27;s miscellaneous keywords.
    { # A person&#x27;s miscellaneous keyword.
      &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the miscellaneous keyword translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
      &quot;metadata&quot;: { # Metadata about a field. # Metadata about the miscellaneous keyword.
        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
        &quot;source&quot;: { # The source of a field. # The source of the field.
          &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
          &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
            &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
            &quot;userTypes&quot;: [ # Output only. The user types.
              &quot;A String&quot;,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # The source type.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
        },
        &quot;verified&quot;: True or False, # Output only. 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.
      },
      &quot;type&quot;: &quot;A String&quot;, # The miscellaneous keyword type.
      &quot;value&quot;: &quot;A String&quot;, # The value of the miscellaneous keyword.
    },
  ],
  &quot;names&quot;: [ # The person&#x27;s names. This field is a singleton for contact sources.
    { # A person&#x27;s name. If the name is a mononym, the family name is empty.
      &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name formatted according to the locale specified by the viewer&#x27;s account or the `Accept-Language` HTTP header.
      &quot;displayNameLastFirst&quot;: &quot;A String&quot;, # Output only. The display name with the last name first formatted according to the locale specified by the viewer&#x27;s account or the `Accept-Language` HTTP header.
      &quot;familyName&quot;: &quot;A String&quot;, # The family name.
      &quot;givenName&quot;: &quot;A String&quot;, # The given name.
      &quot;honorificPrefix&quot;: &quot;A String&quot;, # The honorific prefixes, such as `Mrs.` or `Dr.`
      &quot;honorificSuffix&quot;: &quot;A String&quot;, # The honorific suffixes, such as `Jr.`
      &quot;metadata&quot;: { # Metadata about a field. # Metadata about the name.
        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
        &quot;source&quot;: { # The source of a field. # The source of the field.
          &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
          &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
            &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
            &quot;userTypes&quot;: [ # Output only. The user types.
              &quot;A String&quot;,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # The source type.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
        },
        &quot;verified&quot;: True or False, # Output only. 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.
      },
      &quot;middleName&quot;: &quot;A String&quot;, # The middle name(s).
      &quot;phoneticFamilyName&quot;: &quot;A String&quot;, # The family name spelled as it sounds.
      &quot;phoneticFullName&quot;: &quot;A String&quot;, # The full name spelled as it sounds.
      &quot;phoneticGivenName&quot;: &quot;A String&quot;, # The given name spelled as it sounds.
      &quot;phoneticHonorificPrefix&quot;: &quot;A String&quot;, # The honorific prefixes spelled as they sound.
      &quot;phoneticHonorificSuffix&quot;: &quot;A String&quot;, # The honorific suffixes spelled as they sound.
      &quot;phoneticMiddleName&quot;: &quot;A String&quot;, # The middle name(s) spelled as they sound.
      &quot;unstructuredName&quot;: &quot;A String&quot;, # The free form name value.
    },
  ],
  &quot;nicknames&quot;: [ # The person&#x27;s nicknames.
    { # A person&#x27;s nickname.
      &quot;metadata&quot;: { # Metadata about a field. # Metadata about the nickname.
        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
        &quot;source&quot;: { # The source of a field. # The source of the field.
          &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
          &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
            &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
            &quot;userTypes&quot;: [ # Output only. The user types.
              &quot;A String&quot;,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # The source type.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
        },
        &quot;verified&quot;: True or False, # Output only. 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.
      },
      &quot;type&quot;: &quot;A String&quot;, # The type of the nickname.
      &quot;value&quot;: &quot;A String&quot;, # The nickname.
    },
  ],
  &quot;occupations&quot;: [ # The person&#x27;s occupations.
    { # A person&#x27;s occupation.
      &quot;metadata&quot;: { # Metadata about a field. # Metadata about the occupation.
        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
        &quot;source&quot;: { # The source of a field. # The source of the field.
          &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
          &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
            &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
            &quot;userTypes&quot;: [ # Output only. The user types.
              &quot;A String&quot;,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # The source type.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
        },
        &quot;verified&quot;: True or False, # Output only. 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.
      },
      &quot;value&quot;: &quot;A String&quot;, # The occupation; for example, `carpenter`.
    },
  ],
  &quot;organizations&quot;: [ # The person&#x27;s past or current organizations.
    { # A person&#x27;s past or current organization. Overlapping date ranges are permitted.
      &quot;current&quot;: True or False, # True if the organization is the person&#x27;s current organization; false if the organization is a past organization.
      &quot;department&quot;: &quot;A String&quot;, # The person&#x27;s department at the organization.
      &quot;domain&quot;: &quot;A String&quot;, # The domain name associated with the organization; for example, `google.com`.
      &quot;endDate&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # The end date when the person left the organization.
        &quot;day&quot;: 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn&#x27;t significant.
        &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
        &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
      },
      &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the organization translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
      &quot;jobDescription&quot;: &quot;A String&quot;, # The person&#x27;s job description at the organization.
      &quot;location&quot;: &quot;A String&quot;, # The location of the organization office the person works at.
      &quot;metadata&quot;: { # Metadata about a field. # Metadata about the organization.
        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
        &quot;source&quot;: { # The source of a field. # The source of the field.
          &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
          &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
            &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
            &quot;userTypes&quot;: [ # Output only. The user types.
              &quot;A String&quot;,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # The source type.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
        },
        &quot;verified&quot;: True or False, # Output only. 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.
      },
      &quot;name&quot;: &quot;A String&quot;, # The name of the organization.
      &quot;phoneticName&quot;: &quot;A String&quot;, # The phonetic name of the organization.
      &quot;startDate&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # The start date when the person joined the organization.
        &quot;day&quot;: 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn&#x27;t significant.
        &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
        &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
      },
      &quot;symbol&quot;: &quot;A String&quot;, # The symbol associated with the organization; for example, a stock ticker symbol, abbreviation, or acronym.
      &quot;title&quot;: &quot;A String&quot;, # The person&#x27;s job title at the organization.
      &quot;type&quot;: &quot;A String&quot;, # The type of the organization. The type can be custom or one of these predefined values: * `work` * `school`
    },
  ],
  &quot;phoneNumbers&quot;: [ # The person&#x27;s phone numbers.
    { # A person&#x27;s phone number.
      &quot;canonicalForm&quot;: &quot;A String&quot;, # Output only. The 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.
      &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the phone number translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
      &quot;metadata&quot;: { # Metadata about a field. # Metadata about the phone number.
        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
        &quot;source&quot;: { # The source of a field. # The source of the field.
          &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
          &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
            &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
            &quot;userTypes&quot;: [ # Output only. The user types.
              &quot;A String&quot;,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # The source type.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
        },
        &quot;verified&quot;: True or False, # Output only. 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.
      },
      &quot;type&quot;: &quot;A String&quot;, # The type of the phone number. The type can be custom or one of these predefined values: * `home` * `work` * `mobile` * `homeFax` * `workFax` * `otherFax` * `pager` * `workMobile` * `workPager` * `main` * `googleVoice` * `other`
      &quot;value&quot;: &quot;A String&quot;, # The phone number.
    },
  ],
  &quot;photos&quot;: [ # Output only. The person&#x27;s photos.
    { # A person&#x27;s photo. A picture shown next to the person&#x27;s name to help others recognize the person.
      &quot;default&quot;: True or False, # True if the photo is a default photo; false if the photo is a user-provided photo.
      &quot;metadata&quot;: { # Metadata about a field. # Metadata about the photo.
        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
        &quot;source&quot;: { # The source of a field. # The source of the field.
          &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
          &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
            &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
            &quot;userTypes&quot;: [ # Output only. The user types.
              &quot;A String&quot;,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # The source type.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
        },
        &quot;verified&quot;: True or False, # Output only. 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.
      },
      &quot;url&quot;: &quot;A String&quot;, # The URL of the photo. You can change the desired size by appending a query parameter `sz={size}` at the end of the url, where {size} is the size in pixels. Example: https://lh3.googleusercontent.com/-T_wVWLlmg7w/AAAAAAAAAAI/AAAAAAAABa8/00gzXvDBYqw/s100/photo.jpg?sz=50
    },
  ],
  &quot;relations&quot;: [ # The person&#x27;s relations.
    { # A person&#x27;s relation to another person.
      &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the relation translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
      &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relation.
        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
        &quot;source&quot;: { # The source of a field. # The source of the field.
          &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
          &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
            &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
            &quot;userTypes&quot;: [ # Output only. The user types.
              &quot;A String&quot;,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # The source type.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
        },
        &quot;verified&quot;: True or False, # Output only. 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.
      },
      &quot;person&quot;: &quot;A String&quot;, # The name of the other person this relation refers to.
      &quot;type&quot;: &quot;A String&quot;, # The person&#x27;s relation to the other person. The type can be custom or one of these predefined values: * `spouse` * `child` * `mother` * `father` * `parent` * `brother` * `sister` * `friend` * `relative` * `domesticPartner` * `manager` * `assistant` * `referredBy` * `partner`
    },
  ],
  &quot;relationshipInterests&quot;: [ # Output only. **DEPRECATED**: No data will be returned The person&#x27;s relationship interests.
    { # **DEPRECATED**: No data will be returned A person&#x27;s relationship interest .
      &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship interest translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
      &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship interest.
        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
        &quot;source&quot;: { # The source of a field. # The source of the field.
          &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
          &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
            &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
            &quot;userTypes&quot;: [ # Output only. The user types.
              &quot;A String&quot;,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # The source type.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
        },
        &quot;verified&quot;: True or False, # Output only. 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.
      },
      &quot;value&quot;: &quot;A String&quot;, # The kind of relationship the person is looking for. The value can be custom or one of these predefined values: * `friend` * `date` * `relationship` * `networking`
    },
  ],
  &quot;relationshipStatuses&quot;: [ # Output only. **DEPRECATED**: No data will be returned The person&#x27;s relationship statuses.
    { # **DEPRECATED**: No data will be returned A person&#x27;s relationship status.
      &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship status translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
      &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship status.
        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
        &quot;source&quot;: { # The source of a field. # The source of the field.
          &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
          &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
            &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
            &quot;userTypes&quot;: [ # Output only. The user types.
              &quot;A String&quot;,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # The source type.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
        },
        &quot;verified&quot;: True or False, # Output only. 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.
      },
      &quot;value&quot;: &quot;A String&quot;, # The relationship status. The value can be custom or one of these predefined values: * `single` * `inARelationship` * `engaged` * `married` * `itsComplicated` * `openRelationship` * `widowed` * `inDomesticPartnership` * `inCivilUnion`
    },
  ],
  &quot;residences&quot;: [ # **DEPRECATED**: (Please use `person.locations` instead) The person&#x27;s residences.
    { # **DEPRECATED**: Please use `person.locations` instead. A person&#x27;s past or current residence.
      &quot;current&quot;: True or False, # True if the residence is the person&#x27;s current residence; false if the residence is a past residence.
      &quot;metadata&quot;: { # Metadata about a field. # Metadata about the residence.
        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
        &quot;source&quot;: { # The source of a field. # The source of the field.
          &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
          &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
            &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
            &quot;userTypes&quot;: [ # Output only. The user types.
              &quot;A String&quot;,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # The source type.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
        },
        &quot;verified&quot;: True or False, # Output only. 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.
      },
      &quot;value&quot;: &quot;A String&quot;, # The address of the residence.
    },
  ],
  &quot;resourceName&quot;: &quot;A String&quot;, # 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}`.
  &quot;sipAddresses&quot;: [ # The person&#x27;s SIP addresses.
    { # A person&#x27;s SIP address. Session Initial Protocol addresses are used for VoIP communications to make voice or video calls over the internet.
      &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the SIP address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
      &quot;metadata&quot;: { # Metadata about a field. # Metadata about the SIP address.
        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
        &quot;source&quot;: { # The source of a field. # The source of the field.
          &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
          &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
            &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
            &quot;userTypes&quot;: [ # Output only. The user types.
              &quot;A String&quot;,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # The source type.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
        },
        &quot;verified&quot;: True or False, # Output only. 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.
      },
      &quot;type&quot;: &quot;A String&quot;, # The type of the SIP address. The type can be custom or or one of these predefined values: * `home` * `work` * `mobile` * `other`
      &quot;value&quot;: &quot;A String&quot;, # The SIP address in the [RFC 3261 19.1](https://tools.ietf.org/html/rfc3261#section-19.1) SIP URI format.
    },
  ],
  &quot;skills&quot;: [ # The person&#x27;s skills.
    { # A skill that the person has.
      &quot;metadata&quot;: { # Metadata about a field. # Metadata about the skill.
        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
        &quot;source&quot;: { # The source of a field. # The source of the field.
          &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
          &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
            &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
            &quot;userTypes&quot;: [ # Output only. The user types.
              &quot;A String&quot;,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # The source type.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
        },
        &quot;verified&quot;: True or False, # Output only. 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.
      },
      &quot;value&quot;: &quot;A String&quot;, # The skill; for example, `underwater basket weaving`.
    },
  ],
  &quot;taglines&quot;: [ # Output only. **DEPRECATED**: No data will be returned The person&#x27;s taglines.
    { # **DEPRECATED**: No data will be returned A brief one-line description of the person.
      &quot;metadata&quot;: { # Metadata about a field. # Metadata about the tagline.
        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
        &quot;source&quot;: { # The source of a field. # The source of the field.
          &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
          &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
            &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
            &quot;userTypes&quot;: [ # Output only. The user types.
              &quot;A String&quot;,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # The source type.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
        },
        &quot;verified&quot;: True or False, # Output only. 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.
      },
      &quot;value&quot;: &quot;A String&quot;, # The tagline.
    },
  ],
  &quot;urls&quot;: [ # The person&#x27;s associated URLs.
    { # A person&#x27;s associated URLs.
      &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
      &quot;metadata&quot;: { # Metadata about a field. # Metadata about the URL.
        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
        &quot;source&quot;: { # The source of a field. # The source of the field.
          &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
          &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
            &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
            &quot;userTypes&quot;: [ # Output only. The user types.
              &quot;A String&quot;,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # The source type.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
        },
        &quot;verified&quot;: True or False, # Output only. 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.
      },
      &quot;type&quot;: &quot;A String&quot;, # The type of the URL. The type can be custom or one of these predefined values: * `home` * `work` * `blog` * `profile` * `homePage` * `ftp` * `reservations` * `appInstallPage`: website for a Currents application. * `other`
      &quot;value&quot;: &quot;A String&quot;, # The URL.
    },
  ],
  &quot;userDefined&quot;: [ # The person&#x27;s user defined data.
    { # Arbitrary user data that is populated by the end users.
      &quot;key&quot;: &quot;A String&quot;, # The end user specified key of the user defined data.
      &quot;metadata&quot;: { # Metadata about a field. # Metadata about the user defined data.
        &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
        &quot;source&quot;: { # The source of a field. # The source of the field.
          &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
          &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
          &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
            &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
            &quot;userTypes&quot;: [ # Output only. The user types.
              &quot;A String&quot;,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # The source type.
          &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
        },
        &quot;verified&quot;: True or False, # Output only. 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.
      },
      &quot;value&quot;: &quot;A String&quot;, # The end user specified value of the user defined data.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(pageSize=None, pageToken=None, readMask=None, requestSyncToken=None, syncToken=None, x__xgafv=None)</code>
  <pre>List all &quot;Other contacts&quot;, that is contacts that are not in a contact group. &quot;Other contacts&quot; are typically auto created contacts from interactions.

Args:
  pageSize: integer, Optional. The number of &quot;Other contacts&quot; to include in the response. Valid values are between 1 and 1000, inclusive. Defaults to 100 if not set or set to 0.
  pageToken: string, Optional. A page token, received from a previous `ListOtherContacts` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListOtherContacts` must match the call that provided the page token.
  readMask: string, Required. A field mask to restrict which fields on each person are returned. Multiple fields can be specified by separating them with commas. Valid values are: * emailAddresses * names * phoneNumbers
  requestSyncToken: boolean, Optional. Whether the response should include `next_sync_token`, which can be used to get all changes since the last request. For subsequent sync requests use the `sync_token` param instead. Initial sync requests that specify `request_sync_token` have an additional rate limit.
  syncToken: string, Optional. A sync token, received from a previous `ListOtherContacts` call. Provide this to retrieve only the resources changed since the last request. Sync requests that specify `sync_token` have an additional rate limit. When syncing, all other parameters provided to `ListOtherContacts` must match the call that provided the sync token.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The response to a request for the authenticated user&#x27;s &quot;Other contacts&quot;.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.
  &quot;nextSyncToken&quot;: &quot;A String&quot;, # A token, which can be sent as `sync_token` to retrieve changes since the last request. Request must set `request_sync_token` to return the sync token.
  &quot;otherContacts&quot;: [ # The list of &quot;Other contacts&quot; returned as Person resources. &quot;Other contacts&quot; support a limited subset of fields. See ListOtherContactsRequest.request_mask for more detailed information.
    { # Information about a person merged from various data sources such as the authenticated user&#x27;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.
      &quot;addresses&quot;: [ # The person&#x27;s street addresses.
        { # A person&#x27;s physical address. May be a P.O. box or street address. All fields are optional.
          &quot;city&quot;: &quot;A String&quot;, # The city of the address.
          &quot;country&quot;: &quot;A String&quot;, # The country of the address.
          &quot;countryCode&quot;: &quot;A String&quot;, # The [ISO 3166-1 alpha-2](http://www.iso.org/iso/country_codes.htm) country code of the address.
          &quot;extendedAddress&quot;: &quot;A String&quot;, # The extended address of the address; for example, the apartment number.
          &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
          &quot;formattedValue&quot;: &quot;A String&quot;, # The unstructured value of the address. If this is not set by the user it will be automatically constructed from structured values.
          &quot;metadata&quot;: { # Metadata about a field. # Metadata about the address.
            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
            &quot;source&quot;: { # The source of a field. # The source of the field.
              &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
              &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
              &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
                &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
                &quot;userTypes&quot;: [ # Output only. The user types.
                  &quot;A String&quot;,
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # The source type.
              &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
            },
            &quot;verified&quot;: True or False, # Output only. 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.
          },
          &quot;poBox&quot;: &quot;A String&quot;, # The P.O. box of the address.
          &quot;postalCode&quot;: &quot;A String&quot;, # The postal code of the address.
          &quot;region&quot;: &quot;A String&quot;, # The region of the address; for example, the state or province.
          &quot;streetAddress&quot;: &quot;A String&quot;, # The street address.
          &quot;type&quot;: &quot;A String&quot;, # The type of the address. The type can be custom or one of these predefined values: * `home` * `work` * `other`
        },
      ],
      &quot;ageRange&quot;: &quot;A String&quot;, # Output only. **DEPRECATED** (Please use `person.ageRanges` instead) The person&#x27;s age range.
      &quot;ageRanges&quot;: [ # Output only. The person&#x27;s age ranges.
        { # A person&#x27;s age range.
          &quot;ageRange&quot;: &quot;A String&quot;, # The age range.
          &quot;metadata&quot;: { # Metadata about a field. # Metadata about the age range.
            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
            &quot;source&quot;: { # The source of a field. # The source of the field.
              &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
              &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
              &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
                &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
                &quot;userTypes&quot;: [ # Output only. The user types.
                  &quot;A String&quot;,
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # The source type.
              &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
            },
            &quot;verified&quot;: True or False, # Output only. 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.
          },
        },
      ],
      &quot;biographies&quot;: [ # The person&#x27;s biographies. This field is a singleton for contact sources.
        { # A person&#x27;s short biography.
          &quot;contentType&quot;: &quot;A String&quot;, # The content type of the biography.
          &quot;metadata&quot;: { # Metadata about a field. # Metadata about the biography.
            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
            &quot;source&quot;: { # The source of a field. # The source of the field.
              &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
              &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
              &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
                &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
                &quot;userTypes&quot;: [ # Output only. The user types.
                  &quot;A String&quot;,
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # The source type.
              &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
            },
            &quot;verified&quot;: True or False, # Output only. 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.
          },
          &quot;value&quot;: &quot;A String&quot;, # The short biography.
        },
      ],
      &quot;birthdays&quot;: [ # The person&#x27;s birthdays. This field is a singleton for contact sources.
        { # A person&#x27;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.
          &quot;date&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # The date of the birthday.
            &quot;day&quot;: 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn&#x27;t significant.
            &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
            &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
          },
          &quot;metadata&quot;: { # Metadata about a field. # Metadata about the birthday.
            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
            &quot;source&quot;: { # The source of a field. # The source of the field.
              &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
              &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
              &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
                &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
                &quot;userTypes&quot;: [ # Output only. The user types.
                  &quot;A String&quot;,
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # The source type.
              &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
            },
            &quot;verified&quot;: True or False, # Output only. 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.
          },
          &quot;text&quot;: &quot;A String&quot;, # A free-form string representing the user&#x27;s birthday.
        },
      ],
      &quot;braggingRights&quot;: [ # **DEPRECATED**: No data will be returned The person&#x27;s bragging rights.
        { # **DEPRECATED**: No data will be returned A person&#x27;s bragging rights.
          &quot;metadata&quot;: { # Metadata about a field. # Metadata about the bragging rights.
            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
            &quot;source&quot;: { # The source of a field. # The source of the field.
              &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
              &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
              &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
                &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
                &quot;userTypes&quot;: [ # Output only. The user types.
                  &quot;A String&quot;,
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # The source type.
              &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
            },
            &quot;verified&quot;: True or False, # Output only. 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.
          },
          &quot;value&quot;: &quot;A String&quot;, # The bragging rights; for example, `climbed mount everest`.
        },
      ],
      &quot;calendarUrls&quot;: [ # The person&#x27;s calendar URLs.
        { # A person&#x27;s calendar URL.
          &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the calendar URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
          &quot;metadata&quot;: { # Metadata about a field. # Metadata about the calendar URL.
            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
            &quot;source&quot;: { # The source of a field. # The source of the field.
              &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
              &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
              &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
                &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
                &quot;userTypes&quot;: [ # Output only. The user types.
                  &quot;A String&quot;,
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # The source type.
              &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
            },
            &quot;verified&quot;: True or False, # Output only. 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.
          },
          &quot;type&quot;: &quot;A String&quot;, # The type of the calendar URL. The type can be custom or one of these predefined values: * `home` * `freeBusy` * `work`
          &quot;url&quot;: &quot;A String&quot;, # The calendar URL.
        },
      ],
      &quot;clientData&quot;: [ # The person&#x27;s client data.
        { # Arbitrary client data that is populated by clients. Duplicate keys and values are allowed.
          &quot;key&quot;: &quot;A String&quot;, # The client specified key of the client data.
          &quot;metadata&quot;: { # Metadata about a field. # Metadata about the client data.
            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
            &quot;source&quot;: { # The source of a field. # The source of the field.
              &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
              &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
              &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
                &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
                &quot;userTypes&quot;: [ # Output only. The user types.
                  &quot;A String&quot;,
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # The source type.
              &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
            },
            &quot;verified&quot;: True or False, # Output only. 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.
          },
          &quot;value&quot;: &quot;A String&quot;, # The client specified value of the client data.
        },
      ],
      &quot;coverPhotos&quot;: [ # Output only. The person&#x27;s cover photos.
        { # A person&#x27;s cover photo. A large image shown on the person&#x27;s profile page that represents who they are or what they care about.
          &quot;default&quot;: True or False, # True if the cover photo is the default cover photo; false if the cover photo is a user-provided cover photo.
          &quot;metadata&quot;: { # Metadata about a field. # Metadata about the cover photo.
            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
            &quot;source&quot;: { # The source of a field. # The source of the field.
              &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
              &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
              &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
                &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
                &quot;userTypes&quot;: [ # Output only. The user types.
                  &quot;A String&quot;,
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # The source type.
              &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
            },
            &quot;verified&quot;: True or False, # Output only. 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.
          },
          &quot;url&quot;: &quot;A String&quot;, # The URL of the cover photo.
        },
      ],
      &quot;emailAddresses&quot;: [ # The person&#x27;s email addresses.
        { # A person&#x27;s email address.
          &quot;displayName&quot;: &quot;A String&quot;, # The display name of the email.
          &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the email address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
          &quot;metadata&quot;: { # Metadata about a field. # Metadata about the email address.
            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
            &quot;source&quot;: { # The source of a field. # The source of the field.
              &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
              &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
              &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
                &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
                &quot;userTypes&quot;: [ # Output only. The user types.
                  &quot;A String&quot;,
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # The source type.
              &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
            },
            &quot;verified&quot;: True or False, # Output only. 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.
          },
          &quot;type&quot;: &quot;A String&quot;, # The type of the email address. The type can be custom or one of these predefined values: * `home` * `work` * `other`
          &quot;value&quot;: &quot;A String&quot;, # The email address.
        },
      ],
      &quot;etag&quot;: &quot;A String&quot;, # The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the resource. Used for web cache validation.
      &quot;events&quot;: [ # The person&#x27;s events.
        { # An event related to the person.
          &quot;date&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # The date of the event.
            &quot;day&quot;: 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn&#x27;t significant.
            &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
            &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
          },
          &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
          &quot;metadata&quot;: { # Metadata about a field. # Metadata about the event.
            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
            &quot;source&quot;: { # The source of a field. # The source of the field.
              &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
              &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
              &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
                &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
                &quot;userTypes&quot;: [ # Output only. The user types.
                  &quot;A String&quot;,
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # The source type.
              &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
            },
            &quot;verified&quot;: True or False, # Output only. 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.
          },
          &quot;type&quot;: &quot;A String&quot;, # The type of the event. The type can be custom or one of these predefined values: * `anniversary` * `other`
        },
      ],
      &quot;externalIds&quot;: [ # The person&#x27;s external IDs.
        { # An identifier from an external entity related to the person.
          &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the event translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
          &quot;metadata&quot;: { # Metadata about a field. # Metadata about the external ID.
            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
            &quot;source&quot;: { # The source of a field. # The source of the field.
              &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
              &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
              &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
                &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
                &quot;userTypes&quot;: [ # Output only. The user types.
                  &quot;A String&quot;,
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # The source type.
              &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
            },
            &quot;verified&quot;: True or False, # Output only. 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.
          },
          &quot;type&quot;: &quot;A String&quot;, # The type of the external ID. The type can be custom or one of these predefined values: * `account` * `customer` * `loginId` * `network` * `organization`
          &quot;value&quot;: &quot;A String&quot;, # The value of the external ID.
        },
      ],
      &quot;fileAses&quot;: [ # The person&#x27;s file-ases.
        { # The name that should be used to sort the person in a list.
          &quot;metadata&quot;: { # Metadata about a field. # Metadata about the file-as.
            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
            &quot;source&quot;: { # The source of a field. # The source of the field.
              &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
              &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
              &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
                &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
                &quot;userTypes&quot;: [ # Output only. The user types.
                  &quot;A String&quot;,
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # The source type.
              &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
            },
            &quot;verified&quot;: True or False, # Output only. 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.
          },
          &quot;value&quot;: &quot;A String&quot;, # The file-as value
        },
      ],
      &quot;genders&quot;: [ # The person&#x27;s genders. This field is a singleton for contact sources.
        { # A person&#x27;s gender.
          &quot;addressMeAs&quot;: &quot;A String&quot;, # The type of pronouns that should be used to address the person. The value can be custom or one of these predefined values: * `male` * `female` * `other`
          &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the gender translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale. Unspecified or custom value are not localized.
          &quot;metadata&quot;: { # Metadata about a field. # Metadata about the gender.
            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
            &quot;source&quot;: { # The source of a field. # The source of the field.
              &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
              &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
              &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
                &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
                &quot;userTypes&quot;: [ # Output only. The user types.
                  &quot;A String&quot;,
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # The source type.
              &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
            },
            &quot;verified&quot;: True or False, # Output only. 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.
          },
          &quot;value&quot;: &quot;A String&quot;, # The gender for the person. The gender can be custom or one of these predefined values: * `male` * `female` * `unspecified`
        },
      ],
      &quot;imClients&quot;: [ # The person&#x27;s instant messaging clients.
        { # A person&#x27;s instant messaging client.
          &quot;formattedProtocol&quot;: &quot;A String&quot;, # Output only. The protocol of the IM client formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
          &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the IM client translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
          &quot;metadata&quot;: { # Metadata about a field. # Metadata about the IM client.
            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
            &quot;source&quot;: { # The source of a field. # The source of the field.
              &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
              &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
              &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
                &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
                &quot;userTypes&quot;: [ # Output only. The user types.
                  &quot;A String&quot;,
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # The source type.
              &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
            },
            &quot;verified&quot;: True or False, # Output only. 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.
          },
          &quot;protocol&quot;: &quot;A String&quot;, # The protocol of the IM client. The protocol can be custom or one of these predefined values: * `aim` * `msn` * `yahoo` * `skype` * `qq` * `googleTalk` * `icq` * `jabber` * `netMeeting`
          &quot;type&quot;: &quot;A String&quot;, # The type of the IM client. The type can be custom or one of these predefined values: * `home` * `work` * `other`
          &quot;username&quot;: &quot;A String&quot;, # The user name used in the IM client.
        },
      ],
      &quot;interests&quot;: [ # The person&#x27;s interests.
        { # One of the person&#x27;s interests.
          &quot;metadata&quot;: { # Metadata about a field. # Metadata about the interest.
            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
            &quot;source&quot;: { # The source of a field. # The source of the field.
              &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
              &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
              &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
                &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
                &quot;userTypes&quot;: [ # Output only. The user types.
                  &quot;A String&quot;,
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # The source type.
              &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
            },
            &quot;verified&quot;: True or False, # Output only. 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.
          },
          &quot;value&quot;: &quot;A String&quot;, # The interest; for example, `stargazing`.
        },
      ],
      &quot;locales&quot;: [ # The person&#x27;s locale preferences.
        { # A person&#x27;s locale preference.
          &quot;metadata&quot;: { # Metadata about a field. # Metadata about the locale.
            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
            &quot;source&quot;: { # The source of a field. # The source of the field.
              &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
              &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
              &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
                &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
                &quot;userTypes&quot;: [ # Output only. The user types.
                  &quot;A String&quot;,
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # The source type.
              &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
            },
            &quot;verified&quot;: True or False, # Output only. 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.
          },
          &quot;value&quot;: &quot;A String&quot;, # The well-formed [IETF BCP 47](https://tools.ietf.org/html/bcp47) language tag representing the locale.
        },
      ],
      &quot;locations&quot;: [ # The person&#x27;s locations.
        { # A person&#x27;s location.
          &quot;buildingId&quot;: &quot;A String&quot;, # The building identifier.
          &quot;current&quot;: True or False, # Whether the location is the current location.
          &quot;deskCode&quot;: &quot;A String&quot;, # The individual desk location.
          &quot;floor&quot;: &quot;A String&quot;, # The floor name or number.
          &quot;floorSection&quot;: &quot;A String&quot;, # The floor section in `floor_name`.
          &quot;metadata&quot;: { # Metadata about a field. # Metadata about the location.
            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
            &quot;source&quot;: { # The source of a field. # The source of the field.
              &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
              &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
              &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
                &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
                &quot;userTypes&quot;: [ # Output only. The user types.
                  &quot;A String&quot;,
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # The source type.
              &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
            },
            &quot;verified&quot;: True or False, # Output only. 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.
          },
          &quot;type&quot;: &quot;A String&quot;, # The type of the location. The type can be custom or one of these predefined values: * `desk` * `grewUp`
          &quot;value&quot;: &quot;A String&quot;, # The free-form value of the location.
        },
      ],
      &quot;memberships&quot;: [ # The person&#x27;s group memberships.
        { # A person&#x27;s membership in a group. Only contact group memberships can be modified.
          &quot;contactGroupMembership&quot;: { # A Google contact group membership. # The contact group membership.
            &quot;contactGroupId&quot;: &quot;A String&quot;, # Output only. The contact group ID for the contact group membership.
            &quot;contactGroupResourceName&quot;: &quot;A String&quot;, # The resource name for the contact group, assigned by the server. An ASCII string, in the form of `contactGroups/{contact_group_id}`. Only contact_group_resource_name can be used for modifying memberships. Any contact group membership can be removed, but only user group or &quot;myContacts&quot; or &quot;starred&quot; system groups memberships can be added. A contact must always have at least one contact group membership.
          },
          &quot;domainMembership&quot;: { # A G Suite Domain membership. # Output only. The domain membership.
            &quot;inViewerDomain&quot;: True or False, # True if the person is in the viewer&#x27;s G Suite domain.
          },
          &quot;metadata&quot;: { # Metadata about a field. # Metadata about the membership.
            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
            &quot;source&quot;: { # The source of a field. # The source of the field.
              &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
              &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
              &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
                &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
                &quot;userTypes&quot;: [ # Output only. The user types.
                  &quot;A String&quot;,
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # The source type.
              &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
            },
            &quot;verified&quot;: True or False, # Output only. 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.
          },
        },
      ],
      &quot;metadata&quot;: { # The metadata about a person. # Output only. Metadata about the person.
        &quot;deleted&quot;: True or False, # Output only. 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.
        &quot;linkedPeopleResourceNames&quot;: [ # Output only. Resource names of people linked to this resource.
          &quot;A String&quot;,
        ],
        &quot;objectType&quot;: &quot;A String&quot;, # Output only. **DEPRECATED** (Please use `person.metadata.sources.profileMetadata.objectType` instead) The type of the person object.
        &quot;previousResourceNames&quot;: [ # Output only. 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.
          &quot;A String&quot;,
        ],
        &quot;sources&quot;: [ # The sources of data for the person.
          { # The source of a field.
            &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
            &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
            &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
              &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
              &quot;userTypes&quot;: [ # Output only. The user types.
                &quot;A String&quot;,
              ],
            },
            &quot;type&quot;: &quot;A String&quot;, # The source type.
            &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
          },
        ],
      },
      &quot;miscKeywords&quot;: [ # The person&#x27;s miscellaneous keywords.
        { # A person&#x27;s miscellaneous keyword.
          &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the miscellaneous keyword translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
          &quot;metadata&quot;: { # Metadata about a field. # Metadata about the miscellaneous keyword.
            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
            &quot;source&quot;: { # The source of a field. # The source of the field.
              &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
              &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
              &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
                &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
                &quot;userTypes&quot;: [ # Output only. The user types.
                  &quot;A String&quot;,
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # The source type.
              &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
            },
            &quot;verified&quot;: True or False, # Output only. 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.
          },
          &quot;type&quot;: &quot;A String&quot;, # The miscellaneous keyword type.
          &quot;value&quot;: &quot;A String&quot;, # The value of the miscellaneous keyword.
        },
      ],
      &quot;names&quot;: [ # The person&#x27;s names. This field is a singleton for contact sources.
        { # A person&#x27;s name. If the name is a mononym, the family name is empty.
          &quot;displayName&quot;: &quot;A String&quot;, # Output only. The display name formatted according to the locale specified by the viewer&#x27;s account or the `Accept-Language` HTTP header.
          &quot;displayNameLastFirst&quot;: &quot;A String&quot;, # Output only. The display name with the last name first formatted according to the locale specified by the viewer&#x27;s account or the `Accept-Language` HTTP header.
          &quot;familyName&quot;: &quot;A String&quot;, # The family name.
          &quot;givenName&quot;: &quot;A String&quot;, # The given name.
          &quot;honorificPrefix&quot;: &quot;A String&quot;, # The honorific prefixes, such as `Mrs.` or `Dr.`
          &quot;honorificSuffix&quot;: &quot;A String&quot;, # The honorific suffixes, such as `Jr.`
          &quot;metadata&quot;: { # Metadata about a field. # Metadata about the name.
            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
            &quot;source&quot;: { # The source of a field. # The source of the field.
              &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
              &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
              &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
                &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
                &quot;userTypes&quot;: [ # Output only. The user types.
                  &quot;A String&quot;,
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # The source type.
              &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
            },
            &quot;verified&quot;: True or False, # Output only. 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.
          },
          &quot;middleName&quot;: &quot;A String&quot;, # The middle name(s).
          &quot;phoneticFamilyName&quot;: &quot;A String&quot;, # The family name spelled as it sounds.
          &quot;phoneticFullName&quot;: &quot;A String&quot;, # The full name spelled as it sounds.
          &quot;phoneticGivenName&quot;: &quot;A String&quot;, # The given name spelled as it sounds.
          &quot;phoneticHonorificPrefix&quot;: &quot;A String&quot;, # The honorific prefixes spelled as they sound.
          &quot;phoneticHonorificSuffix&quot;: &quot;A String&quot;, # The honorific suffixes spelled as they sound.
          &quot;phoneticMiddleName&quot;: &quot;A String&quot;, # The middle name(s) spelled as they sound.
          &quot;unstructuredName&quot;: &quot;A String&quot;, # The free form name value.
        },
      ],
      &quot;nicknames&quot;: [ # The person&#x27;s nicknames.
        { # A person&#x27;s nickname.
          &quot;metadata&quot;: { # Metadata about a field. # Metadata about the nickname.
            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
            &quot;source&quot;: { # The source of a field. # The source of the field.
              &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
              &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
              &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
                &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
                &quot;userTypes&quot;: [ # Output only. The user types.
                  &quot;A String&quot;,
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # The source type.
              &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
            },
            &quot;verified&quot;: True or False, # Output only. 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.
          },
          &quot;type&quot;: &quot;A String&quot;, # The type of the nickname.
          &quot;value&quot;: &quot;A String&quot;, # The nickname.
        },
      ],
      &quot;occupations&quot;: [ # The person&#x27;s occupations.
        { # A person&#x27;s occupation.
          &quot;metadata&quot;: { # Metadata about a field. # Metadata about the occupation.
            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
            &quot;source&quot;: { # The source of a field. # The source of the field.
              &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
              &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
              &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
                &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
                &quot;userTypes&quot;: [ # Output only. The user types.
                  &quot;A String&quot;,
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # The source type.
              &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
            },
            &quot;verified&quot;: True or False, # Output only. 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.
          },
          &quot;value&quot;: &quot;A String&quot;, # The occupation; for example, `carpenter`.
        },
      ],
      &quot;organizations&quot;: [ # The person&#x27;s past or current organizations.
        { # A person&#x27;s past or current organization. Overlapping date ranges are permitted.
          &quot;current&quot;: True or False, # True if the organization is the person&#x27;s current organization; false if the organization is a past organization.
          &quot;department&quot;: &quot;A String&quot;, # The person&#x27;s department at the organization.
          &quot;domain&quot;: &quot;A String&quot;, # The domain name associated with the organization; for example, `google.com`.
          &quot;endDate&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # The end date when the person left the organization.
            &quot;day&quot;: 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn&#x27;t significant.
            &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
            &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
          },
          &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the organization translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
          &quot;jobDescription&quot;: &quot;A String&quot;, # The person&#x27;s job description at the organization.
          &quot;location&quot;: &quot;A String&quot;, # The location of the organization office the person works at.
          &quot;metadata&quot;: { # Metadata about a field. # Metadata about the organization.
            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
            &quot;source&quot;: { # The source of a field. # The source of the field.
              &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
              &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
              &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
                &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
                &quot;userTypes&quot;: [ # Output only. The user types.
                  &quot;A String&quot;,
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # The source type.
              &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
            },
            &quot;verified&quot;: True or False, # Output only. 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.
          },
          &quot;name&quot;: &quot;A String&quot;, # The name of the organization.
          &quot;phoneticName&quot;: &quot;A String&quot;, # The phonetic name of the organization.
          &quot;startDate&quot;: { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values * A month and day value, with a zero year, such as an anniversary * A year on its own, with zero month and day values * A year and month value, with a zero day, such as a credit card expiration date Related types are google.type.TimeOfDay and `google.protobuf.Timestamp`. # The start date when the person joined the organization.
            &quot;day&quot;: 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn&#x27;t significant.
            &quot;month&quot;: 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
            &quot;year&quot;: 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
          },
          &quot;symbol&quot;: &quot;A String&quot;, # The symbol associated with the organization; for example, a stock ticker symbol, abbreviation, or acronym.
          &quot;title&quot;: &quot;A String&quot;, # The person&#x27;s job title at the organization.
          &quot;type&quot;: &quot;A String&quot;, # The type of the organization. The type can be custom or one of these predefined values: * `work` * `school`
        },
      ],
      &quot;phoneNumbers&quot;: [ # The person&#x27;s phone numbers.
        { # A person&#x27;s phone number.
          &quot;canonicalForm&quot;: &quot;A String&quot;, # Output only. The 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.
          &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the phone number translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
          &quot;metadata&quot;: { # Metadata about a field. # Metadata about the phone number.
            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
            &quot;source&quot;: { # The source of a field. # The source of the field.
              &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
              &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
              &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
                &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
                &quot;userTypes&quot;: [ # Output only. The user types.
                  &quot;A String&quot;,
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # The source type.
              &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
            },
            &quot;verified&quot;: True or False, # Output only. 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.
          },
          &quot;type&quot;: &quot;A String&quot;, # The type of the phone number. The type can be custom or one of these predefined values: * `home` * `work` * `mobile` * `homeFax` * `workFax` * `otherFax` * `pager` * `workMobile` * `workPager` * `main` * `googleVoice` * `other`
          &quot;value&quot;: &quot;A String&quot;, # The phone number.
        },
      ],
      &quot;photos&quot;: [ # Output only. The person&#x27;s photos.
        { # A person&#x27;s photo. A picture shown next to the person&#x27;s name to help others recognize the person.
          &quot;default&quot;: True or False, # True if the photo is a default photo; false if the photo is a user-provided photo.
          &quot;metadata&quot;: { # Metadata about a field. # Metadata about the photo.
            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
            &quot;source&quot;: { # The source of a field. # The source of the field.
              &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
              &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
              &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
                &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
                &quot;userTypes&quot;: [ # Output only. The user types.
                  &quot;A String&quot;,
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # The source type.
              &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
            },
            &quot;verified&quot;: True or False, # Output only. 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.
          },
          &quot;url&quot;: &quot;A String&quot;, # The URL of the photo. You can change the desired size by appending a query parameter `sz={size}` at the end of the url, where {size} is the size in pixels. Example: https://lh3.googleusercontent.com/-T_wVWLlmg7w/AAAAAAAAAAI/AAAAAAAABa8/00gzXvDBYqw/s100/photo.jpg?sz=50
        },
      ],
      &quot;relations&quot;: [ # The person&#x27;s relations.
        { # A person&#x27;s relation to another person.
          &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the relation translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
          &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relation.
            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
            &quot;source&quot;: { # The source of a field. # The source of the field.
              &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
              &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
              &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
                &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
                &quot;userTypes&quot;: [ # Output only. The user types.
                  &quot;A String&quot;,
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # The source type.
              &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
            },
            &quot;verified&quot;: True or False, # Output only. 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.
          },
          &quot;person&quot;: &quot;A String&quot;, # The name of the other person this relation refers to.
          &quot;type&quot;: &quot;A String&quot;, # The person&#x27;s relation to the other person. The type can be custom or one of these predefined values: * `spouse` * `child` * `mother` * `father` * `parent` * `brother` * `sister` * `friend` * `relative` * `domesticPartner` * `manager` * `assistant` * `referredBy` * `partner`
        },
      ],
      &quot;relationshipInterests&quot;: [ # Output only. **DEPRECATED**: No data will be returned The person&#x27;s relationship interests.
        { # **DEPRECATED**: No data will be returned A person&#x27;s relationship interest .
          &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship interest translated and formatted in the viewer&#x27;s account locale or the locale specified in the Accept-Language HTTP header.
          &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship interest.
            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
            &quot;source&quot;: { # The source of a field. # The source of the field.
              &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
              &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
              &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
                &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
                &quot;userTypes&quot;: [ # Output only. The user types.
                  &quot;A String&quot;,
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # The source type.
              &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
            },
            &quot;verified&quot;: True or False, # Output only. 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.
          },
          &quot;value&quot;: &quot;A String&quot;, # The kind of relationship the person is looking for. The value can be custom or one of these predefined values: * `friend` * `date` * `relationship` * `networking`
        },
      ],
      &quot;relationshipStatuses&quot;: [ # Output only. **DEPRECATED**: No data will be returned The person&#x27;s relationship statuses.
        { # **DEPRECATED**: No data will be returned A person&#x27;s relationship status.
          &quot;formattedValue&quot;: &quot;A String&quot;, # Output only. The value of the relationship status translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
          &quot;metadata&quot;: { # Metadata about a field. # Metadata about the relationship status.
            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
            &quot;source&quot;: { # The source of a field. # The source of the field.
              &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
              &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
              &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
                &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
                &quot;userTypes&quot;: [ # Output only. The user types.
                  &quot;A String&quot;,
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # The source type.
              &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
            },
            &quot;verified&quot;: True or False, # Output only. 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.
          },
          &quot;value&quot;: &quot;A String&quot;, # The relationship status. The value can be custom or one of these predefined values: * `single` * `inARelationship` * `engaged` * `married` * `itsComplicated` * `openRelationship` * `widowed` * `inDomesticPartnership` * `inCivilUnion`
        },
      ],
      &quot;residences&quot;: [ # **DEPRECATED**: (Please use `person.locations` instead) The person&#x27;s residences.
        { # **DEPRECATED**: Please use `person.locations` instead. A person&#x27;s past or current residence.
          &quot;current&quot;: True or False, # True if the residence is the person&#x27;s current residence; false if the residence is a past residence.
          &quot;metadata&quot;: { # Metadata about a field. # Metadata about the residence.
            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
            &quot;source&quot;: { # The source of a field. # The source of the field.
              &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
              &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
              &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
                &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
                &quot;userTypes&quot;: [ # Output only. The user types.
                  &quot;A String&quot;,
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # The source type.
              &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
            },
            &quot;verified&quot;: True or False, # Output only. 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.
          },
          &quot;value&quot;: &quot;A String&quot;, # The address of the residence.
        },
      ],
      &quot;resourceName&quot;: &quot;A String&quot;, # 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}`.
      &quot;sipAddresses&quot;: [ # The person&#x27;s SIP addresses.
        { # A person&#x27;s SIP address. Session Initial Protocol addresses are used for VoIP communications to make voice or video calls over the internet.
          &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the SIP address translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
          &quot;metadata&quot;: { # Metadata about a field. # Metadata about the SIP address.
            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
            &quot;source&quot;: { # The source of a field. # The source of the field.
              &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
              &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
              &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
                &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
                &quot;userTypes&quot;: [ # Output only. The user types.
                  &quot;A String&quot;,
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # The source type.
              &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
            },
            &quot;verified&quot;: True or False, # Output only. 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.
          },
          &quot;type&quot;: &quot;A String&quot;, # The type of the SIP address. The type can be custom or or one of these predefined values: * `home` * `work` * `mobile` * `other`
          &quot;value&quot;: &quot;A String&quot;, # The SIP address in the [RFC 3261 19.1](https://tools.ietf.org/html/rfc3261#section-19.1) SIP URI format.
        },
      ],
      &quot;skills&quot;: [ # The person&#x27;s skills.
        { # A skill that the person has.
          &quot;metadata&quot;: { # Metadata about a field. # Metadata about the skill.
            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
            &quot;source&quot;: { # The source of a field. # The source of the field.
              &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
              &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
              &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
                &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
                &quot;userTypes&quot;: [ # Output only. The user types.
                  &quot;A String&quot;,
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # The source type.
              &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
            },
            &quot;verified&quot;: True or False, # Output only. 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.
          },
          &quot;value&quot;: &quot;A String&quot;, # The skill; for example, `underwater basket weaving`.
        },
      ],
      &quot;taglines&quot;: [ # Output only. **DEPRECATED**: No data will be returned The person&#x27;s taglines.
        { # **DEPRECATED**: No data will be returned A brief one-line description of the person.
          &quot;metadata&quot;: { # Metadata about a field. # Metadata about the tagline.
            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
            &quot;source&quot;: { # The source of a field. # The source of the field.
              &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
              &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
              &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
                &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
                &quot;userTypes&quot;: [ # Output only. The user types.
                  &quot;A String&quot;,
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # The source type.
              &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
            },
            &quot;verified&quot;: True or False, # Output only. 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.
          },
          &quot;value&quot;: &quot;A String&quot;, # The tagline.
        },
      ],
      &quot;urls&quot;: [ # The person&#x27;s associated URLs.
        { # A person&#x27;s associated URLs.
          &quot;formattedType&quot;: &quot;A String&quot;, # Output only. The type of the URL translated and formatted in the viewer&#x27;s account locale or the `Accept-Language` HTTP header locale.
          &quot;metadata&quot;: { # Metadata about a field. # Metadata about the URL.
            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
            &quot;source&quot;: { # The source of a field. # The source of the field.
              &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
              &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
              &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
                &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
                &quot;userTypes&quot;: [ # Output only. The user types.
                  &quot;A String&quot;,
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # The source type.
              &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
            },
            &quot;verified&quot;: True or False, # Output only. 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.
          },
          &quot;type&quot;: &quot;A String&quot;, # The type of the URL. The type can be custom or one of these predefined values: * `home` * `work` * `blog` * `profile` * `homePage` * `ftp` * `reservations` * `appInstallPage`: website for a Currents application. * `other`
          &quot;value&quot;: &quot;A String&quot;, # The URL.
        },
      ],
      &quot;userDefined&quot;: [ # The person&#x27;s user defined data.
        { # Arbitrary user data that is populated by the end users.
          &quot;key&quot;: &quot;A String&quot;, # The end user specified key of the user defined data.
          &quot;metadata&quot;: { # Metadata about a field. # Metadata about the user defined data.
            &quot;primary&quot;: True or False, # True if the field is the primary field; false if the field is a secondary field.
            &quot;source&quot;: { # The source of a field. # The source of the field.
              &quot;etag&quot;: &quot;A String&quot;, # **Only populated in `person.metadata.sources`.** The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the source. Used for web cache validation.
              &quot;id&quot;: &quot;A String&quot;, # The unique identifier within the source type generated by the server.
              &quot;profileMetadata&quot;: { # The metadata about a profile. # Output only. **Only populated in `person.metadata.sources`.** Metadata about a source of type PROFILE.
                &quot;objectType&quot;: &quot;A String&quot;, # Output only. The profile object type.
                &quot;userTypes&quot;: [ # Output only. The user types.
                  &quot;A String&quot;,
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # The source type.
              &quot;updateTime&quot;: &quot;A String&quot;, # Output only. **Only populated in `person.metadata.sources`.** Last update timestamp of this source.
            },
            &quot;verified&quot;: True or False, # Output only. 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.
          },
          &quot;value&quot;: &quot;A String&quot;, # The end user specified value of the user defined data.
        },
      ],
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>