n8n-nodes-sqlaccounting 1.0.0 â 1.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 +21 -21
- package/README.md +72 -98
- package/dist/credentials/SqlAccountingApi.credentials.d.ts.map +1 -1
- package/dist/credentials/SqlAccountingApi.credentials.js +32 -27
- package/dist/nodes/SqlAccounting/SqlAccounting.node.d.ts +3 -0
- package/dist/nodes/SqlAccounting/SqlAccounting.node.d.ts.map +1 -1
- package/dist/nodes/SqlAccounting/SqlAccounting.node.js +23 -318
- package/dist/nodes/SqlAccounting/config.d.ts +8 -0
- package/dist/nodes/SqlAccounting/config.d.ts.map +1 -0
- package/dist/nodes/SqlAccounting/config.js +12 -0
- package/dist/nodes/SqlAccounting/contractTypes.d.ts +48 -0
- package/dist/nodes/SqlAccounting/contractTypes.d.ts.map +1 -0
- package/dist/nodes/SqlAccounting/contractTypes.js +12 -0
- package/dist/nodes/SqlAccounting/errors.d.ts +17 -0
- package/dist/nodes/SqlAccounting/errors.d.ts.map +1 -0
- package/dist/nodes/SqlAccounting/errors.js +47 -0
- package/dist/nodes/SqlAccounting/execute/readBody.d.ts +6 -0
- package/dist/nodes/SqlAccounting/execute/readBody.d.ts.map +1 -0
- package/dist/nodes/SqlAccounting/execute/readBody.js +67 -0
- package/dist/nodes/SqlAccounting/execute/readFilters.d.ts +4 -0
- package/dist/nodes/SqlAccounting/execute/readFilters.d.ts.map +1 -0
- package/dist/nodes/SqlAccounting/execute/readFilters.js +11 -0
- package/dist/nodes/SqlAccounting/execute/runOperation.d.ts +13 -0
- package/dist/nodes/SqlAccounting/execute/runOperation.d.ts.map +1 -0
- package/dist/nodes/SqlAccounting/execute/runOperation.js +68 -0
- package/dist/nodes/SqlAccounting/lookups.d.ts +6 -0
- package/dist/nodes/SqlAccounting/lookups.d.ts.map +1 -0
- package/dist/nodes/SqlAccounting/lookups.js +53 -0
- package/dist/nodes/SqlAccounting/normalize.d.ts +5 -0
- package/dist/nodes/SqlAccounting/normalize.d.ts.map +1 -0
- package/dist/nodes/SqlAccounting/normalize.js +18 -0
- package/dist/nodes/SqlAccounting/pagination.d.ts +10 -0
- package/dist/nodes/SqlAccounting/pagination.d.ts.map +1 -0
- package/dist/nodes/SqlAccounting/pagination.js +29 -0
- package/dist/nodes/SqlAccounting/registry.d.ts +30 -0
- package/dist/nodes/SqlAccounting/registry.d.ts.map +1 -0
- package/dist/nodes/SqlAccounting/registry.generated.d.ts +17 -0
- package/dist/nodes/SqlAccounting/registry.generated.d.ts.map +1 -0
- package/dist/nodes/SqlAccounting/registry.generated.js +1251 -0
- package/dist/nodes/SqlAccounting/registry.js +61 -0
- package/dist/nodes/SqlAccounting/request.d.ts +9 -0
- package/dist/nodes/SqlAccounting/request.d.ts.map +1 -0
- package/dist/nodes/SqlAccounting/request.js +44 -0
- package/dist/nodes/SqlAccounting/schema/assets.d.ts +3 -0
- package/dist/nodes/SqlAccounting/schema/assets.d.ts.map +1 -0
- package/dist/nodes/SqlAccounting/schema/assets.js +34 -0
- package/dist/nodes/SqlAccounting/schema/cast.d.ts +5 -0
- package/dist/nodes/SqlAccounting/schema/cast.d.ts.map +1 -0
- package/dist/nodes/SqlAccounting/schema/cast.js +99 -0
- package/dist/nodes/SqlAccounting/schema/documents.d.ts +3 -0
- package/dist/nodes/SqlAccounting/schema/documents.d.ts.map +1 -0
- package/dist/nodes/SqlAccounting/schema/documents.js +93 -0
- package/dist/nodes/SqlAccounting/schema/finance.d.ts +3 -0
- package/dist/nodes/SqlAccounting/schema/finance.d.ts.map +1 -0
- package/dist/nodes/SqlAccounting/schema/finance.js +81 -0
- package/dist/nodes/SqlAccounting/schema/index.d.ts +8 -0
- package/dist/nodes/SqlAccounting/schema/index.d.ts.map +1 -0
- package/dist/nodes/SqlAccounting/schema/index.js +48 -0
- package/dist/nodes/SqlAccounting/schema/parties.d.ts +3 -0
- package/dist/nodes/SqlAccounting/schema/parties.d.ts.map +1 -0
- package/dist/nodes/SqlAccounting/schema/parties.js +64 -0
- package/dist/nodes/SqlAccounting/schema/simple.d.ts +11 -0
- package/dist/nodes/SqlAccounting/schema/simple.d.ts.map +1 -0
- package/dist/nodes/SqlAccounting/schema/simple.js +41 -0
- package/dist/nodes/SqlAccounting/schema/stock.d.ts +3 -0
- package/dist/nodes/SqlAccounting/schema/stock.d.ts.map +1 -0
- package/dist/nodes/SqlAccounting/schema/stock.js +46 -0
- package/dist/nodes/SqlAccounting/schema/types.d.ts +31 -0
- package/dist/nodes/SqlAccounting/schema/types.d.ts.map +1 -0
- package/dist/nodes/SqlAccounting/schema/types.js +3 -0
- package/dist/nodes/SqlAccounting/sqlaccounting.svg +7 -7
- package/dist/nodes/SqlAccounting/templates.d.ts +2 -0
- package/dist/nodes/SqlAccounting/templates.d.ts.map +1 -0
- package/dist/nodes/SqlAccounting/templates.js +50 -0
- package/dist/nodes/SqlAccounting/transport.d.ts +6 -0
- package/dist/nodes/SqlAccounting/transport.d.ts.map +1 -0
- package/dist/nodes/SqlAccounting/transport.js +30 -0
- package/dist/nodes/SqlAccounting/ui/fieldProps.d.ts +5 -0
- package/dist/nodes/SqlAccounting/ui/fieldProps.d.ts.map +1 -0
- package/dist/nodes/SqlAccounting/ui/fieldProps.js +35 -0
- package/dist/nodes/SqlAccounting/ui/names.d.ts +15 -0
- package/dist/nodes/SqlAccounting/ui/names.d.ts.map +1 -0
- package/dist/nodes/SqlAccounting/ui/names.js +28 -0
- package/dist/nodes/SqlAccounting/ui/properties.d.ts +3 -0
- package/dist/nodes/SqlAccounting/ui/properties.d.ts.map +1 -0
- package/dist/nodes/SqlAccounting/ui/properties.js +296 -0
- package/dist/nodes/SqlAccounting/validation.d.ts +7 -0
- package/dist/nodes/SqlAccounting/validation.d.ts.map +1 -0
- package/dist/nodes/SqlAccounting/validation.js +74 -0
- package/package.json +69 -58
- package/dist/nodes/SqlAccounting/operations.d.ts +0 -34
- package/dist/nodes/SqlAccounting/operations.d.ts.map +0 -1
- package/dist/nodes/SqlAccounting/operations.js +0 -177
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 Yew Choong Hau
|
|
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.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Yew Choong Hau
|
|
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
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
An [n8n](https://n8n.io) community node for the [SQL Accounting](https://www.sql.com.my) REST API (Malaysia).
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
It connects n8n to SQL Accounting through the SQL Accounting n8n Node service: a subscription proxy that signs your requests (AWS SigV4), enforces fair use and forwards them to `api.sql.my`.
|
|
6
6
|
|
|
7
7
|
[](https://www.npmjs.com/package/n8n-nodes-sqlaccounting)
|
|
8
8
|
[](LICENSE)
|
|
@@ -11,153 +11,127 @@ Connects SQL Accounting to any automation via the SQL Accounting n8n Node platfo
|
|
|
11
11
|
|
|
12
12
|
## Features
|
|
13
13
|
|
|
14
|
-
- **81
|
|
15
|
-
- **
|
|
16
|
-
- **
|
|
17
|
-
- **
|
|
18
|
-
- **
|
|
14
|
+
- **81 resources**: master data, sales, purchase, AR, AP, GL, stock and reports.
|
|
15
|
+
- **Typed fields.** Required inputs are shown as real fields. Integers, booleans, dates and decimals are sent in the type the API expects. Enumerations (account type, journal, term type) are dropdowns.
|
|
16
|
+
- **Dropdowns that load from your company.** Fields such as Currency, Terms, Tax, Account, Customer, Supplier, Stock Item and Location list your own records.
|
|
17
|
+
- **Line-item editor** for sales, purchase, stock and journal documents. A raw JSON mode (pre-filled with a template) is available for every document.
|
|
18
|
+
- **Validation before sending.** Missing required fields, bad dates, missing lines, unbalanced journals and non-numeric IDs are reported all at once, before any request is made.
|
|
19
|
+
- **Return All** with correct 50-record paging, a Limit option and a Max Pages safety cap.
|
|
20
|
+
- **Filters** with a per-resource field list. Wildcards (`*term*`) and ranges (`2025-01-01~2025-01-31`) work on SQL Account 5.2025.1061.890 and later.
|
|
21
|
+
- **Zero runtime dependencies.**
|
|
19
22
|
|
|
20
23
|
---
|
|
21
24
|
|
|
22
25
|
## Prerequisites
|
|
23
26
|
|
|
24
|
-
1.
|
|
25
|
-
2. A SQL Accounting API access key and secret key (
|
|
26
|
-
3. A
|
|
27
|
+
1. SQL Accounting with the REST API enabled.
|
|
28
|
+
2. A SQL Accounting API **access key** and **secret key** (SQL Account API settings).
|
|
29
|
+
3. A **subscription token** (`sqlnode_...`) from the SQL Accounting n8n Node portal.
|
|
27
30
|
|
|
28
31
|
---
|
|
29
32
|
|
|
30
33
|
## Installation
|
|
31
34
|
|
|
32
|
-
|
|
35
|
+
In n8n: **Settings â Community Nodes â Install** â `n8n-nodes-sqlaccounting`.
|
|
33
36
|
|
|
34
|
-
|
|
35
|
-
Settings â Community Nodes â Install â n8n-nodes-sqlaccounting
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
### Self-hosted via CLI
|
|
39
|
-
|
|
40
|
-
```bash
|
|
41
|
-
npm install n8n-nodes-sqlaccounting
|
|
42
|
-
```
|
|
37
|
+
Self-hosted via CLI: `npm install n8n-nodes-sqlaccounting`.
|
|
43
38
|
|
|
44
39
|
---
|
|
45
40
|
|
|
46
41
|
## Credentials
|
|
47
42
|
|
|
48
|
-
|
|
43
|
+
Create a **SQL Accounting API** credential:
|
|
49
44
|
|
|
50
45
|
| Field | Description | Default |
|
|
51
46
|
|-------|-------------|---------|
|
|
52
|
-
| Platform
|
|
53
|
-
| SQL Access Key | From SQL Account API settings |
|
|
54
|
-
| SQL Secret Key | From SQL Account API settings
|
|
47
|
+
| Platform Token | Your `sqlnode_...` subscription token | none |
|
|
48
|
+
| SQL Access Key | From SQL Account API settings, format `<key_id>.sql.my/APIUSER` | none |
|
|
49
|
+
| SQL Secret Key | From SQL Account API settings | none |
|
|
55
50
|
| Service | SigV4 service name | `sqlaccount` |
|
|
56
51
|
| Region | SigV4 region | `ap-southeast-5` |
|
|
52
|
+
| Proxy URL | Advanced. Only for self-hosting or local testing | service URL |
|
|
57
53
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
---
|
|
61
|
-
|
|
62
|
-
## Credit Costs
|
|
54
|
+
**Test credential** calls `profile.get` and checks the token, the subscription and your SQL keys at once.
|
|
63
55
|
|
|
64
|
-
|
|
65
|
-
|----------------|-----------------|
|
|
66
|
-
| List / Get / Report | 1 |
|
|
67
|
-
| Create | 3 |
|
|
68
|
-
| Update (auto GET + PUT) | 4 total |
|
|
69
|
-
| Delete | 5 |
|
|
56
|
+
### How your SQL keys are handled
|
|
70
57
|
|
|
71
|
-
|
|
58
|
+
The node cannot sign requests itself, so your SQL access and secret keys are sent with each request over HTTPS to the proxy. The proxy holds them in memory only long enough to sign that single request. They are never stored and never logged, and request and response bodies are not logged either. The proxy sees the accounting data in transit, so use a SQL Account API user with the minimum rights you need.
|
|
72
59
|
|
|
73
60
|
---
|
|
74
61
|
|
|
75
|
-
##
|
|
62
|
+
## Using the node
|
|
76
63
|
|
|
77
|
-
###
|
|
64
|
+
### Records (master data)
|
|
78
65
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
66
|
+
1. Pick a **Resource** (for example Currency) and an **Operation**.
|
|
67
|
+
2. **Create** shows the required fields as inputs. Everything else is under **Additional Fields**. Use **Extra Fields (JSON)** for anything not listed, such as the `sdsbranch` sub-array on a customer.
|
|
68
|
+
3. **Update** shows **Fields to Update**. Only what you set is sent.
|
|
69
|
+
4. **Get / Update / Delete** need a record identifier. The field is labelled by what the resource uses:
|
|
70
|
+
- **Code**: the record code, for example `USD`.
|
|
71
|
+
- **DocKey / AutoKey**: SQL Account's internal numeric ID, for example for Tax, Shipper, Tariff, Batch, Stock Item and Asset records. This is not the code. Use **List** with a filter (for example `code=ST-6%`) and read `autokey` or `dockey` from the result.
|
|
82
72
|
|
|
83
|
-
###
|
|
73
|
+
### Documents (invoices, orders, journals, payments)
|
|
84
74
|
|
|
85
|
-
|
|
86
|
-
|
|
75
|
+
1. Fill the required header fields (customer or supplier code, date).
|
|
76
|
+
2. Add **Line Items**.
|
|
77
|
+
3. Or switch on **Use Raw JSON Instead**. The body is pre-filled with a template for that document type.
|
|
87
78
|
|
|
88
|
-
|
|
79
|
+
Example, a journal entry: set Document Date, add two lines (`Account`, `Debit`/`Credit`). Totals must balance, otherwise the node tells you before sending.
|
|
89
80
|
|
|
90
|
-
|
|
91
|
-
`purchasedebitnote` `purchasecancellednote` `cashpurchase` `goodsreceived`
|
|
92
|
-
`extragoodsreceived`
|
|
81
|
+
### Lists, filters and paging
|
|
93
82
|
|
|
94
|
-
|
|
83
|
+
- **Return All** fetches every page (50 records each), up to **Max Pages**.
|
|
84
|
+
- Without Return All, **Limit** (1 to 50) and **Offset** apply.
|
|
85
|
+
- **Filters** lists the fields of the resource. **Custom Filters** takes any API field name.
|
|
95
86
|
|
|
96
|
-
|
|
97
|
-
`customerpayment` `customerdeposit` `customerrefund` `customercontra`
|
|
87
|
+
### Deleting
|
|
98
88
|
|
|
99
|
-
|
|
89
|
+
Delete returns `{ "success": true, "resource": "...", "deleted": <id> }`.
|
|
100
90
|
|
|
101
|
-
|
|
102
|
-
`supplierpayment` `supplierdeposit` `supplierrefund` `suppliercontra`
|
|
91
|
+
---
|
|
103
92
|
|
|
104
|
-
|
|
93
|
+
## Troubleshooting
|
|
105
94
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
95
|
+
| Error code | Meaning | Fix |
|
|
96
|
+
|------------|---------|-----|
|
|
97
|
+
| `invalid_token` | Token wrong or revoked | Check Platform Token in the credential, or generate a new one in the portal |
|
|
98
|
+
| `subscription_inactive` | No active subscription | Renew in the portal |
|
|
99
|
+
| `rate_limited` | Over 120 requests per minute per token | Wait and retry, or slow the workflow |
|
|
100
|
+
| `sql_auth_failed` | SQL Account rejected the keys | Check SQL Access Key and Secret Key |
|
|
101
|
+
| `validation_failed` | Input rejected (field and hint are shown) | Fix the named field |
|
|
102
|
+
| `upstream_error` | SQL Account returned an error | Read the message and the upstream status |
|
|
103
|
+
| `unsupported_version` | Node and proxy versions differ | Update the node |
|
|
104
|
+
| `internal_error` | Proxy bug | Report it with the request id |
|
|
109
105
|
|
|
110
|
-
|
|
106
|
+
Common SQL Account messages:
|
|
111
107
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
`stockphysicalworksheet` `stockreorderadvice` `stockserialnumberconflict`
|
|
115
|
-
`stockserialnumberoutstanding`
|
|
108
|
+
- `not a valid floating point value`: a code was used where an AutoKey or DocKey is required.
|
|
109
|
+
- Empty bodies crash the SQL Account backend, so the node never sends them.
|
|
116
110
|
|
|
117
111
|
---
|
|
118
112
|
|
|
119
|
-
##
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
"code": "CUSTOMER001",
|
|
128
|
-
"description": "Monthly consulting services",
|
|
129
|
-
"currencycode": "MYR",
|
|
130
|
-
"currencyrate": 1,
|
|
131
|
-
"docamt": 1060.00,
|
|
132
|
-
"sdsdocdetail": [
|
|
133
|
-
{
|
|
134
|
-
"itemcode": "SVC001",
|
|
135
|
-
"description": "Consulting service",
|
|
136
|
-
"qty": 1,
|
|
137
|
-
"uom": "UNIT",
|
|
138
|
-
"unitprice": 1000.00,
|
|
139
|
-
"disc": 0,
|
|
140
|
-
"tax": "SR6",
|
|
141
|
-
"taxamt": 60.00,
|
|
142
|
-
"localamt": 1000.00
|
|
143
|
-
}
|
|
144
|
-
]
|
|
145
|
-
}
|
|
113
|
+
## Development
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
npm install --legacy-peer-deps
|
|
117
|
+
npm test # unit and integration tests
|
|
118
|
+
npm run test:cov # with coverage
|
|
119
|
+
npm run lint
|
|
120
|
+
npm run build
|
|
146
121
|
```
|
|
147
122
|
|
|
148
|
-
|
|
123
|
+
Local testing without the cloud service:
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
npm run mock-proxy # contract-compliant mock on http://localhost:8787, token sqlnode_test
|
|
127
|
+
```
|
|
149
128
|
|
|
150
|
-
|
|
129
|
+
Then create a credential with Platform Token `sqlnode_test`, any SQL keys, and Proxy URL `http://localhost:8787`.
|
|
151
130
|
|
|
152
|
-
|
|
153
|
-
|-------|-------|-----|
|
|
154
|
-
| Authentication failed | Invalid platform API key | Check the Platform API Key in your credential |
|
|
155
|
-
| Insufficient credits | Balance is zero | Top up at the portal |
|
|
156
|
-
| 4xx from SQL Accounting | Bad request data | Check your JSON body or Record ID |
|
|
157
|
-
| 5xx from SQL Accounting | SQL Accounting server error | No credit charged â retry later |
|
|
131
|
+
The contract between the node and the proxy is in [contract/CONTRACT.md](contract/CONTRACT.md). The resource and operation list is generated from [contract/operations.json](contract/operations.json) (`npm run gen:registry`); tests fail if the two drift.
|
|
158
132
|
|
|
159
133
|
---
|
|
160
134
|
|
|
161
135
|
## License
|
|
162
136
|
|
|
163
|
-
|
|
137
|
+
MIT
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqlAccountingApi.credentials.d.ts","sourceRoot":"","sources":["../../credentials/SqlAccountingApi.credentials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EACf,eAAe,EACf,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"SqlAccountingApi.credentials.d.ts","sourceRoot":"","sources":["../../credentials/SqlAccountingApi.credentials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EACf,eAAe,EACf,MAAM,cAAc,CAAC;AAGtB,qBAAa,gBAAiB,YAAW,eAAe;IACvD,IAAI,SAAsB;IAC1B,WAAW,SAAwB;IACnC,gBAAgB,SAA2D;IAG3E,YAAY,EAAE,oBAAoB,CAOhC;IAGF,IAAI,EAAE,sBAAsB,CAoB1B;IAEF,UAAU,EAAE,eAAe,EAAE,CAuD3B;CACF"}
|
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SqlAccountingApi = void 0;
|
|
4
|
-
|
|
5
|
-
const EDGE_FUNCTION_BASE = 'https://cqcxkvptxgslpneeobhv.supabase.co/functions/v1';
|
|
4
|
+
const config_1 = require("../nodes/SqlAccounting/config");
|
|
6
5
|
class SqlAccountingApi {
|
|
7
6
|
constructor() {
|
|
8
7
|
this.name = 'sqlAccountingApi';
|
|
9
8
|
this.displayName = 'SQL Accounting API';
|
|
10
9
|
this.documentationUrl = 'https://github.com/laurentyew/n8n-nodes-sqlaccounting';
|
|
11
|
-
//
|
|
12
|
-
// This is what allows httpRequestWithAuthentication() to work correctly
|
|
13
|
-
// and satisfies the no-http-request-with-manual-auth linter rule.
|
|
10
|
+
// Injects the platform token as a Bearer header on every request made with this credential.
|
|
14
11
|
this.authenticate = {
|
|
15
12
|
type: 'generic',
|
|
16
13
|
properties: {
|
|
@@ -19,37 +16,37 @@ class SqlAccountingApi {
|
|
|
19
16
|
},
|
|
20
17
|
},
|
|
21
18
|
};
|
|
22
|
-
//
|
|
23
|
-
// Calls profile.get (1 credit) to verify both the platform key AND
|
|
24
|
-
// the SQL Accounting credentials are valid.
|
|
19
|
+
// Powers the "Test credential" button: calls profile.get to verify both the token and the SQL keys.
|
|
25
20
|
this.test = {
|
|
26
21
|
request: {
|
|
27
|
-
baseURL:
|
|
28
|
-
url: '/sqlaccount',
|
|
22
|
+
baseURL: '={{$credentials.proxyBaseUrl}}',
|
|
23
|
+
url: '/functions/v1/sqlaccount',
|
|
29
24
|
method: 'POST',
|
|
30
25
|
body: {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
26
|
+
contract_version: 1,
|
|
27
|
+
sql: {
|
|
28
|
+
access_key: '={{$credentials.sqlAccessKey}}',
|
|
29
|
+
secret_key: '={{$credentials.sqlSecretKey}}',
|
|
30
|
+
region: '={{$credentials.region}}',
|
|
31
|
+
service: '={{$credentials.service}}',
|
|
32
|
+
},
|
|
35
33
|
operation: 'profile.get',
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
body: '',
|
|
34
|
+
path_param: null,
|
|
35
|
+
query: {},
|
|
36
|
+
body: null,
|
|
40
37
|
},
|
|
41
38
|
json: true,
|
|
42
39
|
},
|
|
43
40
|
};
|
|
44
41
|
this.properties = [
|
|
45
42
|
{
|
|
46
|
-
displayName: 'Platform
|
|
43
|
+
displayName: 'Platform Token',
|
|
47
44
|
name: 'platformApiKey',
|
|
48
45
|
type: 'string',
|
|
49
46
|
typeOptions: { password: true },
|
|
50
47
|
default: '',
|
|
51
48
|
required: true,
|
|
52
|
-
description: 'Your
|
|
49
|
+
description: 'Your subscription token from the SQL Accounting n8n Node portal. Starts with sqlnode_.',
|
|
53
50
|
placeholder: 'sqlnode_...',
|
|
54
51
|
},
|
|
55
52
|
{
|
|
@@ -60,7 +57,7 @@ class SqlAccountingApi {
|
|
|
60
57
|
default: '',
|
|
61
58
|
required: true,
|
|
62
59
|
description: 'Your SQL Accounting API access key from the SQL Account API settings page',
|
|
63
|
-
placeholder: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.sql.my/
|
|
60
|
+
placeholder: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.sql.my/APIUSER',
|
|
64
61
|
},
|
|
65
62
|
{
|
|
66
63
|
displayName: 'SQL Secret Key',
|
|
@@ -69,26 +66,34 @@ class SqlAccountingApi {
|
|
|
69
66
|
typeOptions: { password: true },
|
|
70
67
|
default: '',
|
|
71
68
|
required: true,
|
|
72
|
-
description: 'Your SQL Accounting API secret key.
|
|
69
|
+
description: 'Your SQL Accounting API secret key. It is sent with each request over HTTPS, used in memory to sign that single request, and never stored or logged.',
|
|
73
70
|
},
|
|
74
71
|
{
|
|
75
72
|
displayName: 'Service',
|
|
76
73
|
name: 'service',
|
|
77
74
|
type: 'string',
|
|
78
|
-
default:
|
|
75
|
+
default: config_1.DEFAULT_SERVICE,
|
|
79
76
|
required: true,
|
|
80
|
-
description: 'SigV4 service name.
|
|
77
|
+
description: 'SigV4 service name. Only change if instructed by SQL Accounting support.',
|
|
81
78
|
},
|
|
82
79
|
{
|
|
83
80
|
displayName: 'Region',
|
|
84
81
|
name: 'region',
|
|
85
82
|
type: 'string',
|
|
86
|
-
default:
|
|
83
|
+
default: config_1.DEFAULT_REGION,
|
|
87
84
|
required: true,
|
|
88
|
-
description: 'SigV4 region.
|
|
85
|
+
description: 'SigV4 region. Only change if instructed by SQL Accounting support.',
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
displayName: 'Proxy URL',
|
|
89
|
+
name: 'proxyBaseUrl',
|
|
90
|
+
type: 'string',
|
|
91
|
+
default: config_1.PROXY_BASE_URL,
|
|
92
|
+
required: true,
|
|
93
|
+
description: 'Advanced. Only change to self-host the proxy or for local testing.',
|
|
89
94
|
},
|
|
90
95
|
];
|
|
91
96
|
}
|
|
92
97
|
}
|
|
93
98
|
exports.SqlAccountingApi = SqlAccountingApi;
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3FsQWNjb3VudGluZ0FwaS5jcmVkZW50aWFscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2NyZWRlbnRpYWxzL1NxbEFjY291bnRpbmdBcGkuY3JlZGVudGlhbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBTUEsMERBQWdHO0FBRWhHLE1BQWEsZ0JBQWdCO0lBQTdCO1FBQ0MsU0FBSSxHQUFHLGtCQUFrQixDQUFDO1FBQzFCLGdCQUFXLEdBQUcsb0JBQW9CLENBQUM7UUFDbkMscUJBQWdCLEdBQUcsdURBQXVELENBQUM7UUFFM0UsNEZBQTRGO1FBQzVGLGlCQUFZLEdBQXlCO1lBQ3BDLElBQUksRUFBRSxTQUFTO1lBQ2YsVUFBVSxFQUFFO2dCQUNYLE9BQU8sRUFBRTtvQkFDUixhQUFhLEVBQUUseUNBQXlDO2lCQUN4RDthQUNEO1NBQ0QsQ0FBQztRQUVGLG9HQUFvRztRQUNwRyxTQUFJLEdBQTJCO1lBQzlCLE9BQU8sRUFBRTtnQkFDUixPQUFPLEVBQUUsZ0NBQWdDO2dCQUN6QyxHQUFHLEVBQUUsMEJBQTBCO2dCQUMvQixNQUFNLEVBQUUsTUFBTTtnQkFDZCxJQUFJLEVBQUU7b0JBQ0wsZ0JBQWdCLEVBQUUsQ0FBQztvQkFDbkIsR0FBRyxFQUFFO3dCQUNKLFVBQVUsRUFBRSxnQ0FBZ0M7d0JBQzVDLFVBQVUsRUFBRSxnQ0FBZ0M7d0JBQzVDLE1BQU0sRUFBRSwwQkFBMEI7d0JBQ2xDLE9BQU8sRUFBRSwyQkFBMkI7cUJBQ3BDO29CQUNELFNBQVMsRUFBRSxhQUFhO29CQUN4QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsS0FBSyxFQUFFLEVBQUU7b0JBQ1QsSUFBSSxFQUFFLElBQUk7aUJBQ1Y7Z0JBQ0QsSUFBSSxFQUFFLElBQUk7YUFDVjtTQUNELENBQUM7UUFFRixlQUFVLEdBQXNCO1lBQy9CO2dCQUNDLFdBQVcsRUFBRSxnQkFBZ0I7Z0JBQzdCLElBQUksRUFBRSxnQkFBZ0I7Z0JBQ3RCLElBQUksRUFBRSxRQUFRO2dCQUNkLFdBQVcsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBQy9CLE9BQU8sRUFBRSxFQUFFO2dCQUNYLFFBQVEsRUFBRSxJQUFJO2dCQUNkLFdBQVcsRUFBRSx3RkFBd0Y7Z0JBQ3JHLFdBQVcsRUFBRSxhQUFhO2FBQzFCO1lBQ0Q7Z0JBQ0MsV0FBVyxFQUFFLGdCQUFnQjtnQkFDN0IsSUFBSSxFQUFFLGNBQWM7Z0JBQ3BCLElBQUksRUFBRSxRQUFRO2dCQUNkLFdBQVcsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBQy9CLE9BQU8sRUFBRSxFQUFFO2dCQUNYLFFBQVEsRUFBRSxJQUFJO2dCQUNkLFdBQVcsRUFBRSwyRUFBMkU7Z0JBQ3hGLFdBQVcsRUFBRSxpREFBaUQ7YUFDOUQ7WUFDRDtnQkFDQyxXQUFXLEVBQUUsZ0JBQWdCO2dCQUM3QixJQUFJLEVBQUUsY0FBYztnQkFDcEIsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsV0FBVyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFDL0IsT0FBTyxFQUFFLEVBQUU7Z0JBQ1gsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsV0FBVyxFQUNWLHNKQUFzSjthQUN2SjtZQUNEO2dCQUNDLFdBQVcsRUFBRSxTQUFTO2dCQUN0QixJQUFJLEVBQUUsU0FBUztnQkFDZixJQUFJLEVBQUUsUUFBUTtnQkFDZCxPQUFPLEVBQUUsd0JBQWU7Z0JBQ3hCLFFBQVEsRUFBRSxJQUFJO2dCQUNkLFdBQVcsRUFBRSwwRUFBMEU7YUFDdkY7WUFDRDtnQkFDQyxXQUFXLEVBQUUsUUFBUTtnQkFDckIsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsT0FBTyxFQUFFLHVCQUFjO2dCQUN2QixRQUFRLEVBQUUsSUFBSTtnQkFDZCxXQUFXLEVBQUUsb0VBQW9FO2FBQ2pGO1lBQ0Q7Z0JBQ0MsV0FBVyxFQUFFLFdBQVc7Z0JBQ3hCLElBQUksRUFBRSxjQUFjO2dCQUNwQixJQUFJLEVBQUUsUUFBUTtnQkFDZCxPQUFPLEVBQUUsdUJBQWM7Z0JBQ3ZCLFFBQVEsRUFBRSxJQUFJO2dCQUNkLFdBQVcsRUFBRSxvRUFBb0U7YUFDakY7U0FDRCxDQUFDO0lBQ0gsQ0FBQztDQUFBO0FBOUZELDRDQThGQyJ9
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
|
|
2
2
|
export declare class SqlAccounting implements INodeType {
|
|
3
3
|
description: INodeTypeDescription;
|
|
4
|
+
methods: {
|
|
5
|
+
loadOptions: Record<string, (this: import("n8n-workflow").ILoadOptionsFunctions) => Promise<import("n8n-workflow").INodePropertyOptions[]>>;
|
|
6
|
+
};
|
|
4
7
|
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
|
|
5
8
|
}
|
|
6
9
|
//# sourceMappingURL=SqlAccounting.node.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqlAccounting.node.d.ts","sourceRoot":"","sources":["../../../nodes/SqlAccounting/SqlAccounting.node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"SqlAccounting.node.d.ts","sourceRoot":"","sources":["../../../nodes/SqlAccounting/SqlAccounting.node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAQ3G,qBAAa,aAAc,YAAW,SAAS;IAC9C,WAAW,EAAE,oBAAoB,CAa/B;IAEF,OAAO;;MAAkC;IAEnC,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;CA0BvE"}
|