n8n-nodes-formbricks-new 1.0.3 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -4
- package/dist/credentials/FormbricksApi.credentials.js +17 -1
- package/dist/credentials/FormbricksApi.credentials.js.map +1 -1
- package/dist/nodes/Formbricks/Formbricks.node.d.ts +2 -1
- package/dist/nodes/Formbricks/Formbricks.node.js +9 -4
- package/dist/nodes/Formbricks/Formbricks.node.js.map +1 -1
- package/dist/nodes/Formbricks/GenericFunctions.d.ts +2 -1
- package/dist/nodes/Formbricks/GenericFunctions.js +47 -8
- package/dist/nodes/Formbricks/GenericFunctions.js.map +1 -1
- package/dist/package.json +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -41,7 +41,7 @@ For an unpublished local build, create a tarball from this repository and instal
|
|
|
41
41
|
npm run build
|
|
42
42
|
npm pack
|
|
43
43
|
cd ~/.n8n/nodes
|
|
44
|
-
npm install /path/to/n8n-nodes-formbricks-new-1.0.
|
|
44
|
+
npm install /path/to/n8n-nodes-formbricks-new-1.0.6.tgz
|
|
45
45
|
```
|
|
46
46
|
|
|
47
47
|
Restart n8n after installing the local tarball.
|
|
@@ -59,6 +59,32 @@ The credential test calls:
|
|
|
59
59
|
GET /api/v2/me
|
|
60
60
|
```
|
|
61
61
|
|
|
62
|
+
## Required Permissions
|
|
63
|
+
|
|
64
|
+
Formbricks API keys are organization-level keys with separate organization and workspace permissions.
|
|
65
|
+
|
|
66
|
+
This node uses these Formbricks API v2 endpoints:
|
|
67
|
+
|
|
68
|
+
- `GET /api/v2/me` to test credentials and load the workspace list
|
|
69
|
+
- `GET /api/v2/management/webhooks` to check for an existing webhook
|
|
70
|
+
- `POST /api/v2/management/webhooks` to register the n8n production webhook
|
|
71
|
+
- `DELETE /api/v2/management/webhooks/{id}` to remove the webhook when the workflow is deactivated
|
|
72
|
+
|
|
73
|
+
It also uses `GET /api/v1/management/surveys` to load survey choices in n8n because the current public API v2 documentation does not expose a survey list endpoint.
|
|
74
|
+
|
|
75
|
+
Recommended permissions for the full n8n trigger lifecycle:
|
|
76
|
+
|
|
77
|
+
- **Organization access**: Read
|
|
78
|
+
- **Selected workspace access**: Manage
|
|
79
|
+
|
|
80
|
+
Lower workspace permissions have limited behavior:
|
|
81
|
+
|
|
82
|
+
- **Read**: Credentials and workspace loading can work, but webhook creation fails.
|
|
83
|
+
- **Write**: Webhook creation can work, but webhook deletion during workflow deactivation can fail.
|
|
84
|
+
- **Manage**: Webhook creation, lookup, and deletion can all work.
|
|
85
|
+
|
|
86
|
+
The credential test only verifies `GET /api/v2/me`, so it can confirm the API key and Organization Read access. It does not prove that the selected workspace has Write or Manage access; that is checked later when n8n activates or deactivates the workflow.
|
|
87
|
+
|
|
62
88
|
## Workspace Selection
|
|
63
89
|
|
|
64
90
|
Workspace is selected in the **Formbricks** trigger node, not in the credential.
|
|
@@ -69,14 +95,14 @@ The node loads available workspaces from the current Formbricks API v2:
|
|
|
69
95
|
curl -H "x-api-key: <API_KEY>" https://form.example.com/api/v2/me
|
|
70
96
|
```
|
|
71
97
|
|
|
72
|
-
It uses the returned `workspaces[]` array. The option label is based on `projectName`, and the option value is `workspaceId`.
|
|
98
|
+
It uses the returned `workspaces[]` array. It also supports Formbricks responses that expose the same data as `workspacePermissions[]`. The option label is based on `projectName` or `workspaceName`, includes the permission level when returned by Formbricks, and the option value is `workspaceId`.
|
|
73
99
|
|
|
74
100
|
## Usage
|
|
75
101
|
|
|
76
102
|
1. Add the **Formbricks** trigger node to an n8n workflow.
|
|
77
103
|
2. Select the workspace that should receive the webhook.
|
|
78
104
|
3. Select one or more events, for example **Response Finished**.
|
|
79
|
-
4. Optionally
|
|
105
|
+
4. Optionally select surveys. Leave **Survey IDs** empty to trigger this node for all surveys in the workspace.
|
|
80
106
|
5. Save and activate the workflow.
|
|
81
107
|
|
|
82
108
|
When the workflow is activated, n8n creates a production webhook URL and the node registers it in Formbricks with:
|
|
@@ -143,7 +169,7 @@ Publishing is optional for local use. It requires an npm account logged in on th
|
|
|
143
169
|
|
|
144
170
|
This package is based on the upstream Formbricks n8n node and was updated to register webhooks through the Formbricks API v2 management webhook endpoints.
|
|
145
171
|
|
|
146
|
-
Formbricks API v2 currently exposes webhook management under `/api/v2/management/webhooks`.
|
|
172
|
+
Formbricks API v2 currently exposes webhook management under `/api/v2/management/webhooks`. Survey choices are loaded through `/api/v1/management/surveys` until an API v2 survey list endpoint is available.
|
|
147
173
|
|
|
148
174
|
## Resources
|
|
149
175
|
|
|
@@ -16,7 +16,7 @@ class FormbricksApi {
|
|
|
16
16
|
{
|
|
17
17
|
displayName: "API Key",
|
|
18
18
|
name: "apiKey",
|
|
19
|
-
description: 'Your Formbricks organization API-Key.
|
|
19
|
+
description: 'Your Formbricks organization API-Key. Credential testing and workspace loading require Organization Read access. Full webhook lifecycle requires Manage access for the selected workspace. Please read our <a href="https://formbricks.com/docs/api/api-key-setup">API Key Docs</a> for more details.',
|
|
20
20
|
type: "string",
|
|
21
21
|
typeOptions: { password: true },
|
|
22
22
|
default: "",
|
|
@@ -35,6 +35,22 @@ class FormbricksApi {
|
|
|
35
35
|
baseURL: "={{$credentials.host}}/api/v2",
|
|
36
36
|
url: "=/me",
|
|
37
37
|
},
|
|
38
|
+
rules: [
|
|
39
|
+
{
|
|
40
|
+
type: "responseCode",
|
|
41
|
+
properties: {
|
|
42
|
+
value: 401,
|
|
43
|
+
message: "Authentication failed. Check the Host/API Key and make sure the key has Organization Read access.",
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
type: "responseCode",
|
|
48
|
+
properties: {
|
|
49
|
+
value: 403,
|
|
50
|
+
message: "The API key is valid but lacks permission. Organization Read access is required to test credentials and load workspaces.",
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
],
|
|
38
54
|
};
|
|
39
55
|
}
|
|
40
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormbricksApi.credentials.js","sourceRoot":"","sources":["../../credentials/FormbricksApi.credentials.ts"],"names":[],"mappings":";;;AAEA,MAAa,aAAa;IAA1B;QACE,SAAI,GAAG,eAAe,CAAC;QACvB,gBAAW,GAAG,gBAAgB,CAAC;QAC/B,eAAU,GAAsB;YAC9B;gBACE,WAAW,EAAE,MAAM;gBACnB,IAAI,EAAE,MAAM;gBACZ,WAAW,EACT,kMAAkM;gBACpM,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,4BAA4B;aACtC;YACD;gBACE,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"FormbricksApi.credentials.js","sourceRoot":"","sources":["../../credentials/FormbricksApi.credentials.ts"],"names":[],"mappings":";;;AAEA,MAAa,aAAa;IAA1B;QACE,SAAI,GAAG,eAAe,CAAC;QACvB,gBAAW,GAAG,gBAAgB,CAAC;QAC/B,eAAU,GAAsB;YAC9B;gBACE,WAAW,EAAE,MAAM;gBACnB,IAAI,EAAE,MAAM;gBACZ,WAAW,EACT,kMAAkM;gBACpM,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,4BAA4B;aACtC;YACD;gBACE,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,uSAAuS;gBACzS,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;aACZ;SACF,CAAC;QAEF,iBAAY,GAAyB;YACnC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP,WAAW,EAAE,0BAA0B;iBACxC;aACF;SACF,CAAC;QACF,SAAI,GAAuC;YACzC,OAAO,EAAE;gBACP,OAAO,EAAE,+BAA+B;gBACxC,GAAG,EAAE,MAAM;aACZ;YACD,KAAK,EAAE;gBACL;oBACE,IAAI,EAAE,cAAc;oBACpB,UAAU,EAAE;wBACV,KAAK,EAAE,GAAG;wBACV,OAAO,EACL,mGAAmG;qBACtG;iBACF;gBACD;oBACE,IAAI,EAAE,cAAc;oBACpB,UAAU,EAAE;wBACV,KAAK,EAAE,GAAG;wBACV,OAAO,EACL,0HAA0H;qBAC7H;iBACF;aACF;SACF,CAAC;IACJ,CAAC;CAAA;AAvDD,sCAuDC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { IHookFunctions, INodeType, INodeTypeDescription, IWebhookFunctions, IWebhookResponseData } from "n8n-workflow";
|
|
2
|
-
import { getWorkspaces } from "./GenericFunctions";
|
|
2
|
+
import { getSurveys, getWorkspaces } from "./GenericFunctions";
|
|
3
3
|
export declare class Formbricks implements INodeType {
|
|
4
4
|
description: INodeTypeDescription;
|
|
5
5
|
methods: {
|
|
6
6
|
loadOptions: {
|
|
7
|
+
getSurveys: typeof getSurveys;
|
|
7
8
|
getWorkspaces: typeof getWorkspaces;
|
|
8
9
|
};
|
|
9
10
|
};
|
|
@@ -45,7 +45,7 @@ class Formbricks {
|
|
|
45
45
|
{
|
|
46
46
|
displayName: "Workspace Name or ID",
|
|
47
47
|
name: "workspaceId",
|
|
48
|
-
description: 'Workspace where the webhook should be registered. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.',
|
|
48
|
+
description: 'Workspace where the webhook should be registered. Manage access is recommended so n8n can create and delete webhooks. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.',
|
|
49
49
|
type: "options",
|
|
50
50
|
typeOptions: {
|
|
51
51
|
loadOptionsMethod: "getWorkspaces",
|
|
@@ -80,14 +80,19 @@ class Formbricks {
|
|
|
80
80
|
{
|
|
81
81
|
displayName: "Survey IDs",
|
|
82
82
|
name: "surveyIds",
|
|
83
|
-
description:
|
|
84
|
-
type: "
|
|
85
|
-
|
|
83
|
+
description: 'Choose from the list, or specify IDs using an <a href="https://docs.n8n.io/code/expressions/">expression</a>',
|
|
84
|
+
type: "multiOptions",
|
|
85
|
+
typeOptions: {
|
|
86
|
+
loadOptionsMethod: "getSurveys",
|
|
87
|
+
},
|
|
88
|
+
options: [],
|
|
89
|
+
default: [],
|
|
86
90
|
},
|
|
87
91
|
],
|
|
88
92
|
};
|
|
89
93
|
this.methods = {
|
|
90
94
|
loadOptions: {
|
|
95
|
+
getSurveys: GenericFunctions_1.getSurveys,
|
|
91
96
|
getWorkspaces: GenericFunctions_1.getWorkspaces,
|
|
92
97
|
},
|
|
93
98
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Formbricks.node.js","sourceRoot":"","sources":["../../../nodes/Formbricks/Formbricks.node.ts"],"names":[],"mappings":";;;AAAA,+CAOsB;AAEtB,
|
|
1
|
+
{"version":3,"file":"Formbricks.node.js","sourceRoot":"","sources":["../../../nodes/Formbricks/Formbricks.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { IDataObject, IExecuteFunctions, IHookFunctions, IHttpRequestMethods, ILoadOptionsFunctions, INodePropertyOptions } from "n8n-workflow";
|
|
2
|
-
export declare function apiRequest(this: IHookFunctions | IExecuteFunctions | ILoadOptionsFunctions, method: IHttpRequestMethods, resource: string, body: object, query?: IDataObject, option?: IDataObject): Promise<any>;
|
|
2
|
+
export declare function apiRequest(this: IHookFunctions | IExecuteFunctions | ILoadOptionsFunctions, method: IHttpRequestMethods, resource: string, body: object, query?: IDataObject, option?: IDataObject, apiVersion?: string): Promise<any>;
|
|
3
3
|
export declare function getWorkspaces(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]>;
|
|
4
|
+
export declare function getSurveys(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]>;
|
|
@@ -2,11 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.apiRequest = apiRequest;
|
|
4
4
|
exports.getWorkspaces = getWorkspaces;
|
|
5
|
+
exports.getSurveys = getSurveys;
|
|
5
6
|
const n8n_workflow_1 = require("n8n-workflow");
|
|
6
|
-
async function apiRequest(method, resource, body, query = {}, option = {}) {
|
|
7
|
+
async function apiRequest(method, resource, body, query = {}, option = {}, apiVersion = "v2") {
|
|
7
8
|
const credentials = await this.getCredentials("formbricksApi");
|
|
8
9
|
let options = {
|
|
9
|
-
baseURL: `${credentials.host}/api
|
|
10
|
+
baseURL: `${credentials.host}/api/${apiVersion}`,
|
|
10
11
|
method,
|
|
11
12
|
body,
|
|
12
13
|
qs: query,
|
|
@@ -27,15 +28,53 @@ async function apiRequest(method, resource, body, query = {}, option = {}) {
|
|
|
27
28
|
}
|
|
28
29
|
}
|
|
29
30
|
async function getWorkspaces() {
|
|
30
|
-
var _a;
|
|
31
|
+
var _a, _b, _c, _d;
|
|
31
32
|
const responseData = await apiRequest.call(this, "GET", "/me", {});
|
|
32
|
-
const workspaces = responseData.workspaces ||
|
|
33
|
+
const workspaces = responseData.workspaces ||
|
|
34
|
+
((_a = responseData.data) === null || _a === void 0 ? void 0 : _a.workspaces) ||
|
|
35
|
+
responseData.workspacePermissions ||
|
|
36
|
+
((_b = responseData.data) === null || _b === void 0 ? void 0 : _b.workspacePermissions) ||
|
|
37
|
+
responseData.environments ||
|
|
38
|
+
((_c = responseData.data) === null || _c === void 0 ? void 0 : _c.environments) ||
|
|
39
|
+
responseData.environmentPermissions ||
|
|
40
|
+
((_d = responseData.data) === null || _d === void 0 ? void 0 : _d.environmentPermissions);
|
|
33
41
|
if (!Array.isArray(workspaces)) {
|
|
34
|
-
throw new n8n_workflow_1.NodeOperationError(this.getNode(), "No workspaces got returned");
|
|
42
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), "No Formbricks workspaces got returned from GET /api/v2/me");
|
|
43
|
+
}
|
|
44
|
+
const returnData = workspaces
|
|
45
|
+
.filter((workspace) => workspace.workspaceId)
|
|
46
|
+
.map((workspace) => {
|
|
47
|
+
const workspaceName = workspace.projectName || workspace.workspaceName || workspace.workspaceId;
|
|
48
|
+
const permission = workspace.permissions || workspace.permission;
|
|
49
|
+
const permissionLabel = typeof permission === "string"
|
|
50
|
+
? ` (${permission.charAt(0).toUpperCase()}${permission.slice(1)})`
|
|
51
|
+
: "";
|
|
52
|
+
return {
|
|
53
|
+
name: `${workspaceName}${permissionLabel}`,
|
|
54
|
+
value: workspace.workspaceId,
|
|
55
|
+
};
|
|
56
|
+
});
|
|
57
|
+
if (returnData.length === 0) {
|
|
58
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), "No Formbricks workspaces with workspaceId got returned from GET /api/v2/me");
|
|
59
|
+
}
|
|
60
|
+
return returnData;
|
|
61
|
+
}
|
|
62
|
+
async function getSurveys() {
|
|
63
|
+
var _a;
|
|
64
|
+
const workspaceId = (_a = this.getCurrentNodeParameter("workspaceId")) === null || _a === void 0 ? void 0 : _a.trim();
|
|
65
|
+
if (!workspaceId) {
|
|
66
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), "Select a Formbricks workspace first");
|
|
67
|
+
}
|
|
68
|
+
const responseData = await apiRequest.call(this, "GET", "/management/surveys", {}, {}, {}, "v1");
|
|
69
|
+
const surveys = responseData.data;
|
|
70
|
+
if (!Array.isArray(surveys)) {
|
|
71
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), "No Formbricks surveys got returned from GET /api/v1/management/surveys");
|
|
35
72
|
}
|
|
36
|
-
return
|
|
37
|
-
|
|
38
|
-
|
|
73
|
+
return surveys
|
|
74
|
+
.filter((survey) => survey.workspaceId === workspaceId)
|
|
75
|
+
.map((survey) => ({
|
|
76
|
+
name: survey.name || survey.id,
|
|
77
|
+
value: survey.id,
|
|
39
78
|
}));
|
|
40
79
|
}
|
|
41
80
|
//# sourceMappingURL=GenericFunctions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenericFunctions.js","sourceRoot":"","sources":["../../../nodes/Formbricks/GenericFunctions.ts"],"names":[],"mappings":";;AAgBA,
|
|
1
|
+
{"version":3,"file":"GenericFunctions.js","sourceRoot":"","sources":["../../../nodes/Formbricks/GenericFunctions.ts"],"names":[],"mappings":"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"}
|
package/dist/package.json
CHANGED