n8n-nodes-tracepass 1.0.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 +99 -0
- package/dist/credentials/TracePassApi.credentials.d.ts +10 -0
- package/dist/credentials/TracePassApi.credentials.js +49 -0
- package/dist/credentials/TracePassApi.credentials.js.map +1 -0
- package/dist/icons/tracepass.dark.svg +35 -0
- package/dist/icons/tracepass.svg +49 -0
- package/dist/nodes/TracePass/EpcisDescription.d.ts +3 -0
- package/dist/nodes/TracePass/EpcisDescription.js +159 -0
- package/dist/nodes/TracePass/EpcisDescription.js.map +1 -0
- package/dist/nodes/TracePass/PassportDescription.d.ts +3 -0
- package/dist/nodes/TracePass/PassportDescription.js +267 -0
- package/dist/nodes/TracePass/PassportDescription.js.map +1 -0
- package/dist/nodes/TracePass/ProductDescription.d.ts +3 -0
- package/dist/nodes/TracePass/ProductDescription.js +222 -0
- package/dist/nodes/TracePass/ProductDescription.js.map +1 -0
- package/dist/nodes/TracePass/TracePass.node.d.ts +4 -0
- package/dist/nodes/TracePass/TracePass.node.js +73 -0
- package/dist/nodes/TracePass/TracePass.node.js.map +1 -0
- package/dist/nodes/TracePass/TracePass.node.json +31 -0
- package/dist/package.json +64 -0
- package/package.json +64 -0
package/LICENSE.md
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 TracePass 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,99 @@
|
|
|
1
|
+
# n8n-nodes-tracepass
|
|
2
|
+
|
|
3
|
+
This is an n8n community node. It lets you automate
|
|
4
|
+
**[TracePass](https://www.tracepass.eu)** — the EU Digital Product
|
|
5
|
+
Passport platform — in your n8n workflows.
|
|
6
|
+
|
|
7
|
+
TracePass generates compliant Digital Product Passports (DPPs) for EU
|
|
8
|
+
regulations (ESPR, the Battery Regulation, and more). This node lets
|
|
9
|
+
you create and manage products, passports, and GS1 EPCIS 2.0
|
|
10
|
+
supply-chain events directly from n8n — no code.
|
|
11
|
+
|
|
12
|
+
[n8n](https://n8n.io) is a fair-code licensed workflow automation
|
|
13
|
+
platform.
|
|
14
|
+
|
|
15
|
+
[Installation](#installation) ·
|
|
16
|
+
[Operations](#operations) ·
|
|
17
|
+
[Credentials](#credentials) ·
|
|
18
|
+
[Example workflows](#example-workflows) ·
|
|
19
|
+
[Resources](#resources)
|
|
20
|
+
|
|
21
|
+
## Installation
|
|
22
|
+
|
|
23
|
+
Follow the
|
|
24
|
+
[community nodes installation guide](https://docs.n8n.io/integrations/community-nodes/installation/)
|
|
25
|
+
in the n8n documentation.
|
|
26
|
+
|
|
27
|
+
In n8n: **Settings → Community Nodes → Install**, then enter
|
|
28
|
+
`n8n-nodes-tracepass`.
|
|
29
|
+
|
|
30
|
+
## Operations
|
|
31
|
+
|
|
32
|
+
### Product
|
|
33
|
+
|
|
34
|
+
- **Create** — add a product to the catalogue
|
|
35
|
+
- **Get** — retrieve a product by ID
|
|
36
|
+
- **Get Many** — list products, with category / search filters
|
|
37
|
+
- **Update** — update a product's name, model, or description
|
|
38
|
+
|
|
39
|
+
### Passport
|
|
40
|
+
|
|
41
|
+
- **Create** — create a Digital Product Passport (consumes a plan
|
|
42
|
+
DPP slot — billable; opt in to overage with *Confirm Overage
|
|
43
|
+
Charge*)
|
|
44
|
+
- **Get** / **Get by Serial** — retrieve a passport by ID or by its
|
|
45
|
+
serial number
|
|
46
|
+
- **Get Many** — list passports, with status / product filters
|
|
47
|
+
- **Update Field** — set the value of one passport field
|
|
48
|
+
- **Suspend** — suspend a published passport (reversible)
|
|
49
|
+
- **Archive** — archive a passport (**irreversible** — the public QR
|
|
50
|
+
permanently 404s)
|
|
51
|
+
|
|
52
|
+
### EPCIS Event
|
|
53
|
+
|
|
54
|
+
- **Export** — export a passport's events as a GS1 EPCIS 2.0
|
|
55
|
+
document (included on Starter plans and up)
|
|
56
|
+
- **Capture** — submit EPCIS 2.0 events (requires the EPCIS add-on)
|
|
57
|
+
- **Get Capture Job** — poll an async capture job
|
|
58
|
+
- **Query** — query the EPCIS event store with the standard EPCIS
|
|
59
|
+
query filters (requires the EPCIS add-on)
|
|
60
|
+
|
|
61
|
+
## Credentials
|
|
62
|
+
|
|
63
|
+
You need a TracePass API key. In the TracePass dashboard, go to
|
|
64
|
+
**Developer → API Keys** and create a key (it starts with `tp_`).
|
|
65
|
+
|
|
66
|
+
In n8n, create a **TracePass API** credential and paste the key. The
|
|
67
|
+
*Base URL* defaults to `https://app.tracepass.eu` — change it only
|
|
68
|
+
for a self-hosted or staging deployment. Use **Test** to verify the
|
|
69
|
+
key before building a workflow.
|
|
70
|
+
|
|
71
|
+
## Example workflows
|
|
72
|
+
|
|
73
|
+
**Shopify → TracePass** — on a new Shopify order, create a passport
|
|
74
|
+
(product mapped by SKU, serial = order ID), then email the QR code
|
|
75
|
+
to the customer.
|
|
76
|
+
|
|
77
|
+
**Daily analytics digest** — a Schedule trigger lists yesterday's
|
|
78
|
+
passports and posts a summary to Slack.
|
|
79
|
+
|
|
80
|
+
**CSV → passports** — read a CSV of serial numbers and create a
|
|
81
|
+
passport per row.
|
|
82
|
+
|
|
83
|
+
**Supplier follow-up** — a Schedule trigger lists supplier requests
|
|
84
|
+
older than seven days and sends reminder emails.
|
|
85
|
+
|
|
86
|
+
## Compatibility
|
|
87
|
+
|
|
88
|
+
Requires n8n 1.x. Tested against the current n8n community-node API
|
|
89
|
+
(`n8nNodesApiVersion: 1`).
|
|
90
|
+
|
|
91
|
+
## Resources
|
|
92
|
+
|
|
93
|
+
- [TracePass API documentation](https://www.tracepass.eu/docs)
|
|
94
|
+
- [TracePass](https://www.tracepass.eu)
|
|
95
|
+
- [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
|
|
96
|
+
|
|
97
|
+
## License
|
|
98
|
+
|
|
99
|
+
[MIT](LICENSE.md)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { IAuthenticateGeneric, ICredentialTestRequest, ICredentialType, Icon, INodeProperties } from 'n8n-workflow';
|
|
2
|
+
export declare class TracePassApi 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,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TracePassApi = void 0;
|
|
4
|
+
class TracePassApi {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.name = 'tracePassApi';
|
|
7
|
+
this.displayName = 'TracePass API';
|
|
8
|
+
this.documentationUrl = 'https://www.tracepass.eu/docs/authentication';
|
|
9
|
+
this.icon = { light: 'file:../icons/tracepass.svg', dark: 'file:../icons/tracepass.dark.svg' };
|
|
10
|
+
this.properties = [
|
|
11
|
+
{
|
|
12
|
+
displayName: 'API Key',
|
|
13
|
+
name: 'apiKey',
|
|
14
|
+
type: 'string',
|
|
15
|
+
typeOptions: { password: true },
|
|
16
|
+
default: '',
|
|
17
|
+
required: true,
|
|
18
|
+
placeholder: 'e.g. tp_0123456789abcdef0123456789abcdef',
|
|
19
|
+
description: 'Your TracePass API key (starts with "tp_"). Create one in the TracePass dashboard under Developer → API Keys.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
displayName: 'Base URL',
|
|
23
|
+
name: 'baseUrl',
|
|
24
|
+
type: 'string',
|
|
25
|
+
default: 'https://app.tracepass.eu',
|
|
26
|
+
placeholder: 'e.g. https://app.tracepass.eu',
|
|
27
|
+
description: 'The TracePass app base URL. Change this only for a self-hosted or staging deployment.',
|
|
28
|
+
},
|
|
29
|
+
];
|
|
30
|
+
this.authenticate = {
|
|
31
|
+
type: 'generic',
|
|
32
|
+
properties: {
|
|
33
|
+
headers: {
|
|
34
|
+
Authorization: '=Bearer {{$credentials.apiKey}}',
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
this.test = {
|
|
39
|
+
request: {
|
|
40
|
+
baseURL: '={{$credentials.baseUrl}}',
|
|
41
|
+
url: '/api/v1/products',
|
|
42
|
+
method: 'GET',
|
|
43
|
+
qs: { limit: 1 },
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.TracePassApi = TracePassApi;
|
|
49
|
+
//# sourceMappingURL=TracePassApi.credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TracePassApi.credentials.js","sourceRoot":"","sources":["../../credentials/TracePassApi.credentials.ts"],"names":[],"mappings":";;;AAmBA,MAAa,YAAY;IAAzB;QACC,SAAI,GAAG,cAAc,CAAC;QAEtB,gBAAW,GAAG,eAAe,CAAC;QAE9B,qBAAgB,GAAG,8CAA8C,CAAC;QAElE,SAAI,GAAS,EAAE,KAAK,EAAE,6BAA6B,EAAE,IAAI,EAAE,kCAAkC,EAAE,CAAC;QAEhG,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,0CAA0C;gBACvD,WAAW,EACV,+GAA+G;aAChH;YACD;gBACC,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,0BAA0B;gBACnC,WAAW,EAAE,+BAA+B;gBAC5C,WAAW,EACV,uFAAuF;aACxF;SACD,CAAC;QAEF,iBAAY,GAAyB;YACpC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACX,OAAO,EAAE;oBACR,aAAa,EAAE,iCAAiC;iBAChD;aACD;SACD,CAAC;QAEF,SAAI,GAA2B;YAC9B,OAAO,EAAE;gBACR,OAAO,EAAE,2BAA2B;gBACpC,GAAG,EAAE,kBAAkB;gBACvB,MAAM,EAAE,KAAK;gBACb,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;aAChB;SACD,CAAC;IACH,CAAC;CAAA;AAjDD,oCAiDC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60" width="60" height="60" role="img" aria-label="TracePass">
|
|
2
|
+
<title>TracePass</title>
|
|
3
|
+
<defs>
|
|
4
|
+
<linearGradient id="tpGlyphDark" x1="0" y1="0" x2="30" y2="19" gradientUnits="userSpaceOnUse">
|
|
5
|
+
<stop offset="0%" stop-color="#FB923C"/>
|
|
6
|
+
<stop offset="100%" stop-color="#F97316"/>
|
|
7
|
+
</linearGradient>
|
|
8
|
+
</defs>
|
|
9
|
+
<rect width="60" height="60" rx="12" fill="#1F2937"/>
|
|
10
|
+
<svg x="8" y="17.5" width="44" height="27.87" viewBox="0 0 30 19" preserveAspectRatio="xMidYMid meet">
|
|
11
|
+
<g fill="url(#tpGlyphDark)">
|
|
12
|
+
<!-- T -->
|
|
13
|
+
<rect x="0" y="0" width="3" height="3" rx="0.5"/>
|
|
14
|
+
<rect x="4" y="0" width="3" height="3" rx="0.5"/>
|
|
15
|
+
<rect x="8" y="0" width="3" height="3" rx="0.5"/>
|
|
16
|
+
<rect x="4" y="4" width="3" height="3" rx="0.5"/>
|
|
17
|
+
<rect x="4" y="8" width="3" height="3" rx="0.5"/>
|
|
18
|
+
<rect x="4" y="12" width="3" height="3" rx="0.5"/>
|
|
19
|
+
<rect x="4" y="16" width="3" height="3" rx="0.5"/>
|
|
20
|
+
<!-- P -->
|
|
21
|
+
<rect x="15" y="0" width="3" height="3" rx="0.5"/>
|
|
22
|
+
<rect x="15" y="4" width="3" height="3" rx="0.5"/>
|
|
23
|
+
<rect x="15" y="8" width="3" height="3" rx="0.5"/>
|
|
24
|
+
<rect x="15" y="12" width="3" height="3" rx="0.5"/>
|
|
25
|
+
<rect x="15" y="16" width="3" height="3" rx="0.5"/>
|
|
26
|
+
<rect x="19" y="0" width="3" height="3" rx="0.5"/>
|
|
27
|
+
<rect x="23" y="0" width="3" height="3" rx="0.5"/>
|
|
28
|
+
<rect x="27" y="0" width="3" height="3" rx="0.5"/>
|
|
29
|
+
<rect x="27" y="4" width="3" height="3" rx="0.5"/>
|
|
30
|
+
<rect x="27" y="8" width="3" height="3" rx="0.5"/>
|
|
31
|
+
<rect x="19" y="8" width="3" height="3" rx="0.5"/>
|
|
32
|
+
<rect x="23" y="8" width="3" height="3" rx="0.5"/>
|
|
33
|
+
</g>
|
|
34
|
+
</svg>
|
|
35
|
+
</svg>
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60" width="60" height="60" role="img" aria-label="TracePass">
|
|
2
|
+
<title>TracePass</title>
|
|
3
|
+
<defs>
|
|
4
|
+
<!--
|
|
5
|
+
Pixel-grid TP, lifted 1:1 from the canonical brand mark in
|
|
6
|
+
tracepass/public/tracepass-logo.svg. Each pixel is 3 units wide
|
|
7
|
+
on a 4-unit pitch (1-unit gap). The glyph block tightly bounds
|
|
8
|
+
to x:0..30 (P right edge at 27+3), y:0..19 (bottom-most pixel
|
|
9
|
+
at y=16 with height 3).
|
|
10
|
+
|
|
11
|
+
Inner viewBox is 30×19 (the tight bound), scaled to width=44 →
|
|
12
|
+
height ≈ 27.87 on the 60×60 card. Geometric center would be
|
|
13
|
+
y=(60-27.87)/2≈16.07 but the glyph's visual mass sits in the
|
|
14
|
+
upper half (T bar + P bowl both at the top), so pure-geometric
|
|
15
|
+
centering reads as top-heavy. Optical center: nudge y down ~3u
|
|
16
|
+
so the visual weight balances around the card's midline.
|
|
17
|
+
-->
|
|
18
|
+
<linearGradient id="tpCard" x1="0" y1="0" x2="1" y2="1">
|
|
19
|
+
<stop offset="0" stop-color="#111827"/>
|
|
20
|
+
<stop offset="1" stop-color="#F97316"/>
|
|
21
|
+
</linearGradient>
|
|
22
|
+
</defs>
|
|
23
|
+
<rect width="60" height="60" rx="12" fill="url(#tpCard)"/>
|
|
24
|
+
<svg x="8" y="17.5" width="44" height="27.87" viewBox="0 0 30 19" preserveAspectRatio="xMidYMid meet">
|
|
25
|
+
<g fill="#ffffff">
|
|
26
|
+
<!-- T: top bar (3 pixels) + stem (5 pixels down from the bar) -->
|
|
27
|
+
<rect x="0" y="0" width="3" height="3" rx="0.5"/>
|
|
28
|
+
<rect x="4" y="0" width="3" height="3" rx="0.5"/>
|
|
29
|
+
<rect x="8" y="0" width="3" height="3" rx="0.5"/>
|
|
30
|
+
<rect x="4" y="4" width="3" height="3" rx="0.5"/>
|
|
31
|
+
<rect x="4" y="8" width="3" height="3" rx="0.5"/>
|
|
32
|
+
<rect x="4" y="12" width="3" height="3" rx="0.5"/>
|
|
33
|
+
<rect x="4" y="16" width="3" height="3" rx="0.5"/>
|
|
34
|
+
<!-- P: left stem (5 pixels) + top bar (3) + right loop edge (3) + loop bottom (2) -->
|
|
35
|
+
<rect x="15" y="0" width="3" height="3" rx="0.5"/>
|
|
36
|
+
<rect x="15" y="4" width="3" height="3" rx="0.5"/>
|
|
37
|
+
<rect x="15" y="8" width="3" height="3" rx="0.5"/>
|
|
38
|
+
<rect x="15" y="12" width="3" height="3" rx="0.5"/>
|
|
39
|
+
<rect x="15" y="16" width="3" height="3" rx="0.5"/>
|
|
40
|
+
<rect x="19" y="0" width="3" height="3" rx="0.5"/>
|
|
41
|
+
<rect x="23" y="0" width="3" height="3" rx="0.5"/>
|
|
42
|
+
<rect x="27" y="0" width="3" height="3" rx="0.5"/>
|
|
43
|
+
<rect x="27" y="4" width="3" height="3" rx="0.5"/>
|
|
44
|
+
<rect x="27" y="8" width="3" height="3" rx="0.5"/>
|
|
45
|
+
<rect x="19" y="8" width="3" height="3" rx="0.5"/>
|
|
46
|
+
<rect x="23" y="8" width="3" height="3" rx="0.5"/>
|
|
47
|
+
</g>
|
|
48
|
+
</svg>
|
|
49
|
+
</svg>
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.epcisFields = exports.epcisOperations = void 0;
|
|
4
|
+
exports.epcisOperations = [
|
|
5
|
+
{
|
|
6
|
+
displayName: 'Operation',
|
|
7
|
+
name: 'operation',
|
|
8
|
+
type: 'options',
|
|
9
|
+
noDataExpression: true,
|
|
10
|
+
displayOptions: {
|
|
11
|
+
show: { resource: ['epcis'] },
|
|
12
|
+
},
|
|
13
|
+
options: [
|
|
14
|
+
{
|
|
15
|
+
name: 'Export',
|
|
16
|
+
value: 'export',
|
|
17
|
+
action: 'Export EPCIS events for a passport',
|
|
18
|
+
description: "Retrieve a passport's supply-chain events as an EPCIS 2.0 document. Included on Starter and up.",
|
|
19
|
+
routing: {
|
|
20
|
+
request: {
|
|
21
|
+
method: 'GET',
|
|
22
|
+
url: '=/api/v1/passports/{{$parameter["passportId"]}}/epcis',
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: 'Capture',
|
|
28
|
+
value: 'capture',
|
|
29
|
+
action: 'Capture EPCIS events',
|
|
30
|
+
description: 'Submit EPCIS 2.0 events to the capture interface. Requires the EPCIS add-on.',
|
|
31
|
+
routing: {
|
|
32
|
+
request: {
|
|
33
|
+
method: 'POST',
|
|
34
|
+
url: '/api/v1/epcis/capture',
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'Get Capture Job',
|
|
40
|
+
value: 'captureJob',
|
|
41
|
+
action: 'Get an EPCIS capture job',
|
|
42
|
+
description: 'Check the status of an async EPCIS capture job',
|
|
43
|
+
routing: {
|
|
44
|
+
request: {
|
|
45
|
+
method: 'GET',
|
|
46
|
+
url: '=/api/v1/epcis/capture/{{$parameter["jobId"]}}',
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
name: 'Query',
|
|
52
|
+
value: 'query',
|
|
53
|
+
action: 'Query the EPCIS event store',
|
|
54
|
+
description: 'Query captured EPCIS events. Requires the EPCIS add-on.',
|
|
55
|
+
routing: {
|
|
56
|
+
request: {
|
|
57
|
+
method: 'GET',
|
|
58
|
+
url: '/api/v1/epcis/events',
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
],
|
|
63
|
+
default: 'export',
|
|
64
|
+
},
|
|
65
|
+
];
|
|
66
|
+
exports.epcisFields = [
|
|
67
|
+
{
|
|
68
|
+
displayName: 'Passport ID',
|
|
69
|
+
name: 'passportId',
|
|
70
|
+
type: 'string',
|
|
71
|
+
required: true,
|
|
72
|
+
default: '',
|
|
73
|
+
placeholder: 'e.g. 65a0f1b2c3d4e5f6a7b8c9d0',
|
|
74
|
+
description: 'The TracePass ID of the passport whose events to export',
|
|
75
|
+
displayOptions: {
|
|
76
|
+
show: { resource: ['epcis'], operation: ['export'] },
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
displayName: 'Capture Job ID',
|
|
81
|
+
name: 'jobId',
|
|
82
|
+
type: 'string',
|
|
83
|
+
required: true,
|
|
84
|
+
default: '',
|
|
85
|
+
placeholder: 'e.g. cap_8f3d2a1b9c7e6d5f',
|
|
86
|
+
description: 'The capture job ID returned by a Capture operation',
|
|
87
|
+
displayOptions: {
|
|
88
|
+
show: { resource: ['epcis'], operation: ['captureJob'] },
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
displayName: 'Events (JSON)',
|
|
93
|
+
name: 'events',
|
|
94
|
+
type: 'json',
|
|
95
|
+
required: true,
|
|
96
|
+
default: '={}',
|
|
97
|
+
description: 'An EPCIS 2.0 EPCISDocument, a single event, or an array of events (JSON-LD). See the EPCIS docs at /docs/epcis.',
|
|
98
|
+
displayOptions: {
|
|
99
|
+
show: { resource: ['epcis'], operation: ['capture'] },
|
|
100
|
+
},
|
|
101
|
+
routing: {
|
|
102
|
+
send: { type: 'body', property: 'epcisBody' },
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
displayName: 'Query Filters',
|
|
107
|
+
name: 'queryFilters',
|
|
108
|
+
type: 'collection',
|
|
109
|
+
placeholder: 'Add Filter',
|
|
110
|
+
default: {},
|
|
111
|
+
description: 'Standard EPCIS 2.0 query parameters',
|
|
112
|
+
displayOptions: {
|
|
113
|
+
show: { resource: ['epcis'], operation: ['query'] },
|
|
114
|
+
},
|
|
115
|
+
options: [
|
|
116
|
+
{
|
|
117
|
+
displayName: 'Business Step (EQ_bizStep)',
|
|
118
|
+
name: 'EQ_bizStep',
|
|
119
|
+
type: 'string',
|
|
120
|
+
default: '',
|
|
121
|
+
description: 'Match events with this CBV business step',
|
|
122
|
+
routing: { send: { type: 'query', property: 'EQ_bizStep' } },
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
displayName: 'Disposition (EQ_disposition)',
|
|
126
|
+
name: 'EQ_disposition',
|
|
127
|
+
type: 'string',
|
|
128
|
+
default: '',
|
|
129
|
+
description: 'Match events with this CBV disposition',
|
|
130
|
+
routing: { send: { type: 'query', property: 'EQ_disposition' } },
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
displayName: 'EPC Matches (MATCH_epc)',
|
|
134
|
+
name: 'MATCH_epc',
|
|
135
|
+
type: 'string',
|
|
136
|
+
default: '',
|
|
137
|
+
description: 'Match events that reference this EPC',
|
|
138
|
+
routing: { send: { type: 'query', property: 'MATCH_epc' } },
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
displayName: 'Event Time From (GE_eventTime)',
|
|
142
|
+
name: 'GE_eventTime',
|
|
143
|
+
type: 'dateTime',
|
|
144
|
+
default: '',
|
|
145
|
+
description: 'Match events at or after this time',
|
|
146
|
+
routing: { send: { type: 'query', property: 'GE_eventTime' } },
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
displayName: 'Event Time To (LT_eventTime)',
|
|
150
|
+
name: 'LT_eventTime',
|
|
151
|
+
type: 'dateTime',
|
|
152
|
+
default: '',
|
|
153
|
+
description: 'Match events before this time',
|
|
154
|
+
routing: { send: { type: 'query', property: 'LT_eventTime' } },
|
|
155
|
+
},
|
|
156
|
+
],
|
|
157
|
+
},
|
|
158
|
+
];
|
|
159
|
+
//# sourceMappingURL=EpcisDescription.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EpcisDescription.js","sourceRoot":"","sources":["../../../nodes/TracePass/EpcisDescription.ts"],"names":[],"mappings":";;;AAWa,QAAA,eAAe,GAAsB;IACjD;QACC,WAAW,EAAE,WAAW;QACxB,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,SAAS;QACf,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE;YACf,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE;SAC7B;QACD,OAAO,EAAE;YACR;gBACC,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,QAAQ;gBACf,MAAM,EAAE,oCAAoC;gBAC5C,WAAW,EACV,iGAAiG;gBAClG,OAAO,EAAE;oBACR,OAAO,EAAE;wBACR,MAAM,EAAE,KAAK;wBACb,GAAG,EAAE,uDAAuD;qBAC5D;iBACD;aACD;YACD;gBACC,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,SAAS;gBAChB,MAAM,EAAE,sBAAsB;gBAC9B,WAAW,EAAE,8EAA8E;gBAC3F,OAAO,EAAE;oBACR,OAAO,EAAE;wBACR,MAAM,EAAE,MAAM;wBACd,GAAG,EAAE,uBAAuB;qBAC5B;iBACD;aACD;YACD;gBACC,IAAI,EAAE,iBAAiB;gBACvB,KAAK,EAAE,YAAY;gBACnB,MAAM,EAAE,0BAA0B;gBAClC,WAAW,EAAE,gDAAgD;gBAC7D,OAAO,EAAE;oBACR,OAAO,EAAE;wBACR,MAAM,EAAE,KAAK;wBACb,GAAG,EAAE,gDAAgD;qBACrD;iBACD;aACD;YACD;gBACC,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,OAAO;gBACd,MAAM,EAAE,6BAA6B;gBACrC,WAAW,EAAE,yDAAyD;gBACtE,OAAO,EAAE;oBACR,OAAO,EAAE;wBACR,MAAM,EAAE,KAAK;wBACb,GAAG,EAAE,sBAAsB;qBAC3B;iBACD;aACD;SACD;QACD,OAAO,EAAE,QAAQ;KACjB;CACD,CAAC;AAEW,QAAA,WAAW,GAAsB;IAE7C;QACC,WAAW,EAAE,aAAa;QAC1B,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,+BAA+B;QAC5C,WAAW,EAAE,yDAAyD;QACtE,cAAc,EAAE;YACf,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE;SACpD;KACD;IAED;QACC,WAAW,EAAE,gBAAgB;QAC7B,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,2BAA2B;QACxC,WAAW,EAAE,oDAAoD;QACjE,cAAc,EAAE;YACf,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE;SACxD;KACD;IAED;QACC,WAAW,EAAE,eAAe;QAC5B,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,KAAK;QACd,WAAW,EACV,iHAAiH;QAClH,cAAc,EAAE;YACf,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC,SAAS,CAAC,EAAE;SACrD;QACD,OAAO,EAAE;YACR,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE;SAC7C;KACD;IAKD;QACC,WAAW,EAAE,eAAe;QAC5B,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,YAAY;QACzB,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,qCAAqC;QAClD,cAAc,EAAE;YACf,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE;SACnD;QACD,OAAO,EAAE;YACR;gBACC,WAAW,EAAE,4BAA4B;gBACzC,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,0CAA0C;gBACvD,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE;aAC5D;YACD;gBACC,WAAW,EAAE,8BAA8B;gBAC3C,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,wCAAwC;gBACrD,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAAE;aAChE;YACD;gBACC,WAAW,EAAE,yBAAyB;gBACtC,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,sCAAsC;gBACnD,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE;aAC3D;YACD;gBACC,WAAW,EAAE,gCAAgC;gBAC7C,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,oCAAoC;gBACjD,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE;aAC9D;YACD;gBACC,WAAW,EAAE,8BAA8B;gBAC3C,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,+BAA+B;gBAC5C,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE;aAC9D;SACD;KACD;CACD,CAAC"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.passportFields = exports.passportOperations = void 0;
|
|
4
|
+
exports.passportOperations = [
|
|
5
|
+
{
|
|
6
|
+
displayName: 'Operation',
|
|
7
|
+
name: 'operation',
|
|
8
|
+
type: 'options',
|
|
9
|
+
noDataExpression: true,
|
|
10
|
+
displayOptions: {
|
|
11
|
+
show: { resource: ['passport'] },
|
|
12
|
+
},
|
|
13
|
+
options: [
|
|
14
|
+
{
|
|
15
|
+
name: 'Archive',
|
|
16
|
+
value: 'archive',
|
|
17
|
+
action: 'Archive a passport',
|
|
18
|
+
description: 'Permanently archive a passport. The public QR will return 404.',
|
|
19
|
+
routing: {
|
|
20
|
+
request: {
|
|
21
|
+
method: 'POST',
|
|
22
|
+
url: '=/api/v1/passports/{{$parameter["passportId"]}}/archive',
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: 'Create',
|
|
28
|
+
value: 'create',
|
|
29
|
+
action: 'Create a passport',
|
|
30
|
+
description: 'Create a new Digital Product Passport. Consumes a plan DPP slot.',
|
|
31
|
+
routing: {
|
|
32
|
+
request: {
|
|
33
|
+
method: 'POST',
|
|
34
|
+
url: '/api/v1/passports',
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'Get',
|
|
40
|
+
value: 'get',
|
|
41
|
+
action: 'Get a passport',
|
|
42
|
+
description: 'Retrieve a passport by ID',
|
|
43
|
+
routing: {
|
|
44
|
+
request: {
|
|
45
|
+
method: 'GET',
|
|
46
|
+
url: '=/api/v1/passports/{{$parameter["passportId"]}}',
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
name: 'Get by Serial',
|
|
52
|
+
value: 'getBySerial',
|
|
53
|
+
action: 'Get a passport by serial',
|
|
54
|
+
description: 'Retrieve a passport by its serial number',
|
|
55
|
+
routing: {
|
|
56
|
+
request: {
|
|
57
|
+
method: 'GET',
|
|
58
|
+
url: '=/api/v1/passports/by-serial/{{$parameter["serialNumber"]}}',
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
name: 'Get Many',
|
|
64
|
+
value: 'getAll',
|
|
65
|
+
action: 'Get many passports',
|
|
66
|
+
description: 'List many passports',
|
|
67
|
+
routing: {
|
|
68
|
+
request: {
|
|
69
|
+
method: 'GET',
|
|
70
|
+
url: '/api/v1/passports',
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
name: 'Suspend',
|
|
76
|
+
value: 'suspend',
|
|
77
|
+
action: 'Suspend a passport',
|
|
78
|
+
description: 'Suspend a published passport. Reversible. The QR shows a suspended state.',
|
|
79
|
+
routing: {
|
|
80
|
+
request: {
|
|
81
|
+
method: 'POST',
|
|
82
|
+
url: '=/api/v1/passports/{{$parameter["passportId"]}}/suspend',
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
name: 'Update Field',
|
|
88
|
+
value: 'updateField',
|
|
89
|
+
action: 'Update a passport field',
|
|
90
|
+
description: 'Set the value of one field on a passport',
|
|
91
|
+
routing: {
|
|
92
|
+
request: {
|
|
93
|
+
method: 'PATCH',
|
|
94
|
+
url: '=/api/v1/passports/{{$parameter["passportId"]}}/fields/{{$parameter["fieldKey"]}}',
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
],
|
|
99
|
+
default: 'getAll',
|
|
100
|
+
},
|
|
101
|
+
];
|
|
102
|
+
exports.passportFields = [
|
|
103
|
+
{
|
|
104
|
+
displayName: 'Passport ID',
|
|
105
|
+
name: 'passportId',
|
|
106
|
+
type: 'string',
|
|
107
|
+
required: true,
|
|
108
|
+
default: '',
|
|
109
|
+
placeholder: 'e.g. 65a0f1b2c3d4e5f6a7b8c9d0',
|
|
110
|
+
description: 'The TracePass ID of the passport',
|
|
111
|
+
displayOptions: {
|
|
112
|
+
show: {
|
|
113
|
+
resource: ['passport'],
|
|
114
|
+
operation: ['get', 'updateField', 'suspend', 'archive'],
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
displayName: 'Serial Number',
|
|
120
|
+
name: 'serialNumber',
|
|
121
|
+
type: 'string',
|
|
122
|
+
required: true,
|
|
123
|
+
default: '',
|
|
124
|
+
placeholder: 'e.g. SN-2026-00042',
|
|
125
|
+
description: 'The product unit serial number',
|
|
126
|
+
displayOptions: {
|
|
127
|
+
show: { resource: ['passport'], operation: ['getBySerial'] },
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
displayName: 'Product ID',
|
|
132
|
+
name: 'createProductId',
|
|
133
|
+
type: 'string',
|
|
134
|
+
required: true,
|
|
135
|
+
default: '',
|
|
136
|
+
placeholder: 'e.g. 65a0f1b2c3d4e5f6a7b8c9d0',
|
|
137
|
+
description: 'The product this passport belongs to',
|
|
138
|
+
displayOptions: {
|
|
139
|
+
show: { resource: ['passport'], operation: ['create'] },
|
|
140
|
+
},
|
|
141
|
+
routing: {
|
|
142
|
+
send: { type: 'body', property: 'productId' },
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
displayName: 'GTIN',
|
|
147
|
+
name: 'gtin',
|
|
148
|
+
type: 'string',
|
|
149
|
+
required: true,
|
|
150
|
+
default: '',
|
|
151
|
+
placeholder: 'e.g. 04012345678901',
|
|
152
|
+
description: 'The 14-digit GS1 GTIN',
|
|
153
|
+
displayOptions: {
|
|
154
|
+
show: { resource: ['passport'], operation: ['create'] },
|
|
155
|
+
},
|
|
156
|
+
routing: {
|
|
157
|
+
send: { type: 'body', property: 'gs1.gtin' },
|
|
158
|
+
},
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
displayName: 'Serial Number',
|
|
162
|
+
name: 'createSerialNumber',
|
|
163
|
+
type: 'string',
|
|
164
|
+
required: true,
|
|
165
|
+
default: '',
|
|
166
|
+
placeholder: 'e.g. SN-2026-00042',
|
|
167
|
+
description: 'A unique serial number for this product unit',
|
|
168
|
+
displayOptions: {
|
|
169
|
+
show: { resource: ['passport'], operation: ['create'] },
|
|
170
|
+
},
|
|
171
|
+
routing: {
|
|
172
|
+
send: { type: 'body', property: 'gs1.serialNumber' },
|
|
173
|
+
},
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
displayName: 'Confirm Overage Charge',
|
|
177
|
+
name: 'confirmOverage',
|
|
178
|
+
type: 'boolean',
|
|
179
|
+
default: false,
|
|
180
|
+
description: 'Whether to accept a per-passport overage charge if the account is over its plan DPP quota. Leave off to fail safely when over quota.',
|
|
181
|
+
displayOptions: {
|
|
182
|
+
show: { resource: ['passport'], operation: ['create'] },
|
|
183
|
+
},
|
|
184
|
+
routing: {
|
|
185
|
+
send: { type: 'body', property: 'confirmOverage' },
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
displayName: 'Field Key',
|
|
190
|
+
name: 'fieldKey',
|
|
191
|
+
type: 'string',
|
|
192
|
+
required: true,
|
|
193
|
+
default: '',
|
|
194
|
+
placeholder: 'e.g. batteryCapacity',
|
|
195
|
+
description: 'The template field key to update',
|
|
196
|
+
displayOptions: {
|
|
197
|
+
show: { resource: ['passport'], operation: ['updateField'] },
|
|
198
|
+
},
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
displayName: 'Value',
|
|
202
|
+
name: 'fieldValue',
|
|
203
|
+
type: 'string',
|
|
204
|
+
default: '',
|
|
205
|
+
placeholder: 'e.g. 5000',
|
|
206
|
+
description: 'The new value for the field',
|
|
207
|
+
displayOptions: {
|
|
208
|
+
show: { resource: ['passport'], operation: ['updateField'] },
|
|
209
|
+
},
|
|
210
|
+
routing: {
|
|
211
|
+
send: { type: 'body', property: 'value' },
|
|
212
|
+
},
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
displayName: 'Filters',
|
|
216
|
+
name: 'filters',
|
|
217
|
+
type: 'collection',
|
|
218
|
+
placeholder: 'Add Filter',
|
|
219
|
+
default: {},
|
|
220
|
+
displayOptions: {
|
|
221
|
+
show: { resource: ['passport'], operation: ['getAll'] },
|
|
222
|
+
},
|
|
223
|
+
options: [
|
|
224
|
+
{
|
|
225
|
+
displayName: 'Product ID',
|
|
226
|
+
name: 'productId',
|
|
227
|
+
type: 'string',
|
|
228
|
+
default: '',
|
|
229
|
+
description: 'Filter to one product\'s passports',
|
|
230
|
+
routing: { send: { type: 'query', property: 'productId' } },
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
displayName: 'Status',
|
|
234
|
+
name: 'status',
|
|
235
|
+
type: 'options',
|
|
236
|
+
default: 'published',
|
|
237
|
+
options: [
|
|
238
|
+
{ name: 'Approved', value: 'approved' },
|
|
239
|
+
{ name: 'Archived', value: 'archived' },
|
|
240
|
+
{ name: 'Draft', value: 'draft' },
|
|
241
|
+
{ name: 'Expired', value: 'expired' },
|
|
242
|
+
{ name: 'In Review', value: 'in_review' },
|
|
243
|
+
{ name: 'Published', value: 'published' },
|
|
244
|
+
{ name: 'Suspended', value: 'suspended' },
|
|
245
|
+
],
|
|
246
|
+
routing: { send: { type: 'query', property: 'status' } },
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
displayName: 'Search',
|
|
250
|
+
name: 'search',
|
|
251
|
+
type: 'string',
|
|
252
|
+
default: '',
|
|
253
|
+
routing: { send: { type: 'query', property: 'search' } },
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
displayName: 'Limit',
|
|
257
|
+
name: 'limit',
|
|
258
|
+
type: 'number',
|
|
259
|
+
typeOptions: { minValue: 1, maxValue: 100 },
|
|
260
|
+
default: 50,
|
|
261
|
+
description: 'Max number of results to return',
|
|
262
|
+
routing: { send: { type: 'query', property: 'limit' } },
|
|
263
|
+
},
|
|
264
|
+
],
|
|
265
|
+
},
|
|
266
|
+
];
|
|
267
|
+
//# sourceMappingURL=PassportDescription.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PassportDescription.js","sourceRoot":"","sources":["../../../nodes/TracePass/PassportDescription.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.productFields = exports.productOperations = void 0;
|
|
4
|
+
exports.productOperations = [
|
|
5
|
+
{
|
|
6
|
+
displayName: 'Operation',
|
|
7
|
+
name: 'operation',
|
|
8
|
+
type: 'options',
|
|
9
|
+
noDataExpression: true,
|
|
10
|
+
displayOptions: {
|
|
11
|
+
show: { resource: ['product'] },
|
|
12
|
+
},
|
|
13
|
+
options: [
|
|
14
|
+
{
|
|
15
|
+
name: 'Create',
|
|
16
|
+
value: 'create',
|
|
17
|
+
action: 'Create a product',
|
|
18
|
+
description: 'Create a new product in the catalogue',
|
|
19
|
+
routing: {
|
|
20
|
+
request: {
|
|
21
|
+
method: 'POST',
|
|
22
|
+
url: '/api/v1/products',
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: 'Get',
|
|
28
|
+
value: 'get',
|
|
29
|
+
action: 'Get a product',
|
|
30
|
+
description: 'Retrieve a product by ID',
|
|
31
|
+
routing: {
|
|
32
|
+
request: {
|
|
33
|
+
method: 'GET',
|
|
34
|
+
url: '=/api/v1/products/{{$parameter["productId"]}}',
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'Get Many',
|
|
40
|
+
value: 'getAll',
|
|
41
|
+
action: 'Get many products',
|
|
42
|
+
description: 'List many products',
|
|
43
|
+
routing: {
|
|
44
|
+
request: {
|
|
45
|
+
method: 'GET',
|
|
46
|
+
url: '/api/v1/products',
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
name: 'Update',
|
|
52
|
+
value: 'update',
|
|
53
|
+
action: 'Update a product',
|
|
54
|
+
description: 'Update one or more product fields',
|
|
55
|
+
routing: {
|
|
56
|
+
request: {
|
|
57
|
+
method: 'PATCH',
|
|
58
|
+
url: '=/api/v1/products/{{$parameter["productId"]}}',
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
],
|
|
63
|
+
default: 'getAll',
|
|
64
|
+
},
|
|
65
|
+
];
|
|
66
|
+
exports.productFields = [
|
|
67
|
+
{
|
|
68
|
+
displayName: 'Product ID',
|
|
69
|
+
name: 'productId',
|
|
70
|
+
type: 'string',
|
|
71
|
+
required: true,
|
|
72
|
+
default: '',
|
|
73
|
+
placeholder: 'e.g. 65a0f1b2c3d4e5f6a7b8c9d0',
|
|
74
|
+
description: 'The TracePass ID of the product',
|
|
75
|
+
displayOptions: {
|
|
76
|
+
show: { resource: ['product'], operation: ['get', 'update'] },
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
displayName: 'Name',
|
|
81
|
+
name: 'name',
|
|
82
|
+
type: 'string',
|
|
83
|
+
required: true,
|
|
84
|
+
default: '',
|
|
85
|
+
placeholder: 'e.g. Acme Cordless Drill',
|
|
86
|
+
description: 'Name of the product',
|
|
87
|
+
displayOptions: {
|
|
88
|
+
show: { resource: ['product'], operation: ['create'] },
|
|
89
|
+
},
|
|
90
|
+
routing: {
|
|
91
|
+
send: { type: 'body', property: 'name' },
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
displayName: 'Model',
|
|
96
|
+
name: 'model',
|
|
97
|
+
type: 'string',
|
|
98
|
+
required: true,
|
|
99
|
+
default: '',
|
|
100
|
+
placeholder: 'e.g. ACD-2024-PRO',
|
|
101
|
+
description: 'Model or SKU identifier of the product',
|
|
102
|
+
displayOptions: {
|
|
103
|
+
show: { resource: ['product'], operation: ['create'] },
|
|
104
|
+
},
|
|
105
|
+
routing: {
|
|
106
|
+
send: { type: 'body', property: 'model' },
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
displayName: 'Category',
|
|
111
|
+
name: 'category',
|
|
112
|
+
type: 'options',
|
|
113
|
+
required: true,
|
|
114
|
+
default: 'battery',
|
|
115
|
+
description: 'Product category — determines the DPP template',
|
|
116
|
+
options: [
|
|
117
|
+
{ name: 'Battery', value: 'battery' },
|
|
118
|
+
{ name: 'Chemicals', value: 'chemicals' },
|
|
119
|
+
{ name: 'Construction', value: 'construction' },
|
|
120
|
+
{ name: 'Electronics', value: 'electronics' },
|
|
121
|
+
{ name: 'FMCG', value: 'fmcg' },
|
|
122
|
+
{ name: 'Furniture', value: 'furniture' },
|
|
123
|
+
{ name: 'Jewelry', value: 'jewelry' },
|
|
124
|
+
{ name: 'Packaging', value: 'packaging' },
|
|
125
|
+
{ name: 'Steel', value: 'steel' },
|
|
126
|
+
{ name: 'Textile', value: 'textile' },
|
|
127
|
+
{ name: 'Toys', value: 'toys' },
|
|
128
|
+
{ name: 'Tyres', value: 'tyres' },
|
|
129
|
+
],
|
|
130
|
+
displayOptions: {
|
|
131
|
+
show: { resource: ['product'], operation: ['create'] },
|
|
132
|
+
},
|
|
133
|
+
routing: {
|
|
134
|
+
send: { type: 'body', property: 'category' },
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
displayName: 'Description',
|
|
139
|
+
name: 'description',
|
|
140
|
+
type: 'string',
|
|
141
|
+
default: '',
|
|
142
|
+
placeholder: 'e.g. 18V brushless cordless drill with two-speed transmission',
|
|
143
|
+
description: 'Optional description of the product',
|
|
144
|
+
displayOptions: {
|
|
145
|
+
show: { resource: ['product'], operation: ['create'] },
|
|
146
|
+
},
|
|
147
|
+
routing: {
|
|
148
|
+
send: { type: 'body', property: 'description' },
|
|
149
|
+
},
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
displayName: 'Update Fields',
|
|
153
|
+
name: 'updateFields',
|
|
154
|
+
type: 'collection',
|
|
155
|
+
placeholder: 'Add Field',
|
|
156
|
+
default: {},
|
|
157
|
+
displayOptions: {
|
|
158
|
+
show: { resource: ['product'], operation: ['update'] },
|
|
159
|
+
},
|
|
160
|
+
options: [
|
|
161
|
+
{
|
|
162
|
+
displayName: 'Name',
|
|
163
|
+
name: 'name',
|
|
164
|
+
type: 'string',
|
|
165
|
+
default: '',
|
|
166
|
+
routing: { send: { type: 'body', property: 'name' } },
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
displayName: 'Model',
|
|
170
|
+
name: 'model',
|
|
171
|
+
type: 'string',
|
|
172
|
+
default: '',
|
|
173
|
+
routing: { send: { type: 'body', property: 'model' } },
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
displayName: 'Description',
|
|
177
|
+
name: 'description',
|
|
178
|
+
type: 'string',
|
|
179
|
+
default: '',
|
|
180
|
+
routing: { send: { type: 'body', property: 'description' } },
|
|
181
|
+
},
|
|
182
|
+
],
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
displayName: 'Filters',
|
|
186
|
+
name: 'filters',
|
|
187
|
+
type: 'collection',
|
|
188
|
+
placeholder: 'Add Filter',
|
|
189
|
+
default: {},
|
|
190
|
+
displayOptions: {
|
|
191
|
+
show: { resource: ['product'], operation: ['getAll'] },
|
|
192
|
+
},
|
|
193
|
+
options: [
|
|
194
|
+
{
|
|
195
|
+
displayName: 'Category',
|
|
196
|
+
name: 'category',
|
|
197
|
+
type: 'string',
|
|
198
|
+
default: '',
|
|
199
|
+
description: 'Filter by category key',
|
|
200
|
+
routing: { send: { type: 'query', property: 'category' } },
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
displayName: 'Search',
|
|
204
|
+
name: 'search',
|
|
205
|
+
type: 'string',
|
|
206
|
+
default: '',
|
|
207
|
+
description: 'Free-text search over product name and model',
|
|
208
|
+
routing: { send: { type: 'query', property: 'search' } },
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
displayName: 'Limit',
|
|
212
|
+
name: 'limit',
|
|
213
|
+
type: 'number',
|
|
214
|
+
typeOptions: { minValue: 1, maxValue: 100 },
|
|
215
|
+
default: 50,
|
|
216
|
+
description: 'Max number of results to return',
|
|
217
|
+
routing: { send: { type: 'query', property: 'limit' } },
|
|
218
|
+
},
|
|
219
|
+
],
|
|
220
|
+
},
|
|
221
|
+
];
|
|
222
|
+
//# sourceMappingURL=ProductDescription.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProductDescription.js","sourceRoot":"","sources":["../../../nodes/TracePass/ProductDescription.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TracePass = void 0;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const ProductDescription_1 = require("./ProductDescription");
|
|
6
|
+
const PassportDescription_1 = require("./PassportDescription");
|
|
7
|
+
const EpcisDescription_1 = require("./EpcisDescription");
|
|
8
|
+
class TracePass {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.description = {
|
|
11
|
+
displayName: 'TracePass',
|
|
12
|
+
name: 'tracePass',
|
|
13
|
+
icon: { light: 'file:../../icons/tracepass.svg', dark: 'file:../../icons/tracepass.dark.svg' },
|
|
14
|
+
group: ['transform'],
|
|
15
|
+
version: 1,
|
|
16
|
+
subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
|
|
17
|
+
description: 'Automate EU Digital Product Passport workflows with TracePass',
|
|
18
|
+
defaults: {
|
|
19
|
+
name: 'TracePass',
|
|
20
|
+
},
|
|
21
|
+
inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
22
|
+
outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
23
|
+
credentials: [
|
|
24
|
+
{
|
|
25
|
+
name: 'tracePassApi',
|
|
26
|
+
required: true,
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
requestDefaults: {
|
|
30
|
+
baseURL: '={{$credentials.baseUrl}}',
|
|
31
|
+
headers: {
|
|
32
|
+
Accept: 'application/json',
|
|
33
|
+
'Content-Type': 'application/json',
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
properties: [
|
|
37
|
+
{
|
|
38
|
+
displayName: 'Resource',
|
|
39
|
+
name: 'resource',
|
|
40
|
+
type: 'options',
|
|
41
|
+
noDataExpression: true,
|
|
42
|
+
options: [
|
|
43
|
+
{
|
|
44
|
+
name: 'EPCIS Event',
|
|
45
|
+
value: 'epcis',
|
|
46
|
+
description: 'GS1 EPCIS 2.0 supply-chain events',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: 'Passport',
|
|
50
|
+
value: 'passport',
|
|
51
|
+
description: 'Create, read, and run lifecycle actions on Digital Product Passports',
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
name: 'Product',
|
|
55
|
+
value: 'product',
|
|
56
|
+
description: 'The catalogue layer — one product can have many passports',
|
|
57
|
+
},
|
|
58
|
+
],
|
|
59
|
+
default: 'passport',
|
|
60
|
+
},
|
|
61
|
+
...ProductDescription_1.productOperations,
|
|
62
|
+
...ProductDescription_1.productFields,
|
|
63
|
+
...PassportDescription_1.passportOperations,
|
|
64
|
+
...PassportDescription_1.passportFields,
|
|
65
|
+
...EpcisDescription_1.epcisOperations,
|
|
66
|
+
...EpcisDescription_1.epcisFields,
|
|
67
|
+
],
|
|
68
|
+
usableAsTool: true,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.TracePass = TracePass;
|
|
73
|
+
//# sourceMappingURL=TracePass.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TracePass.node.js","sourceRoot":"","sources":["../../../nodes/TracePass/TracePass.node.ts"],"names":[],"mappings":";;;AACA,+CAAmD;AAEnD,6DAAwE;AACxE,+DAA2E;AAC3E,yDAAkE;AAgBlE,MAAa,SAAS;IAAtB;QACC,gBAAW,GAAyB;YACnC,WAAW,EAAE,WAAW;YACxB,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,EAAE,KAAK,EAAE,gCAAgC,EAAE,IAAI,EAAE,qCAAqC,EAAE;YAC9F,KAAK,EAAE,CAAC,WAAW,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,8DAA8D;YACxE,WAAW,EAAE,+DAA+D;YAM5E,QAAQ,EAAE;gBACT,IAAI,EAAE,WAAW;aACjB;YACD,MAAM,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;YAClC,OAAO,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;YACnC,WAAW,EAAE;gBACZ;oBACC,IAAI,EAAE,cAAc;oBACpB,QAAQ,EAAE,IAAI;iBACd;aACD;YACD,eAAe,EAAE;gBAChB,OAAO,EAAE,2BAA2B;gBACpC,OAAO,EAAE;oBACR,MAAM,EAAE,kBAAkB;oBAC1B,cAAc,EAAE,kBAAkB;iBAClC;aACD;YACD,UAAU,EAAE;gBACX;oBACC,WAAW,EAAE,UAAU;oBACvB,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,SAAS;oBACf,gBAAgB,EAAE,IAAI;oBACtB,OAAO,EAAE;wBACR;4BACC,IAAI,EAAE,aAAa;4BACnB,KAAK,EAAE,OAAO;4BACd,WAAW,EAAE,mCAAmC;yBAChD;wBACD;4BACC,IAAI,EAAE,UAAU;4BAChB,KAAK,EAAE,UAAU;4BACjB,WAAW,EAAE,sEAAsE;yBACnF;wBACD;4BACC,IAAI,EAAE,SAAS;4BACf,KAAK,EAAE,SAAS;4BAChB,WAAW,EAAE,2DAA2D;yBACxE;qBACD;oBACD,OAAO,EAAE,UAAU;iBACnB;gBACD,GAAG,sCAAiB;gBACpB,GAAG,kCAAa;gBAChB,GAAG,wCAAkB;gBACrB,GAAG,oCAAc;gBACjB,GAAG,kCAAe;gBAClB,GAAG,8BAAW;aACd;YACD,YAAY,EAAE,IAAI;SAClB,CAAC;IACH,CAAC;CAAA;AAlED,8BAkEC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"node": "n8n-nodes-base.tracePass",
|
|
3
|
+
"nodeVersion": "1.0",
|
|
4
|
+
"codexVersion": "1.0",
|
|
5
|
+
"categories": ["Productivity", "Development"],
|
|
6
|
+
"alias": [
|
|
7
|
+
"DPP",
|
|
8
|
+
"Digital Product Passport",
|
|
9
|
+
"EPCIS",
|
|
10
|
+
"GS1",
|
|
11
|
+
"ESPR",
|
|
12
|
+
"EU Battery Regulation",
|
|
13
|
+
"Battery Passport",
|
|
14
|
+
"Sustainability",
|
|
15
|
+
"Supply Chain",
|
|
16
|
+
"Traceability",
|
|
17
|
+
"Compliance"
|
|
18
|
+
],
|
|
19
|
+
"resources": {
|
|
20
|
+
"credentialDocumentation": [
|
|
21
|
+
{
|
|
22
|
+
"url": "https://www.tracepass.eu/docs/authentication"
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"primaryDocumentation": [
|
|
26
|
+
{
|
|
27
|
+
"url": "https://www.tracepass.eu/docs"
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "n8n-nodes-tracepass",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "n8n community node for TracePass — automate EU Digital Product Passport workflows: products, passports, EPCIS supply-chain events.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"n8n-community-node-package",
|
|
7
|
+
"n8n",
|
|
8
|
+
"tracepass",
|
|
9
|
+
"digital-product-passport",
|
|
10
|
+
"dpp",
|
|
11
|
+
"epcis",
|
|
12
|
+
"gs1",
|
|
13
|
+
"espr",
|
|
14
|
+
"battery-passport",
|
|
15
|
+
"eu-battery-regulation",
|
|
16
|
+
"sustainability",
|
|
17
|
+
"supply-chain",
|
|
18
|
+
"traceability",
|
|
19
|
+
"compliance"
|
|
20
|
+
],
|
|
21
|
+
"license": "MIT",
|
|
22
|
+
"homepage": "https://www.tracepass.eu",
|
|
23
|
+
"author": {
|
|
24
|
+
"name": "TracePass LTD",
|
|
25
|
+
"email": "info@tracepass.eu"
|
|
26
|
+
},
|
|
27
|
+
"repository": {
|
|
28
|
+
"type": "git",
|
|
29
|
+
"url": "git+https://github.com/malinoto/n8n-nodes-tracepass.git"
|
|
30
|
+
},
|
|
31
|
+
"engines": {
|
|
32
|
+
"node": ">=20.15"
|
|
33
|
+
},
|
|
34
|
+
"scripts": {
|
|
35
|
+
"build": "n8n-node build",
|
|
36
|
+
"dev": "n8n-node dev",
|
|
37
|
+
"lint": "n8n-node lint",
|
|
38
|
+
"lint:fix": "n8n-node lint --fix",
|
|
39
|
+
"release": "n8n-node release",
|
|
40
|
+
"prepublishOnly": "n8n-node prerelease"
|
|
41
|
+
},
|
|
42
|
+
"files": [
|
|
43
|
+
"dist"
|
|
44
|
+
],
|
|
45
|
+
"n8n": {
|
|
46
|
+
"n8nNodesApiVersion": 1,
|
|
47
|
+
"strict": true,
|
|
48
|
+
"credentials": [
|
|
49
|
+
"dist/credentials/TracePassApi.credentials.js"
|
|
50
|
+
],
|
|
51
|
+
"nodes": [
|
|
52
|
+
"dist/nodes/TracePass/TracePass.node.js"
|
|
53
|
+
]
|
|
54
|
+
},
|
|
55
|
+
"peerDependencies": {
|
|
56
|
+
"n8n-workflow": "*"
|
|
57
|
+
},
|
|
58
|
+
"devDependencies": {
|
|
59
|
+
"@n8n/node-cli": "*",
|
|
60
|
+
"eslint": "9.39.4",
|
|
61
|
+
"prettier": "3.8.3",
|
|
62
|
+
"typescript": "5.9.3"
|
|
63
|
+
}
|
|
64
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "n8n-nodes-tracepass",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "n8n community node for TracePass — automate EU Digital Product Passport workflows: products, passports, EPCIS supply-chain events.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"n8n-community-node-package",
|
|
7
|
+
"n8n",
|
|
8
|
+
"tracepass",
|
|
9
|
+
"digital-product-passport",
|
|
10
|
+
"dpp",
|
|
11
|
+
"epcis",
|
|
12
|
+
"gs1",
|
|
13
|
+
"espr",
|
|
14
|
+
"battery-passport",
|
|
15
|
+
"eu-battery-regulation",
|
|
16
|
+
"sustainability",
|
|
17
|
+
"supply-chain",
|
|
18
|
+
"traceability",
|
|
19
|
+
"compliance"
|
|
20
|
+
],
|
|
21
|
+
"license": "MIT",
|
|
22
|
+
"homepage": "https://www.tracepass.eu",
|
|
23
|
+
"author": {
|
|
24
|
+
"name": "TracePass LTD",
|
|
25
|
+
"email": "info@tracepass.eu"
|
|
26
|
+
},
|
|
27
|
+
"repository": {
|
|
28
|
+
"type": "git",
|
|
29
|
+
"url": "git+https://github.com/malinoto/n8n-nodes-tracepass.git"
|
|
30
|
+
},
|
|
31
|
+
"engines": {
|
|
32
|
+
"node": ">=20.15"
|
|
33
|
+
},
|
|
34
|
+
"scripts": {
|
|
35
|
+
"build": "n8n-node build",
|
|
36
|
+
"dev": "n8n-node dev",
|
|
37
|
+
"lint": "n8n-node lint",
|
|
38
|
+
"lint:fix": "n8n-node lint --fix",
|
|
39
|
+
"release": "n8n-node release",
|
|
40
|
+
"prepublishOnly": "n8n-node prerelease"
|
|
41
|
+
},
|
|
42
|
+
"files": [
|
|
43
|
+
"dist"
|
|
44
|
+
],
|
|
45
|
+
"n8n": {
|
|
46
|
+
"n8nNodesApiVersion": 1,
|
|
47
|
+
"strict": true,
|
|
48
|
+
"credentials": [
|
|
49
|
+
"dist/credentials/TracePassApi.credentials.js"
|
|
50
|
+
],
|
|
51
|
+
"nodes": [
|
|
52
|
+
"dist/nodes/TracePass/TracePass.node.js"
|
|
53
|
+
]
|
|
54
|
+
},
|
|
55
|
+
"peerDependencies": {
|
|
56
|
+
"n8n-workflow": "*"
|
|
57
|
+
},
|
|
58
|
+
"devDependencies": {
|
|
59
|
+
"@n8n/node-cli": "*",
|
|
60
|
+
"eslint": "9.39.4",
|
|
61
|
+
"prettier": "3.8.3",
|
|
62
|
+
"typescript": "5.9.3"
|
|
63
|
+
}
|
|
64
|
+
}
|