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:
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"extends": ["../../../../.eslintrc.json"],
|
||||
"ignorePatterns": ["!**/*"],
|
||||
"overrides": [
|
||||
{
|
||||
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
|
||||
"rules": {}
|
||||
},
|
||||
{
|
||||
"files": ["*.ts", "*.tsx"],
|
||||
"rules": {}
|
||||
},
|
||||
{
|
||||
"files": ["*.js", "*.jsx"],
|
||||
"rules": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
# pieces-nifty
|
||||
|
||||
This library was generated with [Nx](https://nx.dev).
|
||||
|
||||
## Building
|
||||
|
||||
Run `nx build pieces-nifty` to build the library.
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"name": "@activepieces/piece-nifty",
|
||||
"version": "0.0.14"
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"name": "pieces-nifty",
|
||||
"$schema": "../../../../node_modules/nx/schemas/project-schema.json",
|
||||
"sourceRoot": "packages/pieces/community/nifty/src",
|
||||
"projectType": "library",
|
||||
"targets": {
|
||||
"build": {
|
||||
"executor": "@nx/js:tsc",
|
||||
"outputs": [
|
||||
"{options.outputPath}"
|
||||
],
|
||||
"options": {
|
||||
"outputPath": "dist/packages/pieces/community/nifty",
|
||||
"tsConfig": "packages/pieces/community/nifty/tsconfig.lib.json",
|
||||
"packageJson": "packages/pieces/community/nifty/package.json",
|
||||
"main": "packages/pieces/community/nifty/src/index.ts",
|
||||
"assets": [
|
||||
"packages/pieces/community/nifty/*.md",
|
||||
{
|
||||
"input": "packages/pieces/community/nifty/src/i18n",
|
||||
"output": "./src/i18n",
|
||||
"glob": "**/!(i18n.json)"
|
||||
}
|
||||
],
|
||||
"buildableProjectDepsInPackageJsonType": "dependencies",
|
||||
"updateBuildableProjectDepsInPackageJson": true
|
||||
},
|
||||
"dependsOn": [
|
||||
"^build",
|
||||
"prebuild"
|
||||
]
|
||||
},
|
||||
"publish": {
|
||||
"command": "node tools/scripts/publish.mjs piece-nitfy {args.ver} {args.tag}",
|
||||
"dependsOn": [
|
||||
"build"
|
||||
]
|
||||
},
|
||||
"lint": {
|
||||
"executor": "@nx/eslint:lint",
|
||||
"outputs": [
|
||||
"{options.outputFile}"
|
||||
]
|
||||
},
|
||||
"prebuild": {
|
||||
"executor": "nx:run-commands",
|
||||
"options": {
|
||||
"cwd": "packages/pieces/community/nifty",
|
||||
"command": "bun install --no-save --silent"
|
||||
},
|
||||
"dependsOn": [
|
||||
"^build"
|
||||
]
|
||||
}
|
||||
},
|
||||
"tags": []
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"Project management made simple": "Projektmanagement einfach gemacht",
|
||||
"\n# How to add a new connection\n1. Login to your nifty account at https://niftypm.com/\n2. From your account settings, click on App Center\n3. After that click on Integrate with API\n4. Then Create a new app\n5. Select the Name and Description you want\n6. copy the redirect url from the piece and fill the url field ( without https:// )\n7. check out Milestones , Subtasks , Projects , Statuses , Tasks and Portfolios\n8. copy the client id and client secret and paste them in the piece\n": "\n# Wie man eine neue Verbindung\neinrichtet.format@@1 1. Melden Sie sich bei Ihrem anstrengenden Konto unter https://niftypm.com/\n2. Klicken Sie in Ihren Kontoeinstellungen auf App Center\n3. Klicken Sie danach auf Integration mit API\n4. Dann erstellen Sie eine neue App\nan. Wählen Sie den Namen und die Beschreibung aus, die Sie\nwünschen. kopieren Sie die Umleitungs-URL aus dem Stück und füllen Sie das URL-Feld (ohne https:// )\n7. Lesen Sie die Meilensteine , Unteraufgaben , Projekte , Status , Aufgaben und Portfolios\n. kopiere die Client-ID und Client-Geheimnis und füge sie in das Stück\n ein",
|
||||
"Create Task": "Aufgabe erstellen",
|
||||
"Custom API Call": "Eigener API-Aufruf",
|
||||
"Create a task in nitfy": "Eine Aufgabe in nitfy erstellen",
|
||||
"Make a custom API call to a specific endpoint": "Einen benutzerdefinierten API-Aufruf an einen bestimmten Endpunkt machen",
|
||||
"Portfolio": "Portfolio",
|
||||
"Project": "Projekt",
|
||||
"Status": "Status",
|
||||
"Milestone": "Meilenstein",
|
||||
"Task Name": "Aufgabenname",
|
||||
"Task Description": "Aufgabenbeschreibung",
|
||||
"Method": "Methode",
|
||||
"Headers": "Kopfzeilen",
|
||||
"Query Parameters": "Abfrageparameter",
|
||||
"Body": "Körper",
|
||||
"Response is Binary ?": "Antwort ist binär?",
|
||||
"No Error on Failure": "Kein Fehler bei Fehler",
|
||||
"Timeout (in seconds)": "Timeout (in Sekunden)",
|
||||
"Authorization headers are injected automatically from your connection.": "Autorisierungs-Header werden automatisch von Ihrer Verbindung injiziert.",
|
||||
"Enable for files like PDFs, images, etc..": "Aktivieren für Dateien wie PDFs, Bilder, etc..",
|
||||
"GET": "ERHALTEN",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "LÖSCHEN",
|
||||
"HEAD": "HEAD"
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"Project management made simple": "Gestión de proyectos simplificada",
|
||||
"\n# How to add a new connection\n1. Login to your nifty account at https://niftypm.com/\n2. From your account settings, click on App Center\n3. After that click on Integrate with API\n4. Then Create a new app\n5. Select the Name and Description you want\n6. copy the redirect url from the piece and fill the url field ( without https:// )\n7. check out Milestones , Subtasks , Projects , Statuses , Tasks and Portfolios\n8. copy the client id and client secret and paste them in the piece\n": "\n# Cómo añadir una nueva conexión\n1. Inicie sesión en su cuenta en https://niftypm.com/\n2. Desde la configuración de tu cuenta, haz clic en App Center\n3. Después de eso, haga clic en Integrar con la API\n4. Luego cree una nueva aplicación\n5. Seleccione el nombre y la descripción que desea\n6. copiar la url de redirección de la pieza y llenar el campo url ( sin https:// )\n7. Consulta Hitos , Subtareas , Proyectos , Estados , Tareas y Carteras\n8. copiar el id de cliente y el secreto del cliente y pegarlos en la pieza\n",
|
||||
"Create Task": "Crear tarea",
|
||||
"Custom API Call": "Llamada API personalizada",
|
||||
"Create a task in nitfy": "Crear una tarea en nitfy",
|
||||
"Make a custom API call to a specific endpoint": "Hacer una llamada API personalizada a un extremo específico",
|
||||
"Portfolio": "Portafolio",
|
||||
"Project": "Projekt",
|
||||
"Status": "Estado",
|
||||
"Milestone": "Hito",
|
||||
"Task Name": "Nombre de tarea",
|
||||
"Task Description": "Descripción de la tarea",
|
||||
"Method": "Método",
|
||||
"Headers": "Encabezados",
|
||||
"Query Parameters": "Parámetros de consulta",
|
||||
"Body": "Cuerpo",
|
||||
"Response is Binary ?": "¿Respuesta es binaria?",
|
||||
"No Error on Failure": "No hay ningún error en fallo",
|
||||
"Timeout (in seconds)": "Tiempo de espera (en segundos)",
|
||||
"Authorization headers are injected automatically from your connection.": "Las cabeceras de autorización se inyectan automáticamente desde tu conexión.",
|
||||
"Enable for files like PDFs, images, etc..": "Activar para archivos como PDFs, imágenes, etc.",
|
||||
"GET": "RECOGER",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "BORRAR",
|
||||
"HEAD": "LIMPIO"
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"Project management made simple": "La gestion de projet est simplifiée",
|
||||
"\n# How to add a new connection\n1. Login to your nifty account at https://niftypm.com/\n2. From your account settings, click on App Center\n3. After that click on Integrate with API\n4. Then Create a new app\n5. Select the Name and Description you want\n6. copy the redirect url from the piece and fill the url field ( without https:// )\n7. check out Milestones , Subtasks , Projects , Statuses , Tasks and Portfolios\n8. copy the client id and client secret and paste them in the piece\n": "\n# Comment ajouter une nouvelle connexion\n1. Connectez-vous à votre compte nifty sur https://niftypm.com/\n2. Dans les paramètres de votre compte, cliquez sur App Center\n3. Après cela, cliquez sur Intégrer avec l'API\n4. Puis créez une nouvelle application\n5. Sélectionnez le nom et la description que vous voulez\n6. copier l'url de redirection de la pièce et remplir le champ url ( sans https:// )\n7. voir les jalons , Sous-tâches , Projets , Statuts , Tâches et Portefeuilles\n8. copiez l'identifiant client et le secret client et collez-les dans la pièce\n",
|
||||
"Create Task": "Créer une tâche",
|
||||
"Custom API Call": "Appel API personnalisé",
|
||||
"Create a task in nitfy": "Créer une tâche dans nitfy",
|
||||
"Make a custom API call to a specific endpoint": "Passez un appel API personnalisé à un point de terminaison spécifique",
|
||||
"Portfolio": "Portefeuille de projet",
|
||||
"Project": "Projet",
|
||||
"Status": "Statut",
|
||||
"Milestone": "Jalon",
|
||||
"Task Name": "Nom de la tâche",
|
||||
"Task Description": "Description de tâche",
|
||||
"Method": "Méthode",
|
||||
"Headers": "En-têtes",
|
||||
"Query Parameters": "Paramètres de requête",
|
||||
"Body": "Corps",
|
||||
"Response is Binary ?": "La réponse est Binaire ?",
|
||||
"No Error on Failure": "Aucune erreur en cas d'échec",
|
||||
"Timeout (in seconds)": "Délai d'attente (en secondes)",
|
||||
"Authorization headers are injected automatically from your connection.": "Les en-têtes d'autorisation sont injectés automatiquement à partir de votre connexion.",
|
||||
"Enable for files like PDFs, images, etc..": "Activer pour les fichiers comme les PDFs, les images, etc.",
|
||||
"GET": "OBTENIR",
|
||||
"POST": "POSTER",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "EFFACER",
|
||||
"DELETE": "SUPPRIMER",
|
||||
"HEAD": "TÊTE"
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"Project management made simple": "プロジェクト管理をシンプルにしました",
|
||||
"\n# How to add a new connection\n1. Login to your nifty account at https://niftypm.com/\n2. From your account settings, click on App Center\n3. After that click on Integrate with API\n4. Then Create a new app\n5. Select the Name and Description you want\n6. copy the redirect url from the piece and fill the url field ( without https:// )\n7. check out Milestones , Subtasks , Projects , Statuses , Tasks and Portfolios\n8. copy the client id and client secret and paste them in the piece\n": "\n# How to add a new connection\n1. Login to your nifty account at https://niftypm.com/\n2. From your account settings, click on App Center\n3. After that click on Integrate with API\n4. Then Create a new app\n5. Select the Name and Description you want\n6. copy the redirect url from the piece and fill the url field ( without https:// )\n7. check out Milestones , Subtasks , Projects , Statuses , Tasks and Portfolios\n8. copy the client id and client secret and paste them in the piece\n",
|
||||
"Create Task": "タスクを作成",
|
||||
"Custom API Call": "カスタムAPI通話",
|
||||
"Create a task in nitfy": "nitfy でタスクを作成",
|
||||
"Make a custom API call to a specific endpoint": "特定のエンドポイントへのカスタム API コールを実行します。",
|
||||
"Portfolio": "ポートフォリオ",
|
||||
"Project": "プロジェクト",
|
||||
"Status": "ステータス",
|
||||
"Milestone": "マイルストーン",
|
||||
"Task Name": "タスク名",
|
||||
"Task Description": "タスクの説明",
|
||||
"Method": "方法",
|
||||
"Headers": "ヘッダー",
|
||||
"Query Parameters": "クエリパラメータ",
|
||||
"Body": "本文",
|
||||
"Response is Binary ?": "応答はバイナリですか?",
|
||||
"No Error on Failure": "失敗時にエラーはありません",
|
||||
"Timeout (in seconds)": "タイムアウト(秒)",
|
||||
"Authorization headers are injected automatically from your connection.": "認証ヘッダは接続から自動的に注入されます。",
|
||||
"Enable for files like PDFs, images, etc..": "PDF、画像などのファイルを有効にします。",
|
||||
"GET": "取得",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "削除",
|
||||
"HEAD": "頭"
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"Project management made simple": "Projectbeheer is eenvoudig gemaakt",
|
||||
"\n# How to add a new connection\n1. Login to your nifty account at https://niftypm.com/\n2. From your account settings, click on App Center\n3. After that click on Integrate with API\n4. Then Create a new app\n5. Select the Name and Description you want\n6. copy the redirect url from the piece and fill the url field ( without https:// )\n7. check out Milestones , Subtasks , Projects , Statuses , Tasks and Portfolios\n8. copy the client id and client secret and paste them in the piece\n": "\n# Hoe een nieuwe connectie\n1. Inloggen op uw account https://niftypm.com/\n2. Klik vanuit uw account instellingen op App Center\n3. Na die klik op Integreer met API\n4. Maak dan een nieuwe app\n5. Selecteer de naam en beschrijving die je wilt\n6. kopieer de omleidings-url van het stuk en vul het url veld (zonder https:// )\n7. bekijk mijlpalen, Subtaken , Projecten, Statussen , Taken en Portfolios\nkopieer het client-id en clientgeheim en plak ze in het stukje\n",
|
||||
"Create Task": "Taak maken",
|
||||
"Custom API Call": "Custom API Call",
|
||||
"Create a task in nitfy": "Maak een taak in nitfy",
|
||||
"Make a custom API call to a specific endpoint": "Maak een aangepaste API call naar een specifiek eindpunt",
|
||||
"Portfolio": "Presentatie",
|
||||
"Project": "Project",
|
||||
"Status": "status",
|
||||
"Milestone": "Mijlpaal",
|
||||
"Task Name": "Taak naam",
|
||||
"Task Description": "Beschrijving taak",
|
||||
"Method": "Methode",
|
||||
"Headers": "Kopteksten",
|
||||
"Query Parameters": "Query parameters",
|
||||
"Body": "Lichaam",
|
||||
"Response is Binary ?": "Antwoord is binair?",
|
||||
"No Error on Failure": "Geen fout bij fout",
|
||||
"Timeout (in seconds)": "Time-out (in seconden)",
|
||||
"Authorization headers are injected automatically from your connection.": "Autorisatie headers worden automatisch geïnjecteerd vanuit uw verbinding.",
|
||||
"Enable for files like PDFs, images, etc..": "Inschakelen voor bestanden zoals PDF's, afbeeldingen etc..",
|
||||
"GET": "KRIJG",
|
||||
"POST": "POSTE",
|
||||
"PATCH": "BEKIJK",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "VERWIJDEREN",
|
||||
"HEAD": "HOOFD"
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"Project management made simple": "Gerenciamento de projetos simplificado",
|
||||
"\n# How to add a new connection\n1. Login to your nifty account at https://niftypm.com/\n2. From your account settings, click on App Center\n3. After that click on Integrate with API\n4. Then Create a new app\n5. Select the Name and Description you want\n6. copy the redirect url from the piece and fill the url field ( without https:// )\n7. check out Milestones , Subtasks , Projects , Statuses , Tasks and Portfolios\n8. copy the client id and client secret and paste them in the piece\n": "\n# Como adicionar uma nova conexão\n1. Faça login na sua excelente conta em https://niftypm.com/\n2. A partir das configurações da conta, clique no Centro de Aplicativos\n3. Depois disso, clique em Integrar com a API\n4. Em seguida, crie um novo aplicativo\n5. Selecione o Nome e a Descrição que você quer\n6. copie o URL de redirecionamento da peça e preencha o campo de url ( sem https:// )\n7. conferir marcos , subtarefas , projetos, estatutos, tarefas e portfólios\n8. Copie o segredo de ajuda do cliente e do cliente e cole-os na peça\n",
|
||||
"Create Task": "Criar tarefa",
|
||||
"Custom API Call": "Chamada de API personalizada",
|
||||
"Create a task in nitfy": "Criar uma tarefa em nitfy",
|
||||
"Make a custom API call to a specific endpoint": "Faça uma chamada de API personalizada para um ponto de extremidade específico",
|
||||
"Portfolio": "Portfólio",
|
||||
"Project": "Projecto",
|
||||
"Status": "Estado",
|
||||
"Milestone": "Marco",
|
||||
"Task Name": "Nome da tarefa",
|
||||
"Task Description": "Descrição da tarefa",
|
||||
"Method": "Método",
|
||||
"Headers": "Cabeçalhos",
|
||||
"Query Parameters": "Parâmetros da consulta",
|
||||
"Body": "Conteúdo",
|
||||
"Response is Binary ?": "A resposta é binária ?",
|
||||
"No Error on Failure": "Nenhum erro no Failure",
|
||||
"Timeout (in seconds)": "Tempo limite (em segundos)",
|
||||
"Authorization headers are injected automatically from your connection.": "Os cabeçalhos de autorização são inseridos automaticamente a partir da sua conexão.",
|
||||
"Enable for files like PDFs, images, etc..": "Habilitar para arquivos como PDFs, imagens, etc..",
|
||||
"GET": "OBTER",
|
||||
"POST": "POSTAR",
|
||||
"PATCH": "COMPRAR",
|
||||
"PUT": "COLOCAR",
|
||||
"DELETE": "EXCLUIR",
|
||||
"HEAD": "CABEÇA"
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"Nifty": "Nifty",
|
||||
"Project management made simple": "Управление проектом стало простым",
|
||||
"\n# How to add a new connection\n1. Login to your nifty account at https://niftypm.com/\n2. From your account settings, click on App Center\n3. After that click on Integrate with API\n4. Then Create a new app\n5. Select the Name and Description you want\n6. copy the redirect url from the piece and fill the url field ( without https:// )\n7. check out Milestones , Subtasks , Projects , Statuses , Tasks and Portfolios\n8. copy the client id and client secret and paste them in the piece\n": "\n# How to add a new connection\n1. Login to your nifty account at https://niftypm.com/\n2. From your account settings, click on App Center\n3. After that click on Integrate with API\n4. Then Create a new app\n5. Select the Name and Description you want\n6. copy the redirect url from the piece and fill the url field ( without https:// )\n7. check out Milestones , Subtasks , Projects , Statuses , Tasks and Portfolios\n8. copy the client id and client secret and paste them in the piece\n",
|
||||
"Create Task": "Создать задачу",
|
||||
"Custom API Call": "Пользовательский вызов API",
|
||||
"Create a task in nitfy": "Создать задачу в nitfy",
|
||||
"Make a custom API call to a specific endpoint": "Сделать пользовательский API вызов к определенной конечной точке",
|
||||
"Portfolio": "Портфолио",
|
||||
"Project": "Проект",
|
||||
"Status": "Status",
|
||||
"Milestone": "Этап",
|
||||
"Task Name": "Название задачи",
|
||||
"Task Description": "Описание задачи",
|
||||
"Method": "Метод",
|
||||
"Headers": "Заголовки",
|
||||
"Query Parameters": "Параметры запроса",
|
||||
"Body": "Тело",
|
||||
"No Error on Failure": "Нет ошибок при ошибке",
|
||||
"Timeout (in seconds)": "Таймаут (в секундах)",
|
||||
"Authorization headers are injected automatically from your connection.": "Заголовки авторизации включаются автоматически из вашего соединения.",
|
||||
"GET": "ПОЛУЧИТЬ",
|
||||
"POST": "ПОСТ",
|
||||
"PATCH": "ПАТЧ",
|
||||
"PUT": "ПОКУПИТЬ",
|
||||
"DELETE": "УДАЛИТЬ",
|
||||
"HEAD": "HEAD"
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"Project management made simple": "Project management made simple",
|
||||
"\n# How to add a new connection\n1. Login to your nifty account at https://niftypm.com/\n2. From your account settings, click on App Center\n3. After that click on Integrate with API\n4. Then Create a new app\n5. Select the Name and Description you want\n6. copy the redirect url from the piece and fill the url field ( without https:// )\n7. check out Milestones , Subtasks , Projects , Statuses , Tasks and Portfolios\n8. copy the client id and client secret and paste them in the piece\n": "\n# How to add a new connection\n1. Login to your nifty account at https://niftypm.com/\n2. From your account settings, click on App Center\n3. After that click on Integrate with API\n4. Then Create a new app\n5. Select the Name and Description you want\n6. copy the redirect url from the piece and fill the url field ( without https:// )\n7. check out Milestones , Subtasks , Projects , Statuses , Tasks and Portfolios\n8. copy the client id and client secret and paste them in the piece\n",
|
||||
"Create Task": "Create Task",
|
||||
"Custom API Call": "Custom API Call",
|
||||
"Create a task in nitfy": "Create a task in nitfy",
|
||||
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
|
||||
"Portfolio": "Portfolio",
|
||||
"Project": "Project",
|
||||
"Status": "Status",
|
||||
"Milestone": "Milestone",
|
||||
"Task Name": "Task Name",
|
||||
"Task Description": "Task Description",
|
||||
"Method": "Method",
|
||||
"Headers": "Headers",
|
||||
"Query Parameters": "Query Parameters",
|
||||
"Body": "Body",
|
||||
"Response is Binary ?": "Response is Binary ?",
|
||||
"No Error on Failure": "No Error on Failure",
|
||||
"Timeout (in seconds)": "Timeout (in seconds)",
|
||||
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
|
||||
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
|
||||
"GET": "GET",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "DELETE",
|
||||
"HEAD": "HEAD"
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"Nifty": "Nifty",
|
||||
"Project management made simple": "Project management made simple",
|
||||
"\n# How to add a new connection\n1. Login to your nifty account at https://niftypm.com/\n2. From your account settings, click on App Center\n3. After that click on Integrate with API\n4. Then Create a new app\n5. Select the Name and Description you want\n6. copy the redirect url from the piece and fill the url field ( without https:// )\n7. check out Milestones , Subtasks , Projects , Statuses , Tasks and Portfolios\n8. copy the client id and client secret and paste them in the piece\n": "\n# How to add a new connection\n1. Login to your nifty account at https://niftypm.com/\n2. From your account settings, click on App Center\n3. After that click on Integrate with API\n4. Then Create a new app\n5. Select the Name and Description you want\n6. copy the redirect url from the piece and fill the url field ( without https:// )\n7. check out Milestones , Subtasks , Projects , Statuses , Tasks and Portfolios\n8. copy the client id and client secret and paste them in the piece\n",
|
||||
"Create Task": "Create Task",
|
||||
"Custom API Call": "Custom API Call",
|
||||
"Create a task in nitfy": "Create a task in nitfy",
|
||||
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
|
||||
"Portfolio": "Portfolio",
|
||||
"Project": "Project",
|
||||
"Status": "Status",
|
||||
"Milestone": "Milestone",
|
||||
"Task Name": "Task Name",
|
||||
"Task Description": "Task Description",
|
||||
"Method": "Method",
|
||||
"Headers": "Headers",
|
||||
"Query Parameters": "Query Parameters",
|
||||
"Body": "Body",
|
||||
"No Error on Failure": "No Error on Failure",
|
||||
"Timeout (in seconds)": "Timeout (in seconds)",
|
||||
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
|
||||
"GET": "GET",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "DELETE",
|
||||
"HEAD": "HEAD"
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"Project management made simple": "Project management made simple",
|
||||
"\n# How to add a new connection\n1. Login to your nifty account at https://niftypm.com/\n2. From your account settings, click on App Center\n3. After that click on Integrate with API\n4. Then Create a new app\n5. Select the Name and Description you want\n6. copy the redirect url from the piece and fill the url field ( without https:// )\n7. check out Milestones , Subtasks , Projects , Statuses , Tasks and Portfolios\n8. copy the client id and client secret and paste them in the piece\n": "\n# How to add a new connection\n1. Login to your nifty account at https://niftypm.com/\n2. From your account settings, click on App Center\n3. After that click on Integrate with API\n4. Then Create a new app\n5. Select the Name and Description you want\n6. copy the redirect url from the piece and fill the url field ( without https:// )\n7. check out Milestones , Subtasks , Projects , Statuses , Tasks and Portfolios\n8. copy the client id and client secret and paste them in the piece\n",
|
||||
"Create Task": "Create Task",
|
||||
"Custom API Call": "自定义 API 呼叫",
|
||||
"Create a task in nitfy": "Create a task in nitfy",
|
||||
"Make a custom API call to a specific endpoint": "将一个自定义 API 调用到一个特定的终点",
|
||||
"Portfolio": "Portfolio",
|
||||
"Project": "项目",
|
||||
"Status": "状态",
|
||||
"Milestone": "Milestone",
|
||||
"Task Name": "Task Name",
|
||||
"Task Description": "Task Description",
|
||||
"Method": "方法",
|
||||
"Headers": "信头",
|
||||
"Query Parameters": "查询参数",
|
||||
"Body": "正文内容",
|
||||
"Response is Binary ?": "Response is Binary ?",
|
||||
"No Error on Failure": "失败时没有错误",
|
||||
"Timeout (in seconds)": "超时(秒)",
|
||||
"Authorization headers are injected automatically from your connection.": "授权头自动从您的连接中注入。",
|
||||
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
|
||||
"GET": "获取",
|
||||
"POST": "帖子",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "弹出",
|
||||
"DELETE": "删除",
|
||||
"HEAD": "黑色"
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
import { createCustomApiCallAction } from '@activepieces/pieces-common';
|
||||
import {
|
||||
createPiece,
|
||||
OAuth2PropertyValue,
|
||||
PieceAuth,
|
||||
} from '@activepieces/pieces-framework';
|
||||
import { PieceCategory } from '@activepieces/shared';
|
||||
import { createTask } from './lib/actions/create-task';
|
||||
|
||||
const mddescription = `
|
||||
# How to add a new connection
|
||||
1. Login to your nifty account at https://niftypm.com/
|
||||
2. From your account settings, click on App Center
|
||||
3. After that click on Integrate with API
|
||||
4. Then Create a new app
|
||||
5. Select the Name and Description you want
|
||||
6. copy the redirect url from the piece and fill the url field ( without https:// )
|
||||
7. check out Milestones , Subtasks , Projects , Statuses , Tasks and Portfolios
|
||||
8. copy the client id and client secret and paste them in the piece
|
||||
`;
|
||||
|
||||
export const niftyAuth = PieceAuth.OAuth2({
|
||||
authUrl: 'https://nifty.pm/authorize',
|
||||
tokenUrl: 'https://openapi.niftypm.com/oauth/token',
|
||||
required: true,
|
||||
description: mddescription,
|
||||
scope: ['task', 'project', 'subtask', 'milestone', 'subteam'],
|
||||
});
|
||||
|
||||
export const nifty = createPiece({
|
||||
displayName: 'Nifty',
|
||||
description: 'Project management made simple',
|
||||
|
||||
auth: niftyAuth,
|
||||
minimumSupportedRelease: '0.30.0',
|
||||
logoUrl: 'https://cdn.activepieces.com/pieces/nifty.png',
|
||||
categories: [PieceCategory.PRODUCTIVITY],
|
||||
authors: ["kishanprmr","MoShizzle","abuaboud"],
|
||||
actions: [
|
||||
createTask,
|
||||
createCustomApiCallAction({
|
||||
baseUrl: () => 'https://openapi.niftypm.com/api/v1.0',
|
||||
auth: niftyAuth,
|
||||
authMapping: async (auth) => ({
|
||||
Authorization: `Bearer ${(auth as OAuth2PropertyValue).access_token}`,
|
||||
}),
|
||||
}),
|
||||
],
|
||||
triggers: [],
|
||||
});
|
||||
@@ -0,0 +1,44 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
import { nitfyCommon, callNitfyApi } from '../common';
|
||||
import { niftyAuth } from '../../index';
|
||||
|
||||
export const createTask = createAction({
|
||||
name: 'create_task',
|
||||
auth: niftyAuth,
|
||||
displayName: 'Create Task',
|
||||
description: 'Create a task in nitfy',
|
||||
props: {
|
||||
portfolio: nitfyCommon.portfolio,
|
||||
project: nitfyCommon.project,
|
||||
status: nitfyCommon.status,
|
||||
milestone: nitfyCommon.milestone,
|
||||
task_name: Property.ShortText({
|
||||
displayName: 'Task Name',
|
||||
required: true,
|
||||
}),
|
||||
task_description: Property.LongText({
|
||||
displayName: 'Task Description',
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const authentication = context.auth;
|
||||
const accessToken = authentication.access_token;
|
||||
const status = context.propsValue.status;
|
||||
const task_name = context.propsValue.task_name;
|
||||
const task_description = context.propsValue.task_description;
|
||||
const milestone = context.propsValue.milestone;
|
||||
|
||||
const response = (
|
||||
await callNitfyApi(HttpMethod.POST, 'tasks', accessToken, {
|
||||
name: task_name,
|
||||
task_group_id: status,
|
||||
description: task_description,
|
||||
milestone_id: milestone,
|
||||
})
|
||||
).body;
|
||||
|
||||
return [response];
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,217 @@
|
||||
import { Property, OAuth2PropertyValue } from '@activepieces/pieces-framework';
|
||||
import {
|
||||
HttpMethod,
|
||||
HttpMessageBody,
|
||||
HttpResponse,
|
||||
httpClient,
|
||||
AuthenticationType,
|
||||
} from '@activepieces/pieces-common';
|
||||
import { niftyAuth } from '../..';
|
||||
|
||||
export const nitfyCommon = {
|
||||
portfolio: Property.Dropdown({
|
||||
auth:niftyAuth,
|
||||
displayName: 'Portfolio',
|
||||
required: true,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
const authentication = auth as OAuth2PropertyValue;
|
||||
if (!authentication) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'connect your account first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
const accessToken = authentication.access_token;
|
||||
|
||||
const response = (
|
||||
await callNitfyApi<{
|
||||
subteams: {
|
||||
id: string;
|
||||
name: string;
|
||||
}[];
|
||||
items: boolean;
|
||||
hasMore: boolean;
|
||||
}>(HttpMethod.GET, 'subteams', accessToken, undefined)
|
||||
).body;
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.subteams.map((team) => {
|
||||
return {
|
||||
label: team.name,
|
||||
value: team.id,
|
||||
};
|
||||
}),
|
||||
};
|
||||
},
|
||||
}),
|
||||
project: Property.Dropdown({
|
||||
auth:niftyAuth,
|
||||
displayName: 'Project',
|
||||
required: true,
|
||||
refreshers: ['portfolio'],
|
||||
options: async ({ auth, portfolio }) => {
|
||||
const authentication = auth as OAuth2PropertyValue;
|
||||
if (!authentication) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'connect your account first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
if (!portfolio) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Select portfolio first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
|
||||
const accessToken = authentication.access_token;
|
||||
const response = (
|
||||
await callNitfyApi<{
|
||||
projects: {
|
||||
id: string;
|
||||
name: string;
|
||||
subteam: string;
|
||||
}[];
|
||||
hasMore: boolean;
|
||||
}>(HttpMethod.GET, `projects`, accessToken, undefined)
|
||||
).body;
|
||||
|
||||
response.projects = response.projects.filter((project) => {
|
||||
return project.subteam == portfolio;
|
||||
});
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.projects.map((project) => {
|
||||
return {
|
||||
label: project.name,
|
||||
value: project.id,
|
||||
};
|
||||
}),
|
||||
};
|
||||
},
|
||||
}),
|
||||
status: Property.Dropdown({
|
||||
auth:niftyAuth,
|
||||
displayName: 'Status',
|
||||
required: true,
|
||||
refreshers: ['project'],
|
||||
options: async ({ auth, project }) => {
|
||||
const authentication = auth as OAuth2PropertyValue;
|
||||
if (!authentication) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'connect your account first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
if (!project) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Select portfolio first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
|
||||
const accessToken = authentication.access_token;
|
||||
|
||||
const response = (
|
||||
await callNitfyApi<{
|
||||
items: {
|
||||
id: string;
|
||||
name: string;
|
||||
}[];
|
||||
hasMore: boolean;
|
||||
}>(
|
||||
HttpMethod.GET,
|
||||
`taskgroups?project_id=${project}&archived=false`,
|
||||
accessToken,
|
||||
undefined
|
||||
)
|
||||
).body;
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.items.map((list) => {
|
||||
return {
|
||||
label: list.name,
|
||||
value: list.id,
|
||||
};
|
||||
}),
|
||||
};
|
||||
},
|
||||
}),
|
||||
milestone: Property.Dropdown({
|
||||
auth:niftyAuth,
|
||||
displayName: 'Milestone',
|
||||
required: true,
|
||||
refreshers: ['project'],
|
||||
options: async ({ auth, project }) => {
|
||||
const authentication = auth as OAuth2PropertyValue;
|
||||
if (!authentication) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'connect your account first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
if (!project) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Select project first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
|
||||
const accessToken = authentication.access_token;
|
||||
|
||||
const response = (
|
||||
await callNitfyApi<{
|
||||
items: {
|
||||
id: string;
|
||||
name: string;
|
||||
task_group: string;
|
||||
}[];
|
||||
hasMore: boolean;
|
||||
}>(
|
||||
HttpMethod.GET,
|
||||
`milestones?project_id=${project}&is_list=true`,
|
||||
accessToken,
|
||||
undefined
|
||||
)
|
||||
).body;
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.items.map((list) => {
|
||||
return {
|
||||
label: list.name,
|
||||
value: list.id,
|
||||
};
|
||||
}),
|
||||
};
|
||||
},
|
||||
}),
|
||||
};
|
||||
|
||||
export async function callNitfyApi<T extends HttpMessageBody>(
|
||||
method: HttpMethod,
|
||||
apiUrl: string,
|
||||
accessToken: string,
|
||||
body: any | undefined
|
||||
): Promise<HttpResponse<T>> {
|
||||
return await httpClient.sendRequest<T>({
|
||||
method: method,
|
||||
url: `https://openapi.niftypm.com/api/v1.0/${apiUrl}`,
|
||||
authentication: {
|
||||
type: AuthenticationType.BEARER_TOKEN,
|
||||
token: accessToken,
|
||||
},
|
||||
body: body,
|
||||
});
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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"]
|
||||
}
|
||||
Reference in New Issue
Block a user