n8n-nodes-setforth 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.
Files changed (136) hide show
  1. package/LICENSE +46 -0
  2. package/README.md +306 -0
  3. package/dist/credentials/SetforthOAuth2Api.credentials.d.ts +10 -0
  4. package/dist/credentials/SetforthOAuth2Api.credentials.js +89 -0
  5. package/dist/credentials/SetforthOAuth2Api.credentials.js.map +1 -0
  6. package/dist/nodes/Setforth/GenericFunctions.d.ts +13 -0
  7. package/dist/nodes/Setforth/GenericFunctions.js +81 -0
  8. package/dist/nodes/Setforth/GenericFunctions.js.map +1 -0
  9. package/dist/nodes/Setforth/LicenseNotice.d.ts +5 -0
  10. package/dist/nodes/Setforth/LicenseNotice.js +26 -0
  11. package/dist/nodes/Setforth/LicenseNotice.js.map +1 -0
  12. package/dist/nodes/Setforth/Setforth.node.d.ts +5 -0
  13. package/dist/nodes/Setforth/Setforth.node.js +324 -0
  14. package/dist/nodes/Setforth/Setforth.node.js.map +1 -0
  15. package/dist/nodes/Setforth/SetforthTrigger.node.d.ts +12 -0
  16. package/dist/nodes/Setforth/SetforthTrigger.node.js +209 -0
  17. package/dist/nodes/Setforth/SetforthTrigger.node.js.map +1 -0
  18. package/dist/nodes/Setforth/descriptions/AccountStatementDescription.d.ts +3 -0
  19. package/dist/nodes/Setforth/descriptions/AccountStatementDescription.js +85 -0
  20. package/dist/nodes/Setforth/descriptions/AccountStatementDescription.js.map +1 -0
  21. package/dist/nodes/Setforth/descriptions/AdminUserDescription.d.ts +3 -0
  22. package/dist/nodes/Setforth/descriptions/AdminUserDescription.js +85 -0
  23. package/dist/nodes/Setforth/descriptions/AdminUserDescription.js.map +1 -0
  24. package/dist/nodes/Setforth/descriptions/BulkDescription.d.ts +3 -0
  25. package/dist/nodes/Setforth/descriptions/BulkDescription.js +85 -0
  26. package/dist/nodes/Setforth/descriptions/BulkDescription.js.map +1 -0
  27. package/dist/nodes/Setforth/descriptions/CalendarEventDescription.d.ts +3 -0
  28. package/dist/nodes/Setforth/descriptions/CalendarEventDescription.js +85 -0
  29. package/dist/nodes/Setforth/descriptions/CalendarEventDescription.js.map +1 -0
  30. package/dist/nodes/Setforth/descriptions/CallDescription.d.ts +3 -0
  31. package/dist/nodes/Setforth/descriptions/CallDescription.js +85 -0
  32. package/dist/nodes/Setforth/descriptions/CallDescription.js.map +1 -0
  33. package/dist/nodes/Setforth/descriptions/CampaignDescription.d.ts +3 -0
  34. package/dist/nodes/Setforth/descriptions/CampaignDescription.js +85 -0
  35. package/dist/nodes/Setforth/descriptions/CampaignDescription.js.map +1 -0
  36. package/dist/nodes/Setforth/descriptions/ClixsignDescription.d.ts +3 -0
  37. package/dist/nodes/Setforth/descriptions/ClixsignDescription.js +85 -0
  38. package/dist/nodes/Setforth/descriptions/ClixsignDescription.js.map +1 -0
  39. package/dist/nodes/Setforth/descriptions/ContactAlertDescription.d.ts +3 -0
  40. package/dist/nodes/Setforth/descriptions/ContactAlertDescription.js +85 -0
  41. package/dist/nodes/Setforth/descriptions/ContactAlertDescription.js.map +1 -0
  42. package/dist/nodes/Setforth/descriptions/ContactBankingDescription.d.ts +3 -0
  43. package/dist/nodes/Setforth/descriptions/ContactBankingDescription.js +85 -0
  44. package/dist/nodes/Setforth/descriptions/ContactBankingDescription.js.map +1 -0
  45. package/dist/nodes/Setforth/descriptions/ContactCommunicationDescription.d.ts +3 -0
  46. package/dist/nodes/Setforth/descriptions/ContactCommunicationDescription.js +85 -0
  47. package/dist/nodes/Setforth/descriptions/ContactCommunicationDescription.js.map +1 -0
  48. package/dist/nodes/Setforth/descriptions/ContactCreditDescription.d.ts +3 -0
  49. package/dist/nodes/Setforth/descriptions/ContactCreditDescription.js +85 -0
  50. package/dist/nodes/Setforth/descriptions/ContactCreditDescription.js.map +1 -0
  51. package/dist/nodes/Setforth/descriptions/ContactDebtDescription.d.ts +3 -0
  52. package/dist/nodes/Setforth/descriptions/ContactDebtDescription.js +85 -0
  53. package/dist/nodes/Setforth/descriptions/ContactDebtDescription.js.map +1 -0
  54. package/dist/nodes/Setforth/descriptions/ContactDescription.d.ts +3 -0
  55. package/dist/nodes/Setforth/descriptions/ContactDescription.js +372 -0
  56. package/dist/nodes/Setforth/descriptions/ContactDescription.js.map +1 -0
  57. package/dist/nodes/Setforth/descriptions/ContactDocumentDescription.d.ts +3 -0
  58. package/dist/nodes/Setforth/descriptions/ContactDocumentDescription.js +85 -0
  59. package/dist/nodes/Setforth/descriptions/ContactDocumentDescription.js.map +1 -0
  60. package/dist/nodes/Setforth/descriptions/ContactListDescription.d.ts +3 -0
  61. package/dist/nodes/Setforth/descriptions/ContactListDescription.js +85 -0
  62. package/dist/nodes/Setforth/descriptions/ContactListDescription.js.map +1 -0
  63. package/dist/nodes/Setforth/descriptions/ContactNoteDescription.d.ts +3 -0
  64. package/dist/nodes/Setforth/descriptions/ContactNoteDescription.js +85 -0
  65. package/dist/nodes/Setforth/descriptions/ContactNoteDescription.js.map +1 -0
  66. package/dist/nodes/Setforth/descriptions/ContactWorkflowDescription.d.ts +3 -0
  67. package/dist/nodes/Setforth/descriptions/ContactWorkflowDescription.js +85 -0
  68. package/dist/nodes/Setforth/descriptions/ContactWorkflowDescription.js.map +1 -0
  69. package/dist/nodes/Setforth/descriptions/ContentConfigDescription.d.ts +3 -0
  70. package/dist/nodes/Setforth/descriptions/ContentConfigDescription.js +85 -0
  71. package/dist/nodes/Setforth/descriptions/ContentConfigDescription.js.map +1 -0
  72. package/dist/nodes/Setforth/descriptions/CreditorDescription.d.ts +3 -0
  73. package/dist/nodes/Setforth/descriptions/CreditorDescription.js +85 -0
  74. package/dist/nodes/Setforth/descriptions/CreditorDescription.js.map +1 -0
  75. package/dist/nodes/Setforth/descriptions/DebtDescription.d.ts +3 -0
  76. package/dist/nodes/Setforth/descriptions/DebtDescription.js +252 -0
  77. package/dist/nodes/Setforth/descriptions/DebtDescription.js.map +1 -0
  78. package/dist/nodes/Setforth/descriptions/DebtNoteDescription.d.ts +3 -0
  79. package/dist/nodes/Setforth/descriptions/DebtNoteDescription.js +85 -0
  80. package/dist/nodes/Setforth/descriptions/DebtNoteDescription.js.map +1 -0
  81. package/dist/nodes/Setforth/descriptions/DebtTaskDescription.d.ts +3 -0
  82. package/dist/nodes/Setforth/descriptions/DebtTaskDescription.js +85 -0
  83. package/dist/nodes/Setforth/descriptions/DebtTaskDescription.js.map +1 -0
  84. package/dist/nodes/Setforth/descriptions/DocumentDescription.d.ts +3 -0
  85. package/dist/nodes/Setforth/descriptions/DocumentDescription.js +85 -0
  86. package/dist/nodes/Setforth/descriptions/DocumentDescription.js.map +1 -0
  87. package/dist/nodes/Setforth/descriptions/DocumentPackageDescription.d.ts +3 -0
  88. package/dist/nodes/Setforth/descriptions/DocumentPackageDescription.js +85 -0
  89. package/dist/nodes/Setforth/descriptions/DocumentPackageDescription.js.map +1 -0
  90. package/dist/nodes/Setforth/descriptions/DocumentPackageTemplateDescription.d.ts +3 -0
  91. package/dist/nodes/Setforth/descriptions/DocumentPackageTemplateDescription.js +85 -0
  92. package/dist/nodes/Setforth/descriptions/DocumentPackageTemplateDescription.js.map +1 -0
  93. package/dist/nodes/Setforth/descriptions/DocumentTemplateDescription.d.ts +3 -0
  94. package/dist/nodes/Setforth/descriptions/DocumentTemplateDescription.js +85 -0
  95. package/dist/nodes/Setforth/descriptions/DocumentTemplateDescription.js.map +1 -0
  96. package/dist/nodes/Setforth/descriptions/DocumentTypeDescription.d.ts +3 -0
  97. package/dist/nodes/Setforth/descriptions/DocumentTypeDescription.js +85 -0
  98. package/dist/nodes/Setforth/descriptions/DocumentTypeDescription.js.map +1 -0
  99. package/dist/nodes/Setforth/descriptions/EmailTemplateDescription.d.ts +3 -0
  100. package/dist/nodes/Setforth/descriptions/EmailTemplateDescription.js +85 -0
  101. package/dist/nodes/Setforth/descriptions/EmailTemplateDescription.js.map +1 -0
  102. package/dist/nodes/Setforth/descriptions/EnrollmentDescription.d.ts +3 -0
  103. package/dist/nodes/Setforth/descriptions/EnrollmentDescription.js +85 -0
  104. package/dist/nodes/Setforth/descriptions/EnrollmentDescription.js.map +1 -0
  105. package/dist/nodes/Setforth/descriptions/ForthCreditDescription.d.ts +3 -0
  106. package/dist/nodes/Setforth/descriptions/ForthCreditDescription.js +85 -0
  107. package/dist/nodes/Setforth/descriptions/ForthCreditDescription.js.map +1 -0
  108. package/dist/nodes/Setforth/descriptions/LenderDescription.d.ts +3 -0
  109. package/dist/nodes/Setforth/descriptions/LenderDescription.js +85 -0
  110. package/dist/nodes/Setforth/descriptions/LenderDescription.js.map +1 -0
  111. package/dist/nodes/Setforth/descriptions/PayeeDescription.d.ts +3 -0
  112. package/dist/nodes/Setforth/descriptions/PayeeDescription.js +85 -0
  113. package/dist/nodes/Setforth/descriptions/PayeeDescription.js.map +1 -0
  114. package/dist/nodes/Setforth/descriptions/SettlementOfferDescription.d.ts +3 -0
  115. package/dist/nodes/Setforth/descriptions/SettlementOfferDescription.js +85 -0
  116. package/dist/nodes/Setforth/descriptions/SettlementOfferDescription.js.map +1 -0
  117. package/dist/nodes/Setforth/descriptions/TaskDescription.d.ts +3 -0
  118. package/dist/nodes/Setforth/descriptions/TaskDescription.js +85 -0
  119. package/dist/nodes/Setforth/descriptions/TaskDescription.js.map +1 -0
  120. package/dist/nodes/Setforth/descriptions/TeamDescription.d.ts +3 -0
  121. package/dist/nodes/Setforth/descriptions/TeamDescription.js +85 -0
  122. package/dist/nodes/Setforth/descriptions/TeamDescription.js.map +1 -0
  123. package/dist/nodes/Setforth/descriptions/TransactionDescription.d.ts +3 -0
  124. package/dist/nodes/Setforth/descriptions/TransactionDescription.js +85 -0
  125. package/dist/nodes/Setforth/descriptions/TransactionDescription.js.map +1 -0
  126. package/dist/nodes/Setforth/descriptions/UserDescription.d.ts +3 -0
  127. package/dist/nodes/Setforth/descriptions/UserDescription.js +85 -0
  128. package/dist/nodes/Setforth/descriptions/UserDescription.js.map +1 -0
  129. package/dist/nodes/Setforth/descriptions/UtilityDescription.d.ts +3 -0
  130. package/dist/nodes/Setforth/descriptions/UtilityDescription.js +85 -0
  131. package/dist/nodes/Setforth/descriptions/UtilityDescription.js.map +1 -0
  132. package/dist/nodes/Setforth/descriptions/index.d.ts +38 -0
  133. package/dist/nodes/Setforth/descriptions/index.js +61 -0
  134. package/dist/nodes/Setforth/descriptions/index.js.map +1 -0
  135. package/dist/nodes/Setforth/setforth.svg +4 -0
  136. package/package.json +78 -0
