diff --git a/packages/pieces/community/oracle-fusion-cloud-erp/.eslintrc.json b/packages/pieces/community/oracle-fusion-cloud-erp/.eslintrc.json new file mode 100644 index 00000000000..4a4e695c547 --- /dev/null +++ b/packages/pieces/community/oracle-fusion-cloud-erp/.eslintrc.json @@ -0,0 +1,33 @@ +{ + "extends": [ + "../../../../.eslintrc.base.json" + ], + "ignorePatterns": [ + "!**/*" + ], + "overrides": [ + { + "files": [ + "*.ts", + "*.tsx", + "*.js", + "*.jsx" + ], + "rules": {} + }, + { + "files": [ + "*.ts", + "*.tsx" + ], + "rules": {} + }, + { + "files": [ + "*.js", + "*.jsx" + ], + "rules": {} + } + ] +} \ No newline at end of file diff --git a/packages/pieces/community/oracle-fusion-cloud-erp/README.md b/packages/pieces/community/oracle-fusion-cloud-erp/README.md new file mode 100644 index 00000000000..789119571da --- /dev/null +++ b/packages/pieces/community/oracle-fusion-cloud-erp/README.md @@ -0,0 +1,7 @@ +# pieces-oracle-fusion-cloud-erp + +This library was generated with [Nx](https://nx.dev). + +## Building + +Run `nx build pieces-oracle-fusion-cloud-erp` to build the library. diff --git a/packages/pieces/community/oracle-fusion-cloud-erp/package.json b/packages/pieces/community/oracle-fusion-cloud-erp/package.json new file mode 100644 index 00000000000..e28f5a769b4 --- /dev/null +++ b/packages/pieces/community/oracle-fusion-cloud-erp/package.json @@ -0,0 +1,10 @@ +{ + "name": "@activepieces/piece-oracle-fusion-cloud-erp", + "version": "0.0.1", + "type": "commonjs", + "main": "./src/index.js", + "types": "./src/index.d.ts", + "dependencies": { + "tslib": "^2.3.0" + } +} diff --git a/packages/pieces/community/oracle-fusion-cloud-erp/project.json b/packages/pieces/community/oracle-fusion-cloud-erp/project.json new file mode 100644 index 00000000000..1cc29af3b3d --- /dev/null +++ b/packages/pieces/community/oracle-fusion-cloud-erp/project.json @@ -0,0 +1,51 @@ +{ + "name": "pieces-oracle-fusion-cloud-erp", + "$schema": "../../../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "packages/pieces/community/oracle-fusion-cloud-erp/src", + "projectType": "library", + "release": { + "version": { + "manifestRootsToUpdate": [ + "dist/{projectRoot}" + ], + "currentVersionResolver": "git-tag", + "fallbackCurrentVersionResolver": "disk" + } + }, + "tags": [], + "targets": { + "build": { + "executor": "@nx/js:tsc", + "outputs": [ + "{options.outputPath}" + ], + "options": { + "outputPath": "dist/packages/pieces/community/oracle-fusion-cloud-erp", + "tsConfig": "packages/pieces/community/oracle-fusion-cloud-erp/tsconfig.lib.json", + "packageJson": "packages/pieces/community/oracle-fusion-cloud-erp/package.json", + "main": "packages/pieces/community/oracle-fusion-cloud-erp/src/index.ts", + "assets": [ + "packages/pieces/community/oracle-fusion-cloud-erp/*.md", + { + "input": "packages/pieces/community/oracle-fusion-cloud-erp/src/i18n", + "output": "./src/i18n", + "glob": "**/!(i18n.json)" + } + ], + "buildableProjectDepsInPackageJsonType": "dependencies", + "updateBuildableProjectDepsInPackageJson": true + } + }, + "nx-release-publish": { + "options": { + "packageRoot": "dist/{projectRoot}" + } + }, + "lint": { + "executor": "@nx/eslint:lint", + "outputs": [ + "{options.outputFile}" + ] + } + } +} \ No newline at end of file diff --git a/packages/pieces/community/oracle-fusion-cloud-erp/src/index.ts b/packages/pieces/community/oracle-fusion-cloud-erp/src/index.ts new file mode 100644 index 00000000000..25213e0bde6 --- /dev/null +++ b/packages/pieces/community/oracle-fusion-cloud-erp/src/index.ts @@ -0,0 +1,119 @@ + +import { + createPiece, + PieceAuth, + Property, +} from '@activepieces/pieces-framework'; +import { PieceCategory } from '@activepieces/shared'; +import { createCustomApiCallAction } from '@activepieces/pieces-common'; + +const authDesc = ` +Connect to your Oracle Fusion Cloud ERP instance using Basic Authentication. + +**Required:** +- **Server URL**: Your Oracle Fusion instance URL (e.g., https://your-instance.fa.us2.oraclecloud.com) +- **Username**: Your Oracle Cloud username with API access +- **Password**: Your Oracle Cloud password + +Contact your Oracle administrator if you need REST API access enabled. +`; + +export const oracleFusionCloudErpAuth = PieceAuth.CustomAuth({ + description: authDesc, + required: true, + props: { + serverUrl: Property.ShortText({ + displayName: 'Server URL', + description: 'Your Oracle Fusion Cloud instance URL (e.g., https://your-instance.fa.us2.oraclecloud.com)', + required: true, + }), + username: Property.ShortText({ + displayName: 'Username', + description: 'Your Oracle Cloud username', + required: true, + }), + password: PieceAuth.SecretText({ + displayName: 'Password', + description: 'Your Oracle Cloud password', + required: true, + }), + }, +}); + +import { + createInvoice, + getInvoice, + findInvoices, + updateInvoice, + deleteInvoice, + validateInvoice, + cancelInvoice, +} from './lib/actions/invoices'; +import { + createReceivablesInvoice, + getReceivablesInvoice, + findReceivablesInvoices, + updateReceivablesInvoice, + deleteReceivablesInvoice, +} from './lib/actions/receivables-invoices'; +import { + createPayment, + getPayment, + findPayments, + updatePayment, + stopPayment, + voidPayment, +} from './lib/actions/payments'; +import { + getJournalBatch, + findJournalBatches, + updateJournalBatch, + deleteJournalBatch, +} from './lib/actions/journal-batches'; + +export const oracleFusionCloudErp = createPiece({ + displayName: 'Oracle Fusion Cloud ERP', + description: 'Enterprise resource planning suite covering financials, procurement, project accounting, supply chain, and more.', + minimumSupportedRelease: '0.36.1', + logoUrl: 'https://cdn.activepieces.com/pieces/oracle-fusion-cloud-erp.png', + authors: ['owuzo', 'onyedikachi-david'], + categories: [PieceCategory.ACCOUNTING], + auth: oracleFusionCloudErpAuth, + actions: [ + createInvoice, + getInvoice, + findInvoices, + updateInvoice, + deleteInvoice, + validateInvoice, + cancelInvoice, + createReceivablesInvoice, + getReceivablesInvoice, + findReceivablesInvoices, + updateReceivablesInvoice, + deleteReceivablesInvoice, + createPayment, + getPayment, + findPayments, + updatePayment, + stopPayment, + voidPayment, + getJournalBatch, + findJournalBatches, + updateJournalBatch, + deleteJournalBatch, + createCustomApiCallAction({ + baseUrl: (auth) => + `${auth?.props.serverUrl}/fscmRestApi/resources/11.13.18.05`, + auth: oracleFusionCloudErpAuth, + authMapping: async (auth) => { + const { username, password } = auth.props; + return { + Authorization: `Basic ${Buffer.from(`${username}:${password}`).toString('base64')}`, + }; + }, + }), + ], + triggers: [], +}); + \ No newline at end of file diff --git a/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/invoices/cancel-invoice.ts b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/invoices/cancel-invoice.ts new file mode 100644 index 00000000000..42c29c9e90e --- /dev/null +++ b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/invoices/cancel-invoice.ts @@ -0,0 +1,26 @@ +import { createAction, Property } from '@activepieces/pieces-framework'; +import { oracleFusionCloudErpAuth } from '../../../index'; +import { makeClient } from '../../common/client'; + +export const cancelInvoice = createAction({ + auth: oracleFusionCloudErpAuth, + name: 'cancel_invoice', + displayName: 'Cancel Invoice', + description: 'Cancels a payables invoice in Oracle Fusion Cloud ERP.', + props: { + invoiceId: Property.ShortText({ + displayName: 'Invoice ID', + description: 'The unique identifier of the invoice to cancel.', + required: true, + }), + }, + async run(context) { + const client = makeClient(context.auth.props); + const { invoiceId } = context.propsValue; + + const response = await client.executeAction('/invoices/action/cancelInvoice', { + InvoiceId: invoiceId, + }); + return response; + }, +}); diff --git a/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/invoices/create-invoice.ts b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/invoices/create-invoice.ts new file mode 100644 index 00000000000..d1842d71316 --- /dev/null +++ b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/invoices/create-invoice.ts @@ -0,0 +1,146 @@ +import { createAction, Property } from '@activepieces/pieces-framework'; +import { oracleFusionCloudErpAuth } from '../../../index'; +import { makeClient } from '../../common/client'; + +export const createInvoice = createAction({ + auth: oracleFusionCloudErpAuth, + name: 'create_invoice', + displayName: 'Create Invoice', + description: 'Creates a new payables invoice in Oracle Fusion Cloud ERP.', + props: { + invoiceNumber: Property.ShortText({ + displayName: 'Invoice Number', + description: 'Unique invoice number from the supplier.', + required: true, + }), + businessUnit: Property.ShortText({ + displayName: 'Business Unit', + description: 'The business unit name for the invoice.', + required: true, + }), + supplier: Property.ShortText({ + displayName: 'Supplier', + description: 'The supplier name on the invoice.', + required: true, + }), + supplierSite: Property.ShortText({ + displayName: 'Supplier Site', + description: 'The supplier site from where goods/services are rendered.', + required: true, + }), + invoiceAmount: Property.Number({ + displayName: 'Invoice Amount', + description: 'The total invoice amount.', + required: true, + }), + invoiceCurrency: Property.ShortText({ + displayName: 'Invoice Currency', + description: 'Currency code (e.g., USD, EUR).', + required: true, + defaultValue: 'USD', + }), + paymentCurrency: Property.ShortText({ + displayName: 'Payment Currency', + description: 'Currency used for payment.', + required: true, + defaultValue: 'USD', + }), + invoiceDate: Property.ShortText({ + displayName: 'Invoice Date', + description: 'Invoice date in YYYY-MM-DD format.', + required: true, + }), + accountingDate: Property.ShortText({ + displayName: 'Accounting Date', + description: 'Accounting date in YYYY-MM-DD format.', + required: true, + }), + termsDate: Property.ShortText({ + displayName: 'Terms Date', + description: 'Date used with payment terms to calculate due dates (YYYY-MM-DD).', + required: true, + }), + paymentMethodCode: Property.ShortText({ + displayName: 'Payment Method Code', + description: 'Payment method code (e.g., CHECK, EFT).', + required: true, + }), + paymentTerms: Property.ShortText({ + displayName: 'Payment Terms', + description: 'Payment terms used to calculate due dates.', + required: false, + }), + description: Property.LongText({ + displayName: 'Description', + description: 'Description of the invoice.', + required: false, + }), + invoiceGroup: Property.ShortText({ + displayName: 'Invoice Group', + description: 'Group name for reporting and payment purposes.', + required: false, + }), + invoiceType: Property.StaticDropdown({ + displayName: 'Invoice Type', + description: 'Type of invoice.', + required: false, + options: { + options: [ + { label: 'Standard', value: 'Standard' }, + { label: 'Prepayment', value: 'Prepayment' }, + { label: 'Credit Memo', value: 'Credit Memo' }, + { label: 'Debit Memo', value: 'Debit Memo' }, + ], + }, + }), + requester: Property.ShortText({ + displayName: 'Requester', + description: 'Name of the person who requested the goods or services.', + required: false, + }), + }, + async run(context) { + const client = makeClient(context.auth.props); + const { + invoiceNumber, + businessUnit, + supplier, + supplierSite, + invoiceAmount, + invoiceCurrency, + paymentCurrency, + invoiceDate, + accountingDate, + termsDate, + paymentMethodCode, + paymentTerms, + description, + invoiceGroup, + invoiceType, + requester, + } = context.propsValue; + + const payload: Record = { + InvoiceNumber: invoiceNumber, + BusinessUnit: businessUnit, + Supplier: supplier, + SupplierSite: supplierSite, + InvoiceAmount: invoiceAmount, + InvoiceCurrency: invoiceCurrency, + PaymentCurrency: paymentCurrency, + InvoiceDate: invoiceDate, + AccountingDate: accountingDate, + TermsDate: termsDate, + PaymentMethodCode: paymentMethodCode, + }; + + if (paymentTerms) payload['PaymentTerms'] = paymentTerms; + if (description) payload['Description'] = description; + if (invoiceGroup) payload['InvoiceGroup'] = invoiceGroup; + if (invoiceType) payload['InvoiceType'] = invoiceType; + if (requester) payload['Requester'] = requester; + + const response = await client.createRecord('/invoices', payload); + return response; + }, +}); diff --git a/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/invoices/delete-invoice.ts b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/invoices/delete-invoice.ts new file mode 100644 index 00000000000..b7f78f0d0e4 --- /dev/null +++ b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/invoices/delete-invoice.ts @@ -0,0 +1,24 @@ +import { createAction, Property } from '@activepieces/pieces-framework'; +import { oracleFusionCloudErpAuth } from '../../../index'; +import { makeClient } from '../../common/client'; + +export const deleteInvoice = createAction({ + auth: oracleFusionCloudErpAuth, + name: 'delete_invoice', + displayName: 'Delete Invoice', + description: 'Deletes a payables invoice from Oracle Fusion Cloud ERP.', + props: { + invoiceId: Property.ShortText({ + displayName: 'Invoice ID', + description: 'The unique identifier of the invoice to delete.', + required: true, + }), + }, + async run(context) { + const client = makeClient(context.auth.props); + const { invoiceId } = context.propsValue; + + await client.deleteRecord(`/invoices/${invoiceId}`); + return { success: true, message: `Invoice ${invoiceId} deleted successfully.` }; + }, +}); diff --git a/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/invoices/find-invoices.ts b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/invoices/find-invoices.ts new file mode 100644 index 00000000000..7a1d6dde753 --- /dev/null +++ b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/invoices/find-invoices.ts @@ -0,0 +1,73 @@ +import { createAction, Property } from '@activepieces/pieces-framework'; +import { oracleFusionCloudErpAuth } from '../../../index'; +import { makeClient } from '../../common/client'; + +export const findInvoices = createAction({ + auth: oracleFusionCloudErpAuth, + name: 'find_invoices', + displayName: 'Find Invoices', + description: 'Search for payables invoices with optional filters.', + props: { + invoiceNumber: Property.ShortText({ + displayName: 'Invoice Number', + description: 'Filter by invoice number.', + required: false, + }), + supplier: Property.ShortText({ + displayName: 'Supplier', + description: 'Filter by supplier name.', + required: false, + }), + businessUnit: Property.ShortText({ + displayName: 'Business Unit', + description: 'Filter by business unit.', + required: false, + }), + validationStatus: Property.StaticDropdown({ + displayName: 'Validation Status', + description: 'Filter by validation status.', + required: false, + options: { + options: [ + { label: 'Not Validated', value: 'Not Validated' }, + { label: 'Validated', value: 'Validated' }, + { label: 'Needs Revalidation', value: 'Needs Revalidation' }, + ], + }, + }), + limit: Property.Number({ + displayName: 'Limit', + description: 'Maximum number of records to return (default: 25, max: 500).', + required: false, + defaultValue: 25, + }), + offset: Property.Number({ + displayName: 'Offset', + description: 'Number of records to skip for pagination.', + required: false, + defaultValue: 0, + }), + }, + async run(context) { + const client = makeClient(context.auth.props); + const { invoiceNumber, supplier, businessUnit, validationStatus, limit, offset } = context.propsValue; + + const queryParams: Record = { + limit: Math.min(limit || 25, 500), + offset: offset || 0, + }; + + const filters: string[] = []; + if (invoiceNumber) filters.push(`InvoiceNumber="${invoiceNumber}"`); + if (supplier) filters.push(`Supplier="${supplier}"`); + if (businessUnit) filters.push(`BusinessUnit="${businessUnit}"`); + if (validationStatus) filters.push(`ValidationStatus="${validationStatus}"`); + + if (filters.length > 0) { + queryParams['q'] = filters.join(' AND '); + } + + const response = await client.searchRecords('/invoices', queryParams); + return response; + }, +}); diff --git a/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/invoices/get-invoice.ts b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/invoices/get-invoice.ts new file mode 100644 index 00000000000..0c0b4be53de --- /dev/null +++ b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/invoices/get-invoice.ts @@ -0,0 +1,24 @@ +import { createAction, Property } from '@activepieces/pieces-framework'; +import { oracleFusionCloudErpAuth } from '../../../index'; +import { makeClient } from '../../common/client'; + +export const getInvoice = createAction({ + auth: oracleFusionCloudErpAuth, + name: 'get_invoice', + displayName: 'Get Invoice', + description: 'Retrieves details of a specific payables invoice by ID.', + props: { + invoiceId: Property.ShortText({ + displayName: 'Invoice ID', + description: 'The unique identifier of the invoice (InvoiceId or invoicesUniqID).', + required: true, + }), + }, + async run(context) { + const client = makeClient(context.auth.props); + const { invoiceId } = context.propsValue; + + const response = await client.getRecord(`/invoices/${invoiceId}`); + return response; + }, +}); diff --git a/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/invoices/index.ts b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/invoices/index.ts new file mode 100644 index 00000000000..87338baba65 --- /dev/null +++ b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/invoices/index.ts @@ -0,0 +1,7 @@ +export { createInvoice } from './create-invoice'; +export { getInvoice } from './get-invoice'; +export { findInvoices } from './find-invoices'; +export { updateInvoice } from './update-invoice'; +export { deleteInvoice } from './delete-invoice'; +export { validateInvoice } from './validate-invoice'; +export { cancelInvoice } from './cancel-invoice'; diff --git a/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/invoices/update-invoice.ts b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/invoices/update-invoice.ts new file mode 100644 index 00000000000..d3a93bc08fa --- /dev/null +++ b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/invoices/update-invoice.ts @@ -0,0 +1,89 @@ +import { createAction, Property } from '@activepieces/pieces-framework'; +import { oracleFusionCloudErpAuth } from '../../../index'; +import { makeClient } from '../../common/client'; + +export const updateInvoice = createAction({ + auth: oracleFusionCloudErpAuth, + name: 'update_invoice', + displayName: 'Update Invoice', + description: 'Updates an existing payables invoice. Note: Only certain attributes can be updated and cascade defaulting does not apply.', + props: { + invoiceId: Property.ShortText({ + displayName: 'Invoice ID', + description: 'The unique identifier of the invoice to update.', + required: true, + }), + description: Property.LongText({ + displayName: 'Description', + description: 'Updated description for the invoice.', + required: false, + }), + paymentTerms: Property.ShortText({ + displayName: 'Payment Terms', + description: 'Updated payment terms.', + required: false, + }), + payGroup: Property.ShortText({ + displayName: 'Pay Group', + description: 'Updated pay group.', + required: false, + }), + invoiceGroup: Property.ShortText({ + displayName: 'Invoice Group', + description: 'Updated invoice group.', + required: false, + }), + paymentMethodCode: Property.ShortText({ + displayName: 'Payment Method Code', + description: 'Updated payment method code.', + required: false, + }), + remittanceMessageOne: Property.ShortText({ + displayName: 'Remittance Message 1', + description: 'Remittance message for payment processing.', + required: false, + }), + remittanceMessageTwo: Property.ShortText({ + displayName: 'Remittance Message 2', + description: 'Additional remittance message.', + required: false, + }), + remittanceMessageThree: Property.ShortText({ + displayName: 'Remittance Message 3', + description: 'Additional remittance message.', + required: false, + }), + }, + async run(context) { + const client = makeClient(context.auth.props); + const { + invoiceId, + description, + paymentTerms, + payGroup, + invoiceGroup, + paymentMethodCode, + remittanceMessageOne, + remittanceMessageTwo, + remittanceMessageThree, + } = context.propsValue; + + const payload: Record = {}; + + if (description !== undefined && description !== '') payload['Description'] = description; + if (paymentTerms) payload['PaymentTerms'] = paymentTerms; + if (payGroup) payload['PayGroup'] = payGroup; + if (invoiceGroup) payload['InvoiceGroup'] = invoiceGroup; + if (paymentMethodCode) payload['PaymentMethodCode'] = paymentMethodCode; + if (remittanceMessageOne) payload['RemittanceMessageOne'] = remittanceMessageOne; + if (remittanceMessageTwo) payload['RemittanceMessageTwo'] = remittanceMessageTwo; + if (remittanceMessageThree) payload['RemittanceMessageThree'] = remittanceMessageThree; + + if (Object.keys(payload).length === 0) { + throw new Error('At least one field must be provided to update the invoice.'); + } + + const response = await client.updateRecord(`/invoices/${invoiceId}`, payload); + return response; + }, +}); diff --git a/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/invoices/validate-invoice.ts b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/invoices/validate-invoice.ts new file mode 100644 index 00000000000..8b76d54e819 --- /dev/null +++ b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/invoices/validate-invoice.ts @@ -0,0 +1,26 @@ +import { createAction, Property } from '@activepieces/pieces-framework'; +import { oracleFusionCloudErpAuth } from '../../../index'; +import { makeClient } from '../../common/client'; + +export const validateInvoice = createAction({ + auth: oracleFusionCloudErpAuth, + name: 'validate_invoice', + displayName: 'Validate Invoice', + description: 'Validates a payables invoice in Oracle Fusion Cloud ERP.', + props: { + invoiceId: Property.ShortText({ + displayName: 'Invoice ID', + description: 'The unique identifier of the invoice to validate.', + required: true, + }), + }, + async run(context) { + const client = makeClient(context.auth.props); + const { invoiceId } = context.propsValue; + + const response = await client.executeAction('/invoices/action/validateInvoice', { + InvoiceId: invoiceId, + }); + return response; + }, +}); diff --git a/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/journal-batches/delete-journal-batch.ts b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/journal-batches/delete-journal-batch.ts new file mode 100644 index 00000000000..249810e1988 --- /dev/null +++ b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/journal-batches/delete-journal-batch.ts @@ -0,0 +1,24 @@ +import { createAction, Property } from '@activepieces/pieces-framework'; +import { oracleFusionCloudErpAuth } from '../../../index'; +import { makeClient } from '../../common/client'; + +export const deleteJournalBatch = createAction({ + auth: oracleFusionCloudErpAuth, + name: 'delete_journal_batch', + displayName: 'Delete Journal Batch', + description: 'Deletes a journal batch from Oracle Fusion Cloud ERP.', + props: { + jeBatchId: Property.ShortText({ + displayName: 'Journal Batch ID', + description: 'The unique identifier of the journal batch to delete.', + required: true, + }), + }, + async run(context) { + const client = makeClient(context.auth.props); + const { jeBatchId } = context.propsValue; + + await client.deleteRecord(`/journalBatches/${jeBatchId}`); + return { success: true, message: `Journal batch ${jeBatchId} deleted successfully.` }; + }, +}); diff --git a/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/journal-batches/find-journal-batches.ts b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/journal-batches/find-journal-batches.ts new file mode 100644 index 00000000000..4bf66e2b425 --- /dev/null +++ b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/journal-batches/find-journal-batches.ts @@ -0,0 +1,79 @@ +import { createAction, Property } from '@activepieces/pieces-framework'; +import { oracleFusionCloudErpAuth } from '../../../index'; +import { makeClient } from '../../common/client'; + +export const findJournalBatches = createAction({ + auth: oracleFusionCloudErpAuth, + name: 'find_journal_batches', + displayName: 'Find Journal Batches', + description: 'Search for journal batches with optional filters.', + props: { + batchName: Property.ShortText({ + displayName: 'Batch Name', + description: 'Filter by batch name.', + required: false, + }), + status: Property.StaticDropdown({ + displayName: 'Status', + description: 'Filter by batch status.', + required: false, + options: { + options: [ + { label: 'Unposted', value: 'U' }, + { label: 'Posted', value: 'P' }, + { label: 'Error', value: 'E' }, + ], + }, + }), + defaultPeriodName: Property.ShortText({ + displayName: 'Period Name', + description: 'Filter by accounting period name.', + required: false, + }), + userJeSourceName: Property.ShortText({ + displayName: 'Journal Source', + description: 'Filter by journal source name.', + required: false, + }), + createdBy: Property.ShortText({ + displayName: 'Created By', + description: 'Filter by the user who created the batch.', + required: false, + }), + limit: Property.Number({ + displayName: 'Limit', + description: 'Maximum number of records to return (default: 25, max: 500).', + required: false, + defaultValue: 25, + }), + offset: Property.Number({ + displayName: 'Offset', + description: 'Number of records to skip for pagination.', + required: false, + defaultValue: 0, + }), + }, + async run(context) { + const client = makeClient(context.auth.props); + const { batchName, status, defaultPeriodName, userJeSourceName, createdBy, limit, offset } = context.propsValue; + + const queryParams: Record = { + limit: Math.min(limit || 25, 500), + offset: offset || 0, + }; + + const filters: string[] = []; + if (batchName) filters.push(`BatchName LIKE "*${batchName}*"`); + if (status) filters.push(`Status="${status}"`); + if (defaultPeriodName) filters.push(`DefaultPeriodName="${defaultPeriodName}"`); + if (userJeSourceName) filters.push(`UserJeSourceName="${userJeSourceName}"`); + if (createdBy) filters.push(`CreatedBy="${createdBy}"`); + + if (filters.length > 0) { + queryParams['q'] = filters.join(' AND '); + } + + const response = await client.searchRecords('/journalBatches', queryParams); + return response; + }, +}); diff --git a/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/journal-batches/get-journal-batch.ts b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/journal-batches/get-journal-batch.ts new file mode 100644 index 00000000000..8c90d4557f0 --- /dev/null +++ b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/journal-batches/get-journal-batch.ts @@ -0,0 +1,43 @@ +import { createAction, Property } from '@activepieces/pieces-framework'; +import { oracleFusionCloudErpAuth } from '../../../index'; +import { makeClient } from '../../common/client'; + +export const getJournalBatch = createAction({ + auth: oracleFusionCloudErpAuth, + name: 'get_journal_batch', + displayName: 'Get Journal Batch', + description: 'Retrieves details of a specific journal batch by ID.', + props: { + jeBatchId: Property.ShortText({ + displayName: 'Journal Batch ID', + description: 'The unique identifier of the journal batch.', + required: true, + }), + expand: Property.StaticMultiSelectDropdown({ + displayName: 'Expand Child Resources', + description: 'Select child resources to include in the response.', + required: false, + options: { + options: [ + { label: 'Journal Headers', value: 'journalHeaders' }, + { label: 'Journal Errors', value: 'journalErrors' }, + { label: 'Action Logs', value: 'journalActionLogs' }, + { label: 'Attachments', value: 'batchAttachment' }, + { label: 'Descriptive Flexfields', value: 'journalBatchDFF' }, + ], + }, + }), + }, + async run(context) { + const client = makeClient(context.auth.props); + const { jeBatchId, expand } = context.propsValue; + + const queryParams: Record = {}; + if (expand && expand.length > 0) { + queryParams['expand'] = expand.join(','); + } + + const response = await client.searchRecords(`/journalBatches/${jeBatchId}`, queryParams); + return response; + }, +}); diff --git a/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/journal-batches/index.ts b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/journal-batches/index.ts new file mode 100644 index 00000000000..37453b55481 --- /dev/null +++ b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/journal-batches/index.ts @@ -0,0 +1,4 @@ +export { getJournalBatch } from './get-journal-batch'; +export { findJournalBatches } from './find-journal-batches'; +export { updateJournalBatch } from './update-journal-batch'; +export { deleteJournalBatch } from './delete-journal-batch'; diff --git a/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/journal-batches/update-journal-batch.ts b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/journal-batches/update-journal-batch.ts new file mode 100644 index 00000000000..95398ca163d --- /dev/null +++ b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/journal-batches/update-journal-batch.ts @@ -0,0 +1,74 @@ +import { createAction, Property } from '@activepieces/pieces-framework'; +import { oracleFusionCloudErpAuth } from '../../../index'; +import { makeClient } from '../../common/client'; + +export const updateJournalBatch = createAction({ + auth: oracleFusionCloudErpAuth, + name: 'update_journal_batch', + displayName: 'Update Journal Batch', + description: 'Updates batch completion status and reversal attributes. Note: Only status and reversal attributes can be updated.', + props: { + jeBatchId: Property.ShortText({ + displayName: 'Journal Batch ID', + description: 'The unique identifier of the journal batch to update.', + required: true, + }), + status: Property.StaticDropdown({ + displayName: 'Batch Status', + description: 'The status of the batch.', + required: false, + options: { + options: [ + { label: 'Unposted', value: 'U' }, + { label: 'Posted', value: 'P' }, + ], + }, + }), + reversalFlag: Property.Checkbox({ + displayName: 'Reverse Journals', + description: 'Indicates whether to reverse all journals in the batch.', + required: false, + defaultValue: false, + }), + reversalDate: Property.ShortText({ + displayName: 'Reversal Date', + description: 'The reversal date for the journals in the batch (YYYY-MM-DD).', + required: false, + }), + reversalPeriod: Property.ShortText({ + displayName: 'Reversal Period', + description: 'The reversal period for the journals in the batch.', + required: false, + }), + reversalMethodMeaning: Property.StaticDropdown({ + displayName: 'Reversal Method', + description: 'The reversal method for the journals in the batch.', + required: false, + options: { + options: [ + { label: 'Change Sign', value: 'Change sign' }, + { label: 'Switch Debit or Credit', value: 'Switch debit or credit' }, + ], + }, + }), + }, + async run(context) { + const client = makeClient(context.auth.props); + const { jeBatchId, status, reversalFlag, reversalDate, reversalPeriod, reversalMethodMeaning } = context.propsValue; + + const payload: Record = {}; + + if (status) payload['Status'] = status; + if (reversalFlag !== undefined) payload['ReversalFlag'] = reversalFlag; + if (reversalDate) payload['ReversalDate'] = reversalDate; + if (reversalPeriod) payload['ReversalPeriod'] = reversalPeriod; + if (reversalMethodMeaning) payload['ReversalMethodMeaning'] = reversalMethodMeaning; + + if (Object.keys(payload).length === 0) { + throw new Error('At least one field (Status or reversal attributes) must be provided to update.'); + } + + const response = await client.updateRecord(`/journalBatches/${jeBatchId}`, payload); + return response; + }, +}); diff --git a/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/payments/create-payment.ts b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/payments/create-payment.ts new file mode 100644 index 00000000000..c51a8c0a03d --- /dev/null +++ b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/payments/create-payment.ts @@ -0,0 +1,158 @@ +import { createAction, Property } from '@activepieces/pieces-framework'; +import { oracleFusionCloudErpAuth } from '../../../index'; +import { makeClient } from '../../common/client'; + +export const createPayment = createAction({ + auth: oracleFusionCloudErpAuth, + name: 'create_payment', + displayName: 'Create Payment', + description: 'Creates a new manual payment in Oracle Fusion Cloud ERP.', + props: { + businessUnit: Property.ShortText({ + displayName: 'Business Unit', + description: 'The business unit name for the payment.', + required: true, + }), + paymentNumber: Property.Number({ + displayName: 'Payment Number', + description: 'The check number printed on physical check.', + required: true, + }), + paymentDate: Property.ShortText({ + displayName: 'Payment Date', + description: 'The date when the payment is made (YYYY-MM-DD).', + required: true, + }), + paymentCurrency: Property.ShortText({ + displayName: 'Payment Currency', + description: 'The currency in which payment is made (e.g., USD).', + required: true, + defaultValue: 'USD', + }), + paymentMethodCode: Property.ShortText({ + displayName: 'Payment Method Code', + description: 'The payment method code (e.g., CHECK, EFT).', + required: true, + }), + payee: Property.ShortText({ + displayName: 'Payee', + description: 'The party name to whom payment is made.', + required: false, + }), + payeeSite: Property.ShortText({ + displayName: 'Payee Site', + description: 'The supplier site name to whom payment is made.', + required: false, + }), + paymentProcessProfile: Property.ShortText({ + displayName: 'Payment Process Profile', + description: 'The payment process profile name.', + required: false, + }), + paymentDocument: Property.ShortText({ + displayName: 'Payment Document', + description: 'The name of the payment document.', + required: false, + }), + paymentDescription: Property.LongText({ + displayName: 'Payment Description', + description: 'The user description for the payment.', + required: false, + }), + disbursementBankAccountName: Property.ShortText({ + displayName: 'Disbursement Bank Account', + description: 'The name of the internal bank account from where the payment is made.', + required: false, + }), + remitToAccountNumber: Property.ShortText({ + displayName: 'Remit-to Account Number', + description: "The supplier's bank account number for electronic payment.", + required: false, + }), + conversionRateType: Property.ShortText({ + displayName: 'Conversion Rate Type', + description: 'The type of conversion rate used for foreign currency payments.', + required: false, + }), + conversionRate: Property.Number({ + displayName: 'Conversion Rate', + description: 'The conversion rate for foreign currency payments.', + required: false, + }), + addressLine1: Property.ShortText({ + displayName: 'Address Line 1', + description: 'The first address line of party to whom the payment is made.', + required: false, + }), + city: Property.ShortText({ + displayName: 'City', + description: 'The city name of the party to whom the payment is made.', + required: false, + }), + state: Property.ShortText({ + displayName: 'State', + description: 'The state name of the party to whom the payment is made.', + required: false, + }), + country: Property.ShortText({ + displayName: 'Country', + description: 'The country name of the party to whom the payment is made.', + required: false, + }), + zip: Property.ShortText({ + displayName: 'Postal Code', + description: 'The postal code of the party to whom the payment is made.', + required: false, + }), + }, + async run(context) { + const client = makeClient(context.auth.props); + const { + businessUnit, + paymentNumber, + paymentDate, + paymentCurrency, + paymentMethodCode, + payee, + payeeSite, + paymentProcessProfile, + paymentDocument, + paymentDescription, + disbursementBankAccountName, + remitToAccountNumber, + conversionRateType, + conversionRate, + addressLine1, + city, + state, + country, + zip, + } = context.propsValue; + + const payload: Record = { + BusinessUnit: businessUnit, + PaymentNumber: paymentNumber, + PaymentDate: paymentDate, + PaymentCurrency: paymentCurrency, + PaymentMethodCode: paymentMethodCode, + }; + + if (payee) payload['Payee'] = payee; + if (payeeSite) payload['PayeeSite'] = payeeSite; + if (paymentProcessProfile) payload['PaymentProcessProfile'] = paymentProcessProfile; + if (paymentDocument) payload['PaymentDocument'] = paymentDocument; + if (paymentDescription) payload['PaymentDescription'] = paymentDescription; + if (disbursementBankAccountName) payload['DisbursementBankAccountName'] = disbursementBankAccountName; + if (remitToAccountNumber) payload['RemitToAccountNumber'] = remitToAccountNumber; + if (conversionRateType) payload['ConversionRateType'] = conversionRateType; + if (conversionRate) payload['ConversionRate'] = conversionRate; + if (addressLine1) payload['AddressLine1'] = addressLine1; + if (city) payload['City'] = city; + if (state) payload['State'] = state; + if (country) payload['Country'] = country; + if (zip) payload['Zip'] = zip; + + const response = await client.createRecord('/payablesPayments', payload); + return response; + }, +}); diff --git a/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/payments/find-payments.ts b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/payments/find-payments.ts new file mode 100644 index 00000000000..6963ba9d874 --- /dev/null +++ b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/payments/find-payments.ts @@ -0,0 +1,86 @@ +import { createAction, Property } from '@activepieces/pieces-framework'; +import { oracleFusionCloudErpAuth } from '../../../index'; +import { makeClient } from '../../common/client'; + +export const findPayments = createAction({ + auth: oracleFusionCloudErpAuth, + name: 'find_payments', + displayName: 'Find Payments', + description: 'Search for payments with optional filters.', + props: { + paymentNumber: Property.Number({ + displayName: 'Payment Number', + description: 'Filter by payment number.', + required: false, + }), + payee: Property.ShortText({ + displayName: 'Payee', + description: 'Filter by payee name.', + required: false, + }), + businessUnit: Property.ShortText({ + displayName: 'Business Unit', + description: 'Filter by business unit.', + required: false, + }), + paymentStatus: Property.StaticDropdown({ + displayName: 'Payment Status', + description: 'Filter by payment status.', + required: false, + options: { + options: [ + { label: 'Negotiable', value: 'Negotiable' }, + { label: 'Voided', value: 'Voided' }, + { label: 'Stopped', value: 'Stopped' }, + { label: 'Cleared', value: 'Cleared' }, + ], + }, + }), + paymentDateFrom: Property.ShortText({ + displayName: 'Payment Date From', + description: 'Filter payments on or after this date (YYYY-MM-DD).', + required: false, + }), + paymentDateTo: Property.ShortText({ + displayName: 'Payment Date To', + description: 'Filter payments on or before this date (YYYY-MM-DD).', + required: false, + }), + limit: Property.Number({ + displayName: 'Limit', + description: 'Maximum number of records to return (default: 25, max: 500).', + required: false, + defaultValue: 25, + }), + offset: Property.Number({ + displayName: 'Offset', + description: 'Number of records to skip for pagination.', + required: false, + defaultValue: 0, + }), + }, + async run(context) { + const client = makeClient(context.auth.props); + const { paymentNumber, payee, businessUnit, paymentStatus, paymentDateFrom, paymentDateTo, limit, offset } = context.propsValue; + + const queryParams: Record = { + limit: Math.min(limit || 25, 500), + offset: offset || 0, + }; + + const filters: string[] = []; + if (paymentNumber) filters.push(`PaymentNumber=${paymentNumber}`); + if (payee) filters.push(`Payee="${payee}"`); + if (businessUnit) filters.push(`BusinessUnit="${businessUnit}"`); + if (paymentStatus) filters.push(`PaymentStatus="${paymentStatus}"`); + if (paymentDateFrom) filters.push(`PaymentDate>="${paymentDateFrom}"`); + if (paymentDateTo) filters.push(`PaymentDate<="${paymentDateTo}"`); + + if (filters.length > 0) { + queryParams['q'] = filters.join(' AND '); + } + + const response = await client.searchRecords('/payablesPayments', queryParams); + return response; + }, +}); diff --git a/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/payments/get-payment.ts b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/payments/get-payment.ts new file mode 100644 index 00000000000..414f9c2a4bc --- /dev/null +++ b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/payments/get-payment.ts @@ -0,0 +1,24 @@ +import { createAction, Property } from '@activepieces/pieces-framework'; +import { oracleFusionCloudErpAuth } from '../../../index'; +import { makeClient } from '../../common/client'; + +export const getPayment = createAction({ + auth: oracleFusionCloudErpAuth, + name: 'get_payment', + displayName: 'Get Payment', + description: 'Retrieves details of a specific payment by Check ID.', + props: { + checkId: Property.ShortText({ + displayName: 'Check ID', + description: 'The unique identifier of the payment.', + required: true, + }), + }, + async run(context) { + const client = makeClient(context.auth.props); + const { checkId } = context.propsValue; + + const response = await client.getRecord(`/payablesPayments/${checkId}`); + return response; + }, +}); diff --git a/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/payments/index.ts b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/payments/index.ts new file mode 100644 index 00000000000..a42374b97a4 --- /dev/null +++ b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/payments/index.ts @@ -0,0 +1,6 @@ +export { createPayment } from './create-payment'; +export { getPayment } from './get-payment'; +export { findPayments } from './find-payments'; +export { updatePayment } from './update-payment'; +export { stopPayment } from './stop-payment'; +export { voidPayment } from './void-payment'; diff --git a/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/payments/stop-payment.ts b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/payments/stop-payment.ts new file mode 100644 index 00000000000..30e2ba794c8 --- /dev/null +++ b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/payments/stop-payment.ts @@ -0,0 +1,41 @@ +import { createAction, Property } from '@activepieces/pieces-framework'; +import { oracleFusionCloudErpAuth } from '../../../index'; +import { makeClient } from '../../common/client'; + +export const stopPayment = createAction({ + auth: oracleFusionCloudErpAuth, + name: 'stop_payment', + displayName: 'Stop Payment', + description: 'Initiates a stop payment request for a payment.', + props: { + checkId: Property.ShortText({ + displayName: 'Check ID', + description: 'The unique identifier of the payment to stop.', + required: true, + }), + stopReason: Property.ShortText({ + displayName: 'Stop Reason', + description: 'The reason for stopping the payment.', + required: false, + }), + stopReference: Property.ShortText({ + displayName: 'Stop Reference', + description: 'A reference for the stop payment request.', + required: false, + }), + }, + async run(context) { + const client = makeClient(context.auth.props); + const { checkId, stopReason, stopReference } = context.propsValue; + + const payload: Record = { + CheckId: checkId, + }; + + if (stopReason) payload['StopReason'] = stopReason; + if (stopReference) payload['StopReference'] = stopReference; + + const response = await client.executeAction('/payablesPayments/action/initiateStopPayment', payload); + return response; + }, +}); diff --git a/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/payments/update-payment.ts b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/payments/update-payment.ts new file mode 100644 index 00000000000..83d077661ce --- /dev/null +++ b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/payments/update-payment.ts @@ -0,0 +1,49 @@ +import { createAction, Property } from '@activepieces/pieces-framework'; +import { oracleFusionCloudErpAuth } from '../../../index'; +import { makeClient } from '../../common/client'; + +export const updatePayment = createAction({ + auth: oracleFusionCloudErpAuth, + name: 'update_payment', + displayName: 'Update Payment', + description: 'Updates descriptive and global flexfields for a payment.', + props: { + checkId: Property.ShortText({ + displayName: 'Check ID', + description: 'The unique identifier of the payment to update.', + required: true, + }), + paymentDescription: Property.LongText({ + displayName: 'Payment Description', + description: 'Updated description for the payment.', + required: false, + }), + voidDate: Property.ShortText({ + displayName: 'Void Date', + description: 'The date when the payment is voided (YYYY-MM-DD).', + required: false, + }), + voidAccountingDate: Property.ShortText({ + displayName: 'Void Accounting Date', + description: 'The date when the voided payment is accounted (YYYY-MM-DD).', + required: false, + }), + }, + async run(context) { + const client = makeClient(context.auth.props); + const { checkId, paymentDescription, voidDate, voidAccountingDate } = context.propsValue; + + const payload: Record = {}; + + if (paymentDescription !== undefined && paymentDescription !== '') payload['PaymentDescription'] = paymentDescription; + if (voidDate) payload['VoidDate'] = voidDate; + if (voidAccountingDate) payload['VoidAccountingDate'] = voidAccountingDate; + + if (Object.keys(payload).length === 0) { + throw new Error('At least one field must be provided to update the payment.'); + } + + const response = await client.updateRecord(`/payablesPayments/${checkId}`, payload); + return response; + }, +}); diff --git a/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/payments/void-payment.ts b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/payments/void-payment.ts new file mode 100644 index 00000000000..6277f0b2d00 --- /dev/null +++ b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/payments/void-payment.ts @@ -0,0 +1,42 @@ +import { createAction, Property } from '@activepieces/pieces-framework'; +import { oracleFusionCloudErpAuth } from '../../../index'; +import { makeClient } from '../../common/client'; + +export const voidPayment = createAction({ + auth: oracleFusionCloudErpAuth, + name: 'void_payment', + displayName: 'Void Payment', + description: 'Voids a payment by setting the void date.', + props: { + checkId: Property.ShortText({ + displayName: 'Check ID', + description: 'The unique identifier of the payment to void.', + required: true, + }), + voidDate: Property.ShortText({ + displayName: 'Void Date', + description: 'The date when the payment is voided (YYYY-MM-DD). Defaults to today.', + required: false, + }), + voidAccountingDate: Property.ShortText({ + displayName: 'Void Accounting Date', + description: 'The date when the voided payment is accounted (YYYY-MM-DD).', + required: false, + }), + }, + async run(context) { + const client = makeClient(context.auth.props); + const { checkId, voidDate, voidAccountingDate } = context.propsValue; + + const today = new Date().toISOString().split('T')[0]; + + const payload: Record = { + VoidDate: voidDate || today, + }; + + if (voidAccountingDate) payload['VoidAccountingDate'] = voidAccountingDate; + + const response = await client.updateRecord(`/payablesPayments/${checkId}`, payload); + return response; + }, +}); diff --git a/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/receivables-invoices/create-receivables-invoice.ts b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/receivables-invoices/create-receivables-invoice.ts new file mode 100644 index 00000000000..d39da4cc190 --- /dev/null +++ b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/receivables-invoices/create-receivables-invoice.ts @@ -0,0 +1,165 @@ +import { createAction, Property } from '@activepieces/pieces-framework'; +import { oracleFusionCloudErpAuth } from '../../../index'; +import { makeClient } from '../../common/client'; + +export const createReceivablesInvoice = createAction({ + auth: oracleFusionCloudErpAuth, + name: 'create_receivables_invoice', + displayName: 'Create Receivables Invoice', + description: 'Creates a new receivables (AR) invoice in Oracle Fusion Cloud ERP.', + props: { + businessUnit: Property.ShortText({ + displayName: 'Business Unit', + description: 'The business unit under which the invoice is created.', + required: true, + }), + transactionType: Property.ShortText({ + displayName: 'Transaction Type', + description: 'The transaction type assigned to the invoice.', + required: true, + }), + transactionSource: Property.ShortText({ + displayName: 'Transaction Source', + description: 'The transaction source assigned to the invoice.', + required: false, + }), + transactionNumber: Property.ShortText({ + displayName: 'Transaction Number', + description: 'The transaction number assigned to the invoice. If not provided, it will be auto-generated.', + required: false, + }), + transactionDate: Property.ShortText({ + displayName: 'Transaction Date', + description: 'The date when the invoice was created (YYYY-MM-DD).', + required: false, + }), + accountingDate: Property.ShortText({ + displayName: 'Accounting Date', + description: 'The accounting date assigned to the invoice (YYYY-MM-DD).', + required: false, + }), + billToCustomerNumber: Property.ShortText({ + displayName: 'Bill-to Customer Account Number', + description: 'The account number of the bill-to customer.', + required: true, + }), + billToCustomerName: Property.ShortText({ + displayName: 'Bill-to Customer Name', + description: 'The name of the bill-to customer.', + required: false, + }), + billToSite: Property.ShortText({ + displayName: 'Bill-to Site', + description: 'The number that identifies the bill-to customer site.', + required: false, + }), + invoiceCurrencyCode: Property.ShortText({ + displayName: 'Invoice Currency', + description: 'The currency code of the invoice (e.g., USD, EUR).', + required: false, + defaultValue: 'USD', + }), + paymentTerms: Property.ShortText({ + displayName: 'Payment Terms', + description: 'The payment terms assigned to the invoice.', + required: false, + }), + dueDate: Property.ShortText({ + displayName: 'Due Date', + description: 'The date when the invoice is due (YYYY-MM-DD).', + required: false, + }), + purchaseOrder: Property.ShortText({ + displayName: 'PO Number', + description: 'The purchase order number on the invoice.', + required: false, + }), + comments: Property.LongText({ + displayName: 'Comments', + description: 'Comments that accompany the invoice.', + required: false, + }), + invoiceStatus: Property.StaticDropdown({ + displayName: 'Invoice Status', + description: 'The completion status of the invoice. Must be Complete when creating.', + required: false, + defaultValue: 'Complete', + options: { + options: [ + { label: 'Complete', value: 'Complete' }, + { label: 'Incomplete', value: 'Incomplete' }, + ], + }, + }), + shipToCustomerNumber: Property.ShortText({ + displayName: 'Ship-to Customer', + description: 'The registry identifier of the ship-to customer.', + required: false, + }), + shipToCustomerName: Property.ShortText({ + displayName: 'Ship-to Customer Name', + description: 'The name of the customer who receives the goods or services.', + required: false, + }), + legalEntityIdentifier: Property.ShortText({ + displayName: 'Legal Entity Identifier', + description: 'The unique identifier of the legal entity.', + required: false, + }), + crossReference: Property.ShortText({ + displayName: 'Reference', + description: 'The reference field default value from the transaction source.', + required: false, + }), + }, + async run(context) { + const client = makeClient(context.auth.props); + const { + businessUnit, + transactionType, + transactionSource, + transactionNumber, + transactionDate, + accountingDate, + billToCustomerNumber, + billToCustomerName, + billToSite, + invoiceCurrencyCode, + paymentTerms, + dueDate, + purchaseOrder, + comments, + invoiceStatus, + shipToCustomerNumber, + shipToCustomerName, + legalEntityIdentifier, + crossReference, + } = context.propsValue; + + const payload: Record = { + BusinessUnit: businessUnit, + TransactionType: transactionType, + BillToCustomerNumber: billToCustomerNumber, + }; + + if (transactionSource) payload['TransactionSource'] = transactionSource; + if (transactionNumber) payload['TransactionNumber'] = transactionNumber; + if (transactionDate) payload['TransactionDate'] = transactionDate; + if (accountingDate) payload['AccountingDate'] = accountingDate; + if (billToCustomerName) payload['BillToCustomerName'] = billToCustomerName; + if (billToSite) payload['BillToSite'] = billToSite; + if (invoiceCurrencyCode) payload['InvoiceCurrencyCode'] = invoiceCurrencyCode; + if (paymentTerms) payload['PaymentTerms'] = paymentTerms; + if (dueDate) payload['DueDate'] = dueDate; + if (purchaseOrder) payload['PurchaseOrder'] = purchaseOrder; + if (comments) payload['Comments'] = comments; + if (invoiceStatus) payload['InvoiceStatus'] = invoiceStatus; + if (shipToCustomerNumber) payload['ShipToCustomerNumber'] = shipToCustomerNumber; + if (shipToCustomerName) payload['ShipToCustomerName'] = shipToCustomerName; + if (legalEntityIdentifier) payload['LegalEntityIdentifier'] = legalEntityIdentifier; + if (crossReference) payload['CrossReference'] = crossReference; + + const response = await client.createRecord('/receivablesInvoices', payload); + return response; + }, +}); diff --git a/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/receivables-invoices/delete-receivables-invoice.ts b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/receivables-invoices/delete-receivables-invoice.ts new file mode 100644 index 00000000000..e624151e7d0 --- /dev/null +++ b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/receivables-invoices/delete-receivables-invoice.ts @@ -0,0 +1,24 @@ +import { createAction, Property } from '@activepieces/pieces-framework'; +import { oracleFusionCloudErpAuth } from '../../../index'; +import { makeClient } from '../../common/client'; + +export const deleteReceivablesInvoice = createAction({ + auth: oracleFusionCloudErpAuth, + name: 'delete_receivables_invoice', + displayName: 'Delete Receivables Invoice', + description: 'Deletes a receivables invoice from Oracle Fusion Cloud ERP.', + props: { + customerTransactionId: Property.ShortText({ + displayName: 'Customer Transaction ID', + description: 'The unique identifier of the receivables invoice to delete.', + required: true, + }), + }, + async run(context) { + const client = makeClient(context.auth.props); + const { customerTransactionId } = context.propsValue; + + await client.deleteRecord(`/receivablesInvoices/${customerTransactionId}`); + return { success: true, message: `Receivables invoice ${customerTransactionId} deleted successfully.` }; + }, +}); diff --git a/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/receivables-invoices/find-receivables-invoices.ts b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/receivables-invoices/find-receivables-invoices.ts new file mode 100644 index 00000000000..1cc1e4bdef5 --- /dev/null +++ b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/receivables-invoices/find-receivables-invoices.ts @@ -0,0 +1,79 @@ +import { createAction, Property } from '@activepieces/pieces-framework'; +import { oracleFusionCloudErpAuth } from '../../../index'; +import { makeClient } from '../../common/client'; + +export const findReceivablesInvoices = createAction({ + auth: oracleFusionCloudErpAuth, + name: 'find_receivables_invoices', + displayName: 'Find Receivables Invoices', + description: 'Search for receivables invoices with optional filters.', + props: { + transactionNumber: Property.ShortText({ + displayName: 'Transaction Number', + description: 'Filter by transaction number.', + required: false, + }), + billToCustomerNumber: Property.ShortText({ + displayName: 'Bill-to Customer Account Number', + description: 'Filter by bill-to customer account number.', + required: false, + }), + invoiceStatus: Property.StaticDropdown({ + displayName: 'Invoice Status', + description: 'Filter by invoice status.', + required: false, + options: { + options: [ + { label: 'Complete', value: 'Complete' }, + { label: 'Incomplete', value: 'Incomplete' }, + { label: 'Frozen', value: 'Frozen' }, + ], + }, + }), + billingDateFrom: Property.ShortText({ + displayName: 'Billing Date From', + description: 'Filter invoices with billing date on or after this date (YYYY-MM-DD).', + required: false, + }), + billingDateTo: Property.ShortText({ + displayName: 'Billing Date To', + description: 'Filter invoices with billing date on or before this date (YYYY-MM-DD).', + required: false, + }), + limit: Property.Number({ + displayName: 'Limit', + description: 'Maximum number of records to return (default: 25, max: 500).', + required: false, + defaultValue: 25, + }), + offset: Property.Number({ + displayName: 'Offset', + description: 'Number of records to skip for pagination.', + required: false, + defaultValue: 0, + }), + }, + async run(context) { + const client = makeClient(context.auth.props); + const { transactionNumber, billToCustomerNumber, invoiceStatus, billingDateFrom, billingDateTo, limit, offset } = context.propsValue; + + const queryParams: Record = { + limit: Math.min(limit || 25, 500), + offset: offset || 0, + }; + + const filters: string[] = []; + if (transactionNumber) filters.push(`TransactionNumber="${transactionNumber}"`); + if (billToCustomerNumber) filters.push(`BillToCustomerNumber="${billToCustomerNumber}"`); + if (invoiceStatus) filters.push(`InvoiceStatus="${invoiceStatus}"`); + if (billingDateFrom) filters.push(`BillingDate>="${billingDateFrom}"`); + if (billingDateTo) filters.push(`BillingDate<="${billingDateTo}"`); + + if (filters.length > 0) { + queryParams['q'] = filters.join(' AND '); + } + + const response = await client.searchRecords('/receivablesInvoices', queryParams); + return response; + }, +}); diff --git a/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/receivables-invoices/get-receivables-invoice.ts b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/receivables-invoices/get-receivables-invoice.ts new file mode 100644 index 00000000000..1ab83050b0e --- /dev/null +++ b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/receivables-invoices/get-receivables-invoice.ts @@ -0,0 +1,24 @@ +import { createAction, Property } from '@activepieces/pieces-framework'; +import { oracleFusionCloudErpAuth } from '../../../index'; +import { makeClient } from '../../common/client'; + +export const getReceivablesInvoice = createAction({ + auth: oracleFusionCloudErpAuth, + name: 'get_receivables_invoice', + displayName: 'Get Receivables Invoice', + description: 'Retrieves details of a specific receivables invoice by ID.', + props: { + customerTransactionId: Property.ShortText({ + displayName: 'Customer Transaction ID', + description: 'The unique identifier of the receivables invoice.', + required: true, + }), + }, + async run(context) { + const client = makeClient(context.auth.props); + const { customerTransactionId } = context.propsValue; + + const response = await client.getRecord(`/receivablesInvoices/${customerTransactionId}`); + return response; + }, +}); diff --git a/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/receivables-invoices/index.ts b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/receivables-invoices/index.ts new file mode 100644 index 00000000000..cdae8ce3bd3 --- /dev/null +++ b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/receivables-invoices/index.ts @@ -0,0 +1,5 @@ +export { createReceivablesInvoice } from './create-receivables-invoice'; +export { getReceivablesInvoice } from './get-receivables-invoice'; +export { findReceivablesInvoices } from './find-receivables-invoices'; +export { updateReceivablesInvoice } from './update-receivables-invoice'; +export { deleteReceivablesInvoice } from './delete-receivables-invoice'; diff --git a/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/receivables-invoices/update-receivables-invoice.ts b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/receivables-invoices/update-receivables-invoice.ts new file mode 100644 index 00000000000..b230a696ef3 --- /dev/null +++ b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/actions/receivables-invoices/update-receivables-invoice.ts @@ -0,0 +1,56 @@ +import { createAction, Property } from '@activepieces/pieces-framework'; +import { oracleFusionCloudErpAuth } from '../../../index'; +import { makeClient } from '../../common/client'; + +export const updateReceivablesInvoice = createAction({ + auth: oracleFusionCloudErpAuth, + name: 'update_receivables_invoice', + displayName: 'Update Receivables Invoice', + description: 'Updates an existing receivables invoice. Note: Only InvoiceStatus, PaymentTerms, and TransactionDate can be updated.', + props: { + customerTransactionId: Property.ShortText({ + displayName: 'Customer Transaction ID', + description: 'The unique identifier of the receivables invoice to update.', + required: true, + }), + invoiceStatus: Property.StaticDropdown({ + displayName: 'Invoice Status', + description: 'The completion status of the invoice.', + required: false, + options: { + options: [ + { label: 'Complete', value: 'Complete' }, + { label: 'Incomplete', value: 'Incomplete' }, + { label: 'Frozen', value: 'Frozen' }, + ], + }, + }), + paymentTerms: Property.ShortText({ + displayName: 'Payment Terms', + description: 'The payment terms assigned to the invoice.', + required: false, + }), + transactionDate: Property.ShortText({ + displayName: 'Transaction Date', + description: 'The date when the invoice was created (YYYY-MM-DD).', + required: false, + }), + }, + async run(context) { + const client = makeClient(context.auth.props); + const { customerTransactionId, invoiceStatus, paymentTerms, transactionDate } = context.propsValue; + + const payload: Record = {}; + + if (invoiceStatus) payload['InvoiceStatus'] = invoiceStatus; + if (paymentTerms) payload['PaymentTerms'] = paymentTerms; + if (transactionDate) payload['TransactionDate'] = transactionDate; + + if (Object.keys(payload).length === 0) { + throw new Error('At least one field (InvoiceStatus, PaymentTerms, or TransactionDate) must be provided to update.'); + } + + const response = await client.updateRecord(`/receivablesInvoices/${customerTransactionId}`, payload); + return response; + }, +}); diff --git a/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/common/client.ts b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/common/client.ts new file mode 100644 index 00000000000..2f42a70bab3 --- /dev/null +++ b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/common/client.ts @@ -0,0 +1,139 @@ +import { + HttpMessageBody, + HttpMethod, + QueryParams, + httpClient, + HttpRequest, + HttpHeaders, +} from '@activepieces/pieces-common'; +import { PiecePropValueSchema } from '@activepieces/pieces-framework'; +import { oracleFusionCloudErpAuth } from '../../index'; + +type OracleAuthValue = PiecePropValueSchema; + +interface OracleAPIResponse { + items: T[]; + count: number; + hasMore: boolean; + limit: number; + offset: number; + links: any[]; +} + +interface OracleRecord { + [key: string]: any; +} + +export type filterParams = Record< + string, + string | number | string[] | undefined +>; + +export class OracleFusionAPIClient { + private credentials: string; + + constructor( + private serverUrl: string, + username: string, + password: string + ) { + this.credentials = Buffer.from(`${username}:${password}`).toString('base64'); + } + + async makeRequest( + method: HttpMethod, + resourceUri: string, + query?: filterParams, + body?: any, + headers?: HttpHeaders + ): Promise { + const baseUrl = `${this.serverUrl}/fscmRestApi/resources/11.13.18.05`; + const params: QueryParams = {}; + const requestHeaders: HttpHeaders = { + 'Content-Type': 'application/json', + 'Authorization': `Basic ${this.credentials}`, + ...headers, + }; + + if (query) { + for (const [key, value] of Object.entries(query)) { + if (value !== null && value !== undefined) { + params[key] = String(value); + } + } + } + + const request: HttpRequest = { + method: method, + url: baseUrl + resourceUri, + headers: requestHeaders, + queryParams: params, + body: body, + }; + + const response = await httpClient.sendRequest(request); + return response.body; + } + + async createRecord(endpoint: string, request: Record): Promise { + return await this.makeRequest( + HttpMethod.POST, + endpoint, + undefined, + request, + { 'Content-Type': 'application/vnd.oracle.adf.resourceitem+json' } + ); + } + + async updateRecord(endpoint: string, request: Record): Promise { + return await this.makeRequest( + HttpMethod.PATCH, + endpoint, + undefined, + request, + { 'Content-Type': 'application/vnd.oracle.adf.resourceitem+json' } + ); + } + + async getRecord(endpoint: string): Promise { + return await this.makeRequest(HttpMethod.GET, endpoint); + } + + async deleteRecord(endpoint: string): Promise { + await this.makeRequest(HttpMethod.DELETE, endpoint); + } + + async searchRecords( + endpoint: string, + params: filterParams + ): Promise> { + return await this.makeRequest>( + HttpMethod.GET, + endpoint, + params + ); + } + + async getBusinessObjects(): Promise { + return await this.makeRequest(HttpMethod.GET, '/'); + } + + async executeAction(actionEndpoint: string, payload: Record): Promise { + return await this.makeRequest( + HttpMethod.POST, + actionEndpoint, + undefined, + payload, + { 'Content-Type': 'application/vnd.oracle.adf.action+json' } + ); + } +} + +export function makeClient(auth: OracleAuthValue) { + const client = new OracleFusionAPIClient( + auth.serverUrl, + auth.username, + auth.password + ); + return client; +} diff --git a/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/common/index.ts b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/common/index.ts new file mode 100644 index 00000000000..4f1cce44fa3 --- /dev/null +++ b/packages/pieces/community/oracle-fusion-cloud-erp/src/lib/common/index.ts @@ -0,0 +1 @@ +export * from './client'; diff --git a/packages/pieces/community/oracle-fusion-cloud-erp/tsconfig.json b/packages/pieces/community/oracle-fusion-cloud-erp/tsconfig.json new file mode 100644 index 00000000000..eff240ac143 --- /dev/null +++ b/packages/pieces/community/oracle-fusion-cloud-erp/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "../../../../tsconfig.base.json", + "compilerOptions": { + "module": "commonjs", + "forceConsistentCasingInFileNames": true, + "strict": true, + "importHelpers": true, + "noImplicitOverride": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "noPropertyAccessFromIndexSignature": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + } + ] +} diff --git a/packages/pieces/community/oracle-fusion-cloud-erp/tsconfig.lib.json b/packages/pieces/community/oracle-fusion-cloud-erp/tsconfig.lib.json new file mode 100644 index 00000000000..5995d959bf0 --- /dev/null +++ b/packages/pieces/community/oracle-fusion-cloud-erp/tsconfig.lib.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../../dist/out-tsc", + "declaration": true, + "types": ["node"] + }, + "include": ["src/**/*.ts"] +} diff --git a/packages/server/api/src/app/pieces/metadata/local-piece-cache.ts b/packages/server/api/src/app/pieces/metadata/local-piece-cache.ts index 0fcffdf623e..38c51b458fb 100644 --- a/packages/server/api/src/app/pieces/metadata/local-piece-cache.ts +++ b/packages/server/api/src/app/pieces/metadata/local-piece-cache.ts @@ -47,7 +47,9 @@ export const localPieceCache = (log: FastifyBaseLogger) => ({ const { locale, platformId } = params if (environment === ApEnvironment.TESTING) { const pieces = await fetchPiecesFromDB() - return lastVersionOfEachPiece(pieces).map(piece => pieceTranslation.translatePiece(piece, locale)) + return lastVersionOfEachPiece(pieces) + .filter((piece) => filterPieceBasedOnType(platformId, piece)) + .map(piece => pieceTranslation.translatePiece(piece, locale)) } const cache = await getOrCreateCache() const list = (await cache.db.get(META_LIST_KEY(locale ?? DEFAULT_LOCALE))) as PieceMetadataSchema[] | undefined diff --git a/packages/server/api/test/integration/cloud/piece-metadata/piece-metadata.test.ts b/packages/server/api/test/integration/cloud/piece-metadata/piece-metadata.test.ts index 3b4fa769e17..dc1e758eee3 100644 --- a/packages/server/api/test/integration/cloud/piece-metadata/piece-metadata.test.ts +++ b/packages/server/api/test/integration/cloud/piece-metadata/piece-metadata.test.ts @@ -40,54 +40,6 @@ afterAll(async () => { }) describe('Piece Metadata API', () => { - describe('List Piece Versions endpoint', () => { - it('Should return versions in sorted order for a piece', async () => { - // arrange - const mockPieceMetadata1 = createMockPieceMetadata({ - name: '@ap/a', - version: '0.0.1', - pieceType: PieceType.OFFICIAL, - }) - await databaseConnection() - .getRepository('piece_metadata') - .save(mockPieceMetadata1) - - const mockPieceMetadata2 = createMockPieceMetadata({ - name: '@ap/a', - version: '0.0.2', - pieceType: PieceType.OFFICIAL, - }) - await databaseConnection() - .getRepository('piece_metadata') - .save(mockPieceMetadata2) - - await localPieceCache(mockLog).setup() - - const testToken = await generateMockToken({ - type: PrincipalType.UNKNOWN, - id: apId(), - }) - - // act - const response = await app?.inject({ - method: 'GET', - url: '/v1/pieces/versions?release=1.1.1&name=@ap/a', - headers: { - authorization: `Bearer ${testToken}`, - }, - }) - - // assert - const responseBody = response?.json() - - expect(response?.statusCode).toBe(StatusCodes.OK) - const keys = Object.keys(responseBody) - expect(keys).toHaveLength(2) - expect(keys[0]).toBe('0.0.1') - expect(keys[1]).toBe('0.0.2') - }) - }) - describe('Get Piece metadata', () => { it('Should return metadata when authenticated', async () => { // arrange diff --git a/tsconfig.base.json b/tsconfig.base.json index 5816a51683b..ff35dafd650 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -21,27 +21,1272 @@ "@activepieces/ee-shared": ["packages/ee/shared/src/index.ts"], "@activepieces/ee/billing/ui": ["packages/ee/billing/ui/src/index.ts"], "@activepieces/engine": ["packages/engine/src/main.ts"], - "@activepieces/pieces-common": [ - "packages/pieces/community/common/src/index.ts" + "@activepieces/piece-activecampaign": [ + "packages/pieces/community/activecampaign/src/index.ts" ], - "@activepieces/pieces-framework": [ - "packages/pieces/community/framework/src/index.ts" + "@activepieces/piece-activepieces": [ + "packages/pieces/community/activepieces/src/index.ts" + ], + "@activepieces/piece-actualbudget": [ + "packages/pieces/community/actualbudget/src/index.ts" + ], + "@activepieces/piece-acuity-scheduling": [ + "packages/pieces/community/acuity-scheduling/src/index.ts" + ], + "@activepieces/piece-acumbamail": [ + "packages/pieces/community/acumbamail/src/index.ts" + ], + "@activepieces/piece-afforai": [ + "packages/pieces/community/afforai/src/index.ts" + ], + "@activepieces/piece-agent": [ + "packages/pieces/community/agent/src/index.ts" + ], + "@activepieces/piece-agentx": [ + "packages/pieces/community/agentx/src/index.ts" + ], + "@activepieces/piece-aianswer": [ + "packages/pieces/community/aianswer/src/index.ts" + ], + "@activepieces/piece-aidbase": [ + "packages/pieces/community/aidbase/src/index.ts" + ], + "@activepieces/piece-aircall": [ + "packages/pieces/community/aircall/src/index.ts" + ], + "@activepieces/piece-airparser": [ + "packages/pieces/community/airparser/src/index.ts" + ], + "@activepieces/piece-airtable": [ + "packages/pieces/community/airtable/src/index.ts" + ], + "@activepieces/piece-airtop": [ + "packages/pieces/community/airtop/src/index.ts" + ], + "@activepieces/piece-amazon-s3": [ + "packages/pieces/community/amazon-s3/src/index.ts" + ], + "@activepieces/piece-amazon-sns": [ + "packages/pieces/community/amazon-sns/src/index.ts" + ], + "@activepieces/piece-amazon-sqs": [ + "packages/pieces/community/amazon-sqs/src/index.ts" + ], + "@activepieces/piece-aminos": [ + "packages/pieces/community/aminos/src/index.ts" + ], + "@activepieces/piece-anyhook-graphql": [ + "packages/pieces/community/anyhook-graphql/src/index.ts" + ], + "@activepieces/piece-anyhook-websocket": [ + "packages/pieces/community/anyhook-websocket/src/index.ts" + ], + "@activepieces/piece-apify": [ + "packages/pieces/community/apify/src/index.ts" + ], + "@activepieces/piece-apitable": [ + "packages/pieces/community/apitable/src/index.ts" + ], + "@activepieces/piece-apitemplate-io": [ + "packages/pieces/community/apitemplate-io/src/index.ts" + ], + "@activepieces/piece-apollo": [ + "packages/pieces/community/apollo/src/index.ts" + ], + "@activepieces/piece-approval": [ + "packages/pieces/community/approval/src/index.ts" + ], + "@activepieces/piece-asana": [ + "packages/pieces/community/asana/src/index.ts" + ], + "@activepieces/piece-ashby": [ + "packages/pieces/community/ashby/src/index.ts" + ], + "@activepieces/piece-assembled": [ + "packages/pieces/community/assembled/src/index.ts" + ], + "@activepieces/piece-assemblyai": [ + "packages/pieces/community/assemblyai/src/index.ts" + ], + "@activepieces/piece-attio": [ + "packages/pieces/community/attio/src/index.ts" + ], + "@activepieces/piece-autocalls": [ + "packages/pieces/community/autocalls/src/index.ts" + ], + "@activepieces/piece-avoma": [ + "packages/pieces/community/avoma/src/index.ts" + ], + "@activepieces/piece-azure-communication-services": [ + "packages/pieces/community/azure-communication-services/src/index.ts" + ], + "@activepieces/piece-azure-openai": [ + "packages/pieces/community/azure-openai/src/index.ts" + ], + "@activepieces/piece-backblaze": [ + "packages/pieces/community/backblaze/src/index.ts" + ], + "@activepieces/piece-bamboohr": [ + "packages/pieces/community/bamboohr/src/index.ts" + ], + "@activepieces/piece-bannerbear": [ + "packages/pieces/community/bannerbear/src/index.ts" + ], + "@activepieces/piece-baserow": [ + "packages/pieces/community/baserow/src/index.ts" + ], + "@activepieces/piece-beamer": [ + "packages/pieces/community/beamer/src/index.ts" + ], + "@activepieces/piece-beehiiv": [ + "packages/pieces/community/beehiiv/src/index.ts" + ], + "@activepieces/piece-bettermode": [ + "packages/pieces/community/bettermode/src/index.ts" + ], + "@activepieces/piece-bigin-by-zoho": [ + "packages/pieces/community/bigin-by-zoho/src/index.ts" + ], + "@activepieces/piece-bika": [ + "packages/pieces/community/bika/src/index.ts" + ], + "@activepieces/piece-binance": [ + "packages/pieces/community/binance/src/index.ts" + ], + "@activepieces/piece-bitly": [ + "packages/pieces/community/bitly/src/index.ts" + ], + "@activepieces/piece-blockscout": [ + "packages/pieces/community/blockscout/src/index.ts" + ], + "@activepieces/piece-bluesky": [ + "packages/pieces/community/bluesky/src/index.ts" + ], + "@activepieces/piece-bonjoro": [ + "packages/pieces/community/bonjoro/src/index.ts" + ], + "@activepieces/piece-box": ["packages/pieces/community/box/src/index.ts"], + "@activepieces/piece-brilliant-directories": [ + "packages/pieces/community/brilliant-directories/src/index.ts" + ], + "@activepieces/piece-browse-ai": [ + "packages/pieces/community/browse-ai/src/index.ts" + ], + "@activepieces/piece-browserless": [ + "packages/pieces/community/browserless/src/index.ts" + ], + "@activepieces/piece-bubble": [ + "packages/pieces/community/bubble/src/index.ts" + ], + "@activepieces/piece-bumpups": [ + "packages/pieces/community/bumpups/src/index.ts" + ], + "@activepieces/piece-cal-com": [ + "packages/pieces/community/cal-com/src/index.ts" + ], + "@activepieces/piece-calendly": [ + "packages/pieces/community/calendly/src/index.ts" + ], + "@activepieces/piece-call-rounded": [ + "packages/pieces/community/call-rounded/src/index.ts" + ], + "@activepieces/piece-camb-ai": [ + "packages/pieces/community/camb-ai/src/index.ts" + ], + "@activepieces/piece-campaign-monitor": [ + "packages/pieces/community/campaign-monitor/src/index.ts" + ], + "@activepieces/piece-capsule-crm": [ + "packages/pieces/community/capsule-crm/src/index.ts" + ], + "@activepieces/piece-captain-data": [ + "packages/pieces/community/captain-data/src/index.ts" + ], + "@activepieces/piece-cartloom": [ + "packages/pieces/community/cartloom/src/index.ts" + ], + "@activepieces/piece-certopus": [ + "packages/pieces/community/certopus/src/index.ts" + ], + "@activepieces/piece-chainalysis-api": [ + "packages/pieces/community/chainalysis-api/src/index.ts" + ], + "@activepieces/piece-chargekeep": [ + "packages/pieces/community/chargekeep/src/index.ts" + ], + "@activepieces/piece-chat-data": [ + "packages/pieces/community/chat-data/src/index.ts" + ], + "@activepieces/piece-chatbase": [ + "packages/pieces/community/chatbase/src/index.ts" + ], + "@activepieces/piece-checkout": [ + "packages/pieces/community/checkout/src/index.ts" + ], + "@activepieces/piece-circle": [ + "packages/pieces/community/circle/src/index.ts" + ], + "@activepieces/piece-clarifai": [ + "packages/pieces/community/clarifai/src/index.ts" + ], + "@activepieces/piece-claude": [ + "packages/pieces/community/claude/src/index.ts" + ], + "@activepieces/piece-clearout": [ + "packages/pieces/community/clearout/src/index.ts" + ], + "@activepieces/piece-clickfunnels": [ + "packages/pieces/community/clickfunnels/src/index.ts" + ], + "@activepieces/piece-clicksend": [ + "packages/pieces/community/clicksend/src/index.ts" + ], + "@activepieces/piece-clickup": [ + "packages/pieces/community/clickup/src/index.ts" + ], + "@activepieces/piece-clockify": [ + "packages/pieces/community/clockify/src/index.ts" + ], + "@activepieces/piece-clockodo": [ + "packages/pieces/community/clockodo/src/index.ts" + ], + "@activepieces/piece-close": [ + "packages/pieces/community/close/src/index.ts" + ], + "@activepieces/piece-cloudconvert": [ + "packages/pieces/community/cloudconvert/src/index.ts" + ], + "@activepieces/piece-cloudinary": [ + "packages/pieces/community/cloudinary/src/index.ts" + ], + "@activepieces/piece-cloutly": [ + "packages/pieces/community/cloutly/src/index.ts" + ], + "@activepieces/piece-coda": [ + "packages/pieces/community/coda/src/index.ts" + ], + "@activepieces/piece-cody": [ + "packages/pieces/community/cody/src/index.ts" + ], + "@activepieces/piece-cognito-forms": [ + "packages/pieces/community/cognito-forms/src/index.ts" + ], + "@activepieces/piece-cometapi": [ + "packages/pieces/community/cometapi/src/index.ts" + ], + "@activepieces/piece-comfyicu": [ + "packages/pieces/community/comfyicu/src/index.ts" + ], + "@activepieces/piece-confluence": [ + "packages/pieces/community/confluence/src/index.ts" + ], + "@activepieces/piece-connections": [ + "packages/pieces/community/connections/src/index.ts" + ], + "@activepieces/piece-constant-contact": [ + "packages/pieces/community/constant-contact/src/index.ts" + ], + "@activepieces/piece-contentful": [ + "packages/pieces/community/contentful/src/index.ts" + ], + "@activepieces/piece-contiguity": [ + "packages/pieces/community/contiguity/src/index.ts" + ], + "@activepieces/piece-convertkit": [ + "packages/pieces/community/convertkit/src/index.ts" + ], + "@activepieces/piece-copper": [ + "packages/pieces/community/copper/src/index.ts" + ], + "@activepieces/piece-copy-ai": [ + "packages/pieces/community/copy-ai/src/index.ts" + ], + "@activepieces/piece-crisp": [ + "packages/pieces/community/crisp/src/index.ts" + ], + "@activepieces/piece-crypto": [ + "packages/pieces/community/crypto/src/index.ts" + ], + "@activepieces/piece-csv": ["packages/pieces/community/csv/src/index.ts"], + "@activepieces/piece-dappier": [ + "packages/pieces/community/dappier/src/index.ts" + ], + "@activepieces/piece-data-mapper": [ + "packages/pieces/community/data-mapper/src/index.ts" + ], + "@activepieces/piece-data-summarizer": [ + "packages/pieces/community/data-summarizer/src/index.ts" + ], + "@activepieces/piece-datadog": [ + "packages/pieces/community/datadog/src/index.ts" + ], + "@activepieces/piece-date-helper": [ + "packages/pieces/community/date-helper/src/index.ts" + ], + "@activepieces/piece-datocms": [ + "packages/pieces/community/datocms/src/index.ts" + ], + "@activepieces/piece-deepgram": [ + "packages/pieces/community/deepgram/src/index.ts" + ], + "@activepieces/piece-deepl": [ + "packages/pieces/community/deepl/src/index.ts" + ], + "@activepieces/piece-deepseek": [ + "packages/pieces/community/deepseek/src/index.ts" ], + "@activepieces/piece-delay": [ + "packages/pieces/community/delay/src/index.ts" + ], + "@activepieces/piece-devin": [ + "packages/pieces/community/devin/src/index.ts" + ], + "@activepieces/piece-dimo": [ + "packages/pieces/community/dimo/src/index.ts" + ], + "@activepieces/piece-discord": [ + "packages/pieces/community/discord/src/index.ts" + ], + "@activepieces/piece-discourse": [ + "packages/pieces/community/discourse/src/index.ts" + ], + "@activepieces/piece-dittofeed": [ + "packages/pieces/community/dittofeed/src/index.ts" + ], + "@activepieces/piece-docsbot": [ + "packages/pieces/community/docsbot/src/index.ts" + ], + "@activepieces/piece-docusign": [ + "packages/pieces/community/docusign/src/index.ts" + ], + "@activepieces/piece-drip": [ + "packages/pieces/community/drip/src/index.ts" + ], + "@activepieces/piece-dropbox": [ + "packages/pieces/community/dropbox/src/index.ts" + ], + "@activepieces/piece-drupal": [ + "packages/pieces/community/drupal/src/index.ts" + ], + "@activepieces/piece-dumpling-ai": [ + "packages/pieces/community/dumpling-ai/src/index.ts" + ], + "@activepieces/piece-eden-ai": [ + "packages/pieces/community/eden-ai/src/index.ts" + ], + "@activepieces/piece-elevenlabs": [ + "packages/pieces/community/elevenlabs/src/index.ts" + ], + "@activepieces/piece-emailoctopus": [ + "packages/pieces/community/emailoctopus/src/index.ts" + ], + "@activepieces/piece-eth-name-service": [ + "packages/pieces/community/eth-name-service/src/index.ts" + ], + "@activepieces/piece-exa": ["packages/pieces/community/exa/src/index.ts"], "@activepieces/piece-facebook-leads": [ "packages/pieces/community/facebook-leads/src/index.ts" ], + "@activepieces/piece-facebook-pages": [ + "packages/pieces/community/facebook-pages/src/index.ts" + ], + "@activepieces/piece-figma": [ + "packages/pieces/community/figma/src/index.ts" + ], + "@activepieces/piece-file-helper": [ + "packages/pieces/community/file-helper/src/index.ts" + ], + "@activepieces/piece-fillout-forms": [ + "packages/pieces/community/fillout-forms/src/index.ts" + ], + "@activepieces/piece-fireberry": [ + "packages/pieces/community/fireberry/src/index.ts" + ], + "@activepieces/piece-firecrawl": [ + "packages/pieces/community/firecrawl/src/index.ts" + ], + "@activepieces/piece-fireflies-ai": [ + "packages/pieces/community/fireflies-ai/src/index.ts" + ], + "@activepieces/piece-fliqr-ai": [ + "packages/pieces/community/fliqr-ai/src/index.ts" + ], + "@activepieces/piece-flow-helper": [ + "packages/pieces/community/flow-helper/src/index.ts" + ], + "@activepieces/piece-flowise": [ + "packages/pieces/community/flowise/src/index.ts" + ], + "@activepieces/piece-flowlu": [ + "packages/pieces/community/flowlu/src/index.ts" + ], + "@activepieces/piece-foreplay-co": [ + "packages/pieces/community/foreplay-co/src/index.ts" + ], + "@activepieces/piece-formbricks": [ + "packages/pieces/community/formbricks/src/index.ts" + ], + "@activepieces/piece-forms": [ + "packages/pieces/community/forms/src/index.ts" + ], + "@activepieces/piece-formstack": [ + "packages/pieces/community/formstack/src/index.ts" + ], + "@activepieces/piece-frame": [ + "packages/pieces/community/frame/src/index.ts" + ], + "@activepieces/piece-freshdesk": [ + "packages/pieces/community/freshdesk/src/index.ts" + ], + "@activepieces/piece-freshsales": [ + "packages/pieces/community/freshsales/src/index.ts" + ], + "@activepieces/piece-front": [ + "packages/pieces/community/front/src/index.ts" + ], + "@activepieces/piece-gameball": [ + "packages/pieces/community/gameball/src/index.ts" + ], + "@activepieces/piece-gamma": [ + "packages/pieces/community/gamma/src/index.ts" + ], + "@activepieces/piece-gcloud-pubsub": [ + "packages/pieces/community/gcloud-pubsub/src/index.ts" + ], + "@activepieces/piece-generatebanners": [ + "packages/pieces/community/generatebanners/src/index.ts" + ], + "@activepieces/piece-ghostcms": [ + "packages/pieces/community/ghostcms/src/index.ts" + ], + "@activepieces/piece-github": [ + "packages/pieces/community/github/src/index.ts" + ], + "@activepieces/piece-gitlab": [ + "packages/pieces/community/gitlab/src/index.ts" + ], + "@activepieces/piece-gmail": [ + "packages/pieces/community/gmail/src/index.ts" + ], + "@activepieces/piece-google-calendar": [ + "packages/pieces/community/google-calendar/src/index.ts" + ], + "@activepieces/piece-google-contacts": [ + "packages/pieces/community/google-contacts/src/index.ts" + ], + "@activepieces/piece-google-docs": [ + "packages/pieces/community/google-docs/src/index.ts" + ], + "@activepieces/piece-google-drive": [ + "packages/pieces/community/google-drive/src/index.ts" + ], + "@activepieces/piece-google-forms": [ + "packages/pieces/community/google-forms/src/index.ts" + ], + "@activepieces/piece-google-gemini": [ + "packages/pieces/community/google-gemini/src/index.ts" + ], + "@activepieces/piece-google-my-business": [ + "packages/pieces/community/google-my-business/src/index.ts" + ], + "@activepieces/piece-google-search-console": [ + "packages/pieces/community/google-search-console/src/index.ts" + ], + "@activepieces/piece-google-sheets": [ + "packages/pieces/community/google-sheets/src/index.ts" + ], + "@activepieces/piece-google-slides": [ + "packages/pieces/community/google-slides/src/index.ts" + ], + "@activepieces/piece-google-tasks": [ + "packages/pieces/community/google-tasks/src/index.ts" + ], + "@activepieces/piece-googlechat": [ + "packages/pieces/community/googlechat/src/index.ts" + ], + "@activepieces/piece-gotify": [ + "packages/pieces/community/gotify/src/index.ts" + ], + "@activepieces/piece-graphql": [ + "packages/pieces/community/graphql/src/index.ts" + ], + "@activepieces/piece-gravityforms": [ + "packages/pieces/community/gravityforms/src/index.ts" + ], + "@activepieces/piece-grist": [ + "packages/pieces/community/grist/src/index.ts" + ], + "@activepieces/piece-grok-xai": [ + "packages/pieces/community/grok-xai/src/index.ts" + ], + "@activepieces/piece-groq": [ + "packages/pieces/community/groq/src/index.ts" + ], + "@activepieces/piece-hackernews": [ + "packages/pieces/community/hackernews/src/index.ts" + ], + "@activepieces/piece-harvest": [ + "packages/pieces/community/harvest/src/index.ts" + ], + "@activepieces/piece-heartbeat": [ + "packages/pieces/community/heartbeat/src/index.ts" + ], + "@activepieces/piece-hedy": [ + "packages/pieces/community/hedy/src/index.ts" + ], + "@activepieces/piece-help-scout": [ + "packages/pieces/community/help-scout/src/index.ts" + ], + "@activepieces/piece-heygen": [ + "packages/pieces/community/heygen/src/index.ts" + ], + "@activepieces/piece-http": [ + "packages/pieces/community/http/src/index.ts" + ], + "@activepieces/piece-http-oauth2": [ + "packages/pieces/community/http-oauth2/src/index.ts" + ], + "@activepieces/piece-hubspot": [ + "packages/pieces/community/hubspot/src/index.ts" + ], + "@activepieces/piece-hugging-face": [ + "packages/pieces/community/hugging-face/src/index.ts" + ], + "@activepieces/piece-hunter": [ + "packages/pieces/community/hunter/src/index.ts" + ], + "@activepieces/piece-image-ai": [ + "packages/pieces/community/image-ai/src/index.ts" + ], + "@activepieces/piece-image-helper": [ + "packages/pieces/community/image-helper/src/index.ts" + ], + "@activepieces/piece-imap": [ + "packages/pieces/community/imap/src/index.ts" + ], + "@activepieces/piece-insighto-ai": [ + "packages/pieces/community/insighto-ai/src/index.ts" + ], + "@activepieces/piece-instagram-business": [ + "packages/pieces/community/instagram-business/src/index.ts" + ], + "@activepieces/piece-instasent": [ + "packages/pieces/community/instasent/src/index.ts" + ], "@activepieces/piece-intercom": [ "packages/pieces/community/intercom/src/index.ts" ], - "@activepieces/piece-meistertask": [ - "packages/pieces/community/meistertask/src/index.ts" + "@activepieces/piece-invoiceninja": [ + "packages/pieces/community/invoiceninja/src/index.ts" + ], + "@activepieces/piece-jina-ai": [ + "packages/pieces/community/jina-ai/src/index.ts" + ], + "@activepieces/piece-jira-cloud": [ + "packages/pieces/community/jira-cloud/src/index.ts" + ], + "@activepieces/piece-jotform": [ + "packages/pieces/community/jotform/src/index.ts" + ], + "@activepieces/piece-json": [ + "packages/pieces/community/json/src/index.ts" + ], + "@activepieces/piece-kallabot-ai": [ + "packages/pieces/community/kallabot-ai/src/index.ts" + ], + "@activepieces/piece-kimai": [ + "packages/pieces/community/kimai/src/index.ts" + ], + "@activepieces/piece-kizeo-forms": [ + "packages/pieces/community/kizeo-forms/src/index.ts" + ], + "@activepieces/piece-knack": [ + "packages/pieces/community/knack/src/index.ts" + ], + "@activepieces/piece-kommo": [ + "packages/pieces/community/kommo/src/index.ts" + ], + "@activepieces/piece-krisp-call": [ + "packages/pieces/community/krisp-call/src/index.ts" + ], + "@activepieces/piece-lead-connector": [ + "packages/pieces/community/lead-connector/src/index.ts" + ], + "@activepieces/piece-lemlist": [ + "packages/pieces/community/lemlist/src/index.ts" + ], + "@activepieces/piece-line": [ + "packages/pieces/community/line/src/index.ts" + ], + "@activepieces/piece-linear": [ + "packages/pieces/community/linear/src/index.ts" + ], + "@activepieces/piece-linka": [ + "packages/pieces/community/linka/src/index.ts" + ], + "@activepieces/piece-linkedin": [ + "packages/pieces/community/linkedin/src/index.ts" + ], + "@activepieces/piece-llmrails": [ + "packages/pieces/community/llmrails/src/index.ts" + ], + "@activepieces/piece-localai": [ + "packages/pieces/community/localai/src/index.ts" + ], + "@activepieces/piece-lusha": [ + "packages/pieces/community/lusha/src/index.ts" + ], + "@activepieces/piece-magical-api": [ + "packages/pieces/community/magical-api/src/index.ts" + ], + "@activepieces/piece-magicslides": [ + "packages/pieces/community/magicslides/src/index.ts" + ], + "@activepieces/piece-mailchain": [ + "packages/pieces/community/mailchain/src/index.ts" + ], + "@activepieces/piece-mailchimp": [ + "packages/pieces/community/mailchimp/src/index.ts" + ], + "@activepieces/piece-mailer-lite": [ + "packages/pieces/community/mailer-lite/src/index.ts" + ], + "@activepieces/piece-maileroo": [ + "packages/pieces/community/maileroo/src/index.ts" + ], + "@activepieces/piece-manychat": [ + "packages/pieces/community/manychat/src/index.ts" + ], + "@activepieces/piece-mastodon": [ + "packages/pieces/community/mastodon/src/index.ts" + ], + "@activepieces/piece-math-helper": [ + "packages/pieces/community/math-helper/src/index.ts" + ], + "@activepieces/piece-matomo": [ + "packages/pieces/community/matomo/src/index.ts" + ], + "@activepieces/piece-matrix": [ + "packages/pieces/community/matrix/src/index.ts" + ], + "@activepieces/piece-mattermost": [ + "packages/pieces/community/mattermost/src/index.ts" + ], + "@activepieces/piece-mautic": [ + "packages/pieces/community/mautic/src/index.ts" + ], + "@activepieces/piece-mcp": ["packages/pieces/community/mcp/src/index.ts"], + "@activepieces/piece-medullar": [ + "packages/pieces/community/medullar/src/index.ts" + ], + "@activepieces/piece-mem": ["packages/pieces/community/mem/src/index.ts"], + "@activepieces/piece-mempool-space": [ + "packages/pieces/community/mempool-space/src/index.ts" + ], + "@activepieces/piece-messagebird": [ + "packages/pieces/community/messagebird/src/index.ts" + ], + "@activepieces/piece-microsoft-365-people": [ + "packages/pieces/community/microsoft-365-people/src/index.ts" + ], + "@activepieces/piece-microsoft-365-planner": [ + "packages/pieces/community/microsoft-365-planner/src/index.ts" + ], + "@activepieces/piece-microsoft-excel-365": [ + "packages/pieces/community/microsoft-excel-365/src/index.ts" + ], + "@activepieces/piece-microsoft-onedrive": [ + "packages/pieces/community/microsoft-onedrive/src/index.ts" + ], + "@activepieces/piece-microsoft-onenote": [ + "packages/pieces/community/microsoft-onenote/src/index.ts" + ], + "@activepieces/piece-microsoft-outlook": [ + "packages/pieces/community/microsoft-outlook/src/index.ts" + ], + "@activepieces/piece-microsoft-outlook-calendar": [ + "packages/pieces/community/microsoft-outlook-calendar/src/index.ts" + ], + "@activepieces/piece-microsoft-power-bi": [ + "packages/pieces/community/microsoft-power-bi/src/index.ts" + ], + "@activepieces/piece-microsoft-teams": [ + "packages/pieces/community/microsoft-teams/src/index.ts" + ], + "@activepieces/piece-microsoft-todo": [ + "packages/pieces/community/microsoft-todo/src/index.ts" + ], + "@activepieces/piece-mindee": [ + "packages/pieces/community/mindee/src/index.ts" + ], + "@activepieces/piece-missive": [ + "packages/pieces/community/missive/src/index.ts" + ], + "@activepieces/piece-mistral-ai": [ + "packages/pieces/community/mistral-ai/src/index.ts" + ], + "@activepieces/piece-mixpanel": [ + "packages/pieces/community/mixpanel/src/index.ts" + ], + "@activepieces/piece-mollie": [ + "packages/pieces/community/mollie/src/index.ts" + ], + "@activepieces/piece-monday": [ + "packages/pieces/community/monday/src/index.ts" + ], + "@activepieces/piece-mongodb": [ + "packages/pieces/community/mongodb/src/index.ts" + ], + "@activepieces/piece-motion": [ + "packages/pieces/community/motion/src/index.ts" + ], + "@activepieces/piece-moxie-crm": [ + "packages/pieces/community/moxie-crm/src/index.ts" + ], + "@activepieces/piece-murf-api": [ + "packages/pieces/community/murf-api/src/index.ts" + ], + "@activepieces/piece-mysql": [ + "packages/pieces/community/mysql/src/index.ts" + ], + "@activepieces/piece-netlify": [ + "packages/pieces/community/netlify/src/index.ts" + ], + "@activepieces/piece-netsuite": [ + "packages/pieces/community/netsuite/src/index.ts" + ], + "@activepieces/piece-nifty": [ + "packages/pieces/community/nifty/src/index.ts" + ], + "@activepieces/piece-ninox": [ + "packages/pieces/community/ninox/src/index.ts" + ], + "@activepieces/piece-nocodb": [ + "packages/pieces/community/nocodb/src/index.ts" + ], + "@activepieces/piece-notion": [ + "packages/pieces/community/notion/src/index.ts" + ], + "@activepieces/piece-ntfy": [ + "packages/pieces/community/ntfy/src/index.ts" + ], + "@activepieces/piece-nuelink": [ + "packages/pieces/community/nuelink/src/index.ts" + ], + "@activepieces/piece-odoo": [ + "packages/pieces/community/odoo/src/index.ts" + ], + "@activepieces/piece-okta": [ + "packages/pieces/community/okta/src/index.ts" + ], + "@activepieces/piece-onfleet": [ + "packages/pieces/community/onfleet/src/index.ts" + ], + "@activepieces/piece-open-phone": [ + "packages/pieces/community/open-phone/src/index.ts" + ], + "@activepieces/piece-open-router": [ + "packages/pieces/community/open-router/src/index.ts" + ], + "@activepieces/piece-openai": [ + "packages/pieces/community/openai/src/index.ts" + ], + "@activepieces/piece-oracle-fusion-cloud-erp": [ + "packages/pieces/community/oracle-fusion-cloud-erp/src/index.ts" + ], + "@activepieces/piece-pandadoc": [ + "packages/pieces/community/pandadoc/src/index.ts" + ], + "@activepieces/piece-paperform": [ + "packages/pieces/community/paperform/src/index.ts" + ], + "@activepieces/piece-parseur": [ + "packages/pieces/community/parseur/src/index.ts" + ], + "@activepieces/piece-pastebin": [ + "packages/pieces/community/pastebin/src/index.ts" + ], + "@activepieces/piece-pastefy": [ + "packages/pieces/community/pastefy/src/index.ts" + ], + "@activepieces/piece-pdf": ["packages/pieces/community/pdf/src/index.ts"], + "@activepieces/piece-pdf-co": [ + "packages/pieces/community/pdf-co/src/index.ts" + ], + "@activepieces/piece-pdfmonkey": [ + "packages/pieces/community/pdfmonkey/src/index.ts" + ], + "@activepieces/piece-peekshot": [ + "packages/pieces/community/peekshot/src/index.ts" + ], + "@activepieces/piece-perplexity-ai": [ + "packages/pieces/community/perplexity-ai/src/index.ts" + ], + "@activepieces/piece-personal-ai": [ + "packages/pieces/community/personal-ai/src/index.ts" + ], + "@activepieces/piece-photoroom": [ + "packages/pieces/community/photoroom/src/index.ts" + ], + "@activepieces/piece-pinecone": [ + "packages/pieces/community/pinecone/src/index.ts" + ], + "@activepieces/piece-pinterest": [ + "packages/pieces/community/pinterest/src/index.ts" + ], + "@activepieces/piece-pipedrive": [ + "packages/pieces/community/pipedrive/src/index.ts" + ], + "@activepieces/piece-placid": [ + "packages/pieces/community/placid/src/index.ts" + ], + "@activepieces/piece-podio": [ + "packages/pieces/community/podio/src/index.ts" + ], + "@activepieces/piece-poper": [ + "packages/pieces/community/poper/src/index.ts" + ], + "@activepieces/piece-postgres": [ + "packages/pieces/community/postgres/src/index.ts" + ], + "@activepieces/piece-posthog": [ + "packages/pieces/community/posthog/src/index.ts" + ], + "@activepieces/piece-predict-leads": [ + "packages/pieces/community/predict-leads/src/index.ts" + ], + "@activepieces/piece-productboard": [ + "packages/pieces/community/productboard/src/index.ts" + ], + "@activepieces/piece-prompthub": [ + "packages/pieces/community/prompthub/src/index.ts" + ], + "@activepieces/piece-pushover": [ + "packages/pieces/community/pushover/src/index.ts" + ], + "@activepieces/piece-pylon": [ + "packages/pieces/community/pylon/src/index.ts" + ], + "@activepieces/piece-qdrant": [ + "packages/pieces/community/qdrant/src/index.ts" + ], + "@activepieces/piece-qrcode": [ + "packages/pieces/community/qrcode/src/index.ts" + ], + "@activepieces/piece-queue": [ + "packages/pieces/community/queue/src/index.ts" + ], + "@activepieces/piece-quickbooks": [ + "packages/pieces/community/quickbooks/src/index.ts" + ], + "@activepieces/piece-quickzu": [ + "packages/pieces/community/quickzu/src/index.ts" + ], + "@activepieces/piece-rabbitmq": [ + "packages/pieces/community/rabbitmq/src/index.ts" + ], + "@activepieces/piece-razorpay": [ + "packages/pieces/community/razorpay/src/index.ts" + ], + "@activepieces/piece-reachinbox": [ + "packages/pieces/community/reachinbox/src/index.ts" + ], + "@activepieces/piece-read-file": [ + "packages/pieces/read-file/src/index.ts" + ], + "@activepieces/piece-reddit": [ + "packages/pieces/community/reddit/src/index.ts" + ], + "@activepieces/piece-reoon-verifier": [ + "packages/pieces/community/reoon-verifier/src/index.ts" + ], + "@activepieces/piece-resend": [ + "packages/pieces/community/resend/src/index.ts" + ], + "@activepieces/piece-respaid": [ + "packages/pieces/community/respaid/src/index.ts" + ], + "@activepieces/piece-respond-io": [ + "packages/pieces/community/respond-io/src/index.ts" + ], + "@activepieces/piece-retable": [ + "packages/pieces/community/retable/src/index.ts" + ], + "@activepieces/piece-retell-ai": [ + "packages/pieces/community/retell-ai/src/index.ts" + ], + "@activepieces/piece-retune": [ + "packages/pieces/community/retune/src/index.ts" + ], + "@activepieces/piece-returning-ai": [ + "packages/pieces/community/returning-ai/src/index.ts" + ], + "@activepieces/piece-robolly": [ + "packages/pieces/community/robolly/src/index.ts" + ], + "@activepieces/piece-rss": ["packages/pieces/community/rss/src/index.ts"], + "@activepieces/piece-runway": [ + "packages/pieces/community/runway/src/index.ts" + ], + "@activepieces/piece-saastic": [ + "packages/pieces/community/saastic/src/index.ts" + ], + "@activepieces/piece-saleor": [ + "packages/pieces/community/saleor/src/index.ts" + ], + "@activepieces/piece-salesforce": [ + "packages/pieces/community/salesforce/src/index.ts" + ], + "@activepieces/piece-scenario": [ + "packages/pieces/community/scenario/src/index.ts" + ], + "@activepieces/piece-schedule": [ + "packages/pieces/community/schedule/src/index.ts" + ], + "@activepieces/piece-scrapegrapghai": [ + "packages/pieces/community/scrapegrapghai/src/index.ts" + ], + "@activepieces/piece-scrapeless": [ + "packages/pieces/community/scrapeless/src/index.ts" + ], + "@activepieces/piece-segment": [ + "packages/pieces/community/segment/src/index.ts" + ], + "@activepieces/piece-sender": [ + "packages/pieces/community/sender/src/index.ts" + ], + "@activepieces/piece-sendfox": [ + "packages/pieces/community/sendfox/src/index.ts" + ], + "@activepieces/piece-sendgrid": [ + "packages/pieces/community/sendgrid/src/index.ts" + ], + "@activepieces/piece-sendinblue": [ + "packages/pieces/community/sendinblue/src/index.ts" + ], + "@activepieces/piece-sendpulse": [ + "packages/pieces/community/sendpulse/src/index.ts" + ], + "@activepieces/piece-sendy": [ + "packages/pieces/community/sendy/src/index.ts" + ], + "@activepieces/piece-serp-api": [ + "packages/pieces/community/serp-api/src/index.ts" + ], + "@activepieces/piece-serpstat": [ + "packages/pieces/community/serpstat/src/index.ts" + ], + "@activepieces/piece-sessions-us": [ + "packages/pieces/community/sessions-us/src/index.ts" + ], + "@activepieces/piece-seven": [ + "packages/pieces/community/seven/src/index.ts" + ], + "@activepieces/piece-sftp": [ + "packages/pieces/community/sftp/src/index.ts" + ], + "@activepieces/piece-shopify": [ + "packages/pieces/community/shopify/src/index.ts" + ], + "@activepieces/piece-short-io": [ + "packages/pieces/community/short-io/src/index.ts" + ], + "@activepieces/piece-simplepdf": [ + "packages/pieces/community/simplepdf/src/index.ts" + ], + "@activepieces/piece-simpliroute": [ + "packages/pieces/community/simpliroute/src/index.ts" + ], + "@activepieces/piece-simplybookme": [ + "packages/pieces/community/simplybookme/src/index.ts" + ], + "@activepieces/piece-sitespeakai": [ + "packages/pieces/community/sitespeakai/src/index.ts" + ], + "@activepieces/piece-skyvern": [ + "packages/pieces/community/skyvern/src/index.ts" ], "@activepieces/piece-slack": [ "packages/pieces/community/slack/src/index.ts" ], + "@activepieces/piece-slidespeak": [ + "packages/pieces/community/slidespeak/src/index.ts" + ], + "@activepieces/piece-smaily": [ + "packages/pieces/community/smaily/src/index.ts" + ], + "@activepieces/piece-smartsheet": [ + "packages/pieces/community/smartsheet/src/index.ts" + ], + "@activepieces/piece-smartsuite": [ + "packages/pieces/community/smartsuite/src/index.ts" + ], + "@activepieces/piece-smoove": [ + "packages/pieces/community/smoove/src/index.ts" + ], + "@activepieces/piece-smtp": [ + "packages/pieces/community/smtp/src/index.ts" + ], + "@activepieces/piece-soap": [ + "packages/pieces/community/soap/src/index.ts" + ], + "@activepieces/piece-socialkit": [ + "packages/pieces/community/socialkit/src/index.ts" + ], + "@activepieces/piece-softr": [ + "packages/pieces/community/softr/src/index.ts" + ], + "@activepieces/piece-sperse": [ + "packages/pieces/community/sperse/src/index.ts" + ], + "@activepieces/piece-spotify": [ + "packages/pieces/community/spotify/src/index.ts" + ], "@activepieces/piece-square": [ "packages/pieces/community/square/src/index.ts" ], + "@activepieces/piece-stability-ai": [ + "packages/pieces/community/stability-ai/src/index.ts" + ], + "@activepieces/piece-stable-diffusion-webui": [ + "packages/pieces/community/stable-diffusion-webui/src/index.ts" + ], + "@activepieces/piece-store": [ + "packages/pieces/community/store/src/index.ts" + ], + "@activepieces/piece-straico": [ + "packages/pieces/community/straico/src/index.ts" + ], + "@activepieces/piece-stripe": [ + "packages/pieces/community/stripe/src/index.ts" + ], + "@activepieces/piece-subflows": [ + "packages/pieces/community/subflows/src/index.ts" + ], + "@activepieces/piece-supabase": [ + "packages/pieces/community/supabase/src/index.ts" + ], + "@activepieces/piece-supadata": [ + "packages/pieces/community/supadata/src/index.ts" + ], + "@activepieces/piece-surrealdb": [ + "packages/pieces/community/surrealdb/src/index.ts" + ], + "@activepieces/piece-surveymonkey": [ + "packages/pieces/community/surveymonkey/src/index.ts" + ], + "@activepieces/piece-systeme-io": [ + "packages/pieces/community/systeme-io/src/index.ts" + ], + "@activepieces/piece-tables": [ + "packages/pieces/community/tables/src/index.ts" + ], + "@activepieces/piece-tags": [ + "packages/pieces/community/tags/src/index.ts" + ], + "@activepieces/piece-talkable": [ + "packages/pieces/community/talkable/src/index.ts" + ], + "@activepieces/piece-tally": [ + "packages/pieces/community/tally/src/index.ts" + ], + "@activepieces/piece-tarvent": [ + "packages/pieces/community/tarvent/src/index.ts" + ], + "@activepieces/piece-taskade": [ + "packages/pieces/community/taskade/src/index.ts" + ], + "@activepieces/piece-tavily": [ + "packages/pieces/community/tavily/src/index.ts" + ], + "@activepieces/piece-teamleader": [ + "packages/pieces/community/teamleader/src/index.ts" + ], + "@activepieces/piece-teamwork": [ + "packages/pieces/community/teamwork/src/index.ts" + ], + "@activepieces/piece-telegram-bot": [ + "packages/pieces/community/telegram-bot/src/index.ts" + ], + "@activepieces/piece-text-ai": [ + "packages/pieces/community/text-ai/src/index.ts" + ], + "@activepieces/piece-text-helper": [ + "packages/pieces/community/text-helper/src/index.ts" + ], + "@activepieces/piece-textcortex-ai": [ + "packages/pieces/community/textcortex-ai/src/index.ts" + ], + "@activepieces/piece-thankster": [ + "packages/pieces/community/thankster/src/index.ts" + ], + "@activepieces/piece-ticktick": [ + "packages/pieces/community/ticktick/src/index.ts" + ], + "@activepieces/piece-tidycal": [ + "packages/pieces/community/tidycal/src/index.ts" + ], + "@activepieces/piece-timelines-ai": [ + "packages/pieces/community/timelines-ai/src/index.ts" + ], + "@activepieces/piece-todoist": [ + "packages/pieces/community/todoist/src/index.ts" + ], + "@activepieces/piece-todos": [ + "packages/pieces/community/todos/src/index.ts" + ], + "@activepieces/piece-toggl-track": [ + "packages/pieces/community/toggl-track/src/index.ts" + ], + "@activepieces/piece-totalcms": [ + "packages/pieces/community/totalcms/src/index.ts" + ], + "@activepieces/piece-trello": [ + "packages/pieces/community/trello/src/index.ts" + ], + "@activepieces/piece-truelayer": [ + "packages/pieces/community/truelayer/src/index.ts" + ], + "@activepieces/piece-twilio": [ + "packages/pieces/community/twilio/src/index.ts" + ], + "@activepieces/piece-twin-labs": [ + "packages/pieces/community/twin-labs/src/index.ts" + ], + "@activepieces/piece-twitter": [ + "packages/pieces/community/twitter/src/index.ts" + ], + "@activepieces/piece-typeform": [ + "packages/pieces/community/typeform/src/index.ts" + ], + "@activepieces/piece-upgradechat": [ + "packages/pieces/community/upgradechat/src/index.ts" + ], + "@activepieces/piece-utility-ai": [ + "packages/pieces/community/utility-ai/src/index.ts" + ], + "@activepieces/piece-vadoo-ai": [ + "packages/pieces/community/vadoo-ai/src/index.ts" + ], + "@activepieces/piece-vbout": [ + "packages/pieces/community/vbout/src/index.ts" + ], + "@activepieces/piece-video-ai": [ + "packages/pieces/community/video-ai/src/index.ts" + ], + "@activepieces/piece-village": [ + "packages/pieces/community/village/src/index.ts" + ], + "@activepieces/piece-vimeo": [ + "packages/pieces/community/vimeo/src/index.ts" + ], + "@activepieces/piece-vlm-run": [ + "packages/pieces/community/vlm-run/src/index.ts" + ], + "@activepieces/piece-vtex": [ + "packages/pieces/community/vtex/src/index.ts" + ], + "@activepieces/piece-vtiger": [ + "packages/pieces/community/vtiger/src/index.ts" + ], + "@activepieces/piece-wealthbox": [ + "packages/pieces/community/wealthbox/src/index.ts" + ], + "@activepieces/piece-webflow": [ + "packages/pieces/community/webflow/src/index.ts" + ], + "@activepieces/piece-webhook": [ + "packages/pieces/community/webhook/src/index.ts" + ], + "@activepieces/piece-webling": [ + "packages/pieces/community/webling/src/index.ts" + ], + "@activepieces/piece-webscraping-ai": [ + "packages/pieces/community/webscraping-ai/src/index.ts" + ], + "@activepieces/piece-wedof": [ + "packages/pieces/community/wedof/src/index.ts" + ], + "@activepieces/piece-what-converts": [ + "packages/pieces/community/what-converts/src/index.ts" + ], + "@activepieces/piece-whatsable": [ + "packages/pieces/community/whatsable/src/index.ts" + ], + "@activepieces/piece-whatsapp": [ + "packages/pieces/community/whatsapp/src/index.ts" + ], + "@activepieces/piece-wonderchat": [ + "packages/pieces/community/wonderchat/src/index.ts" + ], + "@activepieces/piece-woocommerce": [ + "packages/pieces/community/woocommerce/src/index.ts" + ], + "@activepieces/piece-wootric": [ + "packages/pieces/community/wootric/src/index.ts" + ], + "@activepieces/piece-wordpress": [ + "packages/pieces/community/wordpress/src/index.ts" + ], + "@activepieces/piece-workable": [ + "packages/pieces/community/workable/src/index.ts" + ], + "@activepieces/piece-wrike": [ + "packages/pieces/community/wrike/src/index.ts" + ], + "@activepieces/piece-wufoo": [ + "packages/pieces/community/wufoo/src/index.ts" + ], + "@activepieces/piece-xero": [ + "packages/pieces/community/xero/src/index.ts" + ], + "@activepieces/piece-xml": ["packages/pieces/community/xml/src/index.ts"], + "@activepieces/piece-youtube": [ + "packages/pieces/community/youtube/src/index.ts" + ], + "@activepieces/piece-zagomail": [ + "packages/pieces/community/zagomail/src/index.ts" + ], + "@activepieces/piece-zendesk": [ + "packages/pieces/community/zendesk/src/index.ts" + ], + "@activepieces/piece-zerobounce": [ + "packages/pieces/community/zerobounce/src/index.ts" + ], + "@activepieces/piece-zoho-bookings": [ + "packages/pieces/community/zoho-bookings/src/index.ts" + ], + "@activepieces/piece-zoho-books": [ + "packages/pieces/community/zoho-books/src/index.ts" + ], + "@activepieces/piece-zoho-campaigns": [ + "packages/pieces/community/zoho-campaigns/src/index.ts" + ], + "@activepieces/piece-zoho-crm": [ + "packages/pieces/community/zoho-crm/src/index.ts" + ], + "@activepieces/piece-zoho-desk": [ + "packages/pieces/community/zoho-desk/src/index.ts" + ], + "@activepieces/piece-zoho-invoice": [ + "packages/pieces/community/zoho-invoice/src/index.ts" + ], + "@activepieces/piece-zoho-mail": [ + "packages/pieces/community/zoho-mail/src/index.ts" + ], + "@activepieces/piece-zoo": ["packages/pieces/community/zoo/src/index.ts"], + "@activepieces/piece-zoom": [ + "packages/pieces/community/zoom/src/index.ts" + ], + "@activepieces/pieces-common": [ + "packages/pieces/community/common/src/index.ts" + ], + "@activepieces/pieces-framework": [ + "packages/pieces/community/framework/src/index.ts" + ], + "@activepieces/piece-meistertask": [ + "packages/pieces/community/meistertask/src/index.ts" + ], "@activepieces/server-shared": ["packages/server/shared/src/index.ts"], "@activepieces/shared": ["packages/shared/src/index.ts"], "@ee/*": ["packages/ee/*"],