Skip to main content
Glama

mcp-google-sheets

new-invoice.ts3.13 kB
import { teamleaderAuth } from '../common/auth'; import { HttpMethod, HttpRequest, httpClient, } from '@activepieces/pieces-common'; import { TriggerStrategy, createTrigger, } from '@activepieces/pieces-framework'; import { teamleaderCommon } from '../common/client'; export const newInvoice = createTrigger({ name: 'new_invoice', displayName: 'New Invoice', description: 'Triggers when a new invoice is drafted', auth: teamleaderAuth, type: TriggerStrategy.WEBHOOK, props: {}, sampleData: { id: '12345678-abcd-1234-5678-1234567890gh', invoice_number: '2025 / 001', invoice_date: '2025-01-15', status: 'draft', due_on: '2025-02-14', paid: false, paid_at: null, sent: false, purchase_order_number: 'PO-2025-001', payment_reference: '+++084/2613/66074+++', invoicee: { type: 'company', id: '12345678-abcd-1234-5678-1234567890ef' }, department: { type: 'department', id: '45985439-58ce-02df-2542-9dfe87ee1a39' }, total: { amount: 2500.00, currency: 'EUR' }, currency_exchange_rate: { from: 'EUR', to: 'EUR', rate: 1.0 }, deal: { type: 'deal', id: '12345678-abcd-1234-5678-1234567890cd' }, project: null, created_at: '2025-01-15T10:30:00+00:00', updated_at: '2025-01-15T10:30:00+00:00', web_url: 'https://focus.teamleader.eu/invoice_detail.php?id=12345678-abcd-1234-5678-1234567890gh' }, onEnable: async (context) => { const webhookUrl = context.webhookUrl; const request: HttpRequest = { method: HttpMethod.POST, url: `${teamleaderCommon.baseUrl}/webhooks.register`, body: { url: webhookUrl, types: ['invoice.drafted'] }, headers: { Authorization: `Bearer ${context.auth.access_token}`, 'Content-Type': 'application/json', }, }; const { status } = await httpClient.sendRequest(request); if (status !== 204) { throw new Error(`Failed to register webhook. Status: ${status}`); } }, onDisable: async (context) => { const webhookUrl = context.webhookUrl; const request: HttpRequest = { method: HttpMethod.POST, url: `${teamleaderCommon.baseUrl}/webhooks.unregister`, body: { url: webhookUrl, types: ['invoice.drafted'] }, headers: { Authorization: `Bearer ${context.auth.access_token}`, 'Content-Type': 'application/json', }, }; try { await httpClient.sendRequest(request); } catch (error) { console.warn('Failed to unregister webhook:', error); } }, run: async (context) => { const payload = context.payload.body as any; if (payload?.id) { try { const invoiceDetails = await teamleaderCommon.apiCall({ auth: context.auth, method: HttpMethod.POST, resourceUri: '/invoices.info', body: { id: payload.id } }); return [invoiceDetails.body.data]; } catch (error) { return [payload]; } } return [payload]; }, });

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