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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,28 @@
{
"Webhook": "Webhook",
"Receive HTTP requests and trigger flows using unique URLs.": "Receive HTTP requests and trigger flows using unique URLs.",
"Return Response": "Return Response",
"Respond and Wait for Next Webhook": "Respond and Wait for Next Webhook",
"return a response": "return a response",
"return a response and wait for the next webhook to resume the flow": "return a response and wait for the next webhook to resume the flow",
"Response Type": "Response Type",
"Response": "Response",
"Flow Execution": "Flow Execution",
"Markdown": "Markdown",
"**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ": "**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ",
"JSON": "JSON",
"Raw": "Raw",
"Redirect": "Redirect",
"Stop": "Stop",
"Respond and Continue": "Respond and Continue",
"Catch Webhook": "Catch Webhook",
"Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.": "Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.",
"Authentication": "Authentication",
"Authentication Fields": "Authentication Fields",
"**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n": "**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n",
"**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n": "**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n",
"\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n": "\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n",
"None": "None",
"Basic Auth": "Basic Auth",
"Header Auth": "Header Auth"
}

View File

@@ -0,0 +1,28 @@
{
"Webhook": "Webhook",
"Receive HTTP requests and trigger flows using unique URLs.": "Receive HTTP requests and trigger flows using unique URLs.",
"Return Response": "Return Response",
"Respond and Wait for Next Webhook": "Respond and Wait for Next Webhook",
"return a response": "return a response",
"return a response and wait for the next webhook to resume the flow": "return a response and wait for the next webhook to resume the flow",
"Response Type": "Response Type",
"Response": "Response",
"Flow Execution": "Flow Execution",
"Markdown": "Markdown",
"**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ": "**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ",
"JSON": "JSON",
"Raw": "Raw",
"Redirect": "Redirect",
"Stop": "Stop",
"Respond and Continue": "Respond and Continue",
"Catch Webhook": "Catch Webhook",
"Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.": "Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.",
"Authentication": "Authentication",
"Authentication Fields": "Authentication Fields",
"**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n": "**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n",
"**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n": "**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n",
"\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n": "\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n",
"None": "None",
"Basic Auth": "Basic Auth",
"Header Auth": "Header Auth"
}

View File

@@ -0,0 +1,28 @@
{
"Webhook": "Webhook",
"Receive HTTP requests and trigger flows using unique URLs.": "Receive HTTP requests and trigger flows using unique URLs.",
"Return Response": "Return Response",
"Respond and Wait for Next Webhook": "Respond and Wait for Next Webhook",
"return a response": "return a response",
"return a response and wait for the next webhook to resume the flow": "return a response and wait for the next webhook to resume the flow",
"Response Type": "Response Type",
"Response": "Response",
"Flow Execution": "Flow Execution",
"Markdown": "Markdown",
"**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ": "**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ",
"JSON": "JSON",
"Raw": "Raw",
"Redirect": "Redirect",
"Stop": "Stop",
"Respond and Continue": "Respond and Continue",
"Catch Webhook": "Catch Webhook",
"Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.": "Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.",
"Authentication": "Authentication",
"Authentication Fields": "Authentication Fields",
"**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n": "**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n",
"**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n": "**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n",
"\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n": "\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n",
"None": "None",
"Basic Auth": "Basic Auth",
"Header Auth": "Header Auth"
}

View File

@@ -0,0 +1,27 @@
{
"Receive HTTP requests and trigger flows using unique URLs.": "Erhalten Sie HTTP-Anfragen und lösen Sie Ströme mittels eindeutiger URLs.",
"Return Response": "Rückgabeantwort",
"Respond and Wait for Next Webhook": "Antworte und warte auf nächsten Webhook",
"return a response": "eine Antwort zurückgeben",
"return a response and wait for the next webhook to resume the flow": "eine Antwort zurückgeben und warten, bis der nächste Webhook den Fluss fortsetzt",
"Response Type": "Antworttyp",
"Response": "Antwort",
"Flow Execution": "Flussausführung",
"Markdown": "Markdown",
"**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ": "**Antworte und warte auf den nächsten Webhook**<br> \n Überprüfe den Antwort-Header (x-activepieces-resume-webhook-url) auf die nächste Webhook-URL und rufe ihn auf, um den Fluss fortzusetzen. <br>\n ",
"JSON": "JSON",
"Raw": "Rohe",
"Redirect": "Umleitung",
"Stop": "Stoppen",
"Respond and Continue": "Antworten und fortsetzen",
"Catch Webhook": "Webhook fangen",
"Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.": "Erhalten Sie eingehende HTTP/Webhooks mit beliebigen HTTP-Methoden wie GET, POST, PUT, DELETE, etc.",
"Authentication": "Authentifizierung",
"Authentication Fields": "Authentifizierungsfelder",
"**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n": "**Live URL:**\n```text\n{{webhookUrl}}\n```\ngeneriere Beispieldaten und löst den veröffentlichten Fluss aus.\n\n",
"**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n": "**Synchronische Anfragen:**\n\nWenn du eine Antwort von diesem Webhook erwartest, füge `/sync` zum Ende der URL hinzu. \nWenn es länger als 30 Sekunden dauert, wird eine 408 Request Timeout Antwort zurückgegeben.\n\nUm Daten zurückzugeben, fügen Sie mit der Rückgabewert Aktion einen Webhook-Schritt in Ihren Fluss ein.\n",
"\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n": "\n**Test-URL:**\n\nWenn Sie Sample-Daten erzeugen wollen, ohne den Fluss auszulösen, fügen Sie `/test` an Ihre Webhook-URL an.\n\n",
"None": "Keine",
"Basic Auth": "Einfacher Auth",
"Header Auth": "Kopfzeile Auth"
}

