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

View File

@@ -0,0 +1,7 @@
# pieces-gotify
This library was generated with [Nx](https://nx.dev).
## Running lint
Run `nx lint pieces-gotify` to execute the lint via [ESLint](https://eslint.org/).

View File

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

View File

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

View File

@@ -0,0 +1,16 @@
{
"Self-hosted push notification service": "Selbstgehosteter Push-Benachrichtigungsdienst",
"Server URL": "Server-URL",
"App Token": "App-Token",
"Gotify Instance URL": "Gotify Instanz URL",
"Gotify App Token": "Gotify App Token",
"\n To obtain a token:\n\n 1. Log in to your Gotify instance.\n 2. Click on Apps\n 3. Select the Eye icon in the same row as your App to copy your token, or CREATE APPLICATION if you do not have one app yet.\n 4. Copy your access token & and paste them into the fields below.\n ": "\n Um ein Token zu erhalten:\n\n 1. Melden Sie sich bei Ihrer Gotify-Instanz an.\n 2. Klicken Sie auf Apps\n 3. Wähle das Augensymbol in der gleichen Zeile wie deine App, um dein Token zu kopieren, oder ERSTELLEN ANWENDUNG, wenn Sie noch keine App haben.\n 4. Kopieren Sie Ihren Zugangs-Token & und fügen Sie ihn in die Felder unten ein.\n ",
"Send Notification": "Benachrichtigung senden",
"Send a notification to gotify": "Benachrichtigung zum Verhandeln senden",
"Title": "Titel",
"Message": "Nachricht",
"Priority": "Priorität",
"The title of the notification": "Der Titel der Benachrichtigung",
"The message to send": "Die Nachricht zum Senden",
"The priority of the notification (0-10). 0 is lowest priority.": "Die Priorität der Benachrichtigung (0-10). 0 hat die niedrigste Priorität."
}

View File

@@ -0,0 +1,16 @@
{
"Self-hosted push notification service": "Servicio de notificaciones push autoalojadas",
"Server URL": "URL del servidor",
"App Token": "App Token",
"Gotify Instance URL": "URL de Gotify Instance",
"Gotify App Token": "Gotify App Token",
"\n To obtain a token:\n\n 1. Log in to your Gotify instance.\n 2. Click on Apps\n 3. Select the Eye icon in the same row as your App to copy your token, or CREATE APPLICATION if you do not have one app yet.\n 4. Copy your access token & and paste them into the fields below.\n ": "\n para obtener un token:\n\n 1. Inicie sesión en su instancia de Gotify.\n 2. Haga clic en Aplicaciones\n 3. Selecciona el icono de Eye en la misma fila que tu aplicación para copiar tu token, o CREATE APPLICATION si aún no tienes una aplicación.\n 4. Copia tu token de acceso y pégalos en los campos debajo.\n ",
"Send Notification": "Enviar notificación",
"Send a notification to gotify": "Enviar una notificación para gotify",
"Title": "Título",
"Message": "Mensaje",
"Priority": "Prioridad",
"The title of the notification": "El título de la notificación",
"The message to send": "El mensaje a enviar",
"The priority of the notification (0-10). 0 is lowest priority.": "La prioridad de la notificación (0-10)."
}

View File

@@ -0,0 +1,16 @@
{
"Self-hosted push notification service": "Service de notification push auto-hébergé",
"Server URL": "URL du serveur",
"App Token": "Jeton d'application",
"Gotify Instance URL": "URL d'instance Gotify",
"Gotify App Token": "Gotify App Token",
"\n To obtain a token:\n\n 1. Log in to your Gotify instance.\n 2. Click on Apps\n 3. Select the Eye icon in the same row as your App to copy your token, or CREATE APPLICATION if you do not have one app yet.\n 4. Copy your access token & and paste them into the fields below.\n ": "\n To obtain a token:\n\n 1. Log in to your Gotify instance.\n 2. Click on Apps\n 3. Select the Eye icon in the same row as your App to copy your token, or CREATE APPLICATION if you do not have one app yet.\n 4. Copy your access token & and paste them into the fields below.\n ",
"Send Notification": "Envoyer une notification",
"Send a notification to gotify": "Envoyer une notification à négocier",
"Title": "Titre de la page",
"Message": "Message",
"Priority": "Priorité",
"The title of the notification": "Le titre de la notification",
"The message to send": "Le message à envoyer",
"The priority of the notification (0-10). 0 is lowest priority.": "La priorité de la notification (0-10). 0 est la priorité la plus basse."
}

View File

@@ -0,0 +1,16 @@
{
"Self-hosted push notification service": "セルフホスティングされたプッシュ通知サービス",
"Server URL": "サーバー URL",
"App Token": "アプリトークン",
"Gotify Instance URL": "Goify Instance URL",
"Gotify App Token": "Goify App Token",
"\n To obtain a token:\n\n 1. Log in to your Gotify instance.\n 2. Click on Apps\n 3. Select the Eye icon in the same row as your App to copy your token, or CREATE APPLICATION if you do not have one app yet.\n 4. Copy your access token & and paste them into the fields below.\n ": "\n To obtain a token:\n\n 1. Log in to your Gotify instance.\n 2. Click on Apps\n 3. Select the Eye icon in the same row as your App to copy your token, or CREATE APPLICATION if you do not have one app yet.\n 4. Copy your access token & and paste them into the fields below.\n ",
"Send Notification": "通知を送信",
"Send a notification to gotify": "gotifyに通知を送信",
"Title": "タイトル",
"Message": "メッセージ",
"Priority": "優先度",
"The title of the notification": "通知のタイトル",
"The message to send": "送信するメッセージ",
"The priority of the notification (0-10). 0 is lowest priority.": "通知 (0-10) の優先度。0 は最も低い優先度です。"
}

View File

@@ -0,0 +1,16 @@
{
"Self-hosted push notification service": "Zelf gehoste push-meldingen",
"Server URL": "Server URL",
"App Token": "App Token",
"Gotify Instance URL": "Gotify instantie URL",
"Gotify App Token": "Gotify App Token",
"\n To obtain a token:\n\n 1. Log in to your Gotify instance.\n 2. Click on Apps\n 3. Select the Eye icon in the same row as your App to copy your token, or CREATE APPLICATION if you do not have one app yet.\n 4. Copy your access token & and paste them into the fields below.\n ": "\n om een token te krijgen:\n\n 1. Log in op uw Gotify instantie.\n 2. Klik op Apps\n 3. Selecteer het Oogpictogram op dezelfde rij als je app om het token te kopiëren. of MAAK APPLICATIE als je nog geen app hebt.\n 4. Kopieer uw toegangstoken en plak ze in de onderstaande velden.\n ",
"Send Notification": "Stuur notificatie",
"Send a notification to gotify": "Stuur een notificatie voor gotify",
"Title": "Aanspreektitel",
"Message": "bericht",
"Priority": "Prioriteit",
"The title of the notification": "De titel van de melding",
"The message to send": "Het te verzenden bericht",
"The priority of the notification (0-10). 0 is lowest priority.": "De prioriteit van de melding (0-10). 0 is de laagste prioriteit."
}

View File

@@ -0,0 +1,16 @@
{
"Self-hosted push notification service": "Serviço de notificação push auto-hospedado",
"Server URL": "URL do servidor",
"App Token": "Token do Aplicativo",
"Gotify Instance URL": "Instância URL do Gotify",
"Gotify App Token": "Token do Gotify App",
"\n To obtain a token:\n\n 1. Log in to your Gotify instance.\n 2. Click on Apps\n 3. Select the Eye icon in the same row as your App to copy your token, or CREATE APPLICATION if you do not have one app yet.\n 4. Copy your access token & and paste them into the fields below.\n ": "\n To obtain a token:\n\n 1. Log in to your Gotify instance.\n 2. Click on Apps\n 3. Select the Eye icon in the same row as your App to copy your token, or CREATE APPLICATION if you do not have one app yet.\n 4. Copy your access token & and paste them into the fields below.\n ",
"Send Notification": "Enviar Notificação",
"Send a notification to gotify": "Enviar uma notificação para gotify",
"Title": "Título",
"Message": "mensagem",
"Priority": "Prioridade",
"The title of the notification": "O título da notificação",
"The message to send": "A mensagem a enviar",
"The priority of the notification (0-10). 0 is lowest priority.": "A prioridade da notificação (0-10). 0 é a prioridade mais baixa."
}

View File

@@ -0,0 +1,17 @@
{
"Gotify": "Gotify",
"Self-hosted push notification service": "Служба уведомлений на самохостинге",
"Server URL": "URL сервера",
"App Token": "Маркер приложения",
"Gotify Instance URL": "URL экземпляра Gotify",
"Gotify App Token": "Gotify App Token",
"\n To obtain a token:\n\n 1. Log in to your Gotify instance.\n 2. Click on Apps\n 3. Select the Eye icon in the same row as your App to copy your token, or CREATE APPLICATION if you do not have one app yet.\n 4. Copy your access token & and paste them into the fields below.\n ": "\n To obtain a token:\n\n 1. Log in to your Gotify instance.\n 2. Click on Apps\n 3. Select the Eye icon in the same row as your App to copy your token, or CREATE APPLICATION if you do not have one app yet.\n 4. Copy your access token & and paste them into the fields below.\n ",
"Send Notification": "Отправить уведомление",
"Send a notification to gotify": "Отправить уведомление для согласования",
"Title": "Заголовок",
"Message": "Сообщение",
"Priority": "Приоритет",
"The title of the notification": "Заголовок уведомления",
"The message to send": "Сообщение для отправки",
"The priority of the notification (0-10). 0 is lowest priority.": "Приоритет уведомления (0-10). 0 является наименьшим приоритетом."
}

View File

@@ -0,0 +1,16 @@
{
"Self-hosted push notification service": "Self-hosted push notification service",
"Server URL": "Server URL",
"App Token": "App Token",
"Gotify Instance URL": "Gotify Instance URL",
"Gotify App Token": "Gotify App Token",
"\n To obtain a token:\n\n 1. Log in to your Gotify instance.\n 2. Click on Apps\n 3. Select the Eye icon in the same row as your App to copy your token, or CREATE APPLICATION if you do not have one app yet.\n 4. Copy your access token & and paste them into the fields below.\n ": "\n To obtain a token:\n\n 1. Log in to your Gotify instance.\n 2. Click on Apps\n 3. Select the Eye icon in the same row as your App to copy your token, or CREATE APPLICATION if you do not have one app yet.\n 4. Copy your access token & and paste them into the fields below.\n ",
"Send Notification": "Send Notification",
"Send a notification to gotify": "Send a notification to gotify",
"Title": "Title",
"Message": "Message",
"Priority": "Priority",
"The title of the notification": "The title of the notification",
"The message to send": "The message to send",
"The priority of the notification (0-10). 0 is lowest priority.": "The priority of the notification (0-10). 0 is lowest priority."
}

View File

@@ -0,0 +1,17 @@
{
"Gotify": "Gotify",
"Self-hosted push notification service": "Self-hosted push notification service",
"Server URL": "Server URL",
"App Token": "App Token",
"Gotify Instance URL": "Gotify Instance URL",
"Gotify App Token": "Gotify App Token",
"\n To obtain a token:\n\n 1. Log in to your Gotify instance.\n 2. Click on Apps\n 3. Select the Eye icon in the same row as your App to copy your token, or CREATE APPLICATION if you do not have one app yet.\n 4. Copy your access token & and paste them into the fields below.\n ": "\n To obtain a token:\n\n 1. Log in to your Gotify instance.\n 2. Click on Apps\n 3. Select the Eye icon in the same row as your App to copy your token, or CREATE APPLICATION if you do not have one app yet.\n 4. Copy your access token & and paste them into the fields below.\n ",
"Send Notification": "Send Notification",
"Send a notification to gotify": "Send a notification to gotify",
"Title": "Title",
"Message": "Message",
"Priority": "Priority",
"The title of the notification": "The title of the notification",
"The message to send": "The message to send",
"The priority of the notification (0-10). 0 is lowest priority.": "The priority of the notification (0-10). 0 is lowest priority."
}

View File

@@ -0,0 +1,16 @@
{
"Self-hosted push notification service": "Self-hosted push notification service",
"Server URL": "服务器 URL",
"App Token": "App Token",
"Gotify Instance URL": "Gotify Instance URL",
"Gotify App Token": "Gotify App Token",
"\n To obtain a token:\n\n 1. Log in to your Gotify instance.\n 2. Click on Apps\n 3. Select the Eye icon in the same row as your App to copy your token, or CREATE APPLICATION if you do not have one app yet.\n 4. Copy your access token & and paste them into the fields below.\n ": "\n To obtain a token:\n\n 1. Log in to your Gotify instance.\n 2. Click on Apps\n 3. Select the Eye icon in the same row as your App to copy your token, or CREATE APPLICATION if you do not have one app yet.\n 4. Copy your access token & and paste them into the fields below.\n ",
"Send Notification": "Send Notification",
"Send a notification to gotify": "Send a notification to gotify",
"Title": "标题",
"Message": "Message",
"Priority": "Priority",
"The title of the notification": "The title of the notification",
"The message to send": "The message to send",
"The priority of the notification (0-10). 0 is lowest priority.": "The priority of the notification (0-10). 0 is lowest priority."
}

View File

@@ -0,0 +1,44 @@
import {
PieceAuth,
Property,
createPiece,
} from '@activepieces/pieces-framework';
import { PieceCategory } from '@activepieces/shared';
import { sendNotification } from './lib/actions/send-notification';
export const gotifyAuth = PieceAuth.CustomAuth({
description: `
To obtain a token:
1. Log in to your Gotify instance.
2. Click on Apps
3. Select the Eye icon in the same row as your App to copy your token, or CREATE APPLICATION if you do not have one app yet.
4. Copy your access token & and paste them into the fields below.
`,
props: {
base_url: Property.ShortText({
displayName: 'Server URL',
description: 'Gotify Instance URL',
required: true,
}),
app_token: PieceAuth.SecretText({
displayName: 'App Token',
description: 'Gotify App Token',
required: true,
}),
},
required: true,
});
export const gotify = createPiece({
displayName: 'Gotify',
description: 'Self-hosted push notification service',
logoUrl: 'https://cdn.activepieces.com/pieces/gotify.png',
minimumSupportedRelease: '0.30.0',
categories: [PieceCategory.DEVELOPER_TOOLS],
authors: ["MyWay","kishanprmr","khaledmashaly","abuaboud"],
auth: gotifyAuth,
actions: [sendNotification],
triggers: [],
});

View File

@@ -0,0 +1,46 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { gotifyAuth } from '../../';
export const sendNotification = createAction({
auth: gotifyAuth,
name: 'send_notification',
displayName: 'Send Notification',
description: 'Send a notification to gotify',
props: {
title: Property.ShortText({
displayName: 'Title',
description: 'The title of the notification',
required: true,
}),
message: Property.LongText({
displayName: 'Message',
description: 'The message to send',
required: true,
}),
priority: Property.Number({
displayName: 'Priority',
description:
'The priority of the notification (0-10). 0 is lowest priority.',
required: false,
}),
},
async run({ auth, propsValue }) {
const baseUrl = auth.props.base_url.replace(/\/$/, '');
const appToken = auth.props.app_token;
const title = propsValue.title;
const message = propsValue.message;
const priority = propsValue.priority;
return await httpClient.sendRequest({
method: HttpMethod.POST,
url: `${baseUrl}/message?token=${appToken}`,
body: {
title,
message,
...(priority && { priority: +priority }),
},
});
},
});

View File

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

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"]
}