package/LICENSE ADDED
@@ -0,0 +1,46 @@
1
+ Business Source License 1.1
2
+
3
+ License text copyright (c) 2017 MariaDB Corporation Ab.
4
+
5
+ Licensor:
6
+ Velocity BPA, LLC
7
+ https://velobpa.com
8
+
9
+ Licensed Work:
10
+ This repository and all source code, documentation, and associated artifacts
11
+ contained herein, including all n8n community nodes published by Velocity BPA.
12
+
13
+ Additional Use Grant:
14
+ You may use, modify, and run the Licensed Work free of charge for:
15
+ - Personal use
16
+ - Educational use
17
+ - Research use
18
+ - Internal business use, provided such use does not involve resale,
19
+ redistribution, or offering the Licensed Work as part of a commercial
20
+ product or service.
21
+
22
+ Commercial Use Restriction:
23
+ Commercial Use of the Licensed Work is prohibited without a valid
24
+ Commercial License issued by the Licensor.
25
+
26
+ Commercial Use includes, but is not limited to:
27
+ - Use of the Licensed Work within any Software-as-a-Service (SaaS),
28
+ Platform-as-a-Service (PaaS), or hosted application that is sold,
29
+ licensed, or monetized in any form
30
+ - Offering the Licensed Work as part of a managed services engagement
31
+ - Bundling or redistributing the Licensed Work with a paid product
32
+ - Reselling, sublicensing, or white-labeling the Licensed Work
33
+ - Embedding the Licensed Work into any commercial automation platform,
34
+ integration product, or solution offering
35
+
36
+ Change Date:
37
+ January 1, 2030
38
+
39
+ Change License:
40
+ Apache License, Version 2.0
41
+
42
+ For commercial licensing inquiries:
43
+ licensing@velobpa.com
44
+
45
+ Business Source License 1.1 full text:
46
+ https://mariadb.com/bsl11/
package/README.md ADDED
@@ -0,0 +1,306 @@
1
+ # n8n-nodes-setforth
2
+
3
+ > [Velocity BPA Licensing Notice]
4
+ >
5
+ > This n8n node is licensed under the Business Source License 1.1 (BSL 1.1).
6
+ >
7
+ > Use of this node by for-profit organizations in production environments requires a commercial license from Velocity BPA.
8
+ >
9
+ > For licensing information, visit https://velobpa.com/licensing or contact licensing@velobpa.com.
10
+
11
+ A comprehensive n8n community node for the **Setforth (FORTH®) API** - a debt resolution technology platform providing CRM, payment processing, e-signature, and credit reporting services for Debt Relief Service Providers (DRSPs).
12
+
13
+ ![License](https://img.shields.io/badge/license-BSL--1.1-blue)
14
+ ![n8n](https://img.shields.io/badge/n8n-community--node-orange)
15
+ ![Version](https://img.shields.io/badge/version-1.0.0-green)
16
+
17
+ > **FORTH® API Notice:** FORTH® is a registered trademark of SetForth, Inc. This n8n community node is developed independently by Velocity BPA, LLC and is not affiliated with, endorsed by, or sponsored by SetForth, Inc. Use of the Setforth API requires a separate API access agreement with SetForth, Inc.
18
+
19
+ ---
20
+
21
+ ## Features
22
+
23
+ - **38 Resources** with **150+ Operations**
24
+ - OAuth2 authentication with environment switching (Production/Sandbox)
25
+ - Webhook triggers for 12 real-time event types
26
+ - Comprehensive error handling with user-friendly messages
27
+ - Pagination support for large datasets
28
+ - Binary file handling for document operations
29
+
30
+ ---
31
+
32
+ ## Installation
33
+
34
+ ### Community Nodes (Recommended)
35
+
36
+ 1. Open **Settings** → **Community Nodes**
37
+ 2. Click **Install**
38
+ 3. Enter: `n8n-nodes-setforth`
39
+ 4. Click **Install**
40
+
41
+ ### Manual Installation
42
+
43
+ ```bash
44
+ # Navigate to your n8n installation
45
+ cd ~/.n8n
46
+
47
+ # Install the package
48
+ npm install n8n-nodes-setforth
49
+ ```
50
+
51
+ ### Development Installation
52
+
53
+ ```bash
54
+ # 1. Extract the zip file
55
+ unzip n8n-nodes-setforth.zip
56
+ cd n8n-nodes-setforth
57
+
58
+ # 2. Install dependencies
59
+ npm install
60
+
61
+ # 3. Build the project
62
+ npm run build
63
+
64
+ # 4. Create symlink to n8n custom nodes directory
65
+ mkdir -p ~/.n8n/custom
66
+ ln -s $(pwd) ~/.n8n/custom/n8n-nodes-setforth
67
+
68
+ # 5. Restart n8n
69
+ n8n start
70
+ ```
71
+
72
+ ---
73
+
74
+ ## Credentials Setup
75
+
76
+ | Field | Description |
77
+ |-------|-------------|
78
+ | **Environment** | Select Production or Sandbox |
79
+ | **Client ID** | Your Setforth API Client ID |
80
+ | **Client Secret** | Your Setforth API Client Secret |
81
+ | **Scope** | OAuth2 scopes (default: `read write`) |
82
+
83
+ ---
84
+
85
+ ## Resources & Operations
86
+
87
+ ### CRM Resources
88
+
89
+ | Resource | Operations |
90
+ |----------|------------|
91
+ | **Contact** | Create, Get, Get Many, Update, Delete, Search, Get History Feed |
92
+ | **Contact Alert** | Get, Get Many |
93
+ | **Contact Note** | Get, Get Many |
94
+ | **Contact Communication** | Get, Get Many |
95
+ | **Contact Document** | Get, Get Many |
96
+ | **Contact List** | Get, Get Many |
97
+ | **Contact Workflow** | Get, Get Many |
98
+ | **Contact Banking** | Get, Get Many |
99
+
100
+ ### Debt Resources
101
+
102
+ | Resource | Operations |
103
+ |----------|------------|
104
+ | **Debt** | Create, Get, Update, Delete, Get Documents, Update Type |
105
+ | **Debt Task** | Get, Get Many |
106
+ | **Debt Note** | Get, Get Many |
107
+ | **Contact Debt** | Get, Get Many |
108
+ | **Contact Credit Report** | Get, Get Many |
109
+
110
+ ### Servicing Resources
111
+
112
+ | Resource | Operations |
113
+ |----------|------------|
114
+ | **Enrollment** | Get, Get Many |
115
+ | **Settlement Offer** | Get, Get Many |
116
+ | **Transaction** | Get, Get Many |
117
+ | **Account Statement** | Get, Get Many |
118
+ | **Creditor** | Get, Get Many |
119
+
120
+ ### Document Resources
121
+
122
+ | Resource | Operations |
123
+ |----------|------------|
124
+ | **Document** | Get, Get Many |
125
+ | **Document Package** | Get, Get Many |
126
+ | **Document Type** | Get, Get Many |
127
+ | **Document Template** | Get, Get Many |
128
+ | **Document Package Template** | Get, Get Many |
129
+
130
+ ### E-Signature & Credit
131
+
132
+ | Resource | Operations |
133
+ |----------|------------|
134
+ | **Clixsign** | Get, Get Many |
135
+ | **Forth Credit** | Get, Get Many |
136
+
137
+ ### Administration
138
+
139
+ | Resource | Operations |
140
+ |----------|------------|
141
+ | **Admin User** | Get, Get Many |
142
+ | **Team** | Get, Get Many |
143
+ | **User** | Get, Get Many |
144
+ | **Payee** | Get, Get Many |
145
+ | **Content Configuration** | Get, Get Many |
146
+
147
+ ### Marketing
148
+
149
+ | Resource | Operations |
150
+ |----------|------------|
151
+ | **Campaign** | Get, Get Many |
152
+ | **Email Template** | Get, Get Many |
153
+
154
+ ### Other Resources
155
+
156
+ | Resource | Operations |
157
+ |----------|------------|
158
+ | **Call** | Get, Get Many |
159
+ | **Task** | Get, Get Many |
160
+ | **Calendar Event** | Get, Get Many |
161
+ | **Lender** | Get, Get Many |
162
+ | **Utility** | Get, Get Many |
163
+ | **Bulk Operations** | Get, Get Many |
164
+
165
+ ---
166
+
167
+ ## Trigger Node
168
+
169
+ The Setforth Trigger node supports the following events:
170
+
171
+ | Event | Description |
172
+ |-------|-------------|
173
+ | `contact.created` | New contact created |
174
+ | `contact.updated` | Contact updated |
175
+ | `debt.created` | New debt created |
176
+ | `debt.status_changed` | Debt status changed |
177
+ | `clixsign.document_signed` | Document signed via Clixsign |
178
+ | `enrollment.submitted` | Enrollment submitted |
179
+ | `enrollment.approved` | Enrollment approved |
180
+ | `payment.received` | Payment received |
181
+ | `settlement.created` | Settlement offer created |
182
+ | `settlement.status_changed` | Settlement offer status changed |
183
+ | `task.completed` | Task completed |
184
+ | `workflow.status_changed` | Workflow status changed |
185
+
186
+ ---
187
+
188
+ ## Usage Examples
189
+
190
+ ### Create a Contact
191
+
192
+ ```json
193
+ {
194
+ "resource": "contact",
195
+ "operation": "create",
196
+ "firstName": "John",
197
+ "lastName": "Doe",
198
+ "email": "john.doe@example.com",
199
+ "phone": "+15551234567"
200
+ }
201
+ ```
202
+
203
+ ### Create a Debt
204
+
205
+ ```json
206
+ {
207
+ "resource": "debt",
208
+ "operation": "create",
209
+ "contactId": "{{$json.id}}",
210
+ "creditorName": "Capital One",
211
+ "originalBalance": 5000.00,
212
+ "currentBalance": 4500.00
213
+ }
214
+ ```
215
+
216
+ ---
217
+
218
+ ## Error Handling
219
+
220
+ The node provides user-friendly error messages for common API errors:
221
+
222
+ | Code | Description |
223
+ |------|-------------|
224
+ | 400 | Bad Request - Invalid request |
225
+ | 401 | Unauthorized - Invalid credentials |
226
+ | 403 | Forbidden - Insufficient permissions |
227
+ | 404 | Not Found - Resource not found |
228
+ | 429 | Too Many Requests - Rate limit exceeded |
229
+ | 500 | Internal Server Error |
230
+
231
+ ---
232
+
233
+ ## Development
234
+
235
+ ```bash
236
+ # Install dependencies
237
+ npm install
238
+
239
+ # Build the project
240
+ npm run build
241
+
242
+ # Run linting
243
+ npm run lint
244
+
245
+ # Fix linting issues
246
+ npm run lint:fix
247
+
248
+ # Run tests
249
+ npm test
250
+
251
+ # Run tests with coverage
252
+ npm run test:coverage
253
+
254
+ # Watch mode for development
255
+ npm run dev
256
+ ```
257
+
258
+ ---
259
+
260
+ ## Author
261
+
262
+ **Velocity BPA**
263
+ - Website: [velobpa.com](https://velobpa.com)
264
+ - GitHub: [Velocity-BPA](https://github.com/Velocity-BPA)
265
+
266
+ ---
267
+
268
+ ## Licensing
269
+
270
+ This n8n community node is licensed under the **Business Source License 1.1**.
271
+
272
+ ### Free Use
273
+ Permitted for personal, educational, research, and internal business use.
274
+
275
+ ### Commercial Use
276
+ Use of this node within any SaaS, PaaS, hosted platform, managed service, or paid automation offering requires a commercial license.
277
+
278
+ For licensing inquiries:
279
+ **licensing@velobpa.com**
280
+
281
+ See [LICENSE](LICENSE), [COMMERCIAL_LICENSE.md](COMMERCIAL_LICENSE.md), and [LICENSING_FAQ.md](LICENSING_FAQ.md) for details.
282
+
283
+ ---
284
+
285
+ ## Support
286
+
287
+ - **Documentation**: See this README and inline code documentation
288
+ - **Issues**: [GitHub Issues](https://github.com/Velocity-BPA/n8n-nodes-setforth/issues)
289
+ - **Commercial Support**: licensing@velobpa.com
290
+
291
+ ---
292
+
293
+ ## Acknowledgments
294
+
295
+ - [n8n](https://n8n.io) - Workflow automation platform
296
+ - [Setforth](https://setforth.com) - Debt resolution technology platform
297
+
298
+ ---
299
+
300
+ ## Trademark Notice
301
+
302
+ - **FORTH®** is a registered trademark of SetForth, Inc.
303
+ - **n8n®** is a registered trademark of n8n GmbH.
304
+ - **Velocity BPA™** is a trademark of Velocity BPA, LLC.
305
+
306
+ This node is not affiliated with, endorsed by, or sponsored by SetForth, Inc. or n8n GmbH.
@@ -0,0 +1,10 @@
1
+ import type { IAuthenticateGeneric, ICredentialTestRequest, ICredentialType, INodeProperties } from 'n8n-workflow';
2
+ export declare class SetforthOAuth2Api implements ICredentialType {
3
+ name: string;
4
+ displayName: string;
5
+ documentationUrl: string;
6
+ extends: string[];
7
+ properties: INodeProperties[];
8
+ authenticate: IAuthenticateGeneric;
9
+ test: ICredentialTestRequest;
10
+ }
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) Velocity BPA, LLC
4
+ * Licensed under the Business Source License 1.1
5
+ * Commercial use requires a separate commercial license.
6
+ * See LICENSE file for details.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.SetforthOAuth2Api = void 0;
10
+ class SetforthOAuth2Api {
11
+ constructor() {
12
+ this.name = 'setforthOAuth2Api';
13
+ this.displayName = 'Setforth OAuth2 API';
14
+ this.documentationUrl = 'https://developer.setforth.com';
15
+ this.extends = ['oAuth2Api'];
16
+ this.properties = [
17
+ {
18
+ displayName: 'Environment',
19
+ name: 'environment',
20
+ type: 'options',
21
+ options: [
22
+ {
23
+ name: 'Production',
24
+ value: 'production',
25
+ },
26
+ {
27
+ name: 'Sandbox',
28
+ value: 'sandbox',
29
+ },
30
+ ],
31
+ default: 'sandbox',
32
+ description: 'Select the Setforth environment to connect to',
33
+ },
34
+ {
35
+ displayName: 'Grant Type',
36
+ name: 'grantType',
37
+ type: 'hidden',
38
+ default: 'clientCredentials',
39
+ },
40
+ {
41
+ displayName: 'Authorization URL',
42
+ name: 'authUrl',
43
+ type: 'hidden',
44
+ default: '={{$self["environment"] === "production" ? "https://api.setforth.com/oauth/authorize" : "https://api.sandbox.setforth.com/oauth/authorize"}}',
45
+ },
46
+ {
47
+ displayName: 'Access Token URL',
48
+ name: 'accessTokenUrl',
49
+ type: 'hidden',
50
+ default: '={{$self["environment"] === "production" ? "https://api.setforth.com/oauth/token" : "https://api.sandbox.setforth.com/oauth/token"}}',
51
+ },
52
+ {
53
+ displayName: 'Scope',
54
+ name: 'scope',
55
+ type: 'string',
56
+ default: 'read write',
57
+ description: 'OAuth2 scopes to request',
58
+ },
59
+ {
60
+ displayName: 'Auth URI Query Parameters',
61
+ name: 'authQueryParameters',
62
+ type: 'hidden',
63
+ default: '',
64
+ },
65
+ {
66
+ displayName: 'Authentication',
67
+ name: 'authentication',
68
+ type: 'hidden',
69
+ default: 'body',
70
+ },
71
+ ];
72
+ this.authenticate = {
73
+ type: 'generic',
74
+ properties: {
75
+ headers: {
76
+ Authorization: '=Bearer {{$credentials.oauthTokenData.access_token}}',
77
+ },
78
+ },
79
+ };
80
+ this.test = {
81
+ request: {
82
+ baseURL: '={{$credentials.environment === "production" ? "https://api.setforth.com" : "https://api.sandbox.setforth.com"}}',
83
+ url: '/v1/users/me',
84
+ },
85
+ };
86
+ }
87
+ }
88
+ exports.SetforthOAuth2Api = SetforthOAuth2Api;
89
+ //# sourceMappingURL=SetforthOAuth2Api.credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SetforthOAuth2Api.credentials.js","sourceRoot":"","sources":["../../credentials/SetforthOAuth2Api.credentials.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AASH,MAAa,iBAAiB;IAA9B;QACC,SAAI,GAAG,mBAAmB,CAAC;QAE3B,gBAAW,GAAG,qBAAqB,CAAC;QAEpC,qBAAgB,GAAG,gCAAgC,CAAC;QAEpD,YAAO,GAAG,CAAC,WAAW,CAAC,CAAC;QAExB,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,aAAa;gBAC1B,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE;oBACR;wBACC,IAAI,EAAE,YAAY;wBAClB,KAAK,EAAE,YAAY;qBACnB;oBACD;wBACC,IAAI,EAAE,SAAS;wBACf,KAAK,EAAE,SAAS;qBAChB;iBACD;gBACD,OAAO,EAAE,SAAS;gBAClB,WAAW,EAAE,+CAA+C;aAC5D;YACD;gBACC,WAAW,EAAE,YAAY;gBACzB,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,mBAAmB;aAC5B;YACD;gBACC,WAAW,EAAE,mBAAmB;gBAChC,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,QAAQ;gBACd,OAAO,EACN,8IAA8I;aAC/I;YACD;gBACC,WAAW,EAAE,kBAAkB;gBAC/B,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,QAAQ;gBACd,OAAO,EACN,sIAAsI;aACvI;YACD;gBACC,WAAW,EAAE,OAAO;gBACpB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,YAAY;gBACrB,WAAW,EAAE,0BAA0B;aACvC;YACD;gBACC,WAAW,EAAE,2BAA2B;gBACxC,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;aACX;YACD;gBACC,WAAW,EAAE,gBAAgB;gBAC7B,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,MAAM;aACf;SACD,CAAC;QAEF,iBAAY,GAAyB;YACpC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACX,OAAO,EAAE;oBACR,aAAa,EAAE,sDAAsD;iBACrE;aACD;SACD,CAAC;QAEF,SAAI,GAA2B;YAC9B,OAAO,EAAE;gBACR,OAAO,EACN,kHAAkH;gBACnH,GAAG,EAAE,cAAc;aACnB;SACD,CAAC;IACH,CAAC;CAAA;AApFD,8CAoFC"}
@@ -0,0 +1,13 @@
1
+ import type { IExecuteFunctions, IHookFunctions, ILoadOptionsFunctions, IDataObject, IHttpRequestMethods } from 'n8n-workflow';
2
+ /**
3
+ * Makes an authenticated request to the Setforth API.
4
+ */
5
+ export declare function setforthApiRequest(this: IExecuteFunctions | ILoadOptionsFunctions | IHookFunctions, method: IHttpRequestMethods, endpoint: string, body?: IDataObject, qs?: IDataObject, uri?: string): Promise<IDataObject | IDataObject[]>;
6
+ /**
7
+ * Makes a paginated request to the Setforth API, returning all items.
8
+ */
9
+ export declare function setforthApiRequestAllItems(this: IExecuteFunctions | ILoadOptionsFunctions, method: IHttpRequestMethods, endpoint: string, body?: IDataObject, qs?: IDataObject): Promise<IDataObject[]>;
10
+ /**
11
+ * Handles API error responses with user-friendly messages.
12
+ */
13
+ export declare function handleErrorResponse(statusCode: number, message?: string): string;
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) Velocity BPA, LLC
4
+ * Licensed under the Business Source License 1.1
5
+ * Commercial use requires a separate commercial license.
6
+ * See LICENSE file for details.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.setforthApiRequest = setforthApiRequest;
10
+ exports.setforthApiRequestAllItems = setforthApiRequestAllItems;
11
+ exports.handleErrorResponse = handleErrorResponse;
12
+ const n8n_workflow_1 = require("n8n-workflow");
13
+ /**
14
+ * Makes an authenticated request to the Setforth API.
15
+ */
16
+ async function setforthApiRequest(method, endpoint, body = {}, qs = {}, uri) {
17
+ const credentials = await this.getCredentials('setforthOAuth2Api');
18
+ const environment = credentials.environment;
19
+ const baseUrl = environment === 'production'
20
+ ? 'https://api.setforth.com'
21
+ : 'https://api.sandbox.setforth.com';
22
+ const options = {
23
+ method,
24
+ body,
25
+ qs,
26
+ uri: uri || `${baseUrl}${endpoint}`,
27
+ json: true,
28
+ };
29
+ if (Object.keys(body).length === 0) {
30
+ delete options.body;
31
+ }
32
+ if (Object.keys(qs).length === 0) {
33
+ delete options.qs;
34
+ }
35
+ try {
36
+ const response = await this.helpers.requestOAuth2.call(this, 'setforthOAuth2Api', options);
37
+ return response;
38
+ }
39
+ catch (error) {
40
+ throw new n8n_workflow_1.NodeApiError(this.getNode(), error);
41
+ }
42
+ }
43
+ /**
44
+ * Makes a paginated request to the Setforth API, returning all items.
45
+ */
46
+ async function setforthApiRequestAllItems(method, endpoint, body = {}, qs = {}) {
47
+ const returnData = [];
48
+ let responseData;
49
+ let nextCursor;
50
+ do {
51
+ if (nextCursor) {
52
+ qs.cursor = nextCursor;
53
+ }
54
+ responseData = (await setforthApiRequest.call(this, method, endpoint, body, qs));
55
+ if (responseData.data) {
56
+ const items = responseData.data;
57
+ returnData.push(...items);
58
+ }
59
+ nextCursor = responseData.next_cursor;
60
+ } while (nextCursor);
61
+ return returnData;
62
+ }
63
+ /**
64
+ * Handles API error responses with user-friendly messages.
65
+ */
66
+ function handleErrorResponse(statusCode, message) {
67
+ const errorMessages = {
68
+ 400: 'Bad Request - The request was invalid or cannot be served.',
69
+ 401: 'Unauthorized - Authentication credentials are missing or invalid.',
70
+ 403: 'Forbidden - You do not have permission to access this resource.',
71
+ 404: 'Not Found - The requested resource could not be found.',
72
+ 409: 'Conflict - The request conflicts with the current state of the resource.',
73
+ 422: 'Unprocessable Entity - The request was well-formed but contains semantic errors.',
74
+ 429: 'Too Many Requests - Rate limit exceeded. Please wait and try again.',
75
+ 500: 'Internal Server Error - An unexpected error occurred on the server.',
76
+ 502: 'Bad Gateway - The server received an invalid response from an upstream server.',
77
+ 503: 'Service Unavailable - The server is temporarily unavailable.',
78
+ };
79
+ return errorMessages[statusCode] || message || `An unexpected error occurred (${statusCode})`;
80
+ }
81
+ //# sourceMappingURL=GenericFunctions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenericFunctions.js","sourceRoot":"","sources":["../../../nodes/Setforth/GenericFunctions.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAgBH,gDA0CC;AAKD,gEAiCC;AAKD,kDAeC;AAzGD,+CAA4C;AAE5C;;GAEG;AACI,KAAK,UAAU,kBAAkB,CAEvC,MAA2B,EAC3B,QAAgB,EAChB,OAAoB,EAAE,EACtB,KAAkB,EAAE,EACpB,GAAY;IAEZ,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;IACnE,MAAM,WAAW,GAAG,WAAW,CAAC,WAAqB,CAAC;IAEtD,MAAM,OAAO,GACZ,WAAW,KAAK,YAAY;QAC3B,CAAC,CAAC,0BAA0B;QAC5B,CAAC,CAAC,kCAAkC,CAAC;IAEvC,MAAM,OAAO,GAAoB;QAChC,MAAM;QACN,IAAI;QACJ,EAAE;QACF,GAAG,EAAE,GAAG,IAAI,GAAG,OAAO,GAAG,QAAQ,EAAE;QACnC,IAAI,EAAE,IAAI;KACV,CAAC;IAEF,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,OAAO,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC,EAAE,CAAC;IACnB,CAAC;IAED,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CACrD,IAAI,EACJ,mBAAmB,EACnB,OAAO,CACP,CAAC;QACF,OAAO,QAAuB,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,IAAI,2BAAY,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAmB,CAAC,CAAC;IAC7D,CAAC;AACF,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,0BAA0B,CAE/C,MAA2B,EAC3B,QAAgB,EAChB,OAAoB,EAAE,EACtB,KAAkB,EAAE;IAEpB,MAAM,UAAU,GAAkB,EAAE,CAAC;IACrC,IAAI,YAAyB,CAAC;IAC9B,IAAI,UAA8B,CAAC;IAEnC,GAAG,CAAC;QACH,IAAI,UAAU,EAAE,CAAC;YAChB,EAAE,CAAC,MAAM,GAAG,UAAU,CAAC;QACxB,CAAC;QAED,YAAY,GAAG,CAAC,MAAM,kBAAkB,CAAC,IAAI,CAC5C,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,EAAE,CACF,CAAgB,CAAC;QAElB,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,YAAY,CAAC,IAAqB,CAAC;YACjD,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;QAC3B,CAAC;QAED,UAAU,GAAG,YAAY,CAAC,WAAiC,CAAC;IAC7D,CAAC,QAAQ,UAAU,EAAE;IAErB,OAAO,UAAU,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,UAAkB,EAAE,OAAgB;IACvE,MAAM,aAAa,GAA2B;QAC7C,GAAG,EAAE,4DAA4D;QACjE,GAAG,EAAE,mEAAmE;QACxE,GAAG,EAAE,iEAAiE;QACtE,GAAG,EAAE,wDAAwD;QAC7D,GAAG,EAAE,0EAA0E;QAC/E,GAAG,EAAE,kFAAkF;QACvF,GAAG,EAAE,qEAAqE;QAC1E,GAAG,EAAE,qEAAqE;QAC1E,GAAG,EAAE,gFAAgF;QACrF,GAAG,EAAE,8DAA8D;KACnE,CAAC;IAEF,OAAO,aAAa,CAAC,UAAU,CAAC,IAAI,OAAO,IAAI,iCAAiC,UAAU,GAAG,CAAC;AAC/F,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Logs the Velocity BPA licensing notice once per node type.
3
+ * Non-blocking, informational only.
4
+ */
5
+ export declare function logLicenseNotice(nodeType: string): void;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) Velocity BPA, LLC
4
+ * Licensed under the Business Source License 1.1
5
+ * Commercial use requires a separate commercial license.
6
+ * See LICENSE file for details.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.logLicenseNotice = logLicenseNotice;
10
+ const LICENSE_NOTICE_LOGGED = new Set();
11
+ /**
12
+ * Logs the Velocity BPA licensing notice once per node type.
13
+ * Non-blocking, informational only.
14
+ */
15
+ function logLicenseNotice(nodeType) {
16
+ if (LICENSE_NOTICE_LOGGED.has(nodeType)) {
17
+ return;
18
+ }
19
+ LICENSE_NOTICE_LOGGED.add(nodeType);
20
+ const message = '[Velocity BPA Licensing Notice] ' +
21
+ 'This n8n node is licensed under the Business Source License 1.1 (BSL 1.1). ' +
22
+ 'Use of this node by for-profit organizations in production environments requires a commercial license from Velocity BPA. ' +
23
+ 'For licensing information, visit https://velobpa.com/licensing or contact licensing@velobpa.com.';
24
+ console.warn(message);
25
+ }
26
+ //# sourceMappingURL=LicenseNotice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LicenseNotice.js","sourceRoot":"","sources":["../../../nodes/Setforth/LicenseNotice.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAQH,4CAcC;AApBD,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAU,CAAC;AAEhD;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,QAAgB;IAChD,IAAI,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzC,OAAO;IACR,CAAC;IAED,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEpC,MAAM,OAAO,GACZ,kCAAkC;QAClC,6EAA6E;QAC7E,2HAA2H;QAC3H,kGAAkG,CAAC;IAEpG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class Setforth implements INodeType {
3
+ description: INodeTypeDescription;
4
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
5
+ }