View File

@@ -0,0 +1,27 @@
{
"Receive HTTP requests and trigger flows using unique URLs.": "Recibir peticiones HTTP y disparar flujos usando URLs únicas.",
"Return Response": "Respuesta de retorno",
"Respond and Wait for Next Webhook": "Respuesta y espera para el próximo webhook",
"return a response": "devolver una respuesta",
"return a response and wait for the next webhook to resume the flow": "devolver una respuesta y esperar a que el próximo webhook reanude el flujo",
"Response Type": "Tipo de respuesta",
"Response": "Respuesta",
"Flow Execution": "Ejecutar Flow",
"Markdown": "Markdown",
"**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ": "**Responde y espere a Next Webhook**<br> \n Verifique la cabecera de respuesta (x-activepieces-resume-webhook-url) para la siguiente URL del webhook y llámelo para reanudar el flujo. <br>\n ",
"JSON": "JSON",
"Raw": "Rápido",
"Redirect": "Redirigir",
"Stop": "Parar",
"Respond and Continue": "Respuesta y continuar",
"Catch Webhook": "Capturar Webhook",
"Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.": "Recibir HTTP/webhooks entrantes usando cualquier método HTTP como GET, POST, PUT, DELETE, etc.",
"Authentication": "Autenticación",
"Authentication Fields": "Campos de autenticación",
"**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n": "**URL vivo:**\n```text\n{{webhookUrl}}\n```\ngenerar datos de ejemplo y desencadenadores de flujo publicado.\n\n",
"**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n": "**Solicitudes síncronas:**\n\nSi esperas una respuesta de este webhook, agrega `/sync` al final de la URL. \nSi tarda más de 30 segundos, devolverá una respuesta 408 Tiempo de espera agotado (Request Timeout).\n\nPara devolver datos, agrega un paso de webhook a tu flujo con la acción **Devolver respuesta** (Return Response).\n",
"\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n": "\n**URL de prueba:**\n\nSi deseas generar datos de ejemplo sin activar el flujo, agrega `/test` al final de la URL de tu webhook.\n\n",
"None": "Ninguna",
"Basic Auth": "Auth Básica",
"Header Auth": "Auth de cabecera"
}

View File

@@ -0,0 +1,27 @@
{
"Receive HTTP requests and trigger flows using unique URLs.": "Recevoir des requêtes HTTP et déclencher des flux en utilisant des URL uniques.",
"Return Response": "Réponse de retour",
"Respond and Wait for Next Webhook": "Répondre et attendre le prochain Webhook",
"return a response": "renvoyer une réponse",
"return a response and wait for the next webhook to resume the flow": "renvoyer une réponse et attendre que le prochain webhook reprenne le flow",
"Response Type": "Type de réponse",
"Response": "Réponse",
"Flow Execution": "Exécution du Flow",
"Markdown": "Markdown",
"**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ": "**Répondre et attendre le prochain Webhook**<br> \n Vérifier le Header de réponse (x-activepieces-resume-webhook-url) pour le prochain webhook URL et appelez-le pour reprendre le Flow. <br>\n ",
"JSON": "JSON",
"Raw": "Brute",
"Redirect": "Rediriger",
"Stop": "Arrêter",
"Respond and Continue": "Répondre et continuer",
"Catch Webhook": "Réceptionner le Webhook",
"Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.": "Recevoir les HTTP/webhooks entrants en utilisant n'importe quelle méthode HTTP telle que GET, POST, PUT, DELETE, etc.",
"Authentication": "Authentification",
"Authentication Fields": "Champs d'authentification",
"**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n": "**URL en direct:**\n```text\n{{webhookUrl}}\n```\ngénérer des exemples de données et déclencher le Flow publié.\n\n",
"**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n": "**Requêtes synchrones :**\n\nSi vous attendez une réponse de ce webhook, ajoutez `/sync` à la fin de l'URL. \nSi cela prend plus de 30 secondes, cela renverra une réponse 408 Request Timeout.\n\nPour renvoyer des données, ajoutez une étape Webhook à votre Flow avec l'action Retour de réponse.\n",
"\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n": "\n**URL de Test:**\n\nsi vous souhaitez générer un échantillon de données sans déclencher le Flow, ajoutez `/test` à votre URL de webhook.\n\n",
"None": "Aucun",
"Basic Auth": "Authentification basique",
"Header Auth": "Authentification du Header"
}

View File

@@ -0,0 +1,28 @@
{
"Webhook": "Webhook",
"Receive HTTP requests and trigger flows using unique URLs.": "Receive HTTP requests and trigger flows using unique URLs.",
"Return Response": "Return Response",
"Respond and Wait for Next Webhook": "Respond and Wait for Next Webhook",
"return a response": "return a response",
"return a response and wait for the next webhook to resume the flow": "return a response and wait for the next webhook to resume the flow",
"Response Type": "Response Type",
"Response": "Response",
"Flow Execution": "Flow Execution",
"Markdown": "Markdown",
"**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ": "**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ",
"JSON": "JSON",
"Raw": "Raw",
"Redirect": "Redirect",
"Stop": "Stop",
"Respond and Continue": "Respond and Continue",
"Catch Webhook": "Catch Webhook",
"Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.": "Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.",
"Authentication": "Authentication",
"Authentication Fields": "Authentication Fields",
"**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n": "**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n",
"**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n": "**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n",
"\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n": "\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n",
"None": "None",
"Basic Auth": "Basic Auth",
"Header Auth": "Header Auth"
}

View File

