Skip to main content
Glama

mcp-google-sheets

client.ts5.42 kB
import { HttpMessageBody, HttpMethod, QueryParams, httpClient, } from '@activepieces/pieces-common'; import { FlowluEntity, FlowluModule } from './constants'; import { Account, AccountCategory, AccountHonorificTitle, AccountIndustry, CreateCRMAccountAPIRequest, CreateOpportunityAPIRequest, CreateTaskAPIRequest, ListAPIResponse, Opportunity, OpportunitySource, Pipeline, PipelineStage, Task, TaskWorkflow, TaskWorkflowStage, User, } from './types'; function emptyValueFilter( accessor: (key: string) => any ): (key: string) => boolean { return (key: string) => { const val = accessor(key); return ( val !== null && val !== undefined && (typeof val != 'string' || val.length > 0) ); }; } export function prepareQuery(request?: Record<string, any>): QueryParams { const params: QueryParams = {}; if (!request) return params; Object.keys(request) .filter(emptyValueFilter((k) => request[k])) .forEach((k: string) => { params[k] = (request as Record<string, any>)[k].toString(); }); return params; } export class FlowluClient { constructor(private domain: string, private apiKey: string) {} async makeRequest<T extends HttpMessageBody>( method: HttpMethod, resourceUri: string, query?: QueryParams, body: any | undefined = undefined ): Promise<T> { const res = await httpClient.sendRequest<T>({ method: method, url: `https://${this.domain}.flowlu.com/api/v1/module` + resourceUri, headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, queryParams: { api_key: this.apiKey, ...query }, body: body, }); return res.body; } async createAccount(request: CreateCRMAccountAPIRequest) { return await this.makeRequest( HttpMethod.POST, '/crm/account/create', undefined, request ); } async updateContact(id: number, request: CreateCRMAccountAPIRequest) { return await this.makeRequest( HttpMethod.POST, `/crm/account/update/${id}`, undefined, request ); } async listAllAccounts() { return await this.makeRequest<ListAPIResponse<Account[]>>( HttpMethod.GET, '/crm/account/list' ); } async listAllContacts() { return await this.makeRequest<ListAPIResponse<Account[]>>( HttpMethod.GET, '/crm/account/list', { 'filter[type]': '2' } ); } async createTask(request: CreateTaskAPIRequest) { return await this.makeRequest( HttpMethod.POST, '/task/tasks/create', undefined, request ); } async updateTask(id: number, request: CreateTaskAPIRequest) { return await this.makeRequest( HttpMethod.POST, `/task/tasks/update/${id}`, undefined, request ); } async getTask(id: number) { return await this.makeRequest(HttpMethod.GET, `/task/tasks/get/${id}`); } async listAllTasks() { return await this.makeRequest<ListAPIResponse<Task[]>>( HttpMethod.GET, '/task/tasks/list' ); } async createOpportunity(request: CreateOpportunityAPIRequest) { return await this.makeRequest( HttpMethod.POST, '/crm/lead/create', undefined, request ); } async updateOpportunity(id: number, request: CreateOpportunityAPIRequest) { return await this.makeRequest( HttpMethod.POST, `/crm/lead/update/${id}`, undefined, request ); } async listAllOpportunities() { return await this.makeRequest<ListAPIResponse<Opportunity[]>>( HttpMethod.GET, '/crm/lead/list' ); } async listAllUsers() { return await this.makeRequest<ListAPIResponse<User[]>>( HttpMethod.GET, '/core/user/list' ); } async listAllTaskWorkflow() { return await this.makeRequest<ListAPIResponse<TaskWorkflow[]>>( HttpMethod.GET, '/task/workflows/list' ); } async listAllTaskStages() { return await this.makeRequest<ListAPIResponse<TaskWorkflowStage[]>>( HttpMethod.GET, '/task/stages/list' ); } async listAllHonorificTitles() { return await this.makeRequest<ListAPIResponse<AccountHonorificTitle[]>>( HttpMethod.GET, '/crm/honorific_title/list' ); } async listAllAccountCategories() { return await this.makeRequest<ListAPIResponse<AccountCategory[]>>( HttpMethod.GET, '/crm/account_category/list' ); } async listAllAccountIndustries() { return await this.makeRequest<ListAPIResponse<AccountIndustry[]>>( HttpMethod.GET, '/crm/industry/list' ); } async listAllOpportunitySources() { return await this.makeRequest<ListAPIResponse<OpportunitySource[]>>( HttpMethod.GET, '/crm/source/list' ); } async listSalesPipelines() { return await this.makeRequest<ListAPIResponse<Pipeline[]>>( HttpMethod.GET, '/crm/pipeline/list' ); } async listSalesPipelineStages(pipeline_id: number) { return await this.makeRequest<ListAPIResponse<PipelineStage[]>>( HttpMethod.GET, '/crm/pipeline_stage/list', { 'filter[pipeline_id]': pipeline_id.toString() } ); } async deleteAction( moduleName: FlowluModule, entityName: FlowluEntity, id: number ) { return await this.makeRequest( HttpMethod.GET, `/${moduleName}/${entityName}/delete/${id}` ); } }

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