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,9 @@
{
"Connections": "Connections",
"Read connections dynamically": "Read connections dynamically",
"Read Connection": "Read Connection",
"Fetch connection by name": "Fetch connection by name",
"Markdown": "Markdown",
"Connection External ID": "Connection External ID",
"\n**Advanced Piece**\n<br>\nUse this piece if you are unsure which connection to use beforehand, such as when the connection external ID is sent through a webhook message.\n\n**Notes:**\n- You can retrieve the external ID from the connection settings page by hovering over the connection name.\n- Use this action to retrieve connection values by their external IDs from this project.\n- After testing the step, you can use the dynamic value in the piece by clicking (X) and referring to this step.\n": "\n**Advanced Piece**\n<br>\nUse this piece if you are unsure which connection to use beforehand, such as when the connection external ID is sent through a webhook message.\n\n**Notes:**\n- You can retrieve the external ID from the connection settings page by hovering over the connection name.\n- Use this action to retrieve connection values by their external IDs from this project.\n- After testing the step, you can use the dynamic value in the piece by clicking (X) and referring to this step.\n"
}

View File

@@ -0,0 +1,8 @@
{
"Read connections dynamically": "Verbindungen dynamisch lesen",
"Read Connection": "Verbindung lesen",
"Fetch connection by name": "Verbindung nach Namen abrufen",
"Markdown": "Markdown",
"Connection External ID": "Externe ID",
"\n**Advanced Piece**\n<br>\nUse this piece if you are unsure which connection to use beforehand, such as when the connection external ID is sent through a webhook message.\n\n**Notes:**\n- You can retrieve the external ID from the connection settings page by hovering over the connection name.\n- Use this action to retrieve connection values by their external IDs from this project.\n- After testing the step, you can use the dynamic value in the piece by clicking (X) and referring to this step.\n": "\n**Erweiterte Teile**\n<br>\nBenutze dieses Stück, wenn du dir nicht sicher bist, welche Verbindung vorher benutzt werden soll z.B. wenn die externe ID der Verbindung über eine Webhook Nachricht gesendet wird.\n\n**Anmerkungen:**\n- Sie können die externe ID von der Seite Verbindungseinstellungen abrufen, indem Sie über den Verbindungsnamen fahren.\n- Verwenden Sie diese Aktion um Verbindungswerte durch ihre externen IDs aus diesem Projekt abzurufen.\n- Nach dem Test des Schritts können Sie den dynamischen Wert des Stücks verwenden, indem Sie auf (X) klicken und auf diesen Schritt verweisen.\n"
}

View File

@@ -0,0 +1,8 @@
{
"Read connections dynamically": "Leer conexiones dinámicamente",
"Read Connection": "Leer conexión",
"Fetch connection by name": "Obtener conexión por nombre",
"Markdown": "Markdown",
"Connection External ID": "ID externo de conexión",
"\n**Advanced Piece**\n<br>\nUse this piece if you are unsure which connection to use beforehand, such as when the connection external ID is sent through a webhook message.\n\n**Notes:**\n- You can retrieve the external ID from the connection settings page by hovering over the connection name.\n- Use this action to retrieve connection values by their external IDs from this project.\n- After testing the step, you can use the dynamic value in the piece by clicking (X) and referring to this step.\n": "\n**Advanced Piece**\n<br>\nUse this piece if you are unsure which connection to use beforehand, such as when the connection external ID is sent through a webhook message.\n\n**Notes:**\n- You can retrieve the external ID from the connection settings page by hovering over the connection name.\n- Use this action to retrieve connection values by their external IDs from this project.\n- After testing the step, you can use the dynamic value in the piece by clicking (X) and referring to this step.\n"
}

View File

@@ -0,0 +1,8 @@
{
"Read connections dynamically": "Lecture dynamique des connexions",
"Read Connection": "Lire la connexion",
"Fetch connection by name": "Récupérer la connexion par nom",
"Markdown": "Markdown",
"Connection External ID": "ID externe de la connexion",
"\n**Advanced Piece**\n<br>\nUse this piece if you are unsure which connection to use beforehand, such as when the connection external ID is sent through a webhook message.\n\n**Notes:**\n- You can retrieve the external ID from the connection settings page by hovering over the connection name.\n- Use this action to retrieve connection values by their external IDs from this project.\n- After testing the step, you can use the dynamic value in the piece by clicking (X) and referring to this step.\n": "\n**Advanced Piece**\n<br>\nUse this piece if you are unsure which connection to use beforehand, such as when the connection external ID is sent through a webhook message.\n\n**Notes:**\n- You can retrieve the external ID from the connection settings page by hovering over the connection name.\n- Use this action to retrieve connection values by their external IDs from this project.\n- After testing the step, you can use the dynamic value in the piece by clicking (X) and referring to this step.\n"
}

