n8n-nodes-msfrog 0.1.0
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/LICENSE.md +21 -0
- package/README.md +91 -0
- package/dist/credentials/MsfrogApi.credentials.d.ts +10 -0
- package/dist/credentials/MsfrogApi.credentials.js +45 -0
- package/dist/credentials/MsfrogApi.credentials.js.map +1 -0
- package/dist/icons/msfrog.dark.svg +12 -0
- package/dist/icons/msfrog.svg +12 -0
- package/dist/nodes/Msfrog/Msfrog.node.d.ts +5 -0
- package/dist/nodes/Msfrog/Msfrog.node.js +747 -0
- package/dist/nodes/Msfrog/Msfrog.node.js.map +1 -0
- package/package.json +62 -0
package/LICENSE.md
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Clockwise LTD
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# n8n-nodes-msfrog
|
|
2
|
+
|
|
3
|
+
Use MSFrog inside n8n to create and manage workflow entries, steps, comments, and tasks.
|
|
4
|
+
|
|
5
|
+
This package provides an n8n community node for teams that want to automate support and operational workflows against the MSFrog API.
|
|
6
|
+
|
|
7
|
+
## What You Can Do
|
|
8
|
+
|
|
9
|
+
- Create and update workflow entries
|
|
10
|
+
- Fetch and update workflow steps
|
|
11
|
+
- Complete or un-complete steps and tasks
|
|
12
|
+
- Create, update, and delete comments
|
|
13
|
+
- Get current user context
|
|
14
|
+
|
|
15
|
+
## Installation
|
|
16
|
+
|
|
17
|
+
### Option 1: Install from npm (recommended)
|
|
18
|
+
|
|
19
|
+
Inside your n8n environment, install:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm install n8n-nodes-msfrog
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Then restart n8n.
|
|
26
|
+
|
|
27
|
+
### Option 2: Install as a community node from n8n UI
|
|
28
|
+
|
|
29
|
+
1. Open n8n.
|
|
30
|
+
2. Go to **Settings -> Community Nodes**.
|
|
31
|
+
3. Click **Install**.
|
|
32
|
+
4. Enter package name: `n8n-nodes-msfrog`.
|
|
33
|
+
5. Confirm installation.
|
|
34
|
+
|
|
35
|
+
## Credentials Setup
|
|
36
|
+
|
|
37
|
+
Create a new credential in n8n:
|
|
38
|
+
|
|
39
|
+
1. Go to **Credentials -> New**.
|
|
40
|
+
2. Search for **MSFrog API**.
|
|
41
|
+
3. Fill in:
|
|
42
|
+
- **Base URL**: your MSFrog backend URL (no trailing slash), for example `https://api.your-domain.com`
|
|
43
|
+
- **Access Token**: a valid MSFrog bearer token (raw token only, no `Bearer ` prefix)
|
|
44
|
+
4. Save the credential.
|
|
45
|
+
|
|
46
|
+
If n8n runs in Docker and your MSFrog backend runs on your host machine, use `host.docker.internal` instead of `localhost`.
|
|
47
|
+
|
|
48
|
+
## Available Resources
|
|
49
|
+
|
|
50
|
+
- Workflow
|
|
51
|
+
- Workflow Entry
|
|
52
|
+
- Task
|
|
53
|
+
- User
|
|
54
|
+
- Company
|
|
55
|
+
|
|
56
|
+
## Quick Start
|
|
57
|
+
|
|
58
|
+
1. Add an **MSFrog** node to your workflow.
|
|
59
|
+
2. Select your saved **MSFrog API** credential.
|
|
60
|
+
3. Choose the resource and operation you need.
|
|
61
|
+
4. Execute the node to confirm connectivity.
|
|
62
|
+
|
|
63
|
+
A good first test is:
|
|
64
|
+
|
|
65
|
+
- Resource: **User**
|
|
66
|
+
- Operation: **Get Self**
|
|
67
|
+
|
|
68
|
+
If that returns your authenticated user, your credentials are working.
|
|
69
|
+
|
|
70
|
+
## Example Workflows
|
|
71
|
+
|
|
72
|
+
Sample workflows are available in the `examples/` folder:
|
|
73
|
+
|
|
74
|
+
- `client-email-triage-sample.workflow.json`
|
|
75
|
+
- `client-email-triage-gmail-inbox.workflow.json`
|
|
76
|
+
|
|
77
|
+
Import one into n8n and replace credentials with your own.
|
|
78
|
+
|
|
79
|
+
## Compatibility
|
|
80
|
+
|
|
81
|
+
- Node.js: `>=22 <23`
|
|
82
|
+
- n8n: community-node compatible versions
|
|
83
|
+
|
|
84
|
+
## Support
|
|
85
|
+
|
|
86
|
+
- Report issues: https://github.com/LukeDes003/n8n-nodes-msfrog/issues
|
|
87
|
+
- Repository: https://github.com/LukeDes003/n8n-nodes-msfrog
|
|
88
|
+
|
|
89
|
+
## Developer Documentation
|
|
90
|
+
|
|
91
|
+
Developer and local Docker extension setup notes are in `dev-readme.md`.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Icon, IAuthenticateGeneric, ICredentialTestRequest, ICredentialType, INodeProperties } from 'n8n-workflow';
|
|
2
|
+
export declare class MsfrogApi implements ICredentialType {
|
|
3
|
+
name: string;
|
|
4
|
+
displayName: string;
|
|
5
|
+
documentationUrl: string;
|
|
6
|
+
icon: Icon;
|
|
7
|
+
properties: INodeProperties[];
|
|
8
|
+
authenticate: IAuthenticateGeneric;
|
|
9
|
+
test: ICredentialTestRequest;
|
|
10
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MsfrogApi = void 0;
|
|
4
|
+
class MsfrogApi {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.name = 'msfrogApi';
|
|
7
|
+
this.displayName = 'MSFrog API';
|
|
8
|
+
this.documentationUrl = 'https://bitbucket.org/airomt/wiso-n8n';
|
|
9
|
+
this.icon = { light: 'file:../icons/msfrog.svg', dark: 'file:../icons/msfrog.dark.svg' };
|
|
10
|
+
this.properties = [
|
|
11
|
+
{
|
|
12
|
+
displayName: 'Base URL',
|
|
13
|
+
name: 'baseUrl',
|
|
14
|
+
type: 'string',
|
|
15
|
+
default: 'http://host.docker.internal:8000',
|
|
16
|
+
description: 'Base URL of the MSFrog API',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
displayName: 'Access Token',
|
|
20
|
+
name: 'accessToken',
|
|
21
|
+
type: 'string',
|
|
22
|
+
typeOptions: { password: true },
|
|
23
|
+
default: '',
|
|
24
|
+
description: 'Bearer token used for API requests',
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
this.authenticate = {
|
|
28
|
+
type: 'generic',
|
|
29
|
+
properties: {
|
|
30
|
+
headers: {
|
|
31
|
+
Authorization: '=Bearer {{$credentials?.accessToken}}',
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
this.test = {
|
|
36
|
+
request: {
|
|
37
|
+
baseURL: '={{$credentials.baseUrl}}',
|
|
38
|
+
url: '/api/user/self',
|
|
39
|
+
method: 'GET',
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.MsfrogApi = MsfrogApi;
|
|
45
|
+
//# sourceMappingURL=MsfrogApi.credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MsfrogApi.credentials.js","sourceRoot":"","sources":["../../credentials/MsfrogApi.credentials.ts"],"names":[],"mappings":";;;AAQA,MAAa,SAAS;IAAtB;QACC,SAAI,GAAG,WAAW,CAAC;QAEnB,gBAAW,GAAG,YAAY,CAAC;QAE3B,qBAAgB,GAAG,uCAAuC,CAAC;QAE3D,SAAI,GAAS,EAAE,KAAK,EAAE,0BAA0B,EAAE,IAAI,EAAE,+BAA+B,EAAE,CAAC;QAE1F,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,kCAAkC;gBAC3C,WAAW,EAAE,4BAA4B;aACzC;YACD;gBACC,WAAW,EAAE,cAAc;gBAC3B,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,oCAAoC;aACjD;SACD,CAAC;QAEF,iBAAY,GAAyB;YACpC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACX,OAAO,EAAE;oBACR,aAAa,EAAE,uCAAuC;iBACtD;aACD;SACD,CAAC;QAEF,SAAI,GAA2B;YAC9B,OAAO,EAAE;gBACR,OAAO,EAAE,2BAA2B;gBACpC,GAAG,EAAE,gBAAgB;gBACrB,MAAM,EAAE,KAAK;aACb;SACD,CAAC;IACH,CAAC;CAAA;AA3CD,8BA2CC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" viewBox="0 0 256 256" role="img" aria-label="MSFrog dark">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="bgDark" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
4
|
+
<stop offset="0%" stop-color="#0b1f2d" />
|
|
5
|
+
<stop offset="100%" stop-color="#163047" />
|
|
6
|
+
</linearGradient>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect width="256" height="256" rx="56" fill="url(#bgDark)" />
|
|
9
|
+
<circle cx="128" cy="122" r="74" fill="#ffffff" opacity="0.12" />
|
|
10
|
+
<path d="M70 128c0-32 26-58 58-58s58 26 58 58-26 58-58 58-58-26-58-58Z" fill="#9ee9dc" />
|
|
11
|
+
<text x="128" y="147" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="74" font-weight="700" fill="#0b1f2d">M</text>
|
|
12
|
+
</svg>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" viewBox="0 0 256 256" role="img" aria-label="MSFrog">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
4
|
+
<stop offset="0%" stop-color="#0f766e" />
|
|
5
|
+
<stop offset="100%" stop-color="#134e4a" />
|
|
6
|
+
</linearGradient>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect width="256" height="256" rx="56" fill="url(#bg)" />
|
|
9
|
+
<circle cx="128" cy="122" r="74" fill="#ecfeff" opacity="0.16" />
|
|
10
|
+
<path d="M70 128c0-32 26-58 58-58s58 26 58 58-26 58-58 58-58-26-58-58Z" fill="#ccfbf1" />
|
|
11
|
+
<text x="128" y="147" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-size="74" font-weight="700" fill="#0f766e">M</text>
|
|
12
|
+
</svg>
|
|
@@ -0,0 +1,747 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Msfrog = void 0;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
class Msfrog {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.description = {
|
|
8
|
+
displayName: 'MSFrog',
|
|
9
|
+
name: 'msfrog',
|
|
10
|
+
icon: { light: 'file:../../icons/msfrog.svg', dark: 'file:../../icons/msfrog.dark.svg' },
|
|
11
|
+
group: ['transform'],
|
|
12
|
+
version: [1, 2],
|
|
13
|
+
defaultVersion: 1,
|
|
14
|
+
subtitle: '={{$parameter["resource"] + ": " + $parameter["operation"]}}',
|
|
15
|
+
description: 'Access the MSFrog API',
|
|
16
|
+
defaults: {
|
|
17
|
+
name: 'MSFrog',
|
|
18
|
+
},
|
|
19
|
+
usableAsTool: true,
|
|
20
|
+
inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
21
|
+
outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
22
|
+
credentials: [
|
|
23
|
+
{
|
|
24
|
+
name: 'msfrogApi',
|
|
25
|
+
required: true,
|
|
26
|
+
},
|
|
27
|
+
],
|
|
28
|
+
properties: [
|
|
29
|
+
{
|
|
30
|
+
displayName: 'Base URL',
|
|
31
|
+
name: 'baseUrl',
|
|
32
|
+
type: 'string',
|
|
33
|
+
default: 'http://host.docker.internal:8000',
|
|
34
|
+
placeholder: 'https://example.com',
|
|
35
|
+
description: 'Base URL for the MSFrog API without a trailing slash',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
displayName: 'Resource',
|
|
39
|
+
name: 'resource',
|
|
40
|
+
type: 'options',
|
|
41
|
+
noDataExpression: true,
|
|
42
|
+
default: 'workflow',
|
|
43
|
+
options: [
|
|
44
|
+
{ name: 'Company', value: 'company' },
|
|
45
|
+
{ name: 'Task', value: 'task' },
|
|
46
|
+
{ name: 'User', value: 'user' },
|
|
47
|
+
{ name: 'Workflow', value: 'workflow' },
|
|
48
|
+
{ name: 'Workflow Entry', value: 'workflowEntry' },
|
|
49
|
+
],
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
displayName: 'Operation',
|
|
53
|
+
name: 'operation',
|
|
54
|
+
type: 'options',
|
|
55
|
+
noDataExpression: true,
|
|
56
|
+
default: 'getTypes',
|
|
57
|
+
displayOptions: {
|
|
58
|
+
show: {
|
|
59
|
+
resource: ['workflow'],
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
options: [
|
|
63
|
+
{
|
|
64
|
+
name: 'Get List of Workflow Entry Types',
|
|
65
|
+
value: 'getTypes',
|
|
66
|
+
action: 'Get workflow entry types',
|
|
67
|
+
description: 'List workflow definitions that can be used as workflow entry types',
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
name: 'Get Many',
|
|
71
|
+
value: 'getAll',
|
|
72
|
+
action: 'Get many workflows',
|
|
73
|
+
description: 'Get many workflows',
|
|
74
|
+
},
|
|
75
|
+
],
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
displayName: 'Operation',
|
|
79
|
+
name: 'operation',
|
|
80
|
+
type: 'options',
|
|
81
|
+
noDataExpression: true,
|
|
82
|
+
default: 'getAll',
|
|
83
|
+
displayOptions: {
|
|
84
|
+
show: {
|
|
85
|
+
resource: ['company'],
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
options: [
|
|
89
|
+
{
|
|
90
|
+
name: 'Get Many',
|
|
91
|
+
value: 'getAll',
|
|
92
|
+
action: 'Get many companies',
|
|
93
|
+
description: 'Get many companies',
|
|
94
|
+
},
|
|
95
|
+
],
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
displayName: 'Operation',
|
|
99
|
+
name: 'operation',
|
|
100
|
+
type: 'options',
|
|
101
|
+
noDataExpression: true,
|
|
102
|
+
default: 'getSelf',
|
|
103
|
+
displayOptions: {
|
|
104
|
+
show: {
|
|
105
|
+
resource: ['user'],
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
options: [
|
|
109
|
+
{
|
|
110
|
+
name: 'Get Self',
|
|
111
|
+
value: 'getSelf',
|
|
112
|
+
action: 'Get current user details',
|
|
113
|
+
description: 'Get the currently authenticated user',
|
|
114
|
+
},
|
|
115
|
+
],
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
displayName: 'Operation',
|
|
119
|
+
name: 'operation',
|
|
120
|
+
type: 'options',
|
|
121
|
+
noDataExpression: true,
|
|
122
|
+
default: 'getAll',
|
|
123
|
+
displayOptions: {
|
|
124
|
+
show: {
|
|
125
|
+
resource: ['workflowEntry'],
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
options: [
|
|
129
|
+
{
|
|
130
|
+
name: 'Complete Step',
|
|
131
|
+
value: 'completeStep',
|
|
132
|
+
action: 'Complete a workflow entry step',
|
|
133
|
+
description: 'Mark a workflow entry step complete',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
name: 'Create Comment',
|
|
137
|
+
value: 'createComment',
|
|
138
|
+
action: 'Create a workflow entry comment',
|
|
139
|
+
description: 'Create a comment on a workflow entry',
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
name: 'Create Workflow Entry',
|
|
143
|
+
value: 'create',
|
|
144
|
+
action: 'Create a workflow entry',
|
|
145
|
+
description: 'Create a new entry for a workflow',
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
name: 'Delete Comment',
|
|
149
|
+
value: 'deleteComment',
|
|
150
|
+
action: 'Delete a workflow entry comment',
|
|
151
|
+
description: 'Delete a workflow entry comment',
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
name: 'Fetch Step',
|
|
155
|
+
value: 'fetchStep',
|
|
156
|
+
action: 'Fetch a workflow entry step',
|
|
157
|
+
description: 'Fetch a step from a workflow entry by entry UUID and step UUID',
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
name: 'Get Many',
|
|
161
|
+
value: 'getAll',
|
|
162
|
+
action: 'Get workflow entries',
|
|
163
|
+
description: 'List workflow entries for the current company or a selected company UUID',
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
name: 'Un-Complete Step',
|
|
167
|
+
value: 'uncompleteStep',
|
|
168
|
+
action: 'Un complete a workflow entry step',
|
|
169
|
+
description: 'Reopen a workflow entry step',
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
name: 'Update Comment',
|
|
173
|
+
value: 'updateComment',
|
|
174
|
+
action: 'Update a workflow entry comment',
|
|
175
|
+
description: 'Update a workflow entry comment',
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
name: 'Update Step',
|
|
179
|
+
value: 'updateStep',
|
|
180
|
+
action: 'Update a workflow entry step',
|
|
181
|
+
description: 'Update a workflow entry step',
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
name: 'Update Workflow Entry',
|
|
185
|
+
value: 'update',
|
|
186
|
+
action: 'Update a workflow entry',
|
|
187
|
+
description: 'Update an existing workflow entry',
|
|
188
|
+
},
|
|
189
|
+
],
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
displayName: 'Operation',
|
|
193
|
+
name: 'operation',
|
|
194
|
+
type: 'options',
|
|
195
|
+
noDataExpression: true,
|
|
196
|
+
default: 'create',
|
|
197
|
+
displayOptions: {
|
|
198
|
+
show: {
|
|
199
|
+
resource: ['task'],
|
|
200
|
+
},
|
|
201
|
+
},
|
|
202
|
+
options: [
|
|
203
|
+
{
|
|
204
|
+
name: 'Complete Task',
|
|
205
|
+
value: 'completeTask',
|
|
206
|
+
action: 'Complete a task',
|
|
207
|
+
description: 'Mark a task complete',
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
name: 'Create Comment',
|
|
211
|
+
value: 'createComment',
|
|
212
|
+
action: 'Create a task comment',
|
|
213
|
+
description: 'Create a comment on a task',
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
name: 'Create New Task',
|
|
217
|
+
value: 'create',
|
|
218
|
+
action: 'Create a task',
|
|
219
|
+
description: 'Create a new task',
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
name: 'Delete Comment',
|
|
223
|
+
value: 'deleteComment',
|
|
224
|
+
action: 'Delete a task comment',
|
|
225
|
+
description: 'Delete a task comment',
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
name: 'Delete Task',
|
|
229
|
+
value: 'deleteTask',
|
|
230
|
+
action: 'Delete a task',
|
|
231
|
+
description: 'Delete a task',
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
name: 'Un-Complete Task',
|
|
235
|
+
value: 'uncompleteTask',
|
|
236
|
+
action: 'Un complete a task',
|
|
237
|
+
description: 'Reopen a task',
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
name: 'Update Comment',
|
|
241
|
+
value: 'updateComment',
|
|
242
|
+
action: 'Update a task comment',
|
|
243
|
+
description: 'Update a task comment',
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
name: 'Update Task',
|
|
247
|
+
value: 'update',
|
|
248
|
+
action: 'Update a task',
|
|
249
|
+
description: 'Update an existing task',
|
|
250
|
+
},
|
|
251
|
+
],
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
displayName: 'Workflow UUID',
|
|
255
|
+
name: 'workflowUuid',
|
|
256
|
+
type: 'string',
|
|
257
|
+
default: '',
|
|
258
|
+
required: true,
|
|
259
|
+
description: 'The workflow UUID to create an entry for',
|
|
260
|
+
displayOptions: {
|
|
261
|
+
show: {
|
|
262
|
+
resource: ['workflowEntry'],
|
|
263
|
+
operation: ['create'],
|
|
264
|
+
},
|
|
265
|
+
},
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
displayName: 'Workflow Entry UUID',
|
|
269
|
+
name: 'workflowEntryUuid',
|
|
270
|
+
type: 'string',
|
|
271
|
+
default: '',
|
|
272
|
+
required: true,
|
|
273
|
+
displayOptions: {
|
|
274
|
+
show: {
|
|
275
|
+
resource: ['workflowEntry'],
|
|
276
|
+
operation: ['update', 'fetchStep', 'createComment', 'updateComment', 'deleteComment'],
|
|
277
|
+
},
|
|
278
|
+
},
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
displayName: 'Entry Name',
|
|
282
|
+
name: 'name',
|
|
283
|
+
type: 'string',
|
|
284
|
+
default: '',
|
|
285
|
+
required: true,
|
|
286
|
+
description: 'Name for the workflow entry',
|
|
287
|
+
displayOptions: {
|
|
288
|
+
show: {
|
|
289
|
+
resource: ['workflowEntry'],
|
|
290
|
+
operation: ['create', 'update'],
|
|
291
|
+
},
|
|
292
|
+
},
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
displayName: 'Description',
|
|
296
|
+
name: 'description',
|
|
297
|
+
type: 'string',
|
|
298
|
+
default: '',
|
|
299
|
+
typeOptions: {
|
|
300
|
+
rows: 4,
|
|
301
|
+
},
|
|
302
|
+
description: 'Optional workflow entry description',
|
|
303
|
+
displayOptions: {
|
|
304
|
+
show: {
|
|
305
|
+
resource: ['workflowEntry'],
|
|
306
|
+
operation: ['create', 'update'],
|
|
307
|
+
},
|
|
308
|
+
},
|
|
309
|
+
},
|
|
310
|
+
{
|
|
311
|
+
displayName: 'Step Assignments',
|
|
312
|
+
name: 'stepAssignments',
|
|
313
|
+
type: 'json',
|
|
314
|
+
default: '[]',
|
|
315
|
+
description: 'JSON array of step assignment objects using backend field names',
|
|
316
|
+
displayOptions: {
|
|
317
|
+
show: {
|
|
318
|
+
resource: ['workflowEntry'],
|
|
319
|
+
operation: ['create', 'update'],
|
|
320
|
+
},
|
|
321
|
+
},
|
|
322
|
+
},
|
|
323
|
+
{
|
|
324
|
+
displayName: 'Company UUID',
|
|
325
|
+
name: 'companyUuid',
|
|
326
|
+
type: 'string',
|
|
327
|
+
default: '',
|
|
328
|
+
placeholder: 'Optional company UUID',
|
|
329
|
+
description: 'Optional company filter for workflow queries',
|
|
330
|
+
displayOptions: {
|
|
331
|
+
show: {
|
|
332
|
+
resource: ['workflow', 'workflowEntry'],
|
|
333
|
+
operation: ['getAll', 'getTypes'],
|
|
334
|
+
},
|
|
335
|
+
},
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
displayName: 'Step UUID',
|
|
339
|
+
name: 'stepUuid',
|
|
340
|
+
type: 'string',
|
|
341
|
+
default: '',
|
|
342
|
+
required: true,
|
|
343
|
+
description: 'The workflow entry step UUID',
|
|
344
|
+
displayOptions: {
|
|
345
|
+
show: {
|
|
346
|
+
resource: ['workflowEntry'],
|
|
347
|
+
operation: ['fetchStep', 'updateStep', 'completeStep', 'uncompleteStep'],
|
|
348
|
+
},
|
|
349
|
+
},
|
|
350
|
+
},
|
|
351
|
+
{
|
|
352
|
+
displayName: 'Step Data',
|
|
353
|
+
name: 'stepData',
|
|
354
|
+
type: 'json',
|
|
355
|
+
default: '{}',
|
|
356
|
+
description: 'JSON payload for step updates, using backend field names',
|
|
357
|
+
displayOptions: {
|
|
358
|
+
show: {
|
|
359
|
+
resource: ['workflowEntry'],
|
|
360
|
+
operation: ['updateStep'],
|
|
361
|
+
},
|
|
362
|
+
},
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
displayName: 'Comment',
|
|
366
|
+
name: 'comment',
|
|
367
|
+
type: 'string',
|
|
368
|
+
default: '',
|
|
369
|
+
typeOptions: {
|
|
370
|
+
rows: 4,
|
|
371
|
+
},
|
|
372
|
+
description: 'The comment text',
|
|
373
|
+
displayOptions: {
|
|
374
|
+
show: {
|
|
375
|
+
resource: ['workflowEntry'],
|
|
376
|
+
operation: ['createComment', 'updateComment'],
|
|
377
|
+
},
|
|
378
|
+
},
|
|
379
|
+
},
|
|
380
|
+
{
|
|
381
|
+
displayName: 'Comment UUID',
|
|
382
|
+
name: 'commentUuid',
|
|
383
|
+
type: 'string',
|
|
384
|
+
default: '',
|
|
385
|
+
required: true,
|
|
386
|
+
displayOptions: {
|
|
387
|
+
show: {
|
|
388
|
+
resource: ['workflowEntry'],
|
|
389
|
+
operation: ['updateComment', 'deleteComment'],
|
|
390
|
+
},
|
|
391
|
+
},
|
|
392
|
+
},
|
|
393
|
+
{
|
|
394
|
+
displayName: 'Task UUID',
|
|
395
|
+
name: 'taskUuid',
|
|
396
|
+
type: 'string',
|
|
397
|
+
default: '',
|
|
398
|
+
required: true,
|
|
399
|
+
displayOptions: {
|
|
400
|
+
show: {
|
|
401
|
+
resource: ['task'],
|
|
402
|
+
operation: ['update', 'deleteTask', 'completeTask', 'uncompleteTask', 'createComment', 'updateComment', 'deleteComment'],
|
|
403
|
+
},
|
|
404
|
+
},
|
|
405
|
+
},
|
|
406
|
+
{
|
|
407
|
+
displayName: 'Task Data',
|
|
408
|
+
name: 'taskData',
|
|
409
|
+
type: 'json',
|
|
410
|
+
default: '{}',
|
|
411
|
+
description: 'JSON payload for task create/update using backend field names',
|
|
412
|
+
displayOptions: {
|
|
413
|
+
show: {
|
|
414
|
+
resource: ['task'],
|
|
415
|
+
operation: ['create', 'update'],
|
|
416
|
+
},
|
|
417
|
+
},
|
|
418
|
+
},
|
|
419
|
+
{
|
|
420
|
+
displayName: 'Task Comment',
|
|
421
|
+
name: 'taskComment',
|
|
422
|
+
type: 'string',
|
|
423
|
+
default: '',
|
|
424
|
+
typeOptions: {
|
|
425
|
+
rows: 4,
|
|
426
|
+
},
|
|
427
|
+
description: 'The task comment text',
|
|
428
|
+
displayOptions: {
|
|
429
|
+
show: {
|
|
430
|
+
resource: ['task'],
|
|
431
|
+
operation: ['createComment', 'updateComment'],
|
|
432
|
+
},
|
|
433
|
+
},
|
|
434
|
+
},
|
|
435
|
+
{
|
|
436
|
+
displayName: 'Task Comment UUID',
|
|
437
|
+
name: 'taskCommentUuid',
|
|
438
|
+
type: 'string',
|
|
439
|
+
default: '',
|
|
440
|
+
required: true,
|
|
441
|
+
displayOptions: {
|
|
442
|
+
show: {
|
|
443
|
+
resource: ['task'],
|
|
444
|
+
operation: ['updateComment', 'deleteComment'],
|
|
445
|
+
},
|
|
446
|
+
},
|
|
447
|
+
},
|
|
448
|
+
{
|
|
449
|
+
displayName: 'Return All',
|
|
450
|
+
name: 'returnAll',
|
|
451
|
+
type: 'boolean',
|
|
452
|
+
default: true,
|
|
453
|
+
description: 'Whether to return all results or only up to a given limit',
|
|
454
|
+
displayOptions: {
|
|
455
|
+
show: {
|
|
456
|
+
operation: ['getAll', 'getTypes'],
|
|
457
|
+
resource: ['workflow', 'company', 'workflowEntry'],
|
|
458
|
+
},
|
|
459
|
+
},
|
|
460
|
+
},
|
|
461
|
+
{
|
|
462
|
+
displayName: 'Limit',
|
|
463
|
+
name: 'limit',
|
|
464
|
+
type: 'number',
|
|
465
|
+
default: 50,
|
|
466
|
+
typeOptions: {
|
|
467
|
+
minValue: 1,
|
|
468
|
+
maxValue: 500,
|
|
469
|
+
},
|
|
470
|
+
description: 'Max number of results to return',
|
|
471
|
+
displayOptions: {
|
|
472
|
+
show: {
|
|
473
|
+
operation: ['getAll', 'getTypes'],
|
|
474
|
+
resource: ['workflow', 'company', 'workflowEntry'],
|
|
475
|
+
returnAll: [false],
|
|
476
|
+
},
|
|
477
|
+
},
|
|
478
|
+
},
|
|
479
|
+
],
|
|
480
|
+
};
|
|
481
|
+
}
|
|
482
|
+
async execute() {
|
|
483
|
+
if (this.getNode().typeVersion >= 2) {
|
|
484
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), new Error('Version 2 is a placeholder only. Use version 1.'), {
|
|
485
|
+
itemIndex: 0,
|
|
486
|
+
});
|
|
487
|
+
}
|
|
488
|
+
const inputItems = this.getInputData();
|
|
489
|
+
const returnData = [];
|
|
490
|
+
const requestApi = async (method, path, body) => {
|
|
491
|
+
const baseUrl = this.getNodeParameter('baseUrl', 0);
|
|
492
|
+
const normalizedBaseUrl = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl;
|
|
493
|
+
const options = {
|
|
494
|
+
method,
|
|
495
|
+
url: `${normalizedBaseUrl}${path}`,
|
|
496
|
+
json: true,
|
|
497
|
+
};
|
|
498
|
+
if (body !== undefined) {
|
|
499
|
+
options.body = body;
|
|
500
|
+
}
|
|
501
|
+
try {
|
|
502
|
+
return this.helpers.httpRequestWithAuthentication.call(this, 'msfrogApi', options);
|
|
503
|
+
}
|
|
504
|
+
catch (error) {
|
|
505
|
+
const message = error?.message ?? '';
|
|
506
|
+
if (!message.includes('Node does not have any credentials set')) {
|
|
507
|
+
throw new n8n_workflow_1.NodeApiError(this.getNode(), error);
|
|
508
|
+
}
|
|
509
|
+
// Fallback for environments where helper lookup can fail despite a linked credential.
|
|
510
|
+
const credentials = await this.getCredentials('msfrogApi');
|
|
511
|
+
const credentialToken = String(credentials.accessToken ?? '');
|
|
512
|
+
const credentialBaseUrlRaw = String(credentials.baseUrl ?? '').trim();
|
|
513
|
+
const credentialBaseUrl = credentialBaseUrlRaw !== '' ? credentialBaseUrlRaw : normalizedBaseUrl;
|
|
514
|
+
const normalizedCredentialBaseUrl = credentialBaseUrl.endsWith('/')
|
|
515
|
+
? credentialBaseUrl.slice(0, -1)
|
|
516
|
+
: credentialBaseUrl;
|
|
517
|
+
const manualOptions = {
|
|
518
|
+
...options,
|
|
519
|
+
url: `${normalizedCredentialBaseUrl}${path}`,
|
|
520
|
+
headers: {
|
|
521
|
+
...(options.headers ?? {}),
|
|
522
|
+
Authorization: `Bearer ${credentialToken}`,
|
|
523
|
+
},
|
|
524
|
+
};
|
|
525
|
+
return this.helpers.httpRequest.call(this, manualOptions);
|
|
526
|
+
}
|
|
527
|
+
};
|
|
528
|
+
const parseJsonInput = (value, fallback) => {
|
|
529
|
+
if (value === null || value === undefined || value === '') {
|
|
530
|
+
return fallback;
|
|
531
|
+
}
|
|
532
|
+
if (typeof value === 'string') {
|
|
533
|
+
try {
|
|
534
|
+
return JSON.parse(value);
|
|
535
|
+
}
|
|
536
|
+
catch {
|
|
537
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), new Error('Invalid JSON input.'), {
|
|
538
|
+
itemIndex: 0,
|
|
539
|
+
});
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
return value;
|
|
543
|
+
};
|
|
544
|
+
for (let itemIndex = 0; itemIndex < inputItems.length; itemIndex++) {
|
|
545
|
+
try {
|
|
546
|
+
const resource = this.getNodeParameter('resource', itemIndex);
|
|
547
|
+
const operation = this.getNodeParameter('operation', itemIndex);
|
|
548
|
+
if (resource === 'workflow' && (operation === 'getTypes' || operation === 'getAll')) {
|
|
549
|
+
const companyUuid = this.getNodeParameter('companyUuid', itemIndex, '');
|
|
550
|
+
const returnAll = this.getNodeParameter('returnAll', itemIndex, true);
|
|
551
|
+
const limit = this.getNodeParameter('limit', itemIndex, 50);
|
|
552
|
+
const path = companyUuid ? `/api/workflows/company/${companyUuid}` : '/api/workflows';
|
|
553
|
+
const workflows = await requestApi('GET', path);
|
|
554
|
+
const workflowTypes = operation === 'getTypes'
|
|
555
|
+
? workflows.filter((workflow) => {
|
|
556
|
+
const status = String(workflow.status ?? '').toLowerCase();
|
|
557
|
+
return status === '' || status === 'active';
|
|
558
|
+
})
|
|
559
|
+
: workflows;
|
|
560
|
+
const selected = returnAll ? workflowTypes : workflowTypes.slice(0, limit);
|
|
561
|
+
for (const workflow of selected) {
|
|
562
|
+
returnData.push({ json: workflow, pairedItem: { item: itemIndex } });
|
|
563
|
+
}
|
|
564
|
+
continue;
|
|
565
|
+
}
|
|
566
|
+
if (resource === 'company' && operation === 'getAll') {
|
|
567
|
+
const returnAll = this.getNodeParameter('returnAll', itemIndex, true);
|
|
568
|
+
const limit = this.getNodeParameter('limit', itemIndex, 50);
|
|
569
|
+
const companies = await requestApi('GET', '/api/company/getcompanysimpledetails');
|
|
570
|
+
const selected = returnAll ? companies : companies.slice(0, limit);
|
|
571
|
+
for (const company of selected) {
|
|
572
|
+
returnData.push({ json: company, pairedItem: { item: itemIndex } });
|
|
573
|
+
}
|
|
574
|
+
continue;
|
|
575
|
+
}
|
|
576
|
+
if (resource === 'user' && operation === 'getSelf') {
|
|
577
|
+
const user = await requestApi('GET', '/api/user/self');
|
|
578
|
+
returnData.push({ json: user, pairedItem: { item: itemIndex } });
|
|
579
|
+
continue;
|
|
580
|
+
}
|
|
581
|
+
if (resource === 'workflowEntry' && operation === 'getAll') {
|
|
582
|
+
const companyUuid = this.getNodeParameter('companyUuid', itemIndex, '');
|
|
583
|
+
const returnAll = this.getNodeParameter('returnAll', itemIndex, true);
|
|
584
|
+
const limit = this.getNodeParameter('limit', itemIndex, 50);
|
|
585
|
+
const path = companyUuid ? `/api/userworkflows/company/${companyUuid}` : '/api/userworkflows';
|
|
586
|
+
const workflowEntries = await requestApi('GET', path);
|
|
587
|
+
const selected = returnAll ? workflowEntries : workflowEntries.slice(0, limit);
|
|
588
|
+
for (const workflowEntry of selected) {
|
|
589
|
+
returnData.push({ json: workflowEntry, pairedItem: { item: itemIndex } });
|
|
590
|
+
}
|
|
591
|
+
continue;
|
|
592
|
+
}
|
|
593
|
+
if (resource === 'workflowEntry' && operation === 'create') {
|
|
594
|
+
const workflowUuid = this.getNodeParameter('workflowUuid', itemIndex);
|
|
595
|
+
const name = this.getNodeParameter('name', itemIndex);
|
|
596
|
+
const description = this.getNodeParameter('description', itemIndex, '');
|
|
597
|
+
const stepAssignments = parseJsonInput(this.getNodeParameter('stepAssignments', itemIndex, '[]'), []);
|
|
598
|
+
const result = await requestApi('POST', '/api/userworkflows', {
|
|
599
|
+
workflow_uuid: workflowUuid,
|
|
600
|
+
name,
|
|
601
|
+
description,
|
|
602
|
+
step_assignments: stepAssignments,
|
|
603
|
+
});
|
|
604
|
+
returnData.push({ json: result, pairedItem: { item: itemIndex } });
|
|
605
|
+
continue;
|
|
606
|
+
}
|
|
607
|
+
if (resource === 'workflowEntry' && operation === 'update') {
|
|
608
|
+
const workflowEntryUuid = this.getNodeParameter('workflowEntryUuid', itemIndex);
|
|
609
|
+
const name = this.getNodeParameter('name', itemIndex);
|
|
610
|
+
const description = this.getNodeParameter('description', itemIndex, '');
|
|
611
|
+
const stepAssignments = parseJsonInput(this.getNodeParameter('stepAssignments', itemIndex, '[]'), []);
|
|
612
|
+
const result = await requestApi('PUT', `/api/userworkflows/${workflowEntryUuid}`, {
|
|
613
|
+
name,
|
|
614
|
+
description,
|
|
615
|
+
step_assignments: stepAssignments,
|
|
616
|
+
});
|
|
617
|
+
returnData.push({ json: result, pairedItem: { item: itemIndex } });
|
|
618
|
+
continue;
|
|
619
|
+
}
|
|
620
|
+
if (resource === 'workflowEntry' && operation === 'fetchStep') {
|
|
621
|
+
const workflowEntryUuid = this.getNodeParameter('workflowEntryUuid', itemIndex);
|
|
622
|
+
const stepUuid = this.getNodeParameter('stepUuid', itemIndex);
|
|
623
|
+
const entry = await requestApi('GET', `/api/userworkflows/${workflowEntryUuid}`);
|
|
624
|
+
const steps = Array.isArray(entry.steps) ? entry.steps : [];
|
|
625
|
+
const step = steps.find((currentStep) => currentStep.uuid === stepUuid);
|
|
626
|
+
if (!step) {
|
|
627
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), new Error(`Workflow entry step ${stepUuid} was not found.`), {
|
|
628
|
+
itemIndex,
|
|
629
|
+
});
|
|
630
|
+
}
|
|
631
|
+
returnData.push({ json: { entry_uuid: workflowEntryUuid, step }, pairedItem: { item: itemIndex } });
|
|
632
|
+
continue;
|
|
633
|
+
}
|
|
634
|
+
if (resource === 'workflowEntry' && operation === 'updateStep') {
|
|
635
|
+
const stepUuid = this.getNodeParameter('stepUuid', itemIndex);
|
|
636
|
+
const stepData = parseJsonInput(this.getNodeParameter('stepData', itemIndex, '{}'), {});
|
|
637
|
+
const result = await requestApi('PUT', `/api/userworkflows/steps/${stepUuid}`, stepData);
|
|
638
|
+
returnData.push({ json: result, pairedItem: { item: itemIndex } });
|
|
639
|
+
continue;
|
|
640
|
+
}
|
|
641
|
+
if (resource === 'workflowEntry' && operation === 'completeStep') {
|
|
642
|
+
const stepUuid = this.getNodeParameter('stepUuid', itemIndex);
|
|
643
|
+
const result = await requestApi('POST', `/api/userworkflows/steps/${stepUuid}/complete`);
|
|
644
|
+
returnData.push({ json: result, pairedItem: { item: itemIndex } });
|
|
645
|
+
continue;
|
|
646
|
+
}
|
|
647
|
+
if (resource === 'workflowEntry' && operation === 'uncompleteStep') {
|
|
648
|
+
const stepUuid = this.getNodeParameter('stepUuid', itemIndex);
|
|
649
|
+
const result = await requestApi('POST', `/api/userworkflows/steps/${stepUuid}/reopen`);
|
|
650
|
+
returnData.push({ json: result, pairedItem: { item: itemIndex } });
|
|
651
|
+
continue;
|
|
652
|
+
}
|
|
653
|
+
if (resource === 'workflowEntry' && operation === 'createComment') {
|
|
654
|
+
const workflowEntryUuid = this.getNodeParameter('workflowEntryUuid', itemIndex);
|
|
655
|
+
const comment = this.getNodeParameter('comment', itemIndex);
|
|
656
|
+
const result = await requestApi('POST', `/api/userworkflows/${workflowEntryUuid}/comments`, { comment });
|
|
657
|
+
returnData.push({ json: result, pairedItem: { item: itemIndex } });
|
|
658
|
+
continue;
|
|
659
|
+
}
|
|
660
|
+
if (resource === 'workflowEntry' && operation === 'updateComment') {
|
|
661
|
+
const workflowEntryUuid = this.getNodeParameter('workflowEntryUuid', itemIndex);
|
|
662
|
+
const commentUuid = this.getNodeParameter('commentUuid', itemIndex);
|
|
663
|
+
const comment = this.getNodeParameter('comment', itemIndex);
|
|
664
|
+
const result = await requestApi('PUT', `/api/userworkflows/${workflowEntryUuid}/comments/${commentUuid}`, { comment });
|
|
665
|
+
returnData.push({ json: result, pairedItem: { item: itemIndex } });
|
|
666
|
+
continue;
|
|
667
|
+
}
|
|
668
|
+
if (resource === 'workflowEntry' && operation === 'deleteComment') {
|
|
669
|
+
const workflowEntryUuid = this.getNodeParameter('workflowEntryUuid', itemIndex);
|
|
670
|
+
const commentUuid = this.getNodeParameter('commentUuid', itemIndex);
|
|
671
|
+
const result = await requestApi('DELETE', `/api/userworkflows/${workflowEntryUuid}/comments/${commentUuid}`);
|
|
672
|
+
returnData.push({ json: result, pairedItem: { item: itemIndex } });
|
|
673
|
+
continue;
|
|
674
|
+
}
|
|
675
|
+
if (resource === 'task' && operation === 'create') {
|
|
676
|
+
const taskData = parseJsonInput(this.getNodeParameter('taskData', itemIndex, '{}'), {});
|
|
677
|
+
const result = await requestApi('POST', '/api/tasks', taskData);
|
|
678
|
+
returnData.push({ json: result, pairedItem: { item: itemIndex } });
|
|
679
|
+
continue;
|
|
680
|
+
}
|
|
681
|
+
if (resource === 'task' && operation === 'update') {
|
|
682
|
+
const taskUuid = this.getNodeParameter('taskUuid', itemIndex);
|
|
683
|
+
const taskData = parseJsonInput(this.getNodeParameter('taskData', itemIndex, '{}'), {});
|
|
684
|
+
const result = await requestApi('PUT', `/api/tasks/${taskUuid}`, taskData);
|
|
685
|
+
returnData.push({ json: result, pairedItem: { item: itemIndex } });
|
|
686
|
+
continue;
|
|
687
|
+
}
|
|
688
|
+
if (resource === 'task' && operation === 'deleteTask') {
|
|
689
|
+
const taskUuid = this.getNodeParameter('taskUuid', itemIndex);
|
|
690
|
+
const result = await requestApi('DELETE', `/api/tasks/${taskUuid}`);
|
|
691
|
+
returnData.push({ json: result, pairedItem: { item: itemIndex } });
|
|
692
|
+
continue;
|
|
693
|
+
}
|
|
694
|
+
if (resource === 'task' && operation === 'completeTask') {
|
|
695
|
+
const taskUuid = this.getNodeParameter('taskUuid', itemIndex);
|
|
696
|
+
const result = await requestApi('POST', `/api/tasks/complete/${taskUuid}`);
|
|
697
|
+
returnData.push({ json: result, pairedItem: { item: itemIndex } });
|
|
698
|
+
continue;
|
|
699
|
+
}
|
|
700
|
+
if (resource === 'task' && operation === 'uncompleteTask') {
|
|
701
|
+
const taskUuid = this.getNodeParameter('taskUuid', itemIndex);
|
|
702
|
+
const result = await requestApi('POST', `/api/tasks/uncomplete/${taskUuid}`);
|
|
703
|
+
returnData.push({ json: result, pairedItem: { item: itemIndex } });
|
|
704
|
+
continue;
|
|
705
|
+
}
|
|
706
|
+
if (resource === 'task' && operation === 'createComment') {
|
|
707
|
+
const taskUuid = this.getNodeParameter('taskUuid', itemIndex);
|
|
708
|
+
const comment = this.getNodeParameter('taskComment', itemIndex);
|
|
709
|
+
const result = await requestApi('POST', `/api/tasks/${taskUuid}/newcomment`, { comment });
|
|
710
|
+
returnData.push({ json: result, pairedItem: { item: itemIndex } });
|
|
711
|
+
continue;
|
|
712
|
+
}
|
|
713
|
+
if (resource === 'task' && operation === 'updateComment') {
|
|
714
|
+
const taskUuid = this.getNodeParameter('taskUuid', itemIndex);
|
|
715
|
+
const commentUuid = this.getNodeParameter('taskCommentUuid', itemIndex);
|
|
716
|
+
const comment = this.getNodeParameter('taskComment', itemIndex);
|
|
717
|
+
const result = await requestApi('PUT', `/api/tasks/${taskUuid}/comment/${commentUuid}`, { comment });
|
|
718
|
+
returnData.push({ json: result, pairedItem: { item: itemIndex } });
|
|
719
|
+
continue;
|
|
720
|
+
}
|
|
721
|
+
if (resource === 'task' && operation === 'deleteComment') {
|
|
722
|
+
const taskUuid = this.getNodeParameter('taskUuid', itemIndex);
|
|
723
|
+
const commentUuid = this.getNodeParameter('taskCommentUuid', itemIndex);
|
|
724
|
+
const result = await requestApi('DELETE', `/api/tasks/${taskUuid}/comment/${commentUuid}`);
|
|
725
|
+
returnData.push({ json: result, pairedItem: { item: itemIndex } });
|
|
726
|
+
continue;
|
|
727
|
+
}
|
|
728
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), new Error(`Unsupported combination: ${resource}.${operation}`), {
|
|
729
|
+
itemIndex,
|
|
730
|
+
});
|
|
731
|
+
}
|
|
732
|
+
catch (error) {
|
|
733
|
+
if (this.continueOnFail()) {
|
|
734
|
+
returnData.push({
|
|
735
|
+
json: { error: error.message },
|
|
736
|
+
pairedItem: { item: itemIndex },
|
|
737
|
+
});
|
|
738
|
+
continue;
|
|
739
|
+
}
|
|
740
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), error, { itemIndex });
|
|
741
|
+
}
|
|
742
|
+
}
|
|
743
|
+
return [returnData];
|
|
744
|
+
}
|
|
745
|
+
}
|
|
746
|
+
exports.Msfrog = Msfrog;
|
|
747
|
+
//# sourceMappingURL=Msfrog.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Msfrog.node.js","sourceRoot":"","sources":["../../../nodes/Msfrog/Msfrog.node.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "n8n-nodes-msfrog",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "n8n community node for MSFrog API access",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Leithon Gauci",
|
|
7
|
+
"email": "lgauci@airosoftware.com"
|
|
8
|
+
},
|
|
9
|
+
"license": "MIT",
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "https://github.com/LukeDes003/n8n-nodes-msfrog.git"
|
|
13
|
+
},
|
|
14
|
+
"homepage": "https://github.com/LukeDes003/n8n-nodes-msfrog#readme",
|
|
15
|
+
"bugs": {
|
|
16
|
+
"url": "https://github.com/LukeDes003/n8n-nodes-msfrog/issues"
|
|
17
|
+
},
|
|
18
|
+
"engines": {
|
|
19
|
+
"node": ">=22 <23"
|
|
20
|
+
},
|
|
21
|
+
"keywords": [
|
|
22
|
+
"n8n",
|
|
23
|
+
"n8n-community-node-package",
|
|
24
|
+
"msfrog",
|
|
25
|
+
"api"
|
|
26
|
+
],
|
|
27
|
+
"scripts": {
|
|
28
|
+
"dev": "n8n-node dev",
|
|
29
|
+
"build": "n8n-node build",
|
|
30
|
+
"build:watch": "n8n-node build --watch",
|
|
31
|
+
"lint": "n8n-node lint",
|
|
32
|
+
"lint:fix": "n8n-node lint --fix",
|
|
33
|
+
"release": "n8n-node release"
|
|
34
|
+
},
|
|
35
|
+
"files": [
|
|
36
|
+
"dist",
|
|
37
|
+
"README.md",
|
|
38
|
+
"LICENSE.md"
|
|
39
|
+
],
|
|
40
|
+
"publishConfig": {
|
|
41
|
+
"access": "public",
|
|
42
|
+
"provenance": true
|
|
43
|
+
},
|
|
44
|
+
"n8n": {
|
|
45
|
+
"n8nNodesApiVersion": 1,
|
|
46
|
+
"strict": true,
|
|
47
|
+
"credentials": [
|
|
48
|
+
"dist/credentials/MsfrogApi.credentials.js"
|
|
49
|
+
],
|
|
50
|
+
"nodes": [
|
|
51
|
+
"dist/nodes/Msfrog/Msfrog.node.js"
|
|
52
|
+
]
|
|
53
|
+
},
|
|
54
|
+
"peerDependencies": {
|
|
55
|
+
"n8n-workflow": "*"
|
|
56
|
+
},
|
|
57
|
+
"devDependencies": {
|
|
58
|
+
"@n8n/node-cli": "^0.32.1",
|
|
59
|
+
"n8n-workflow": "*",
|
|
60
|
+
"typescript": "^5.8.3"
|
|
61
|
+
}
|
|
62
|
+
}
|