n8n-nodes-proiectro 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 +77 -0
- package/dist/credentials/ProiectroApi.credentials.d.ts +13 -0
- package/dist/credentials/ProiectroApi.credentials.js +52 -0
- package/dist/credentials/proiectro.svg +44 -0
- package/dist/nodes/Proiectro/Proiectro.node.d.ts +17 -0
- package/dist/nodes/Proiectro/Proiectro.node.js +1865 -0
- package/dist/nodes/Proiectro/ProiectroTrigger.node.d.ts +12 -0
- package/dist/nodes/Proiectro/ProiectroTrigger.node.js +214 -0
- package/dist/nodes/Proiectro/descriptions/ContactDescription.d.ts +3 -0
- package/dist/nodes/Proiectro/descriptions/ContactDescription.js +157 -0
- package/dist/nodes/Proiectro/descriptions/CustomerDescription.d.ts +3 -0
- package/dist/nodes/Proiectro/descriptions/CustomerDescription.js +152 -0
- package/dist/nodes/Proiectro/descriptions/LabelDescription.d.ts +3 -0
- package/dist/nodes/Proiectro/descriptions/LabelDescription.js +370 -0
- package/dist/nodes/Proiectro/descriptions/OperationalWorkItemDescription.d.ts +3 -0
- package/dist/nodes/Proiectro/descriptions/OperationalWorkItemDescription.js +261 -0
- package/dist/nodes/Proiectro/descriptions/PaymentDescription.d.ts +3 -0
- package/dist/nodes/Proiectro/descriptions/PaymentDescription.js +163 -0
- package/dist/nodes/Proiectro/descriptions/ProcessDefinitionDescription.d.ts +3 -0
- package/dist/nodes/Proiectro/descriptions/ProcessDefinitionDescription.js +127 -0
- package/dist/nodes/Proiectro/descriptions/ProjectDescription.d.ts +3 -0
- package/dist/nodes/Proiectro/descriptions/ProjectDescription.js +48 -0
- package/dist/nodes/Proiectro/descriptions/ProposalDescription.d.ts +3 -0
- package/dist/nodes/Proiectro/descriptions/ProposalDescription.js +460 -0
- package/dist/nodes/Proiectro/descriptions/ResourceDescription.d.ts +3 -0
- package/dist/nodes/Proiectro/descriptions/ResourceDescription.js +119 -0
- package/dist/nodes/Proiectro/descriptions/SupportRequestDescription.d.ts +3 -0
- package/dist/nodes/Proiectro/descriptions/SupportRequestDescription.js +237 -0
- package/dist/nodes/Proiectro/descriptions/TagDescription.d.ts +3 -0
- package/dist/nodes/Proiectro/descriptions/TagDescription.js +235 -0
- package/dist/nodes/Proiectro/descriptions/TeamMemberDescription.d.ts +3 -0
- package/dist/nodes/Proiectro/descriptions/TeamMemberDescription.js +166 -0
- package/dist/nodes/Proiectro/descriptions/WebhookDescription.d.ts +3 -0
- package/dist/nodes/Proiectro/descriptions/WebhookDescription.js +118 -0
- package/dist/nodes/Proiectro/descriptions/WorkItemDescription.d.ts +3 -0
- package/dist/nodes/Proiectro/descriptions/WorkItemDescription.js +288 -0
- package/dist/nodes/Proiectro/proiectro.svg +44 -0
- package/package.json +45 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Online Projects EU
|
|
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,77 @@
|
|
|
1
|
+
# n8n-nodes-proiectro
|
|
2
|
+
|
|
3
|
+
This is an [n8n](https://n8n.io/) community node for [Proiect.ro](https://proiect.ro) — the business management platform for freelancers, founders, and small teams.
|
|
4
|
+
|
|
5
|
+
Automate your business workflows: manage customers, proposals, payments, work items, support requests, and more — all from n8n.
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
### In n8n Desktop / Self-Hosted
|
|
10
|
+
|
|
11
|
+
1. Go to **Settings > Community Nodes**
|
|
12
|
+
2. Enter `n8n-nodes-proiectro`
|
|
13
|
+
3. Click **Install**
|
|
14
|
+
|
|
15
|
+
### Via npm
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
cd ~/.n8n/nodes
|
|
19
|
+
npm install n8n-nodes-proiectro
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Credentials
|
|
23
|
+
|
|
24
|
+
You need a Proiect.ro API key to use this node:
|
|
25
|
+
|
|
26
|
+
1. Log in to your [Proiect.ro](https://proiect.ro) workspace
|
|
27
|
+
2. Go to **Settings > API Keys**
|
|
28
|
+
3. Create a new API key
|
|
29
|
+
4. In n8n, create a new **Proiect.ro API** credential with:
|
|
30
|
+
- **API Key** — the key you just created
|
|
31
|
+
- **Workspace Path** — your workspace identifier (the path segment in your Proiect.ro URL)
|
|
32
|
+
- **Base URL** — `https://proiect.ro` (change only for self-hosted instances)
|
|
33
|
+
|
|
34
|
+
## Nodes
|
|
35
|
+
|
|
36
|
+
### Proiect.ro (Action Node)
|
|
37
|
+
|
|
38
|
+
Perform operations on your Proiect.ro data. **14 resources, 99 operations:**
|
|
39
|
+
|
|
40
|
+
| Resource | Operations |
|
|
41
|
+
|---|---|
|
|
42
|
+
| **Operational Work Item** | List All, Get, Create, Update, Delete, Move, Approve, Reject, Reassign, My Work Items, My Approvals, List Stage Items, History |
|
|
43
|
+
| **Customer** | List All, Get, Create, Update, Delete |
|
|
44
|
+
| **Contact** | List, Create, Update, Delete, Invite to Portal |
|
|
45
|
+
| **Proposal** | List, Get, Create, Update, Change Stage, Reopen |
|
|
46
|
+
| **Project** | List All, Get Work Items |
|
|
47
|
+
| **Work Item** | Create, Update, Change Status, Delete |
|
|
48
|
+
| **Payment** | Create, Update, Mark Paid, Mark Unpaid, Delete |
|
|
49
|
+
| **Support Request** | List All, Get, Create, Edit, Close, Reopen, Change Status, Reassign, Add Comment, My Assigned |
|
|
50
|
+
| **Team Member** | List All, Invite, Edit, Remove |
|
|
51
|
+
| **Tag** | List All, Create, Update, Delete, Tag/Untag Customer, Member, Resource, Proposal, Work Item, Operational Work Item |
|
|
52
|
+
| **Label** | List All, Create, Update, Delete, Label/Unlabel Customer, Member, Resource, Proposal, Work Item, Operational Work Item |
|
|
53
|
+
| **Resource** | List All, Create, Update, Delete |
|
|
54
|
+
| **Process Definition** | List All, Get, Create, Update, Delete |
|
|
55
|
+
| **Webhook** | List All, Create, Update, Delete |
|
|
56
|
+
|
|
57
|
+
### Proiect.ro Trigger
|
|
58
|
+
|
|
59
|
+
Starts a workflow when an event occurs in Proiect.ro. Uses real-time webhooks — **65 event types** including:
|
|
60
|
+
|
|
61
|
+
- Customer, Contact, Proposal, Payment, and Work Item CRUD events
|
|
62
|
+
- Operational Work Item lifecycle: created, moved, approved, rejected, reassigned
|
|
63
|
+
- Tag and Label attachment/detachment across all entity types
|
|
64
|
+
- Process definition and webhook management events
|
|
65
|
+
- Support request lifecycle events
|
|
66
|
+
|
|
67
|
+
Webhook payloads are verified using **HMAC-SHA256 signature verification** with replay protection.
|
|
68
|
+
|
|
69
|
+
## Links
|
|
70
|
+
|
|
71
|
+
- [Proiect.ro](https://proiect.ro)
|
|
72
|
+
- [API Documentation](https://proiect.ro/api/v1/docs)
|
|
73
|
+
- [n8n Community Nodes](https://docs.n8n.io/integrations/community-nodes/)
|
|
74
|
+
|
|
75
|
+
## License
|
|
76
|
+
|
|
77
|
+
[MIT](LICENSE)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { IAuthenticateGeneric, ICredentialTestRequest, ICredentialType, INodeProperties } from 'n8n-workflow';
|
|
2
|
+
export declare class ProiectroApi implements ICredentialType {
|
|
3
|
+
name: string;
|
|
4
|
+
displayName: string;
|
|
5
|
+
icon: {
|
|
6
|
+
readonly light: "file:proiectro.svg";
|
|
7
|
+
readonly dark: "file:proiectro.svg";
|
|
8
|
+
};
|
|
9
|
+
documentationUrl: string;
|
|
10
|
+
properties: INodeProperties[];
|
|
11
|
+
authenticate: IAuthenticateGeneric;
|
|
12
|
+
test: ICredentialTestRequest;
|
|
13
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ProiectroApi = void 0;
|
|
4
|
+
class ProiectroApi {
|
|
5
|
+
name = 'proiectroApi';
|
|
6
|
+
displayName = 'Proiect.ro API';
|
|
7
|
+
icon = { light: 'file:proiectro.svg', dark: 'file:proiectro.svg' };
|
|
8
|
+
documentationUrl = 'https://proiect.ro/api/v1/docs';
|
|
9
|
+
properties = [
|
|
10
|
+
{
|
|
11
|
+
displayName: 'API Key',
|
|
12
|
+
name: 'apiKey',
|
|
13
|
+
type: 'string',
|
|
14
|
+
typeOptions: { password: true },
|
|
15
|
+
default: '',
|
|
16
|
+
required: true,
|
|
17
|
+
description: 'Your Proiect.ro API key (found in Settings > API Keys)',
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
displayName: 'Workspace Path',
|
|
21
|
+
name: 'workspacePath',
|
|
22
|
+
type: 'string',
|
|
23
|
+
default: '',
|
|
24
|
+
required: true,
|
|
25
|
+
description: 'Your workspace identifier (the path segment in your Proiect.ro URL)',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
displayName: 'Base URL',
|
|
29
|
+
name: 'baseUrl',
|
|
30
|
+
type: 'string',
|
|
31
|
+
default: 'https://proiect.ro',
|
|
32
|
+
description: 'The Proiect.ro instance URL (change only for self-hosted)',
|
|
33
|
+
},
|
|
34
|
+
];
|
|
35
|
+
authenticate = {
|
|
36
|
+
type: 'generic',
|
|
37
|
+
properties: {
|
|
38
|
+
headers: {
|
|
39
|
+
Authorization: '=Bearer {{$credentials.apiKey}}',
|
|
40
|
+
Accept: 'application/json',
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
test = {
|
|
45
|
+
request: {
|
|
46
|
+
baseURL: '={{$credentials.baseUrl}}/api/v1/{{$credentials.workspacePath}}',
|
|
47
|
+
url: '/team',
|
|
48
|
+
method: 'GET',
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
exports.ProiectroApi = ProiectroApi;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="30 -100 740 740" width="64" height="64">
|
|
2
|
+
<g transform="translate(800, 0) scale(-1, 1)">
|
|
3
|
+
<path style="fill:#424242;" d="M632.115,235.586c0.023-0.286,0.065-0.566,0.091-0.851c0.051,0.281,0.086,0.56,0.14,0.841
|
|
4
|
+
c3.265,16.979,11.42,31.773,22.716,43.222c13.379,5.757,28.249,7.104,42.189,3.538c-11.178-8.804-20.277-20.557-25.967-34.707
|
|
5
|
+
c-0.107-0.266-0.195-0.535-0.299-0.802c0.171,0.228,0.327,0.463,0.501,0.689c10.764,14.047,25.087,23.743,40.731,28.835
|
|
6
|
+
c8.541-4.724,15.624-10.989,21.506-18.192c-9.168-2.816-18.009-7.247-26.101-13.374c-0.229-0.173-0.442-0.359-0.669-0.534
|
|
7
|
+
c0.264,0.108,0.518,0.228,0.784,0.333c10.377,4.104,21.078,5.984,31.591,5.906c4.002-6.113,7.314-12.67,10.046-19.396
|
|
8
|
+
c-6.147,0.978-12.499,1.286-18.974,0.851c-0.286-0.019-0.567-0.057-0.852-0.079c0.28-0.055,0.559-0.094,0.838-0.152
|
|
9
|
+
c7.719-1.6,14.957-4.228,21.633-7.679c7.125-20.651,9.348-41.834,9.98-55.346c-3.665,27.027-42.182,58.991-67.043,58.991
|
|
10
|
+
c-36.059,0-83.053-50.432-83.053-50.432l-51.726,17.828l33.405,24.356c11.143,22.514,27.333,37.951,42.109,48.22
|
|
11
|
+
C632.532,257.583,631.203,246.754,632.115,235.586z"/>
|
|
12
|
+
<path style="fill:#424242;" d="M361.611,187.54l3.003-21.261c-38.452-14.01-79.556-16.126-118.255-7.305l1.346,30.236
|
|
13
|
+
l-8.931-28.364c-7.643,2.043-15.175,4.519-22.561,7.419l10.813,29.2l-18.608-25.966c-19.561,8.602-37.936,20.266-54.362,34.826
|
|
14
|
+
l19.958,28.329l-25.509-23.232c-10.345,9.86-19.836,20.927-28.252,33.174l30.122,18.951l200.661-26.582l40.698-58.556
|
|
15
|
+
c-6.873-3.682-13.884-6.932-20.993-9.779L361.611,187.54z"/>
|
|
16
|
+
<polygon style="fill:#424242;" points="459.372,446.3 57.926,446.3 685.202,436.06 688.373,446.3 "/>
|
|
17
|
+
<polygon style="fill:#424242;" points="293.72,300.045 236.956,379.153 191.315,446.3 237.003,446.3 259.322,386.433
|
|
18
|
+
333.369,318.69 334.682,288.492 "/>
|
|
19
|
+
<polygon style="fill:#424242;" points="453.892,446.3 502.536,372.126 452.054,344.158 445.489,323.152 473.648,269.849
|
|
20
|
+
512.709,269.849 548.944,301.358 515.728,331.506 539.101,354.191 499.58,446.3 "/>
|
|
21
|
+
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="419.5821" y1="461.8794" x2="342.3846" y2="82.1935">
|
|
22
|
+
<stop offset="0" style="stop-color:#424242"/>
|
|
23
|
+
<stop offset="1" style="stop-color:#BDBDBD"/>
|
|
24
|
+
</linearGradient>
|
|
25
|
+
<path style="fill:url(#SVGID_1_);" d="M659.752,353.873l-53.828-41.093l-8.18-112.395l-97.592-38.498L395.6,201.316l-0.297,0.104
|
|
26
|
+
c-85.496-45.277-191.51-18.206-244.918,62.129l-0.011-0.003l-43.609-2.625l29.266,21.291l9.805,99.144l13.049,12.779l23.779-12.975
|
|
27
|
+
l7.731-37.265l10.897-19.431l-2.459-20.049c17.339-19.415,42.224-30.572,68.134-30.719l35.48,20.014l0.135,1.177l-68.368,27.8
|
|
28
|
+
l-7.19,14.381l9.931,42.085l58.801,36.035l-13.153-43.723l-26.302-6.017l-3.282-25.689l95.709-13.465l3.428-8.788h51.713
|
|
29
|
+
l88.996-44.758l67.311,64.45l77.846,27.662l4.661,81.44h45.688L659.752,353.873z"/>
|
|
30
|
+
<polygon style="opacity:0.3;fill:#FFFFFF;" points="492.866,272.748 512.064,231.134 560.178,337.198 638.024,364.86
|
|
31
|
+
560.178,337.198 "/>
|
|
32
|
+
<polygon style="opacity:0.5;fill:#FFFFFF;" points="395.6,201.316 520.083,169.75 500.152,161.887 "/>
|
|
33
|
+
<polygon style="opacity:0.3;fill:#FFFFFF;" points="298.118,256.063 316.865,302.933 241.435,326.855 233.721,338.119
|
|
34
|
+
236.956,379.153 227.025,337.068 234.216,322.687 302.583,294.887 "/>
|
|
35
|
+
<polygon style="fill:#424242;" points="369.211,273.787 366.06,317.506 352.158,317.506 "/>
|
|
36
|
+
<polygon style="fill:#424242;" points="153.767,304.509 156.917,365.814 163.613,317.506 "/>
|
|
37
|
+
<polygon style="opacity:0.3;fill:#FFFFFF;" points="145.837,381.357 136.032,282.212 146.602,289.971 150.386,376.974 "/>
|
|
38
|
+
<polygon style="fill:#424242;" points="145.837,381.357 156.786,370.809 171.884,373.566 186.309,363.599 182.665,381.161
|
|
39
|
+
158.887,394.136 "/>
|
|
40
|
+
<path style="opacity:0.3;fill:#FFFFFF;" d="M150.386,263.55l21.63,6.509c43.623-68.365,129.706-99.55,208.589-75.642
|
|
41
|
+
C297.977,159.371,200.772,187.761,150.386,263.55z"/>
|
|
42
|
+
<polygon style="fill:#424242;" points="38,329.446 128.265,276.511 146.602,289.971 "/>
|
|
43
|
+
</g>
|
|
44
|
+
</svg>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { IExecuteFunctions, ILoadOptionsFunctions, INodeExecutionData, INodePropertyOptions, INodeType, INodeTypeDescription } from 'n8n-workflow';
|
|
2
|
+
export declare class Proiectro implements INodeType {
|
|
3
|
+
description: INodeTypeDescription;
|
|
4
|
+
methods: {
|
|
5
|
+
loadOptions: {
|
|
6
|
+
getCustomers(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]>;
|
|
7
|
+
getMembers(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]>;
|
|
8
|
+
getTags(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]>;
|
|
9
|
+
getProjects(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]>;
|
|
10
|
+
getProposals(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]>;
|
|
11
|
+
getProcesses(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]>;
|
|
12
|
+
getWorkItemTypes(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]>;
|
|
13
|
+
getLabels(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]>;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
|
|
17
|
+
}
|