@@ -0,0 +1,28 @@
{
"Webhook": "Webhook",
"Receive HTTP requests and trigger flows using unique URLs.": "Receive HTTP requests and trigger flows using unique URLs.",
"Return Response": "Return Response",
"Respond and Wait for Next Webhook": "Respond and Wait for Next Webhook",
"return a response": "return a response",
"return a response and wait for the next webhook to resume the flow": "return a response and wait for the next webhook to resume the flow",
"Response Type": "Response Type",
"Response": "Response",
"Flow Execution": "Flow Execution",
"Markdown": "Markdown",
"**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ": "**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ",
"JSON": "JSON",
"Raw": "Raw",
"Redirect": "Redirect",
"Stop": "Stop",
"Respond and Continue": "Respond and Continue",
"Catch Webhook": "Catch Webhook",
"Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.": "Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.",
"Authentication": "Authentication",
"Authentication Fields": "Authentication Fields",
"**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n": "**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n",
"**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n": "**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n",
"\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n": "\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n",
"None": "None",
"Basic Auth": "Basic Auth",
"Header Auth": "Header Auth"
}

View File

@@ -0,0 +1,28 @@
{
"Webhook": "Webhook",
"Receive HTTP requests and trigger flows using unique URLs.": "Receive HTTP requests and trigger flows using unique URLs.",
"Return Response": "Return Response",
"Respond and Wait for Next Webhook": "Respond and Wait for Next Webhook",
"return a response": "return a response",
"return a response and wait for the next webhook to resume the flow": "return a response and wait for the next webhook to resume the flow",
"Response Type": "Response Type",
"Response": "Response",
"Flow Execution": "Flow Execution",
"Markdown": "Markdown",
"**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ": "**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ",
"JSON": "JSON",
"Raw": "Raw",
"Redirect": "Redirect",
"Stop": "Stop",
"Respond and Continue": "Respond and Continue",
"Catch Webhook": "Catch Webhook",
"Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.": "Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.",
"Authentication": "Authentication",
"Authentication Fields": "Authentication Fields",
"**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n": "**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n",
"**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n": "**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n",
"\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n": "\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n",
"None": "None",
"Basic Auth": "Basic Auth",
"Header Auth": "Header Auth"
}

View File

@@ -0,0 +1,28 @@
{
"Webhook": "Webhook",
"Receive HTTP requests and trigger flows using unique URLs.": "Receive HTTP requests and trigger flows using unique URLs.",
"Return Response": "Return Response",
"Respond and Wait for Next Webhook": "Respond and Wait for Next Webhook",
"return a response": "return a response",
"return a response and wait for the next webhook to resume the flow": "return a response and wait for the next webhook to resume the flow",
"Response Type": "Response Type",
"Response": "Response",
"Flow Execution": "Flow Execution",
"Markdown": "Markdown",
"**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ": "**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ",
"JSON": "JSON",
"Raw": "Raw",
"Redirect": "Redirect",
"Stop": "Stop",
"Respond and Continue": "Respond and Continue",
"Catch Webhook": "Catch Webhook",
"Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.": "Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.",
"Authentication": "Authentication",
"Authentication Fields": "Authentication Fields",
"**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n": "**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n",
"**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n": "**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n",
"\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n": "\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n",
"None": "None",
"Basic Auth": "Basic Auth",
"Header Auth": "Header Auth"
}

View File

@@ -0,0 +1,28 @@
{
"Webhook": "Webhook",
"Receive HTTP requests and trigger flows using unique URLs.": "Receive HTTP requests and trigger flows using unique URLs.",
"Return Response": "Return Response",
"Respond and Wait for Next Webhook": "Respond and Wait for Next Webhook",
"return a response": "return a response",
"return a response and wait for the next webhook to resume the flow": "return a response and wait for the next webhook to resume the flow",
"Response Type": "Response Type",
"Response": "Response",
"Flow Execution": "Flow Execution",
"Markdown": "Markdown",
"**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ": "**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ",
"JSON": "JSON",
"Raw": "Raw",
"Redirect": "Redirect",
"Stop": "Stop",
"Respond and Continue": "Respond and Continue",
"Catch Webhook": "Catch Webhook",
"Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.": "Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.",
"Authentication": "Authentication",
"Authentication Fields": "Authentication Fields",
"**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n": "**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n",
"**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n": "**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n",
"\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n": "\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n",
"None": "None",
"Basic Auth": "Basic Auth",
"Header Auth": "Header Auth"
}

View File

@@ -0,0 +1,27 @@
{
"Receive HTTP requests and trigger flows using unique URLs.": "一意のURLを使用してHTTPリクエストとトリガーフローを受信します。",
"Return Response": "返品対応",
"Respond and Wait for Next Webhook": "応答して次のWebhookを待つ",
"return a response": "レスポンスを返す",
"return a response and wait for the next webhook to resume the flow": "レスポンスを返し、次の webhook がフローを再開するのを待ちます。",
"Response Type": "応答タイプ",
"Response": "回答",
"Flow Execution": "フロー実行",
"Markdown": "Markdown",
"**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ": "**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ",
"JSON": "JSON",
"Raw": "Raw",
"Redirect": "リダイレクト",
"Stop": "停止",
"Respond and Continue": "応答して続ける",
"Catch Webhook": "Webhookをキャッチする",
"Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.": "GET、POST、PUT、DELETEなどの任意のHTTPメソッドを使用して受信HTTP/Webhookを受信します。",
"Authentication": "認証",
"Authentication Fields": "認証フィールド",
"**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n": "**ライブURL:**\n```text\n{{webhookUrl}}\n```\n生成サンプル データと公開されたフローをトリガーします。\n\n",
"**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n": "**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n",
"\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n": "\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n",
"None": "なし",
"Basic Auth": "ベーシック認証",
"Header Auth": "ヘッダー認証"
}

