<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 Mutate requests for the same user should be sent sequentially to avoid increased latency and failures.</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 Mutate requests for the same user should be sent sequentially to avoid increased latency and failures.

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. Clients should always set the `date` field when mutating birthdays.
      &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, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp # The structured 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;, # Prefer to use the `date` field if set. A free-form string representing the user&#x27;s birthday. This value is not validated.
    },
  ],
  &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, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * 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, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * 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, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * 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. Clients should always set the `date` field when mutating birthdays.
          &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, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp # The structured 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;, # Prefer to use the `date` field if set. A free-form string representing the user&#x27;s birthday. This value is not validated.
        },
      ],
      &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, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * 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, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * 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, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * 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. Clients should always set the `date` field when mutating birthdays.
            &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, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp # The structured 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;, # Prefer to use the `date` field if set. A free-form string representing the user&#x27;s birthday. This value is not validated.
          },
        ],
        &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, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * 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, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * 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, with a zero year (e.g., an anniversary) * A year on its own, with a zero month and a zero day * A year and month, with a zero day (e.g., a credit card expiration date) Related types: * google.type.TimeOfDay * google.type.DateTime * 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>