Skip to main content
Glama

mcp-google-sheets

create-lead.ts4.45 kB
import { Property, createAction } from '@activepieces/pieces-framework'; import { closeAuth } from './../../index'; import { HttpMethod } from '@activepieces/pieces-common'; import { closeApiCall } from '../common/client'; import { customFields, statusId } from '../common/props'; export const createLead = createAction({ auth: closeAuth, name: 'create_lead', displayName: 'Create Lead', description: 'Creates a new lead.', props: { name: Property.ShortText({ displayName: 'Lead Name', description: 'The name of the lead/company.', required: true, }), url: Property.ShortText({ displayName: 'URL', required: false, }), description: Property.LongText({ displayName: 'Description', required: false, }), contacts: Property.Array({ displayName: 'Contacts', description: 'Array of contact details for this lead', required: false, properties: { name: Property.ShortText({ displayName: 'Contact Name', required: true, }), title: Property.ShortText({ displayName: 'Contact Title', required: false, }), officePhone: Property.ShortText({ displayName: 'Contact Office Phone', required: false, }), mobilePhone: Property.ShortText({ displayName: 'Contact Mobile Phone', required: false, }), homePhone: Property.ShortText({ displayName: 'Contact Home Phone', required: false, }), directPhone: Property.ShortText({ displayName: 'Contact Direct Phone', required: false, }), faxPhone: Property.ShortText({ displayName: 'Contact Fax Phone', required: false, }), otherPhone: Property.ShortText({ displayName: 'Contact Other Phone', required: false, }), officeEmail: Property.ShortText({ displayName: 'Contact Office Email', required: false, }), homeEmail: Property.ShortText({ displayName: 'Contact Home Email', required: false, }), directEmail: Property.ShortText({ displayName: 'Contact Direct Email', required: false, }), otherEmail: Property.ShortText({ displayName: 'Contact Other Email', required: false, }), url: Property.ShortText({ displayName: 'Contact URL', required: false, }), }, }), statusId: statusId('lead', false), customFields: customFields('lead'), }, async run(context) { const { name, url, description, statusId } = context.propsValue; const contacts = (context.propsValue.contacts as ContactInfo[]) ?? []; const customFields = context.propsValue.customFields ?? {}; const transformedCustomFields = Object.fromEntries( Object.entries(customFields) .filter(([, v]) => v !== '' && v != null && !(Array.isArray(v) && v.length === 0)) .map(([key, value]) => [`custom.${key}`, value]), ); const transformedContacts = contacts.map((contact) => { const phoneTypes = [ 'officePhone', 'mobilePhone', 'homePhone', 'directPhone', 'faxPhone', 'otherPhone', ] as const; const emailTypes = ['officeEmail', 'homeEmail', 'directEmail', 'otherEmail'] as const; const phones = phoneTypes .filter((key) => contact[key]?.trim()) .map((key) => ({ type: key.replace('Phone', ''), phone: contact[key]!.trim(), })); const emails = emailTypes .filter((key) => contact[key]?.trim()) .map((key) => ({ type: key.replace('Email', ''), email: contact[key]!.trim(), })); return { name: contact.name?.trim(), title: contact.title?.trim(), phones: phones.length > 0 ? phones : undefined, emails: emails.length > 0 ? emails : undefined, urls: contact.url ? [ { type: 'url', url: contact.url, }, ] : [], }; }); const payload: Record<string, any> = { name, url, description, status_id: statusId, contacts: transformedContacts, ...transformedCustomFields, }; const response = await closeApiCall({ accessToken: context.auth, method: HttpMethod.POST, resourceUri: '/lead/', body: payload, }); return response; }, }); type ContactInfo = { name?: string; title?: string; officePhone?: string; mobilePhone?: string; homePhone?: string; directPhone?: string; faxPhone?: string; otherPhone?: string; officeEmail?: string; mobileEmail?: string; homeEmail?: string; directEmail?: string; faxEmail?: string; otherEmail?: string; url?: string; };

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