View File

@@ -0,0 +1,9 @@
{
"Connections": "Connections",
"Read connections dynamically": "Read connections dynamically",
"Read Connection": "Read Connection",
"Fetch connection by name": "Fetch connection by name",
"Markdown": "Markdown",
"Connection External ID": "Connection External ID",
"\n**Advanced Piece**\n<br>\nUse this piece if you are unsure which connection to use beforehand, such as when the connection external ID is sent through a webhook message.\n\n**Notes:**\n- You can retrieve the external ID from the connection settings page by hovering over the connection name.\n- Use this action to retrieve connection values by their external IDs from this project.\n- After testing the step, you can use the dynamic value in the piece by clicking (X) and referring to this step.\n": "\n**Advanced Piece**\n<br>\nUse this piece if you are unsure which connection to use beforehand, such as when the connection external ID is sent through a webhook message.\n\n**Notes:**\n- You can retrieve the external ID from the connection settings page by hovering over the connection name.\n- Use this action to retrieve connection values by their external IDs from this project.\n- After testing the step, you can use the dynamic value in the piece by clicking (X) and referring to this step.\n"
}

View File

@@ -0,0 +1,9 @@
{
"Connections": "Connections",
"Read connections dynamically": "Read connections dynamically",
"Read Connection": "Read Connection",
"Fetch connection by name": "Fetch connection by name",
"Markdown": "Markdown",
"Connection External ID": "Connection External ID",
"\n**Advanced Piece**\n<br>\nUse this piece if you are unsure which connection to use beforehand, such as when the connection external ID is sent through a webhook message.\n\n**Notes:**\n- You can retrieve the external ID from the connection settings page by hovering over the connection name.\n- Use this action to retrieve connection values by their external IDs from this project.\n- After testing the step, you can use the dynamic value in the piece by clicking (X) and referring to this step.\n": "\n**Advanced Piece**\n<br>\nUse this piece if you are unsure which connection to use beforehand, such as when the connection external ID is sent through a webhook message.\n\n**Notes:**\n- You can retrieve the external ID from the connection settings page by hovering over the connection name.\n- Use this action to retrieve connection values by their external IDs from this project.\n- After testing the step, you can use the dynamic value in the piece by clicking (X) and referring to this step.\n"
}

View File

@@ -0,0 +1,8 @@
{
"Read connections dynamically": "接続を動的に読み込みます",
"Read Connection": "接続を読む",
"Fetch connection by name": "名前で接続を取得",
"Markdown": "Markdown",
"Connection External ID": "接続外部ID",
"\n**Advanced Piece**\n<br>\nUse this piece if you are unsure which connection to use beforehand, such as when the connection external ID is sent through a webhook message.\n\n**Notes:**\n- You can retrieve the external ID from the connection settings page by hovering over the connection name.\n- Use this action to retrieve connection values by their external IDs from this project.\n- After testing the step, you can use the dynamic value in the piece by clicking (X) and referring to this step.\n": "\n**Advanced Piece**\n<br>\nUse this piece if you are unsure which connection to use beforehand, such as when the connection external ID is sent through a webhook message.\n\n**Notes:**\n- You can retrieve the external ID from the connection settings page by hovering over the connection name.\n- Use this action to retrieve connection values by their external IDs from this project.\n- After testing the step, you can use the dynamic value in the piece by clicking (X) and referring to this step.\n"
}

View File

