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>
This commit is contained in:
poduck
2025-12-18 22:59:37 -05:00
parent 9848268d34
commit 3aa7199503
16292 changed files with 1284892 additions and 4708 deletions

View File

@@ -0,0 +1,50 @@
import { PieceAuth } from "@activepieces/pieces-framework";
import { HttpError, HttpMethod, httpClient } from "@activepieces/pieces-common";
const markdownDescription = `
Follow these steps to get your Gamma API Key:
1. Log in to your Gamma account. You must have a **Pro or Ultra plan** to access the API.
2. Navigate to **Settings & Members** (click your workspace name in the top-left).
3. Go to the **API Key** tab.
4. Click **Create API key** and give it a name (e.g., "Activepieces").
5. Copy the key (it starts with \`sk-gamma-\`) and paste it below.
**Direct Link to API Settings:** [**https://gamma.app/settings/api**](https://gamma.app/settings/api)
`;
export const gammaAuth = PieceAuth.CustomAuth({
description: markdownDescription,
required: true,
props: {
apiKey: PieceAuth.SecretText({
displayName: "API Key",
description: "Paste your API key here.",
required: true,
}),
},
async validate(auth) {
const apiKey = auth.auth.apiKey;
try {
await httpClient.sendRequest({
method: HttpMethod.GET,
url: 'https://public-api.gamma.app/v0.2/generations/1',
headers: {
'X-API-KEY': apiKey,
},
});
return { valid: true };
} catch (e) {
if (e instanceof HttpError) {
if (e.response.status === 404) {
return { valid: true };
}
if (e.response.status === 401) {
return { valid: false, error: 'Invalid API Key' };
}
}
return { valid: false, error: 'Failed to connect to Gamma API' };
}
},
});