View File

@@ -0,0 +1,28 @@
{
"Webhook": "Webhook",
"Receive HTTP requests and trigger flows using unique URLs.": "Receive HTTP requests and trigger flows using unique URLs.",
"Return Response": "Return Response",
"Respond and Wait for Next Webhook": "Respond and Wait for Next Webhook",
"return a response": "return a response",
"return a response and wait for the next webhook to resume the flow": "return a response and wait for the next webhook to resume the flow",
"Response Type": "Response Type",
"Response": "Response",
"Flow Execution": "Flow Execution",
"Markdown": "Markdown",
"**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ": "**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ",
"JSON": "JSON",
"Raw": "Raw",
"Redirect": "Redirect",
"Stop": "Stop",
"Respond and Continue": "Respond and Continue",
"Catch Webhook": "Catch Webhook",
"Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.": "Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.",
"Authentication": "Authentication",
"Authentication Fields": "Authentication Fields",
"**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n": "**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n",
"**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n": "**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n",
"\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n": "\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n",
"None": "None",
"Basic Auth": "Basic Auth",
"Header Auth": "Header Auth"
}

View File

@@ -0,0 +1,27 @@
{
"Receive HTTP requests and trigger flows using unique URLs.": "Ontvang HTTP verzoeken en trigger flows met behulp van unieke URL's.",
"Return Response": "Antwoord retour",
"Respond and Wait for Next Webhook": "Reageer en wacht op de volgende Webhook",
"return a response": "geef een antwoord terug",
"return a response and wait for the next webhook to resume the flow": "retourneert een antwoord en wacht tot de volgende webhook de stroom hervat",
"Response Type": "Type reactie",
"Response": "Antwoord",
"Flow Execution": "Flow Execution",
"Markdown": "Markdown",
"**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ": "**Reageer en wacht op de volgende Webhook**<br> \n Controleer de response header (x-activepieces-resume-webhook-url) voor de volgende webhook URL en bel het om de flow te hervatten. <br>\n ",
"JSON": "JSON",
"Raw": "Onbewerkte",
"Redirect": "Doorverwijzen",
"Stop": "Stoppen",
"Respond and Continue": "Reageren en doorgaan",
"Catch Webhook": "Vang Webhook",
"Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.": "Ontvang inkomende HTTP/webhooks met behulp van eender welke HTTP-methode zoals GET, POST, PUT, DELETE, etc.",
"Authentication": "Authenticatie",
"Authentication Fields": "Authenticatie velden",
"**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n": "**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenereer sample data & triggers gepubliceerde flow.\n\n",
"**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n": "**Synchrone verzoeken:**\n\nAls je een reactie verwacht van deze webhook, voeg `/sync` toe aan het einde van de URL. \nAls het langer dan 30 seconden duurt, zal het een time-out van 408 verzoek teruggeven.\n\nOm gegevens terug te geven, voeg een Webhook stap toe aan uw stroom met de Return Response actie.\n",
"\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n": "\n**Test URL:**\n\nals je voorbeelddata wilt genereren zonder de flow te activeren, voeg `/test` toe aan je webhook URL.\n\n",
"None": "geen",
"Basic Auth": "Basis authenticatie",
"Header Auth": "Header Auth"
}

View File

@@ -0,0 +1,28 @@
{
"Webhook": "Webhook",
"Receive HTTP requests and trigger flows using unique URLs.": "Receive HTTP requests and trigger flows using unique URLs.",
"Return Response": "Return Response",
"Respond and Wait for Next Webhook": "Respond and Wait for Next Webhook",
"return a response": "return a response",
"return a response and wait for the next webhook to resume the flow": "return a response and wait for the next webhook to resume the flow",
"Response Type": "Response Type",
"Response": "Response",
"Flow Execution": "Flow Execution",
"Markdown": "Markdown",
"**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ": "**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ",
"JSON": "JSON",
"Raw": "Raw",
"Redirect": "Redirect",
"Stop": "Stop",
"Respond and Continue": "Respond and Continue",
"Catch Webhook": "Catch Webhook",
"Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.": "Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.",
"Authentication": "Authentication",
"Authentication Fields": "Authentication Fields",
"**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n": "**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n",
"**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n": "**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n",
"\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n": "\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n",
"None": "None",
"Basic Auth": "Basic Auth",
"Header Auth": "Header Auth"
}

View File

@@ -0,0 +1,27 @@
{
"Receive HTTP requests and trigger flows using unique URLs.": "Receber solicitações HTTP e fluxos de gatilho usando URLs exclusivas.",
"Return Response": "Retornar Resposta",
"Respond and Wait for Next Webhook": "Responda e aguarde o próximo Webhook",
"return a response": "retornar uma resposta",
"return a response and wait for the next webhook to resume the flow": "retorne uma resposta e espere o próximo webhook retomar o fluxo",
"Response Type": "Tipo de resposta",
"Response": "Resposta",
"Flow Execution": "Execução de fluxo",
"Markdown": "Markdown",
"**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ": "**Responda e Aguarde o Próximo Webhook**<br> \n Verifique o cabeçalho de resposta (x-activepieces-resume-webhook-url) para o próximo URL do webhook e chame-o de retomar o fluxo. <br>\n ",
"JSON": "JSON",
"Raw": "RAW",
"Redirect": "Redirecionamento",
"Stop": "Interromper",
"Respond and Continue": "Responder e Continuar",
"Catch Webhook": "Capturar Webhook",
"Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.": "Receber HTTP/webhooks de entrada usando qualquer método HTTP como GET, POST, PUT, DELETE, etc.",
"Authentication": "Autenticação",
"Authentication Fields": "Campos de autenticação",
"**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n": "**URL ao vivo:**\n```text\n{{webhookUrl}}\n```\ngera dados de amostra e aciona fluxo publicado.\n\n",
"**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n": "**Requisições Síncronas.**\n\nSe você espera uma resposta deste webhook, adicione '/sync' ao final do URL.\nSe demorar mais que 30 segundos, ele vai retornar o erro 408 Request Timeout.\nPara retornar dados, adicione um passo de webhook ao seu fluxo com a ação de Retornar Resposta.\n",
"\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n": "\n**URL de Teste: **\n\nSe você quer gerar dados demonstrativos sem acionar o fluxo, adicione '/test' ao final do URL do webhook\n\n",
"None": "Nenhuma",
"Basic Auth": "Autenticação básica",
"Header Auth": "Autenticação de Cabeçalho"
}