@@ -0,0 +1,8 @@
{
"Read connections dynamically": "Verbindingen dynamisch lezen",
"Read Connection": "Contact lezen",
"Fetch connection by name": "Verbinding met naam ophalen",
"Markdown": "Markdown",
"Connection External ID": "Verbinding extern ID",
"\n**Advanced Piece**\n<br>\nUse this piece if you are unsure which connection to use beforehand, such as when the connection external ID is sent through a webhook message.\n\n**Notes:**\n- You can retrieve the external ID from the connection settings page by hovering over the connection name.\n- Use this action to retrieve connection values by their external IDs from this project.\n- After testing the step, you can use the dynamic value in the piece by clicking (X) and referring to this step.\n": "\n**Geavanceerde Piece**\n<br>\nGebruik dit stuk als u niet zeker weet welke verbinding u vooraf wilt gebruiken. zoals wanneer de verbinding externe ID via een webhook wordt verzonden.\n\n**Toelichting:**\n- U kunt het externe ID ophalen van de verbindingsinstellingen pagina door over de verbindingsnaam te zweven.\n- Gebruik deze actie om verbindingswaarden op te halen door hun externe ID's uit dit project.\n- Na het testen van de stap, kunt u de dynamische waarde van het stuk gebruiken door op (X) te klikken en te verwijzen naar deze stap.\n"
}

View File

@@ -0,0 +1,8 @@
{
"Read connections dynamically": "Ler conexões dinamicamente",
"Read Connection": "Ler a conexão",
"Fetch connection by name": "Buscar conexão por nome",
"Markdown": "Markdown",
"Connection External ID": "ID Externo da Conexão",
"\n**Advanced Piece**\n<br>\nUse this piece if you are unsure which connection to use beforehand, such as when the connection external ID is sent through a webhook message.\n\n**Notes:**\n- You can retrieve the external ID from the connection settings page by hovering over the connection name.\n- Use this action to retrieve connection values by their external IDs from this project.\n- After testing the step, you can use the dynamic value in the piece by clicking (X) and referring to this step.\n": "\n**Módulo avançado**\n<br>\nUtilize este módulo se você não tiver certeza de qual conexão usar, como por exemplo, o ID Externo da conexão é encaminhado por uma mensagem Webhook.\n\n**Notas**\n- Você pode recuperar se ID Externo pela página de Configurações de Conexão apenas passando o mouse sobre o nome da sua conexão.\n- Utilize essa ação para recuperar informações/valores da conexão através dos seus ID's externos deste projeto.\n- Após efetuar um teste da etapa, você pode utilizar o valor dinâmico na peça clicando no (X) e consultando a etapa atual."
}

View File

@@ -0,0 +1,9 @@
{
"Connections": "Connections",
"Read connections dynamically": "Динамически считывать соединения",
"Read Connection": "Чтение соединения",
"Fetch connection by name": "Получить соединение по имени",
"Markdown": "Markdown",
"Connection External ID": "Внешний ID подключения",
"\n**Advanced Piece**\n<br>\nUse this piece if you are unsure which connection to use beforehand, such as when the connection external ID is sent through a webhook message.\n\n**Notes:**\n- You can retrieve the external ID from the connection settings page by hovering over the connection name.\n- Use this action to retrieve connection values by their external IDs from this project.\n- After testing the step, you can use the dynamic value in the piece by clicking (X) and referring to this step.\n": "\n**Advanced Piece**\n<br>\nИспользуйте эту часть, если не уверены, какое соединение использовать заранее, например, когда внешний ID подключения отправляется через сообщение webhook.\n\n**Примечание:**\n- Вы можете получить внешний ID на странице настроек соединения, нажимая на имя соединения.\n- Используйте это действие для получения значений подключения их внешними идентификаторами из этого проекта.\n- После тестирования этого шага можно использовать динамическое значение частицы, нажав (X) и ссылаясь на этот шаг.\n"
}

View File

@@ -0,0 +1,8 @@
{
"Read connections dynamically": "Read connections dynamically",
"Read Connection": "Read Connection",
"Fetch connection by name": "Fetch connection by name",
"Markdown": "Markdown",
"Connection External ID": "Connection External ID",
"\n**Advanced Piece**\n<br>\nUse this piece if you are unsure which connection to use beforehand, such as when the connection external ID is sent through a webhook message.\n\n**Notes:**\n- You can retrieve the external ID from the connection settings page by hovering over the connection name.\n- Use this action to retrieve connection values by their external IDs from this project.\n- After testing the step, you can use the dynamic value in the piece by clicking (X) and referring to this step.\n": "\n**Advanced Piece**\n<br>\nUse this piece if you are unsure which connection to use beforehand, such as when the connection external ID is sent through a webhook message.\n\n**Notes:**\n- You can retrieve the external ID from the connection settings page by hovering over the connection name.\n- Use this action to retrieve connection values by their external IDs from this project.\n- After testing the step, you can use the dynamic value in the piece by clicking (X) and referring to this step.\n"
}

