updateContact method
Update contact data for an existing contact person.
Any non-contact data will not be modified. Any non-contact data in the
person to update will be ignored. All fields specified in the
update_mask
will be replaced. The server returns a 400 error if
person.metadata.sources
is not specified for the contact to be updated
or if there is no contact source. The server returns a 400 error with
reason "failedPrecondition"
if person.metadata.sources.etag
is
different than the contact's etag, which indicates the contact has changed
since its data was read. Clients should get the latest person and merge
their updates into the latest person. The server returns a 400 error if
memberships
are being updated and there are no contact group memberships
specified on the person. The server returns a 400 error if more than one
field is specified on a field that is a singleton for contact sources: *
biographies * birthdays * genders * names Mutate requests for the same
user should be sent sequentially to avoid increased latency and failures.
request
- The metadata request object.
Request parameters:
resourceName
- The resource name for the person, assigned by the server.
An ASCII string in the form of people/{person_id}
.
Value must have pattern ^people/\[^/\]+$
.
personFields
- Optional. A field mask to restrict which fields on each
person are returned. Multiple fields can be specified by separating them
with commas. Defaults to all 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
sources
- Optional. A mask of what source types to return. Defaults to
READ_SOURCE_TYPE_CONTACT and READ_SOURCE_TYPE_PROFILE if not set.
updatePersonFields
- Required. A field mask to restrict which fields on
the person are updated. Multiple fields can be specified by separating
them with commas. All updated fields will be replaced. Valid values are: *
addresses * biographies * birthdays * calendarUrls * clientData *
emailAddresses * events * externalIds * genders * imClients * interests *
locales * locations * memberships * miscKeywords * names * nicknames *
occupations * organizations * phoneNumbers * relations * sipAddresses *
urls * userDefined
$fields
- Selector specifying which fields to include in a partial
response.
Completes with a Person.
Completes with a commons.ApiRequestError if the API endpoint returned an error.
If the used http.Client
completes with an error when making a REST call,
this method will complete with the same error.
Implementation
async.Future<Person> updateContact(
Person request,
core.String resourceName, {
core.String? personFields,
core.List<core.String>? sources,
core.String? updatePersonFields,
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if (personFields != null) 'personFields': [personFields],
if (sources != null) 'sources': sources,
if (updatePersonFields != null)
'updatePersonFields': [updatePersonFields],
if ($fields != null) 'fields': [$fields],
};
final url_ =
'v1/' + core.Uri.encodeFull('$resourceName') + ':updateContact';
final response_ = await _requester.request(
url_,
'PATCH',
body: body_,
queryParams: queryParams_,
);
return Person.fromJson(response_ as core.Map<core.String, core.dynamic>);
}