Skip to main content
Glama

mcp-google-sheets

create-invoice.ts3.22 kB
import { Property, createAction } from '@activepieces/pieces-framework'; import { AuthenticationType, HttpMethod, HttpRequest, httpClient, } from '@activepieces/pieces-common'; import { props } from '../common/props'; import dayjs from 'dayjs'; import { xeroAuth } from '../..'; export const xeroCreateInvoice = createAction({ auth: xeroAuth, name: 'xero_create_invoice', description: 'Create Xero Invoice', displayName: 'Create or Update Invoice', props: { tenant_id: props.tenant_id, invoice_id: props.invoice_id(false), contact_id: props.contact_dropdown(false), name: props.contact_name(true), email: props.contact_email(false), line_item: Property.Object({ displayName: 'Line Item', description: 'Invoice line items', required: true, defaultValue: { AccountCode: 200, Quantity: 0, UnitAmount: 0, LineAmount: 0, TaxType: 'NONE', Description: 'description', }, }), date: Property.ShortText({ displayName: 'Date Prepared', description: 'Date the invoice was created. Format example: 2019-03-11', required: false, }), due_date: Property.ShortText({ displayName: 'Due Date', description: 'Due date of the invoice. Format example: 2019-03-11', defaultValue: dayjs().format('YYYY-MM-DD'), required: true, }), reference: Property.ShortText({ displayName: 'Invoice Reference', description: 'Reference number of the Invoice', required: false, }), status: Property.StaticDropdown({ displayName: 'Status', description: 'Invoice Status', required: true, options: { options: [ { label: 'Draft', value: 'DRAFT' }, { label: 'Submitted', value: 'SUBMITTED' }, { label: 'Authorised', value: 'AUTHORISED' }, { label: 'Deleted', value: 'DELETED' }, { label: 'Voided', value: 'VOIDED' }, ], }, }), }, async run(context) { const { invoice_id, contact_id, email, name, tenant_id, ...invoice } = context.propsValue; const contact: Record<string, unknown> = { Name: name }; if (email) contact['EmailAddress'] = email; if (contact_id) contact['ContactID'] = contact_id; const body = { Invoices: [ { Type: 'ACCREC', Contact: contact, LineItems: invoice.line_item ? [invoice.line_item] : [], Date: invoice.date, DueDate: invoice.due_date, Reference: invoice.reference, Status: invoice.status, }, ], }; const url = 'https://api.xero.com/api.xro/2.0/Invoices'; const request: HttpRequest = { method: HttpMethod.POST, url: invoice_id ? `${url}/${invoice_id}` : url, body, authentication: { type: AuthenticationType.BEARER_TOKEN, token: context.auth.access_token, }, headers: { 'Xero-Tenant-Id': tenant_id, }, }; const result = await httpClient.sendRequest(request); console.debug('Invoice creation response', result); if (result.status === 200) { return result.body; } return result; }, });

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