<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, sources=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. Sync tokens expire 7 days after the full sync. A request with an expired sync token will result in a 410 error. In the case of such an error clients should make a full sync request without a `sync_token`. The first page of a full sync request has an additional quota. If the quota is exceeded, a 429 error will be returned. This quota is fixed and can not be increased. When the `sync_token` is specified, resources deleted since the last sync will be returned as a person with `PersonMetadata.deleted` set to true. When the `page_token` or `sync_token` is specified, all other request parameters must match the first call. Writes may have a propagation delay of several minutes for sync requests. Incremental syncs are not intended for read-after-write use cases. See example usage at [List the user's other contacts that have changed](/people/v1/other-contacts#list_the_users_other_contacts_that_have_changed).</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#search">search(pageSize=None, query=None, readMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Provides a list of contacts in the authenticated user's other contacts that matches the search query. The query matches on a contact's `names`, `emailAddresses`, and `phoneNumbers` fields that are from the OTHER_CONTACT source. **IMPORTANT**: Before searching, clients should send a warmup request with an empty query to update the cache. See https://developers.google.com/people/v1/other-contacts#search_the_users_other_contacts</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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
        &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
        &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
        &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
        &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
        &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
        &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
        &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
        &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
        &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
        &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
        &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
        &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
        &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
        &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
        &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
        &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. For `people.connections.list` and `otherContacts.list` the number of email addresses is limited to 100. If a Person has more email addresses the entire set can be obtained by calling GetPeople.
    { # 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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
        &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
        &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
        &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
        &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
        &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
        &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
        &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
        &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;, # Free form text field for pronouns that should be used to address the person. Common values are: * `he`/`him` * `she`/`her` * `they`/`them`
      &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
        &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
        &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
        &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
        &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
        &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
        &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
        &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
        &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
        &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
        &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 Google Workspace Domain membership. # Output only. The domain membership.
        &quot;inViewerDomain&quot;: True or False, # True if the person is in the viewer&#x27;s Google Workspace domain.
      },
      &quot;metadata&quot;: { # Metadata about a field. # Metadata about the membership.
        &quot;primary&quot;: True or False, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
        &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
        &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 `people.connections.list` and `otherContacts.list` sync requests.
    &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 `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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
        &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
        &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
        &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
        &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
        &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
        &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
        &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
        &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;costCenter&quot;: &quot;A String&quot;, # The person&#x27;s cost center at the organization.
      &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;fullTimeEquivalentMillipercent&quot;: 42, # The person&#x27;s full-time equivalent millipercent within the organization (100000 = 100%).
      &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
        &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
        &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. For `people.connections.list` and `otherContacts.list` the number of phone numbers is limited to 100. If a Person has more phone numbers the entire set can be obtained by calling GetPeople.
    { # 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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
        &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
        &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
        &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
        &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
        &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
        &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
        &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
        &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
        &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
        &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
        &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
        &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
        &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
        &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
        &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
        &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
        &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
        &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
        &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
        &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
        &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
        &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, sources=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. Sync tokens expire 7 days after the full sync. A request with an expired sync token will result in a 410 error. In the case of such an error clients should make a full sync request without a `sync_token`. The first page of a full sync request has an additional quota. If the quota is exceeded, a 429 error will be returned. This quota is fixed and can not be increased. When the `sync_token` is specified, resources deleted since the last sync will be returned as a person with `PersonMetadata.deleted` set to true. When the `page_token` or `sync_token` is specified, all other request parameters must match the first call. Writes may have a propagation delay of several minutes for sync requests. Incremental syncs are not intended for read-after-write use cases. See example usage at [List the user&#x27;s other contacts that have changed](/people/v1/other-contacts#list_the_users_other_contacts_that_have_changed).

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 response `next_page_token`. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `otherContacts.list` must match the first 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. What values are valid depend on what ReadSourceType is used. If READ_SOURCE_TYPE_CONTACT is used, valid values are: * emailAddresses * metadata * names * phoneNumbers * photos If READ_SOURCE_TYPE_PROFILE is used, 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
  requestSyncToken: boolean, Optional. Whether the response should return `next_sync_token` on the last page of results. It can be used to get incremental changes since the last request by setting it on the request `sync_token`. More details about sync behavior at `otherContacts.list`.
  sources: string, Optional. A mask of what source types to return. Defaults to READ_SOURCE_TYPE_CONTACT if not set. (repeated)
    Allowed values
      READ_SOURCE_TYPE_UNSPECIFIED - Unspecified.
      READ_SOURCE_TYPE_PROFILE - Returns SourceType.ACCOUNT, SourceType.DOMAIN_PROFILE, and SourceType.PROFILE.
      READ_SOURCE_TYPE_CONTACT - Returns SourceType.CONTACT.
      READ_SOURCE_TYPE_DOMAIN_CONTACT - Returns SourceType.DOMAIN_CONTACT.
  syncToken: string, Optional. A sync token, received from a previous response `next_sync_token` Provide this to retrieve only the resources changed since the last request. When syncing, all other parameters provided to `otherContacts.list` must match the first call that provided the sync token. More details about sync behavior at `otherContacts.list`.
  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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
            &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
            &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
            &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
            &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
            &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
            &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
            &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
            &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
            &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
            &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
            &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
            &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
            &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
            &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
            &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
            &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. For `people.connections.list` and `otherContacts.list` the number of email addresses is limited to 100. If a Person has more email addresses the entire set can be obtained by calling GetPeople.
        { # 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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
            &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
            &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
            &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
            &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
            &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
            &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
            &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
            &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;, # Free form text field for pronouns that should be used to address the person. Common values are: * `he`/`him` * `she`/`her` * `they`/`them`
          &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
            &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
            &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
            &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
            &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
            &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
            &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
            &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
            &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
            &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
            &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 Google Workspace Domain membership. # Output only. The domain membership.
            &quot;inViewerDomain&quot;: True or False, # True if the person is in the viewer&#x27;s Google Workspace domain.
          },
          &quot;metadata&quot;: { # Metadata about a field. # Metadata about the membership.
            &quot;primary&quot;: True or False, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
            &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
            &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 `people.connections.list` and `otherContacts.list` sync requests.
        &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 `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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
            &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
            &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
            &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
            &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
            &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
            &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
            &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
            &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;costCenter&quot;: &quot;A String&quot;, # The person&#x27;s cost center at the organization.
          &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;fullTimeEquivalentMillipercent&quot;: 42, # The person&#x27;s full-time equivalent millipercent within the organization (100000 = 100%).
          &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
            &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
            &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. For `people.connections.list` and `otherContacts.list` the number of phone numbers is limited to 100. If a Person has more phone numbers the entire set can be obtained by calling GetPeople.
        { # 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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
            &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
            &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
            &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
            &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
            &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
            &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
            &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
            &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
            &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
            &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
            &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
            &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
            &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
            &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
            &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
            &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
            &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
            &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
            &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
            &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
            &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
            &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.
        },
      ],
    },
  ],
  &quot;totalSize&quot;: 42, # The total number of other contacts in the list without pagination.
}</pre>
</div>

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

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

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

