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,7 @@
{
"Copy and paste your analytics write key here": "Kopieren und fügen Sie Ihren analytischen Schreibschlüssel hier ein",
"Identify User": "Benutzer identifizieren",
"User ID": "Benutzer-ID",
"Traits": "Merkmale",
"The traits to associate with the user": "Die Merkmale, die dem Benutzer zugeordnet werden sollen"
}

View File

@@ -0,0 +1,7 @@
{
"Copy and paste your analytics write key here": "Copia y pega tu clave de escritura analítica aquí",
"Identify User": "Identificar usuario",
"User ID": "ID Usuario",
"Traits": "Rasgos",
"The traits to associate with the user": "Los rasgos a asociar con el usuario"
}

View File

@@ -0,0 +1,7 @@
{
"Copy and paste your analytics write key here": "Copiez et collez votre clé d'écriture d'analyse ici",
"Identify User": "Identifier l'utilisateur",
"User ID": "Identifiant de l'utilisateur",
"Traits": "Caractéristiques",
"The traits to associate with the user": "Les traits à associer à l'utilisateur"
}

View File

@@ -0,0 +1,7 @@
{
"Copy and paste your analytics write key here": "アナリティクスの書き込みキーをここにコピー&ペーストします",
"Identify User": "ユーザーを識別する",
"User ID": "ユーザー ID",
"Traits": "形質:",
"The traits to associate with the user": "ユーザーに関連付ける特性"
}

View File

@@ -0,0 +1,7 @@
{
"Copy and paste your analytics write key here": "Kopieer en plak uw analytics schrijf hier de sleutel",
"Identify User": "Identificeer gebruiker",
"User ID": "Gebruiker ID",
"Traits": "Eigenschappen",
"The traits to associate with the user": "De eigenschappen om te associëren met de gebruiker"
}

View File

@@ -0,0 +1,7 @@
{
"Copy and paste your analytics write key here": "Copie e cole a chave de escrita do seu analytics aqui",
"Identify User": "Identificar Usuário",
"User ID": "ID de usuário",
"Traits": "Traços",
"The traits to associate with the user": "Os traços para associar com o usuário"
}

View File

@@ -0,0 +1,8 @@
{
"Segment": "Сегмент",
"Copy and paste your analytics write key here": "Скопируйте и вставьте ваш аналитический ключ для записи здесь",
"Identify User": "Идентификация пользователя",
"User ID": "ID пользователя",
"Traits": "Черты",
"The traits to associate with the user": "Характеристики, связанные с пользователем"
}

View File

@@ -0,0 +1,7 @@
{
"Copy and paste your analytics write key here": "Copy and paste your analytics write key here",
"Identify User": "Identify User",
"User ID": "User ID",
"Traits": "Traits",
"The traits to associate with the user": "The traits to associate with the user"
}

View File

@@ -0,0 +1,8 @@
{
"Segment": "Segment",
"Copy and paste your analytics write key here": "Copy and paste your analytics write key here",
"Identify User": "Identify User",
"User ID": "User ID",
"Traits": "Traits",
"The traits to associate with the user": "The traits to associate with the user"
}

View File

@@ -0,0 +1,7 @@
{
"Copy and paste your analytics write key here": "Copy and paste your analytics write key here",
"Identify User": "Identify User",
"User ID": "User ID",
"Traits": "Traits",
"The traits to associate with the user": "The traits to associate with the user"
}

View File

@@ -0,0 +1,20 @@
import { createPiece, PieceAuth } from "@activepieces/pieces-framework";
import { identifyUser } from "./lib/actions/identify-user";
export const segmentAuth = PieceAuth.SecretText({
displayName: 'Analytics Key',
required: true,
description: 'Copy and paste your analytics write key here',
});
export const segment = createPiece({
displayName: "Segment",
auth: segmentAuth,
minimumSupportedRelease: '0.30.0',
logoUrl: "https://cdn.activepieces.com/pieces/segment.png",
authors: ['abuaboud'],
actions: [identifyUser],
triggers: [],
});

View File

@@ -0,0 +1,32 @@
import { segmentAuth } from '../../.';
import { Property, createAction } from '@activepieces/pieces-framework';
import { Analytics } from '@segment/analytics-node'
export const identifyUser = createAction({
name: 'identifyUser',
displayName: 'Identify User',
description: '',
props: {
userId: Property.ShortText({
displayName: 'User ID',
required: true,
}),
traits: Property.Object({
displayName: 'Traits',
description: 'The traits to associate with the user',
required: true,
}),
},
auth: segmentAuth,
async run(context) {
const analytics = new Analytics({ writeKey: context.auth.secret_text })
analytics.identify({
userId: context.propsValue.userId,
traits: context.propsValue.traits,
})
return {
success: true,
}
},
});