View File

@@ -0,0 +1,28 @@
{
"Webhook": "Вебхук",
"Receive HTTP requests and trigger flows using unique URLs.": "Получать HTTP-запросы и триггеры потоков, используя уникальные URL.",
"Return Response": "Ответ на возврат",
"Respond and Wait for Next Webhook": "Ответить и подождать следующего вебхука",
"return a response": "вернуть ответ",
"return a response and wait for the next webhook to resume the flow": "возвращать ответ и ждать следующего webhook, чтобы возобновить поток",
"Response Type": "Тип ответа",
"Response": "Замечание",
"Flow Execution": "Исполнение потока",
"Markdown": "Markdown",
"**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ": "**Ответьте и подождите следующего Webhook**<br> \n Проверьте заголовок ответа (x-activepieces-resume-webhook-url) для следующего URL-адреса webhook и вызовите его, чтобы возобновить поток. <br>\n ",
"JSON": "JSON",
"Raw": "Сырье",
"Redirect": "Перенаправление",
"Stop": "Остановить",
"Respond and Continue": "Ответить и продолжить",
"Catch Webhook": "Поймать вебхук",
"Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.": "Получать входящие HTTP/webhooks, используя любой метод HTTP, такой как GET, POST, PUT, DELETE, и т.д.",
"Authentication": "Проверка подлинности",
"Authentication Fields": "Поля аутентификации",
"**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n": "**Live URL:**\n```text\n{{webhookUrl}}\n```\nгенерирует примеры данных и триггеров опубликованного потока.\n\n",
"**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n": "**Синхронные запросы:**\n\nЕсли вы ожидаете ответа от этого вебхука, добавьте `/sync` в конец URL. \nЕсли это займет более 30 секунд, он возвращает ответ на запрос 408 раз.\n\nЧтобы вернуть данные, добавьте шаг Webhook к вашему потоку с действием возврата ответа.\n",
"\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n": "\n**Тестовый URL:**\n\nесли вы хотите сгенерировать образцы без срабатывания потока, добавьте `/test` в URL вашего вебхука.\n\n",
"None": "Нет",
"Basic Auth": "Базовая авторизация",
"Header Auth": "Авторизация заголовка"
}

View File

@@ -0,0 +1,28 @@
{
"Webhook": "Webhook",
"Receive HTTP requests and trigger flows using unique URLs.": "Receive HTTP requests and trigger flows using unique URLs.",
"Return Response": "Return Response",
"Respond and Wait for Next Webhook": "Respond and Wait for Next Webhook",
"return a response": "return a response",
"return a response and wait for the next webhook to resume the flow": "return a response and wait for the next webhook to resume the flow",
"Response Type": "Response Type",
"Response": "Response",
"Flow Execution": "Flow Execution",
"Markdown": "Markdown",
"**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ": "**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ",
"JSON": "JSON",
"Raw": "Raw",
"Redirect": "Redirect",
"Stop": "Stop",
"Respond and Continue": "Respond and Continue",
"Catch Webhook": "Catch Webhook",
"Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.": "Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.",
"Authentication": "Authentication",
"Authentication Fields": "Authentication Fields",
"**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n": "**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n",
"**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n": "**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n",
"\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n": "\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n",
"None": "None",
"Basic Auth": "Basic Auth",
"Header Auth": "Header Auth"
}

View File

@@ -0,0 +1,27 @@
{
"Receive HTTP requests and trigger flows using unique URLs.": "Receive HTTP requests and trigger flows using unique URLs.",
"Return Response": "Return Response",
"Respond and Wait for Next Webhook": "Respond and Wait for Next Webhook",
"return a response": "return a response",
"return a response and wait for the next webhook to resume the flow": "return a response and wait for the next webhook to resume the flow",
"Response Type": "Response Type",
"Response": "Response",
"Flow Execution": "Flow Execution",
"Markdown": "Markdown",
"**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ": "**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ",
"JSON": "JSON",
"Raw": "Raw",
"Redirect": "Redirect",
"Stop": "Stop",
"Respond and Continue": "Respond and Continue",
"Catch Webhook": "Catch Webhook",
"Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.": "Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.",
"Authentication": "Authentication",
"Authentication Fields": "Authentication Fields",
"**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n": "**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n",
"**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n": "**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n",
"\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n": "\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n",
"None": "None",
"Basic Auth": "Basic Auth",
"Header Auth": "Header Auth"
}

View File