View File

@@ -0,0 +1,9 @@
{
"Connections": "Connections",
"Read connections dynamically": "Read connections dynamically",
"Read Connection": "Read Connection",
"Fetch connection by name": "Fetch connection by name",
"Markdown": "Markdown",
"Connection External ID": "Connection External ID",
"\n**Advanced Piece**\n<br>\nUse this piece if you are unsure which connection to use beforehand, such as when the connection external ID is sent through a webhook message.\n\n**Notes:**\n- You can retrieve the external ID from the connection settings page by hovering over the connection name.\n- Use this action to retrieve connection values by their external IDs from this project.\n- After testing the step, you can use the dynamic value in the piece by clicking (X) and referring to this step.\n": "\n**Advanced Piece**\n<br>\nUse this piece if you are unsure which connection to use beforehand, such as when the connection external ID is sent through a webhook message.\n\n**Notes:**\n- You can retrieve the external ID from the connection settings page by hovering over the connection name.\n- Use this action to retrieve connection values by their external IDs from this project.\n- After testing the step, you can use the dynamic value in the piece by clicking (X) and referring to this step.\n"
}

View File

@@ -0,0 +1,8 @@
{
"Read connections dynamically": "Read connections dynamically",
"Read Connection": "Read Connection",
"Fetch connection by name": "Fetch connection by name",
"Markdown": "Markdown",
"Connection External ID": "Connection External ID",
"\n**Advanced Piece**\n<br>\nUse this piece if you are unsure which connection to use beforehand, such as when the connection external ID is sent through a webhook message.\n\n**Notes:**\n- You can retrieve the external ID from the connection settings page by hovering over the connection name.\n- Use this action to retrieve connection values by their external IDs from this project.\n- After testing the step, you can use the dynamic value in the piece by clicking (X) and referring to this step.\n": "\n**Advanced Piece**\n<br>\nUse this piece if you are unsure which connection to use beforehand, such as when the connection external ID is sent through a webhook message.\n\n**Notes:**\n- You can retrieve the external ID from the connection settings page by hovering over the connection name.\n- Use this action to retrieve connection values by their external IDs from this project.\n- After testing the step, you can use the dynamic value in the piece by clicking (X) and referring to this step.\n"
}

View File

@@ -0,0 +1,15 @@
import { PieceAuth, createPiece } from '@activepieces/pieces-framework';
import { PieceCategory } from '@activepieces/shared';
import { readConnection } from './lib/actions/read-connection';
export const connections = createPiece({
displayName: 'Connections',
description: 'Read connections dynamically',
minimumSupportedRelease: '0.36.1',
logoUrl: 'https://cdn.activepieces.com/pieces/connections.png',
categories: [PieceCategory.CORE],
auth: PieceAuth.None(),
authors: ["kishanprmr","AbdulTheActivePiecer","khaledmashaly","abuaboud"],
actions: [readConnection],
triggers: [],
});

View File

@@ -0,0 +1,39 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { isNil } from '@activepieces/shared';
const markdown = `
**Advanced Piece**
<br>
Use this piece if you are unsure which connection to use beforehand, such as when the connection external ID is sent through a webhook message.
**Notes:**
- You can retrieve the external ID from the connection settings page by hovering over the connection name.
- Use this action to retrieve connection values by their external IDs from this project.
- After testing the step, you can use the dynamic value in the piece by clicking (X) and referring to this step.
`;
export const readConnection = createAction({
name: 'read_connection',
displayName: 'Read Connection',
description: 'Fetch connection by name',
props: {
info: Property.MarkDown({
value: markdown,
}),
connection_name: Property.ShortText({
displayName: 'Connection External ID',
description: undefined,
required: true,
}),
},
async run(ctx) {
const connection = await ctx.connections.get(ctx.propsValue.connection_name);
if (isNil(connection)) {
throw new Error(JSON.stringify({
message: 'Connection not found',
connectionName: ctx.propsValue.connection_name,
}));
}
return connection;
},
});