Files
smoothschedule/activepieces-fork/packages/pieces/community/invoiceninja/src/index.ts
poduck 3aa7199503 Add Activepieces integration for workflow automation
- Add Activepieces fork with SmoothSchedule custom piece
- Create integrations app with Activepieces service layer
- Add embed token endpoint for iframe integration
- Create Automations page with embedded workflow builder
- Add sidebar visibility fix for embed mode
- Add list inactive customers endpoint to Public API
- Include SmoothSchedule triggers: event created/updated/cancelled
- Include SmoothSchedule actions: create/update/cancel events, list resources/services/customers

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 22:59:37 -05:00

66 lines
2.1 KiB
TypeScript

import { createCustomApiCallAction } from '@activepieces/pieces-common';
import {
PieceAuth,
Property,
createPiece,
} from '@activepieces/pieces-framework';
import { PieceCategory } from '@activepieces/shared';
import { createTask } from './lib/actions/create-task';
import { getClient } from './lib/actions/get-client';
import { getInvoices } from './lib/actions/get-invoices';
import { getReport } from './lib/actions/get-report';
import { existsTask } from './lib/actions/task-exists';
import { createInvoice } from './lib/actions/create-invoice';
import { createClient } from './lib/actions/create-client';
import { createRecurringInvoice } from './lib/actions/create-recurring';
import { actionRecurringInvoice } from './lib/actions/action-recurring';
export const invoiceninjaAuth = PieceAuth.CustomAuth({
props: {
base_url: Property.ShortText({
displayName: 'Base URL',
description: 'Enter the base URL',
required: true,
}),
access_token: Property.ShortText({
displayName: 'API Token',
description: 'Enter the API token',
required: true,
}),
},
description: `Please check https://invoice-ninja.readthedocs.io/en/latest/api_tokens.html#create-token
to see how to get the API token`,
required: true,
});
export const invoiceninja = createPiece({
displayName: 'Invoice Ninja',
description: 'Free open-source invoicing tool',
minimumSupportedRelease: '0.30.0',
logoUrl: 'https://cdn.activepieces.com/pieces/invoiceninja.png',
categories: [PieceCategory.ACCOUNTING],
authors: ["buttonsbond","kishanprmr","MoShizzle","AbdulTheActivePiecer","khaledmashaly","abuaboud"],
auth: invoiceninjaAuth,
actions: [
createTask,
existsTask,
getClient,
getInvoices,
getReport,
createInvoice,
createClient,
createRecurringInvoice,
actionRecurringInvoice,
createCustomApiCallAction({
baseUrl: (auth) =>
auth ? `${(auth).props.base_url.replace(/\/$/, '')}/api/v1` : '',
auth: invoiceninjaAuth,
authMapping: async (auth) => ({
'X-Api-Token': (auth).props.access_token,
}),
}),
],
triggers: [],
});