n8n-nodes-acumatica 0.1.1
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 +21 -0
- package/README.md +30 -0
- package/dist/nodes/ACM_Default_24_200_001/acu.png +0 -0
- package/dist/nodes/ACM_Default_25_200_001/acu.png +0 -0
- package/dist/package-lock.json +32607 -0
- package/dist/package.json +48 -0
- package/dist/src/credentials/AcumaticaOAuth2Api.credentials.d.ts +9 -0
- package/dist/src/credentials/AcumaticaOAuth2Api.credentials.js +95 -0
- package/dist/src/credentials/AcumaticaOAuth2Api.d.ts +9 -0
- package/dist/src/credentials/AcumaticaOAuth2Api.js +95 -0
- package/dist/src/nodes/ACM_Default_24_200_001/ACM_Default_24_200_001.node.d.ts +4 -0
- package/dist/src/nodes/ACM_Default_24_200_001/ACM_Default_24_200_001.node.js +72 -0
- package/dist/src/nodes/ACM_Default_24_200_001/swagger.json +102005 -0
- package/dist/src/nodes/ACM_Default_25_200_001/ACM_Default_25_200_001.node.d.ts +4 -0
- package/dist/src/nodes/ACM_Default_25_200_001/ACM_Default_25_200_001.node.js +72 -0
- package/dist/src/nodes/ACM_Default_25_200_001/swagger.json +102239 -0
- package/dist/src/parsers/AcumaticaOperationParser.d.ts +7 -0
- package/dist/src/parsers/AcumaticaOperationParser.js +77 -0
- package/dist/src/parsers/AcumaticaResourceParser.d.ts +14 -0
- package/dist/src/parsers/AcumaticaResourceParser.js +97 -0
- package/dist/tsconfig.json +25 -0
- package/package.json +48 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "n8n-nodes-acumatica",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "n8n community nodes for Acumatica ERP API",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"homepage": "https://github.com/lekker-solutions/n8n-nodes-acumatica",
|
|
7
|
+
"author": {
|
|
8
|
+
"name": "Kyle Vanderstoep",
|
|
9
|
+
"email": "kyle@contou.com"
|
|
10
|
+
},
|
|
11
|
+
"repository": {
|
|
12
|
+
"type": "git",
|
|
13
|
+
"url": "https://github.com/lekker-solutions/n8n-nodes-acumatica.git"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [
|
|
16
|
+
"n8n-community-node-package",
|
|
17
|
+
"n8n",
|
|
18
|
+
"acumatica",
|
|
19
|
+
"erp"
|
|
20
|
+
],
|
|
21
|
+
"main": "index.js",
|
|
22
|
+
"scripts": {
|
|
23
|
+
"build": "tsc && gulp build:icons",
|
|
24
|
+
"dev": "tsc --watch"
|
|
25
|
+
},
|
|
26
|
+
"files": [
|
|
27
|
+
"dist"
|
|
28
|
+
],
|
|
29
|
+
"n8n": {
|
|
30
|
+
"n8nNodesApiVersion": 1,
|
|
31
|
+
"credentials": [
|
|
32
|
+
"dist/credentials/AcumaticaOAuth2Api.credentials.js"
|
|
33
|
+
],
|
|
34
|
+
"nodes": [
|
|
35
|
+
"dist/nodes/ACM_Default_24_200_001/ACM_Default_24_200_001.node.js",
|
|
36
|
+
"dist/nodes/ACM_Default_25_200_001/ACM_Default_25_200_001.node.js"
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
"devDependencies": {
|
|
40
|
+
"@types/node": "^20.0.0",
|
|
41
|
+
"gulp": "^4.0.2",
|
|
42
|
+
"n8n": "^1.120.4",
|
|
43
|
+
"typescript": "^5.0.0"
|
|
44
|
+
},
|
|
45
|
+
"dependencies": {
|
|
46
|
+
"@devlikeapro/n8n-openapi-node": "^0.1.4"
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { IAuthenticateGeneric, ICredentialTestRequest, ICredentialType, INodeProperties } from 'n8n-workflow';
|
|
2
|
+
export declare class AcumaticaOAuth2Api implements ICredentialType {
|
|
3
|
+
name: string;
|
|
4
|
+
displayName: string;
|
|
5
|
+
documentationUrl: string;
|
|
6
|
+
properties: INodeProperties[];
|
|
7
|
+
authenticate: IAuthenticateGeneric;
|
|
8
|
+
test: ICredentialTestRequest;
|
|
9
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AcumaticaOAuth2Api = void 0;
|
|
4
|
+
class AcumaticaOAuth2Api {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.name = 'acumaticaOAuth2Api';
|
|
7
|
+
this.displayName = 'Acumatica OAuth2 API';
|
|
8
|
+
this.documentationUrl = 'https://help.acumatica.com/';
|
|
9
|
+
this.properties = [
|
|
10
|
+
{
|
|
11
|
+
displayName: 'Grant Type',
|
|
12
|
+
name: 'grantType',
|
|
13
|
+
type: 'hidden',
|
|
14
|
+
default: 'authorizationCode',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
displayName: 'Acumatica Instance URL',
|
|
18
|
+
name: 'url',
|
|
19
|
+
type: 'string',
|
|
20
|
+
default: '',
|
|
21
|
+
placeholder: 'https://yourinstance.acumatica.com',
|
|
22
|
+
description: 'Base URL of your Acumatica instance (including tenant path)',
|
|
23
|
+
required: true,
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
displayName: 'Client ID',
|
|
27
|
+
name: 'clientId',
|
|
28
|
+
type: 'string',
|
|
29
|
+
default: '',
|
|
30
|
+
placeholder: '88358B02-A48D-A50E-F710-39C1636C30F6@MyTenant',
|
|
31
|
+
description: 'Client ID with tenant suffix (e.g., GUID@TenantName)',
|
|
32
|
+
required: true,
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
displayName: 'Client Secret',
|
|
36
|
+
name: 'clientSecret',
|
|
37
|
+
type: 'string',
|
|
38
|
+
typeOptions: {
|
|
39
|
+
password: true,
|
|
40
|
+
},
|
|
41
|
+
default: '',
|
|
42
|
+
required: true,
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
displayName: 'Authorization URL',
|
|
46
|
+
name: 'authUrl',
|
|
47
|
+
type: 'string',
|
|
48
|
+
default: '={{$credentials.url}}/identity/connect/authorize',
|
|
49
|
+
required: true,
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
displayName: 'Access Token URL',
|
|
53
|
+
name: 'accessTokenUrl',
|
|
54
|
+
type: 'string',
|
|
55
|
+
default: '={{$credentials.url}}/identity/connect/token',
|
|
56
|
+
required: true,
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
displayName: 'Scope',
|
|
60
|
+
name: 'scope',
|
|
61
|
+
type: 'string',
|
|
62
|
+
default: 'api offline_access',
|
|
63
|
+
description: 'Scopes: api (REST API access), offline_access (refresh tokens), api:concurrent_access (multiple sessions)',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
displayName: 'Auth URI Query Parameters',
|
|
67
|
+
name: 'authQueryParameters',
|
|
68
|
+
type: 'hidden',
|
|
69
|
+
default: '',
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
displayName: 'Authentication',
|
|
73
|
+
name: 'authentication',
|
|
74
|
+
type: 'hidden',
|
|
75
|
+
default: 'body',
|
|
76
|
+
},
|
|
77
|
+
];
|
|
78
|
+
this.authenticate = {
|
|
79
|
+
type: 'generic',
|
|
80
|
+
properties: {
|
|
81
|
+
headers: {
|
|
82
|
+
Authorization: '=Bearer {{$credentials.oauthTokenData.access_token}}',
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
this.test = {
|
|
87
|
+
request: {
|
|
88
|
+
baseURL: '={{$credentials?.url}}',
|
|
89
|
+
url: '/entity/Default/24.200.001',
|
|
90
|
+
method: 'GET',
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
exports.AcumaticaOAuth2Api = AcumaticaOAuth2Api;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { IAuthenticateGeneric, ICredentialTestRequest, ICredentialType, INodeProperties } from 'n8n-workflow';
|
|
2
|
+
export declare class AcumaticaOAuth2Api implements ICredentialType {
|
|
3
|
+
name: string;
|
|
4
|
+
displayName: string;
|
|
5
|
+
documentationUrl: string;
|
|
6
|
+
properties: INodeProperties[];
|
|
7
|
+
authenticate: IAuthenticateGeneric;
|
|
8
|
+
test: ICredentialTestRequest;
|
|
9
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AcumaticaOAuth2Api = void 0;
|
|
4
|
+
class AcumaticaOAuth2Api {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.name = 'acumaticaOAuth2Api';
|
|
7
|
+
this.displayName = 'Acumatica OAuth2 API';
|
|
8
|
+
this.documentationUrl = 'https://help.acumatica.com/';
|
|
9
|
+
this.properties = [
|
|
10
|
+
{
|
|
11
|
+
displayName: 'Grant Type',
|
|
12
|
+
name: 'grantType',
|
|
13
|
+
type: 'hidden',
|
|
14
|
+
default: 'authorizationCode',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
displayName: 'Acumatica Instance URL',
|
|
18
|
+
name: 'url',
|
|
19
|
+
type: 'string',
|
|
20
|
+
default: '',
|
|
21
|
+
placeholder: 'https://yourinstance.acumatica.com',
|
|
22
|
+
description: 'Base URL of your Acumatica instance (including tenant path)',
|
|
23
|
+
required: true,
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
displayName: 'Client ID',
|
|
27
|
+
name: 'clientId',
|
|
28
|
+
type: 'string',
|
|
29
|
+
default: '',
|
|
30
|
+
placeholder: '88358B02-A48D-A50E-F710-39C1636C30F6@MyTenant',
|
|
31
|
+
description: 'Client ID with tenant suffix (e.g., GUID@TenantName)',
|
|
32
|
+
required: true,
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
displayName: 'Client Secret',
|
|
36
|
+
name: 'clientSecret',
|
|
37
|
+
type: 'string',
|
|
38
|
+
typeOptions: {
|
|
39
|
+
password: true,
|
|
40
|
+
},
|
|
41
|
+
default: '',
|
|
42
|
+
required: true,
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
displayName: 'Authorization URL',
|
|
46
|
+
name: 'authUrl',
|
|
47
|
+
type: 'string',
|
|
48
|
+
default: '={{$credentials.url}}/identity/connect/authorize',
|
|
49
|
+
required: true,
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
displayName: 'Access Token URL',
|
|
53
|
+
name: 'accessTokenUrl',
|
|
54
|
+
type: 'string',
|
|
55
|
+
default: '={{$credentials.url}}/identity/connect/token',
|
|
56
|
+
required: true,
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
displayName: 'Scope',
|
|
60
|
+
name: 'scope',
|
|
61
|
+
type: 'string',
|
|
62
|
+
default: 'api offline_access',
|
|
63
|
+
description: 'Scopes: api (REST API access), offline_access (refresh tokens), api:concurrent_access (multiple sessions)',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
displayName: 'Auth URI Query Parameters',
|
|
67
|
+
name: 'authQueryParameters',
|
|
68
|
+
type: 'hidden',
|
|
69
|
+
default: '',
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
displayName: 'Authentication',
|
|
73
|
+
name: 'authentication',
|
|
74
|
+
type: 'hidden',
|
|
75
|
+
default: 'body',
|
|
76
|
+
},
|
|
77
|
+
];
|
|
78
|
+
this.authenticate = {
|
|
79
|
+
type: 'generic',
|
|
80
|
+
properties: {
|
|
81
|
+
headers: {
|
|
82
|
+
Authorization: '=Bearer {{$credentials.oauthTokenData.access_token}}',
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
this.test = {
|
|
87
|
+
request: {
|
|
88
|
+
baseURL: '={{$credentials?.url}}',
|
|
89
|
+
url: '/entity/Default/24.200.001',
|
|
90
|
+
method: 'GET',
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
exports.AcumaticaOAuth2Api = AcumaticaOAuth2Api;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.ACM_Default_24_200_001 = void 0;
|
|
37
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
38
|
+
const n8n_openapi_node_1 = require("@devlikeapro/n8n-openapi-node");
|
|
39
|
+
const AcumaticaResourceParser_1 = require("../../parsers/AcumaticaResourceParser");
|
|
40
|
+
const AcumaticaOperationParser_1 = require("../../parsers/AcumaticaOperationParser");
|
|
41
|
+
const doc = __importStar(require("./swagger.json"));
|
|
42
|
+
const parser = new n8n_openapi_node_1.N8NPropertiesBuilder(doc, {
|
|
43
|
+
resource: new AcumaticaResourceParser_1.AcumaticaResourceParser(),
|
|
44
|
+
operation: new AcumaticaOperationParser_1.AcumaticaOperationParser()
|
|
45
|
+
});
|
|
46
|
+
const properties = parser.build();
|
|
47
|
+
class ACM_Default_24_200_001 {
|
|
48
|
+
constructor() {
|
|
49
|
+
this.description = {
|
|
50
|
+
displayName: 'Acumatica Endpoint Default.24.200.001',
|
|
51
|
+
name: 'ACM.Default.24.200.001',
|
|
52
|
+
icon: 'file:acu.png',
|
|
53
|
+
group: ['transform'],
|
|
54
|
+
version: 1,
|
|
55
|
+
subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
|
|
56
|
+
description: 'Interact with Acumatica Endpoint Default.24.200.001',
|
|
57
|
+
defaults: { name: 'Your Service' },
|
|
58
|
+
inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
59
|
+
outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
60
|
+
credentials: [{ name: 'acumaticaOAuth2Api', required: true }],
|
|
61
|
+
requestDefaults: {
|
|
62
|
+
headers: {
|
|
63
|
+
Accept: 'application/json',
|
|
64
|
+
'Content-Type': 'application/json',
|
|
65
|
+
},
|
|
66
|
+
baseURL: '={{$credentials.url}}',
|
|
67
|
+
},
|
|
68
|
+
properties: properties,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.ACM_Default_24_200_001 = ACM_Default_24_200_001;
|