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,33 @@
{
"extends": [
"../../../../.eslintrc.base.json"
],
"ignorePatterns": [
"!**/*"
],
"overrides": [
{
"files": [
"*.ts",
"*.tsx",
"*.js",
"*.jsx"
],
"rules": {}
},
{
"files": [
"*.ts",
"*.tsx"
],
"rules": {}
},
{
"files": [
"*.js",
"*.jsx"
],
"rules": {}
}
]
}

View File

@@ -0,0 +1,7 @@
# pieces-zerobounce
This library was generated with [Nx](https://nx.dev).
## Building
Run `nx build pieces-zerobounce` to build the library.

View File

@@ -0,0 +1,4 @@
{
"name": "@activepieces/piece-zerobounce",
"version": "0.0.7"
}

View File

@@ -0,0 +1,57 @@
{
"name": "pieces-zerobounce",
"$schema": "../../../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "packages/pieces/community/zerobounce/src",
"projectType": "library",
"targets": {
"build": {
"executor": "@nx/js:tsc",
"outputs": [
"{options.outputPath}"
],
"options": {
"outputPath": "dist/packages/pieces/community/zerobounce",
"tsConfig": "packages/pieces/community/zerobounce/tsconfig.lib.json",
"packageJson": "packages/pieces/community/zerobounce/package.json",
"main": "packages/pieces/community/zerobounce/src/index.ts",
"assets": [
"packages/pieces/community/zerobounce/*.md",
{
"input": "packages/pieces/community/zerobounce/src/i18n",
"output": "./src/i18n",
"glob": "**/!(i18n.json)"
}
],
"buildableProjectDepsInPackageJsonType": "dependencies",
"updateBuildableProjectDepsInPackageJson": true
},
"dependsOn": [
"^build",
"prebuild"
]
},
"publish": {
"command": "node tools/scripts/publish.mjs pieces-zerobounce {args.ver} {args.tag}",
"dependsOn": [
"build"
]
},
"lint": {
"executor": "@nx/eslint:lint",
"outputs": [
"{options.outputFile}"
]
},
"prebuild": {
"executor": "nx:run-commands",
"options": {
"cwd": "packages/pieces/community/zerobounce",
"command": "bun install --no-save --silent"
},
"dependsOn": [
"^build"
]
}
},
"tags": []
}

View File

@@ -0,0 +1,7 @@
{
"ZeroBounce is an email validation service that helps you reduce bounces, improve email deliverability and increase email marketing ROI.": "ZeroBounce ist ein E-Mail-Validierungsdienst, der Ihnen hilft, Bounces zu reduzieren, die Zustellbarkeit von E-Mails zu verbessern und E-Mail-Marketing ROI zu erhöhen.",
"Validate Email": "Validate Email",
"Email": "E-Mail",
"Cache Response": "Cache-Antwort",
"Store the response in the project store for future use.": "Speichern Sie die Antwort im Projektspeicher für zukünftige Nutzung."
}

View File

@@ -0,0 +1,7 @@
{
"ZeroBounce is an email validation service that helps you reduce bounces, improve email deliverability and increase email marketing ROI.": "ZeroBounce es un servicio de validación de correo electrónico que te ayuda a reducir rebotes, mejorar la entregabilidad del correo electrónico y aumentar la ROI de marketing de correo electrónico.",
"Validate Email": "Validate Email",
"Email": "E-mail",
"Cache Response": "Respuesta de caché",
"Store the response in the project store for future use.": "Almacena la respuesta en la tienda de proyectos para su uso futuro."
}

View File

@@ -0,0 +1,7 @@
{
"ZeroBounce is an email validation service that helps you reduce bounces, improve email deliverability and increase email marketing ROI.": "ZeroBounce est un service de validation de courriel qui vous aide à réduire les rebondissements, à améliorer la délivrabilité des e-mails et à augmenter le ROI de marketing par courriel.",
"Validate Email": "Validate Email",
"Email": "Courriel",
"Cache Response": "Mettre en cache la réponse",
"Store the response in the project store for future use.": "Stockez la réponse dans la boutique du projet pour une utilisation future."
}

View File

@@ -0,0 +1,7 @@
{
"ZeroBounce is an email validation service that helps you reduce bounces, improve email deliverability and increase email marketing ROI.": "ZeroBounceは、バウンスを減らし、メール配信を改善し、メールマーケティングのROIを向上させるのに役立つ電子メール検証サービスです。",
"Validate Email": "Validate Email",
"Email": "Eメールアドレス",
"Cache Response": "キャッシュ応答",
"Store the response in the project store for future use.": "今後使用するためにプロジェクトストアに応答を保存します。"
}

View File

@@ -0,0 +1,7 @@
{
"ZeroBounce is an email validation service that helps you reduce bounces, improve email deliverability and increase email marketing ROI.": "ZeroBounce is een e-mail validatie service die helpt om bounces, de afleverbaarheid van e-mail te verbeteren en de ROI van e-mail marketing te verhogen.",
"Validate Email": "Validate Email",
"Email": "E-mail",
"Cache Response": "Cache antwoord",
"Store the response in the project store for future use.": "Sla het antwoord op in de projectopslag op voor toekomstig gebruik."
}

View File

@@ -0,0 +1,7 @@
{
"ZeroBounce is an email validation service that helps you reduce bounces, improve email deliverability and increase email marketing ROI.": "ZeroBounce é um serviço de validação de e-mail que ajuda a reduzir devoluções, melhorar a entrega de e-mails e aumentar a ROI de marketing por e-mail.",
"Validate Email": "Validate Email",
"Email": "e-mail",
"Cache Response": "Resposta em cache",
"Store the response in the project store for future use.": "Armazene a resposta na loja do projeto para uso futuro."
}

View File

@@ -0,0 +1,8 @@
{
"ZeroBounce": "Жеробунс",
"ZeroBounce is an email validation service that helps you reduce bounces, improve email deliverability and increase email marketing ROI.": "ZeroBounce это сервис проверки электронной почты, который помогает вам уменьшить отказы, улучшить доставку электронной почты и увеличить ROI маркетинга.",
"Validate Email": "Validate Email",
"Email": "Почта",
"Cache Response": "Ответ кэша",
"Store the response in the project store for future use.": "Сохранять ответ в магазине проекта для последующего использования."
}

View File

@@ -0,0 +1,7 @@
{
"ZeroBounce is an email validation service that helps you reduce bounces, improve email deliverability and increase email marketing ROI.": "ZeroBounce is an email validation service that helps you reduce bounces, improve email deliverability and increase email marketing ROI.",
"Validate Email": "Validate Email",
"Email": "Email",
"Cache Response": "Cache Response",
"Store the response in the project store for future use.": "Store the response in the project store for future use."
}

View File

@@ -0,0 +1,8 @@
{
"ZeroBounce": "ZeroBounce",
"ZeroBounce is an email validation service that helps you reduce bounces, improve email deliverability and increase email marketing ROI.": "ZeroBounce is an email validation service that helps you reduce bounces, improve email deliverability and increase email marketing ROI.",
"Validate Email": "Validate Email",
"Email": "Email",
"Cache Response": "Cache Response",
"Store the response in the project store for future use.": "Store the response in the project store for future use."
}

View File

@@ -0,0 +1,7 @@
{
"ZeroBounce is an email validation service that helps you reduce bounces, improve email deliverability and increase email marketing ROI.": "ZeroBounce is an email validation service that helps you reduce bounces, improve email deliverability and increase email marketing ROI.",
"Validate Email": "Validate Email",
"Email": "电子邮件地址",
"Cache Response": "Cache Response",
"Store the response in the project store for future use.": "Store the response in the project store for future use."
}

View File

@@ -0,0 +1,19 @@
import { createPiece, PieceAuth } from "@activepieces/pieces-framework";
import { validateEmail } from "./lib/actions/validate-email";
export const zerobounceAuth = PieceAuth.SecretText({
displayName: 'API Key',
required: true,
});
export const zerobounce = createPiece({
displayName: "ZeroBounce",
auth: zerobounceAuth,
description: "ZeroBounce is an email validation service that helps you reduce bounces, improve email deliverability and increase email marketing ROI.",
minimumSupportedRelease: '0.30.0',
logoUrl: "https://cdn.activepieces.com/pieces/zerobounce.png",
authors: ["abuaboud"],
actions: [validateEmail],
triggers: [],
});

View File

@@ -0,0 +1,40 @@
import { zerobounceAuth } from '../..';
import { createAction, Property, StoreScope } from '@activepieces/pieces-framework';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { isNil } from '@activepieces/shared';
export const validateEmail = createAction({
name: 'validateEmail',
displayName: 'Validate Email',
description: '',
props: {
email: Property.ShortText({
displayName: 'Email',
required: true,
}),
cacheResponse: Property.Checkbox({
displayName: 'Cache Response',
description: 'Store the response in the project store for future use.',
required: false,
defaultValue: true,
}),
},
auth: zerobounceAuth,
async run({ store, propsValue, auth }) {
const key = `_zerobounce_${propsValue.email}`;
if (propsValue.cacheResponse) {
const cachedResponse = await store.get(key, StoreScope.PROJECT);
if (!isNil(cachedResponse)) {
return cachedResponse
}
}
const res = await httpClient.sendRequest<string[]>({
method: HttpMethod.GET,
url: `https://api.zerobounce.net/v2/validate?email=${propsValue.email}&api_key=${auth.secret_text}`,
});
if (propsValue.cacheResponse) {
await store.put(key, res.body, StoreScope.PROJECT);
}
return res.body;
},
});

View File

@@ -0,0 +1,19 @@
{
"extends": "../../../../tsconfig.base.json",
"compilerOptions": {
"module": "commonjs",
"forceConsistentCasingInFileNames": true,
"strict": true,
"noImplicitOverride": true,
"noPropertyAccessFromIndexSignature": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true
},
"files": [],
"include": [],
"references": [
{
"path": "./tsconfig.lib.json"
}
]
}

View File

@@ -0,0 +1,11 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"module": "commonjs",
"outDir": "../../../../dist/out-tsc",
"declaration": true,
"types": ["node"]
},
"exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"],
"include": ["src/**/*.ts"]
}