@@ -0,0 +1,28 @@
{
"Webhook": "Webhook",
"Receive HTTP requests and trigger flows using unique URLs.": "Receive HTTP requests and trigger flows using unique URLs.",
"Return Response": "Return Response",
"Respond and Wait for Next Webhook": "Respond and Wait for Next Webhook",
"return a response": "return a response",
"return a response and wait for the next webhook to resume the flow": "return a response and wait for the next webhook to resume the flow",
"Response Type": "Response Type",
"Response": "Response",
"Flow Execution": "Flow Execution",
"Markdown": "Markdown",
"**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ": "**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ",
"JSON": "JSON",
"Raw": "Raw",
"Redirect": "Redirect",
"Stop": "Stop",
"Respond and Continue": "Respond and Continue",
"Catch Webhook": "Catch Webhook",
"Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.": "Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.",
"Authentication": "Authentication",
"Authentication Fields": "Authentication Fields",
"**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n": "**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n",
"**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n": "**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n",
"\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n": "\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n",
"None": "None",
"Basic Auth": "Basic Auth",
"Header Auth": "Header Auth"
}

View File

@@ -0,0 +1,28 @@
{
"Webhook": "Webhook",
"Receive HTTP requests and trigger flows using unique URLs.": "Receive HTTP requests and trigger flows using unique URLs.",
"Return Response": "Return Response",
"Respond and Wait for Next Webhook": "Respond and Wait for Next Webhook",
"return a response": "return a response",
"return a response and wait for the next webhook to resume the flow": "return a response and wait for the next webhook to resume the flow",
"Response Type": "Response Type",
"Response": "Response",
"Flow Execution": "Flow Execution",
"Markdown": "Markdown",
"**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ": "**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ",
"JSON": "JSON",
"Raw": "Raw",
"Redirect": "Redirect",
"Stop": "Stop",
"Respond and Continue": "Respond and Continue",
"Catch Webhook": "Catch Webhook",
"Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.": "Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.",
"Authentication": "Authentication",
"Authentication Fields": "Authentication Fields",
"**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n": "**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n",
"**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n": "**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n",
"\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n": "\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n",
"None": "None",
"Basic Auth": "Basic Auth",
"Header Auth": "Header Auth"
}

View File

@@ -0,0 +1,27 @@
{
"Receive HTTP requests and trigger flows using unique URLs.": "使用唯一的 URL 接收HTTP 请求和触发流。",
"Return Response": "退货回复",
"Respond and Wait for Next Webhook": "响应并等待下一个 Webhook",
"return a response": "返回响应",
"return a response and wait for the next webhook to resume the flow": "返回响应并等待下一个 web 钩子以恢复流",
"Response Type": "响应类型",
"Response": "答复",
"Flow Execution": "流执行",
"Markdown": "Markdown",
"**Respond and Wait for Next Webhook**<br> \n Check the response header (x-activepieces-resume-webhook-url) for the next webhook URL and call it to resume the flow. <br>\n ": "**响应并等待下一个 Webhook**<br> \n 请检查下一个 webhook URL 的响应头(x-activethes-resume-webhook-url) 并调用它来恢复流程。 <br>\n ",
"JSON": "JSON",
"Raw": "原始文件",
"Redirect": "重定向",
"Stop": "停止",
"Respond and Continue": "响应并继续",
"Catch Webhook": "捕获Webhook",
"Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.": "使用 GET、POST、PUT、DELETE等任何HTTP 方法接收传入的 HTTP/webhooks 。",
"Authentication": "认证",
"Authentication Fields": "身份验证字段",
"**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n": "**Live URL:**\n```text\n{{webhookUrl}}\n```\ngenerate sample data & triggers published flow.\n\n",
"**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n": "**Synchronous Requests:**\n\nIf you expect a response from this webhook, add `/sync` to the end of the URL. \nIf it takes more than 30 seconds, it will return a 408 Request Timeout response.\n\nTo return data, add an Webhook step to your flow with the Return Response action.\n",
"\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n": "\n**Test URL:**\n\nif you want to generate sample data without triggering the flow, append `/test` to your webhook URL.\n\n",
"None": "无",
"Basic Auth": "基本认证",
"Header Auth": "头部认证"
}

View File

@@ -0,0 +1,17 @@
import { createPiece, PieceAuth } from '@activepieces/pieces-framework';
import { catchWebhook } from './lib/triggers/catch-hook';
import { PieceCategory } from '@activepieces/shared';
import { returnResponse } from './lib/actions/return-response';
import { returnResponseAndWaitForNextWebhook } from './lib/actions/return-response-and-wait-for-next-webhook';
export const webhook = createPiece({
displayName: 'Webhook',
description: 'Receive HTTP requests and trigger flows using unique URLs.',
auth: PieceAuth.None(),
categories: [PieceCategory.CORE],
minimumSupportedRelease: '0.52.0',
logoUrl: 'https://cdn.activepieces.com/pieces/webhook.svg',
authors: ['abuaboud', 'pfernandez98', 'kishanprmr','AbdulTheActivePiecer'],
actions: [returnResponse,returnResponseAndWaitForNextWebhook],
triggers: [catchWebhook],
});

View File

