Skip to main content
Glama

mcp-google-sheets

update-contact.ts4.28 kB
import { createAction, Property, } from '@activepieces/pieces-framework'; import { HttpRequest, HttpMethod, AuthenticationType, httpClient, QueryParams, } from '@activepieces/pieces-common'; import { googleContactsCommon } from '../common'; import { googleContactsAuth } from '../../'; export const googleContactsUpdateContactAction = createAction({ auth: googleContactsAuth, name: 'update_contact', description: 'Update a contact in Google Contacts account.', displayName: 'Update Contact', props: { resourceName: Property.ShortText({ displayName: 'Resource Name', description: 'The resource name for the person, assigned by the server. An ASCII string in the form of people/{person_id}.', required: true, }), etag: Property.ShortText({ displayName: 'Etag', description: "The `etag` ensures contact updates only apply if the contact hasn't changed since last retrieved.", required: true, }), updatePersonFields: Property.StaticMultiSelectDropdown({ displayName: 'Update Field Mask', description: 'A field mask to restrict which fields on the person are updated.', required: true, options: { options: [ { label: 'Names', value: 'names' }, { label: 'Email', value: 'emailAddresses' }, { label: 'Phone Number', value: 'phoneNumbers' }, { label: 'Job Title / Company', value: 'organizations' }, ], }, defaultValue: ['names', 'emailAddresses'], }), firstName: Property.ShortText({ displayName: 'First Name', description: 'The first name of the contact', required: false, }), middleName: Property.ShortText({ displayName: 'Middle Name', description: 'The middle name of the contact', required: false, }), lastName: Property.ShortText({ displayName: 'Last Name', description: 'The last name of the contact', required: false, }), jobTitle: Property.ShortText({ displayName: 'Job Title', description: 'The job title of the contact', required: false, }), company: Property.ShortText({ displayName: 'Company', description: 'The company of the contact', required: false, }), email: Property.ShortText({ displayName: 'Email', description: 'The email address of the contact', required: false, }), phoneNumber: Property.ShortText({ displayName: 'Phone Number', description: 'The phone number of the contact', required: false, }), }, async run(context) { const resourceName = context.propsValue['resourceName'].substring(6); const requestBody: Record<string, unknown> = { etag: context.propsValue['etag'], }; const qs: QueryParams = { updatePersonFields: context.propsValue['updatePersonFields'].join(','), }; if ( context.propsValue['firstName'] || context.propsValue['middleName'] || context.propsValue['lastName'] ) { requestBody['names'] = [ { givenName: context.propsValue['firstName'] || undefined, middleName: context.propsValue['middleName'] || undefined, familyName: context.propsValue['lastName'] || undefined, }, ]; } if (context.propsValue['email']) { requestBody['emailAddresses'] = [{ value: context.propsValue['email'] }]; } if (context.propsValue['phoneNumber']) { requestBody['phoneNumbers'] = [ { value: context.propsValue['phoneNumber'] }, ]; } if (context.propsValue['company'] || context.propsValue['jobTitle']) { requestBody['organizations'] = [ { name: context.propsValue['company'] || undefined, title: context.propsValue['jobTitle'] || undefined, }, ]; } const request: HttpRequest<Record<string, unknown>> = { method: HttpMethod.PATCH, url: `${googleContactsCommon.baseUrl}${resourceName}:updateContact`, body: requestBody, authentication: { type: AuthenticationType.BEARER_TOKEN, token: context.auth.access_token, }, queryParams: qs, }; return (await httpClient.sendRequest(request)).body; }, });

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/activepieces/activepieces'

If you have feedback or need assistance with the MCP directory API, please join our Discord server