Skip to main content
Glama

mcp-google-sheets

new-invoice.ts2.39 kB
import { TriggerStrategy, createTrigger, PiecePropValueSchema, } from '@activepieces/pieces-framework'; import { quickbooksAuth } from '../index'; import { DedupeStrategy, httpClient, HttpMethod, Polling, pollingHelper, } from '@activepieces/pieces-common'; import { quickbooksCommon, QuickbooksEntityResponse } from '../lib/common'; import dayjs from 'dayjs'; import { QuickbooksInvoice } from '../lib/types'; const polling: Polling< PiecePropValueSchema<typeof quickbooksAuth>, Record<string, unknown> > = { strategy: DedupeStrategy.TIMEBASED, async items({ auth, lastFetchEpochMS }) { const { access_token } = auth; const companyId = auth.props?.['companyId']; const apiUrl = quickbooksCommon.getApiUrl(companyId); const query = lastFetchEpochMS === 0 ? `SELECT * FROM Invoice ORDERBY Metadata.CreateTime DESC MAXRESULTS 10` : `SELECT * FROM Invoice WHERE Metadata.CreateTime >= '${dayjs( lastFetchEpochMS ).toISOString()}' ORDERBY Metadata.CreateTime DESC`; const response = await httpClient.sendRequest< QuickbooksEntityResponse<QuickbooksInvoice> >({ method: HttpMethod.GET, url: `${apiUrl}/query`, queryParams: { query: query, minorversion: '70' }, headers: { Authorization: `Bearer ${access_token}`, Accept: 'application/json', }, }); const invoices = response.body.QueryResponse?.['Invoice'] ?? []; return invoices.map((invoice) => ({ epochMilliSeconds: dayjs(invoice.MetaData?.CreateTime).valueOf(), data: invoice, })); }, }; export const newInvoice = createTrigger({ auth: quickbooksAuth, name: 'new_invoice', displayName: 'New Invoice', description: 'Triggers when an invoice is created .', props: {}, type: TriggerStrategy.POLLING, async onEnable(context) { await pollingHelper.onEnable(polling, { auth: context.auth, store: context.store, propsValue: context.propsValue, }); }, async onDisable(context) { await pollingHelper.onDisable(polling, { auth: context.auth, store: context.store, propsValue: context.propsValue, }); }, async test(context) { return await pollingHelper.test(polling, context); }, async run(context) { return await pollingHelper.poll(polling, context); }, sampleData: undefined, });

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