<div class="method">
    <code class="details" id="search">search(pageSize=None, query=None, readMask=None, x__xgafv=None)</code>
  <pre>Provides a list of contacts in the authenticated user&#x27;s other contacts that matches the search query. The query matches on a contact&#x27;s `names`, `emailAddresses`, and `phoneNumbers` fields that are from the OTHER_CONTACT source. **IMPORTANT**: Before searching, clients should send a warmup request with an empty query to update the cache. See https://developers.google.com/people/v1/other-contacts#search_the_users_other_contacts

Args:
  pageSize: integer, Optional. The number of results to return. Defaults to 10 if field is not set, or set to 0. Values greater than 30 will be capped to 30.
  query: string, Required. The plain-text query for the request. The query is used to match prefix phrases of the fields on a person. For example, a person with name &quot;foo name&quot; matches queries such as &quot;f&quot;, &quot;fo&quot;, &quot;foo&quot;, &quot;foo n&quot;, &quot;nam&quot;, etc., but not &quot;oo n&quot;.
  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 * metadata * names * phoneNumbers
  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 search request for the authenticated user, given a query.
  &quot;results&quot;: [ # The results of the request.
    { # A result of a search query.
      &quot;person&quot;: { # 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. # The matched Person.
        &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
              &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
              &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
              &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
              &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
              &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
              &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
              &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
              &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
              &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
              &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
              &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
              &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
              &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
              &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
              &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
              &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. For `people.connections.list` and `otherContacts.list` the number of email addresses is limited to 100. If a Person has more email addresses the entire set can be obtained by calling GetPeople.
          { # 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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
              &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
              &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
              &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
              &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
              &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
              &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
              &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
              &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;, # Free form text field for pronouns that should be used to address the person. Common values are: * `he`/`him` * `she`/`her` * `they`/`them`
            &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
              &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
              &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
              &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
              &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
              &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
              &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
              &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
              &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
              &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
              &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 Google Workspace Domain membership. # Output only. The domain membership.
              &quot;inViewerDomain&quot;: True or False, # True if the person is in the viewer&#x27;s Google Workspace domain.
            },
            &quot;metadata&quot;: { # Metadata about a field. # Metadata about the membership.
              &quot;primary&quot;: True or False, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
              &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
              &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 `people.connections.list` and `otherContacts.list` sync requests.
          &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 `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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
              &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
              &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
              &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
              &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
              &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
              &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
              &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
              &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;costCenter&quot;: &quot;A String&quot;, # The person&#x27;s cost center at the organization.
            &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;fullTimeEquivalentMillipercent&quot;: 42, # The person&#x27;s full-time equivalent millipercent within the organization (100000 = 100%).
            &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
              &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
              &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. For `people.connections.list` and `otherContacts.list` the number of phone numbers is limited to 100. If a Person has more phone numbers the entire set can be obtained by calling GetPeople.
          { # 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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
              &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
              &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
              &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
              &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
              &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
              &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
              &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
              &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
              &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
              &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
              &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
              &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
              &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
              &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
              &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
              &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
              &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
              &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
              &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
              &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, # Output only. True if the field is the primary field for all sources in the person. Each person will have at most one field with `primary` set to true.
              &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;sourcePrimary&quot;: True or False, # True if the field is the primary field for the source. Each source must have at most one field with `source_primary` set to true.
              &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>

</body></html>