@@ -0,0 +1,165 @@
import {
DynamicPropsValue,
PieceAuth,
Property,
createAction,
} from '@activepieces/pieces-framework';
import { ExecutionType, PauseType, StopResponse } from '@activepieces/shared';
import { StatusCodes } from 'http-status-codes';
enum ResponseType {
JSON = 'json',
RAW = 'raw',
REDIRECT = 'redirect',
}
const RESUME_WEBHOOK_HEADER = 'x-activepieces-resume-webhook-url';
export const returnResponseAndWaitForNextWebhook = createAction({
name: 'return_response_and_wait_for_next_webhook',
displayName: 'Respond and Wait for Next Webhook',
description: 'return a response and wait for the next webhook to resume the flow',
props: {
markdown: Property.MarkDown({
value: `**Respond and Wait for Next Webhook**<br>
Check the response header (${RESUME_WEBHOOK_HEADER}) for the next webhook URL and call it to resume the flow. <br>
`,
}),
responseType: Property.StaticDropdown({
displayName: 'Response Type',
required: false,
defaultValue: 'json',
options: {
disabled: false,
options: [
{
label: 'JSON',
value: ResponseType.JSON,
},
{
label: 'Raw',
value: ResponseType.RAW,
},
{
label: 'Redirect',
value: ResponseType.REDIRECT,
},
],
},
}),
fields: Property.DynamicProperties({
auth: PieceAuth.None(),
displayName: 'Response',
refreshers: ['responseType'],
required: true,
props: async ({ responseType }) => {
if (!responseType) return {};
const bodyTypeInput = responseType as unknown as ResponseType;
const fields: DynamicPropsValue = {};
if (bodyTypeInput !== ResponseType.REDIRECT) {
fields['status'] = Property.Number({
displayName: 'Status',
required: false,
defaultValue: 200,
});
fields['headers'] = Property.Object({
displayName: 'Headers',
required: false,
});
}
switch (bodyTypeInput) {
case ResponseType.JSON:
fields['body'] = Property.Json({
displayName: 'JSON Body',
required: true,
});
break;
case ResponseType.RAW:
fields['body'] = Property.LongText({
displayName: 'Raw Body',
required: true,
});
break;
case ResponseType.REDIRECT:
fields['body'] = Property.LongText({
displayName: 'Redirect URL',
required: true,
});
break;
}
return fields;
},
}),
},
async run(context) {
const { fields, responseType } = context.propsValue;
const bodyInput = fields ['body'];
const headers = fields['headers'] ?? {};
headers[RESUME_WEBHOOK_HEADER] = context.generateResumeUrl({
queryParams: {
created: new Date().toISOString(),
runId: context.run.id,
},
sync:true
});
const status = fields['status'];
const response: StopResponse = {
status: status ?? StatusCodes.OK,
headers,
};
switch (responseType) {
case ResponseType.JSON:
response.body = praseToJson(bodyInput);
break;
case ResponseType.RAW:
response.body = bodyInput;
break;
case ResponseType.REDIRECT:
response.status = StatusCodes.MOVED_PERMANENTLY;
response.headers = { ...response.headers, Location: ensureProtocol(bodyInput) };
response.body = bodyInput;
break;
}
if(context.executionType === ExecutionType.BEGIN){
context.run.pause({
pauseMetadata: {
type: PauseType.WEBHOOK,
response
},
});
return {
nextWebhookUrl: headers[RESUME_WEBHOOK_HEADER],
};
}
else {
return {
body: context.resumePayload.body,
headers: context.resumePayload.headers,
queryParams: context.resumePayload.queryParams,
}
}
},
});
function praseToJson(body: unknown) {
if (typeof body === 'string') {
return JSON.parse(body);
}
return JSON.parse(JSON.stringify(body));
}
function ensureProtocol(url: string): string {
if (!url.startsWith('http://') && !url.startsWith('https://')) {
return `https://${url}`;
}
return url;
}

View File

@@ -0,0 +1,171 @@
import {
DynamicPropsValue,
PieceAuth,
Property,
createAction,
} from '@activepieces/pieces-framework';
import { StopResponse } from '@activepieces/shared';
import { StatusCodes } from 'http-status-codes';
enum ResponseType {
JSON = 'json',
RAW = 'raw',
REDIRECT = 'redirect',
}
enum FlowExecution {
STOP = 'stop',
RESPOND = 'respond',
}
export const returnResponse = createAction({
name: 'return_response',
displayName: 'Return Response',
description: 'return a response',
props: {
responseType: Property.StaticDropdown({
displayName: 'Response Type',
required: false,
defaultValue: 'json',
options: {
disabled: false,
options: [
{
label: 'JSON',
value: ResponseType.JSON,
},
{
label: 'Raw',
value: ResponseType.RAW,
},
{
label: 'Redirect',
value: ResponseType.REDIRECT,
},
],
},
}),
fields: Property.DynamicProperties({
auth: PieceAuth.None(),
displayName: 'Response',
refreshers: ['responseType'],
required: true,
props: async ({ responseType }) => {
if (!responseType) return {};
const bodyTypeInput = responseType as unknown as ResponseType;
const fields: DynamicPropsValue = {};
if (bodyTypeInput !== ResponseType.REDIRECT) {
fields['status'] = Property.Number({
displayName: 'Status',
required: false,
defaultValue: 200,
});
fields['headers'] = Property.Object({
displayName: 'Headers',
required: false,
});
}
switch (bodyTypeInput) {
case ResponseType.JSON:
fields['body'] = Property.Json({
displayName: 'JSON Body',
required: true,
});
break;
case ResponseType.RAW:
fields['body'] = Property.LongText({
displayName: 'Raw Body',
required: true,
});
break;
case ResponseType.REDIRECT:
fields['body'] = Property.LongText({
displayName: 'Redirect URL',
required: true,
});
break;
}
return fields;
},
}),
respond: Property.StaticDropdown({
displayName: 'Flow Execution',
required: false,
defaultValue: FlowExecution.STOP,
options: {
disabled: false,
options: [
{ label: 'Stop', value: FlowExecution.STOP },
{ label: 'Respond and Continue', value: FlowExecution.RESPOND },
],
},
}),
},
async run(context) {
const { fields, responseType, respond } = context.propsValue;
const bodyInput = fields ['body'];
const headers = fields['headers']?? {};
const status = fields['status'];
const response: StopResponse = {
status: status ?? StatusCodes.OK,
headers,
};
switch (responseType) {
case ResponseType.JSON:
response.body = praseToJson(bodyInput);
break;
case ResponseType.RAW:
response.body = bodyInput;
break;
case ResponseType.REDIRECT:
response.status = StatusCodes.MOVED_PERMANENTLY;
response.headers = { ...response.headers, Location: ensureProtocol(bodyInput) };
response.body = bodyInput;
break;
}
switch(respond){
case FlowExecution.STOP:
{
context.run.stop({
response,
});
break;
}
case FlowExecution.RESPOND:
{
context.run.respond({
response,
});
break;
}
case undefined:
break;
}
return response;
},
});
function praseToJson(body: unknown) {
if (typeof body === 'string') {
return JSON.parse(body);
}
return JSON.parse(JSON.stringify(body));
}
function ensureProtocol(url: string): string {
if (!url.startsWith('http://') && !url.startsWith('https://')) {
return `https://${url}`;
}
return url;
}

View File

@@ -0,0 +1,192 @@
import {
createTrigger,
DynamicPropsValue,
PieceAuth,
Property,
TriggerStrategy,
} from '@activepieces/pieces-framework';
import { assertNotNullOrUndefined, MarkdownVariant } from '@activepieces/shared';
const liveMarkdown = `**Live URL:**
\`\`\`text
{{webhookUrl}}
\`\`\`
generate sample data & triggers published flow.
`;
const testMarkdown = `
**Test URL:**
if you want to generate sample data without triggering the flow, append \`/test\` to your webhook URL.
`;
const syncMarkdown = `**Synchronous Requests:**
If you expect a response from this webhook, add \`/sync\` to the end of the URL.
If it takes more than 30 seconds, it will return a 408 Request Timeout response.
To return data, add an Webhook step to your flow with the Return Response action.
`;
enum AuthType {
NONE = 'none',
BASIC = 'basic',
HEADER = 'header',
}
export const catchWebhook = createTrigger({
name: 'catch_webhook',
displayName: 'Catch Webhook',
description:
'Receive incoming HTTP/webhooks using any HTTP method such as GET, POST, PUT, DELETE, etc.',
props: {
liveMarkdown: Property.MarkDown({
value: liveMarkdown,
variant: MarkdownVariant.BORDERLESS,
}),
syncMarkdown: Property.MarkDown({
value: syncMarkdown,
variant: MarkdownVariant.INFO,
}),
testMarkdown: Property.MarkDown({
value: testMarkdown,
variant: MarkdownVariant.INFO,
}),
authType: Property.StaticDropdown<AuthType>({
displayName: 'Authentication',
required: true,
defaultValue: 'none',
options: {
disabled: false,
options: [
{ label: 'None', value: AuthType.NONE },
{ label: 'Basic Auth', value: AuthType.BASIC },
{ label: 'Header Auth', value: AuthType.HEADER },
],
},
}),
authFields: Property.DynamicProperties({
auth: PieceAuth.None(),
displayName: 'Authentication Fields',
required: false,
refreshers: ['authType'],
props: async ({ authType }) => {
if (!authType) {
return {};
}
const authTypeEnum = authType.toString() as AuthType;
let fields: DynamicPropsValue = {};
switch (authTypeEnum) {
case AuthType.NONE:
fields = {};
break;
case AuthType.BASIC:
fields = {
username: Property.ShortText({
displayName: 'Username',
description: 'The username to use for authentication.',
required: true,
}),
password: Property.ShortText({
displayName: 'Password',
description: 'The password to use for authentication.',
required: true,
}),
};
break;
case AuthType.HEADER:
fields = {
headerName: Property.ShortText({
displayName: 'Header Name',
description:
'The name of the header to use for authentication.',
required: true,
}),
headerValue: Property.ShortText({
displayName: 'Header Value',
description: 'The value to check against the header.',
required: true,
}),
};
break;
default:
throw new Error('Invalid authentication type');
}
return fields;
},
}),
},
sampleData: null,
type: TriggerStrategy.WEBHOOK,
async onEnable() {
// ignore
},
async onDisable() {
// ignore
},
async run(context) {
const authenticationType = context.propsValue.authType;
assertNotNullOrUndefined(
authenticationType,
'Authentication type is required'
);
const verified = verifyAuth(
authenticationType,
context.propsValue.authFields ?? {},
context.payload.headers
);
if (!verified) {
return [];
}
return [context.payload];
},
});
function verifyAuth(
authenticationType: AuthType,
authFields: DynamicPropsValue,
headers: Record<string, string>
): boolean {
switch (authenticationType) {
case AuthType.NONE:
return true;
case AuthType.BASIC:
return verifyBasicAuth(
headers['authorization'],
authFields['username'],
authFields['password']
);
case AuthType.HEADER:
return verifyHeaderAuth(
headers,
authFields['headerName'],
authFields['headerValue']
);
default:
throw new Error('Invalid authentication type');
}
}
function verifyHeaderAuth(
headers: Record<string, string>,
headerName: string,
headerSecret: string
) {
const headerValue = headers[headerName.toLocaleLowerCase()];
return headerValue === headerSecret;
}
function verifyBasicAuth(
headerValue: string,
username: string,
password: string
) {
if (!headerValue.toLocaleLowerCase().startsWith('basic ')) {
return false;
}
const auth = headerValue.substring(6);
const decodedAuth = Buffer.from(auth, 'base64').toString();
const [receivedUsername, receivedPassword] = decodedAuth.split(':');
return receivedUsername === username && receivedPassword === password;
}

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