n8n-nodes-basecamp4 0.2.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 (31) hide show
  1. package/dist/credentials/BasecampOAuth2Api.credentials.d.ts +8 -0
  2. package/dist/credentials/BasecampOAuth2Api.credentials.js +58 -0
  3. package/dist/credentials/BasecampOAuth2Api.credentials.js.map +1 -0
  4. package/dist/nodes/Basecamp/Basecamp.node.d.ts +5 -0
  5. package/dist/nodes/Basecamp/Basecamp.node.js +489 -0
  6. package/dist/nodes/Basecamp/Basecamp.node.js.map +1 -0
  7. package/dist/nodes/Basecamp/CampfireLineDescription.d.ts +3 -0
  8. package/dist/nodes/Basecamp/CampfireLineDescription.js +188 -0
  9. package/dist/nodes/Basecamp/CampfireLineDescription.js.map +1 -0
  10. package/dist/nodes/Basecamp/CommentDescription.d.ts +3 -0
  11. package/dist/nodes/Basecamp/CommentDescription.js +226 -0
  12. package/dist/nodes/Basecamp/CommentDescription.js.map +1 -0
  13. package/dist/nodes/Basecamp/GenericFunctions.d.ts +10 -0
  14. package/dist/nodes/Basecamp/GenericFunctions.js +93 -0
  15. package/dist/nodes/Basecamp/GenericFunctions.js.map +1 -0
  16. package/dist/nodes/Basecamp/MessageDescription.d.ts +3 -0
  17. package/dist/nodes/Basecamp/MessageDescription.js +275 -0
  18. package/dist/nodes/Basecamp/MessageDescription.js.map +1 -0
  19. package/dist/nodes/Basecamp/PeopleDescription.d.ts +3 -0
  20. package/dist/nodes/Basecamp/PeopleDescription.js +136 -0
  21. package/dist/nodes/Basecamp/PeopleDescription.js.map +1 -0
  22. package/dist/nodes/Basecamp/ProjectDescription.d.ts +3 -0
  23. package/dist/nodes/Basecamp/ProjectDescription.js +329 -0
  24. package/dist/nodes/Basecamp/ProjectDescription.js.map +1 -0
  25. package/dist/nodes/Basecamp/TodoDescription.d.ts +3 -0
  26. package/dist/nodes/Basecamp/TodoDescription.js +412 -0
  27. package/dist/nodes/Basecamp/TodoDescription.js.map +1 -0
  28. package/dist/nodes/Basecamp/TodoListDescription.d.ts +3 -0
  29. package/dist/nodes/Basecamp/TodoListDescription.js +252 -0
  30. package/dist/nodes/Basecamp/TodoListDescription.js.map +1 -0
  31. package/package.json +48 -0
@@ -0,0 +1,188 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.campfireLineFields = exports.campfireLineOperations = void 0;
4
+ exports.campfireLineOperations = [
5
+ {
6
+ displayName: 'Operation',
7
+ name: 'operation',
8
+ type: 'options',
9
+ noDataExpression: true,
10
+ displayOptions: {
11
+ show: {
12
+ resource: ['campfireLine'],
13
+ },
14
+ },
15
+ options: [
16
+ {
17
+ name: 'Create',
18
+ value: 'create',
19
+ description: 'Post a message to a campfire',
20
+ action: 'Create a campfire line',
21
+ },
22
+ {
23
+ name: 'Get',
24
+ value: 'get',
25
+ description: 'Get a campfire line by ID',
26
+ action: 'Get a campfire line',
27
+ },
28
+ {
29
+ name: 'Get Many',
30
+ value: 'getAll',
31
+ description: 'Get many campfire lines',
32
+ action: 'Get many campfire lines',
33
+ },
34
+ ],
35
+ default: 'create',
36
+ },
37
+ ];
38
+ exports.campfireLineFields = [
39
+ // ----------------------------------
40
+ // campfireLine: create
41
+ // ----------------------------------
42
+ {
43
+ displayName: 'Project ID',
44
+ name: 'projectId',
45
+ type: 'string',
46
+ required: true,
47
+ default: '',
48
+ description: 'The project (bucket) ID',
49
+ displayOptions: {
50
+ show: {
51
+ resource: ['campfireLine'],
52
+ operation: ['create'],
53
+ },
54
+ },
55
+ },
56
+ {
57
+ displayName: 'Campfire ID',
58
+ name: 'campfireId',
59
+ type: 'string',
60
+ required: true,
61
+ default: '',
62
+ description: 'The campfire/chat ID. Found in the project\'s dock when you GET the project.',
63
+ displayOptions: {
64
+ show: {
65
+ resource: ['campfireLine'],
66
+ operation: ['create'],
67
+ },
68
+ },
69
+ },
70
+ {
71
+ displayName: 'Content',
72
+ name: 'content',
73
+ type: 'string',
74
+ required: true,
75
+ default: '',
76
+ description: 'The message to post to the campfire',
77
+ displayOptions: {
78
+ show: {
79
+ resource: ['campfireLine'],
80
+ operation: ['create'],
81
+ },
82
+ },
83
+ },
84
+ // ----------------------------------
85
+ // campfireLine: get
86
+ // ----------------------------------
87
+ {
88
+ displayName: 'Project ID',
89
+ name: 'projectId',
90
+ type: 'string',
91
+ required: true,
92
+ default: '',
93
+ description: 'The project (bucket) ID',
94
+ displayOptions: {
95
+ show: {
96
+ resource: ['campfireLine'],
97
+ operation: ['get'],
98
+ },
99
+ },
100
+ },
101
+ {
102
+ displayName: 'Campfire ID',
103
+ name: 'campfireId',
104
+ type: 'string',
105
+ required: true,
106
+ default: '',
107
+ displayOptions: {
108
+ show: {
109
+ resource: ['campfireLine'],
110
+ operation: ['get'],
111
+ },
112
+ },
113
+ },
114
+ {
115
+ displayName: 'Line ID',
116
+ name: 'lineId',
117
+ type: 'string',
118
+ required: true,
119
+ default: '',
120
+ displayOptions: {
121
+ show: {
122
+ resource: ['campfireLine'],
123
+ operation: ['get'],
124
+ },
125
+ },
126
+ },
127
+ // ----------------------------------
128
+ // campfireLine: getAll
129
+ // ----------------------------------
130
+ {
131
+ displayName: 'Project ID',
132
+ name: 'projectId',
133
+ type: 'string',
134
+ required: true,
135
+ default: '',
136
+ description: 'The project (bucket) ID',
137
+ displayOptions: {
138
+ show: {
139
+ resource: ['campfireLine'],
140
+ operation: ['getAll'],
141
+ },
142
+ },
143
+ },
144
+ {
145
+ displayName: 'Campfire ID',
146
+ name: 'campfireId',
147
+ type: 'string',
148
+ required: true,
149
+ default: '',
150
+ displayOptions: {
151
+ show: {
152
+ resource: ['campfireLine'],
153
+ operation: ['getAll'],
154
+ },
155
+ },
156
+ },
157
+ {
158
+ displayName: 'Return All',
159
+ name: 'returnAll',
160
+ type: 'boolean',
161
+ default: false,
162
+ description: 'Whether to return all results or only up to a given limit',
163
+ displayOptions: {
164
+ show: {
165
+ resource: ['campfireLine'],
166
+ operation: ['getAll'],
167
+ },
168
+ },
169
+ },
170
+ {
171
+ displayName: 'Limit',
172
+ name: 'limit',
173
+ type: 'number',
174
+ default: 50,
175
+ description: 'Max number of results to return',
176
+ typeOptions: {
177
+ minValue: 1,
178
+ },
179
+ displayOptions: {
180
+ show: {
181
+ resource: ['campfireLine'],
182
+ operation: ['getAll'],
183
+ returnAll: [false],
184
+ },
185
+ },
186
+ },
187
+ ];
188
+ //# sourceMappingURL=CampfireLineDescription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CampfireLineDescription.js","sourceRoot":"","sources":["../../../nodes/Basecamp/CampfireLineDescription.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { INodeProperties } from 'n8n-workflow';
2
+ export declare const commentOperations: INodeProperties[];
3
+ export declare const commentFields: INodeProperties[];
@@ -0,0 +1,226 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.commentFields = exports.commentOperations = void 0;
4
+ exports.commentOperations = [
5
+ {
6
+ displayName: 'Operation',
7
+ name: 'operation',
8
+ type: 'options',
9
+ noDataExpression: true,
10
+ displayOptions: {
11
+ show: {
12
+ resource: ['comment'],
13
+ },
14
+ },
15
+ options: [
16
+ {
17
+ name: 'Create',
18
+ value: 'create',
19
+ description: 'Add a comment to a recording (to-do, message, etc.)',
20
+ action: 'Create a comment',
21
+ },
22
+ {
23
+ name: 'Get',
24
+ value: 'get',
25
+ description: 'Get a comment by ID',
26
+ action: 'Get a comment',
27
+ },
28
+ {
29
+ name: 'Get Many',
30
+ value: 'getAll',
31
+ description: 'Get many comments on a recording',
32
+ action: 'Get many comments',
33
+ },
34
+ {
35
+ name: 'Update',
36
+ value: 'update',
37
+ description: 'Update a comment',
38
+ action: 'Update a comment',
39
+ },
40
+ ],
41
+ default: 'create',
42
+ },
43
+ ];
44
+ exports.commentFields = [
45
+ // ----------------------------------
46
+ // comment: create
47
+ // ----------------------------------
48
+ {
49
+ displayName: 'Project ID',
50
+ name: 'projectId',
51
+ type: 'string',
52
+ required: true,
53
+ default: '',
54
+ description: 'The project (bucket) ID',
55
+ displayOptions: {
56
+ show: {
57
+ resource: ['comment'],
58
+ operation: ['create'],
59
+ },
60
+ },
61
+ },
62
+ {
63
+ displayName: 'Recording ID',
64
+ name: 'recordingId',
65
+ type: 'string',
66
+ required: true,
67
+ default: '',
68
+ description: 'The ID of the recording to comment on (to-do, message, document, etc.)',
69
+ displayOptions: {
70
+ show: {
71
+ resource: ['comment'],
72
+ operation: ['create'],
73
+ },
74
+ },
75
+ },
76
+ {
77
+ displayName: 'Content',
78
+ name: 'content',
79
+ type: 'string',
80
+ required: true,
81
+ default: '',
82
+ description: 'The comment body (supports HTML)',
83
+ displayOptions: {
84
+ show: {
85
+ resource: ['comment'],
86
+ operation: ['create'],
87
+ },
88
+ },
89
+ },
90
+ // ----------------------------------
91
+ // comment: get
92
+ // ----------------------------------
93
+ {
94
+ displayName: 'Project ID',
95
+ name: 'projectId',
96
+ type: 'string',
97
+ required: true,
98
+ default: '',
99
+ description: 'The project (bucket) ID',
100
+ displayOptions: {
101
+ show: {
102
+ resource: ['comment'],
103
+ operation: ['get'],
104
+ },
105
+ },
106
+ },
107
+ {
108
+ displayName: 'Comment ID',
109
+ name: 'commentId',
110
+ type: 'string',
111
+ required: true,
112
+ default: '',
113
+ displayOptions: {
114
+ show: {
115
+ resource: ['comment'],
116
+ operation: ['get'],
117
+ },
118
+ },
119
+ },
120
+ // ----------------------------------
121
+ // comment: getAll
122
+ // ----------------------------------
123
+ {
124
+ displayName: 'Project ID',
125
+ name: 'projectId',
126
+ type: 'string',
127
+ required: true,
128
+ default: '',
129
+ description: 'The project (bucket) ID',
130
+ displayOptions: {
131
+ show: {
132
+ resource: ['comment'],
133
+ operation: ['getAll'],
134
+ },
135
+ },
136
+ },
137
+ {
138
+ displayName: 'Recording ID',
139
+ name: 'recordingId',
140
+ type: 'string',
141
+ required: true,
142
+ default: '',
143
+ description: 'The ID of the recording to get comments for',
144
+ displayOptions: {
145
+ show: {
146
+ resource: ['comment'],
147
+ operation: ['getAll'],
148
+ },
149
+ },
150
+ },
151
+ {
152
+ displayName: 'Return All',
153
+ name: 'returnAll',
154
+ type: 'boolean',
155
+ default: false,
156
+ description: 'Whether to return all results or only up to a given limit',
157
+ displayOptions: {
158
+ show: {
159
+ resource: ['comment'],
160
+ operation: ['getAll'],
161
+ },
162
+ },
163
+ },
164
+ {
165
+ displayName: 'Limit',
166
+ name: 'limit',
167
+ type: 'number',
168
+ default: 50,
169
+ description: 'Max number of results to return',
170
+ typeOptions: {
171
+ minValue: 1,
172
+ },
173
+ displayOptions: {
174
+ show: {
175
+ resource: ['comment'],
176
+ operation: ['getAll'],
177
+ returnAll: [false],
178
+ },
179
+ },
180
+ },
181
+ // ----------------------------------
182
+ // comment: update
183
+ // ----------------------------------
184
+ {
185
+ displayName: 'Project ID',
186
+ name: 'projectId',
187
+ type: 'string',
188
+ required: true,
189
+ default: '',
190
+ description: 'The project (bucket) ID',
191
+ displayOptions: {
192
+ show: {
193
+ resource: ['comment'],
194
+ operation: ['update'],
195
+ },
196
+ },
197
+ },
198
+ {
199
+ displayName: 'Comment ID',
200
+ name: 'commentId',
201
+ type: 'string',
202
+ required: true,
203
+ default: '',
204
+ displayOptions: {
205
+ show: {
206
+ resource: ['comment'],
207
+ operation: ['update'],
208
+ },
209
+ },
210
+ },
211
+ {
212
+ displayName: 'Content',
213
+ name: 'content',
214
+ type: 'string',
215
+ required: true,
216
+ default: '',
217
+ description: 'Updated comment body (supports HTML)',
218
+ displayOptions: {
219
+ show: {
220
+ resource: ['comment'],
221
+ operation: ['update'],
222
+ },
223
+ },
224
+ },
225
+ ];
226
+ //# sourceMappingURL=CommentDescription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommentDescription.js","sourceRoot":"","sources":["../../../nodes/Basecamp/CommentDescription.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { IExecuteFunctions, IHookFunctions, ILoadOptionsFunctions, IHttpRequestMethods, IDataObject } from 'n8n-workflow';
2
+ /**
3
+ * Make an authenticated request to the Basecamp 4 API.
4
+ */
5
+ export declare function basecampApiRequest(this: IExecuteFunctions | ILoadOptionsFunctions | IHookFunctions, method: IHttpRequestMethods, endpoint: string, body?: IDataObject, qs?: IDataObject): Promise<any>;
6
+ /**
7
+ * Paginate through all results using Basecamp's Link header pagination.
8
+ * Basecamp returns a Link header with rel="next" pointing to the next page.
9
+ */
10
+ export declare function basecampApiRequestAllItems(this: IExecuteFunctions, method: IHttpRequestMethods, endpoint: string, body?: IDataObject, qs?: IDataObject): Promise<IDataObject[]>;
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.basecampApiRequestAllItems = exports.basecampApiRequest = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const BASE_URL = 'https://3.basecampapi.com';
6
+ const USER_AGENT = 'n8n-nodes-basecamp (support@n8n.io)';
7
+ /**
8
+ * Make an authenticated request to the Basecamp 4 API.
9
+ */
10
+ async function basecampApiRequest(method, endpoint, body = {}, qs = {}) {
11
+ const credentials = await this.getCredentials('basecampOAuth2Api');
12
+ const accountId = credentials.accountId;
13
+ const options = {
14
+ method,
15
+ qs,
16
+ uri: `${BASE_URL}/${accountId}${endpoint}`,
17
+ json: true,
18
+ headers: {
19
+ 'User-Agent': USER_AGENT,
20
+ },
21
+ resolveWithFullResponse: false,
22
+ };
23
+ if (Object.keys(body).length > 0) {
24
+ options.body = body;
25
+ }
26
+ try {
27
+ return await this.helpers.requestWithAuthentication.call(this, 'basecampOAuth2Api', options);
28
+ }
29
+ catch (error) {
30
+ throw new n8n_workflow_1.NodeApiError(this.getNode(), error);
31
+ }
32
+ }
33
+ exports.basecampApiRequest = basecampApiRequest;
34
+ /**
35
+ * Paginate through all results using Basecamp's Link header pagination.
36
+ * Basecamp returns a Link header with rel="next" pointing to the next page.
37
+ */
38
+ async function basecampApiRequestAllItems(method, endpoint, body = {}, qs = {}) {
39
+ var _a;
40
+ const credentials = await this.getCredentials('basecampOAuth2Api');
41
+ const accountId = credentials.accountId;
42
+ const results = [];
43
+ let nextUrl = `${BASE_URL}/${accountId}${endpoint}`;
44
+ while (nextUrl) {
45
+ const options = {
46
+ method,
47
+ qs: Object.keys(qs).length > 0 ? qs : undefined,
48
+ uri: nextUrl,
49
+ json: true,
50
+ headers: {
51
+ 'User-Agent': USER_AGENT,
52
+ },
53
+ resolveWithFullResponse: true,
54
+ };
55
+ if (Object.keys(body).length > 0) {
56
+ options.body = body;
57
+ }
58
+ try {
59
+ const response = await this.helpers.requestWithAuthentication.call(this, 'basecampOAuth2Api', options);
60
+ const items = response.body;
61
+ if (Array.isArray(items)) {
62
+ results.push(...items);
63
+ }
64
+ // Parse Link header for next page
65
+ const linkHeader = (_a = response.headers) === null || _a === void 0 ? void 0 : _a.link;
66
+ nextUrl = parseLinkHeader(linkHeader);
67
+ // Clear qs after first request — next URL includes all params
68
+ qs = {};
69
+ }
70
+ catch (error) {
71
+ throw new n8n_workflow_1.NodeApiError(this.getNode(), error);
72
+ }
73
+ }
74
+ return results;
75
+ }
76
+ exports.basecampApiRequestAllItems = basecampApiRequestAllItems;
77
+ /**
78
+ * Parse the Link header to extract the "next" URL.
79
+ * Format: <https://3.basecampapi.com/.../todos.json?page=2>; rel="next"
80
+ */
81
+ function parseLinkHeader(linkHeader) {
82
+ if (!linkHeader)
83
+ return undefined;
84
+ const parts = linkHeader.split(',');
85
+ for (const part of parts) {
86
+ const match = part.match(/<([^>]+)>;\s*rel="next"/);
87
+ if (match) {
88
+ return match[1];
89
+ }
90
+ }
91
+ return undefined;
92
+ }
93
+ //# sourceMappingURL=GenericFunctions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenericFunctions.js","sourceRoot":"","sources":["../../../nodes/Basecamp/GenericFunctions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { INodeProperties } from 'n8n-workflow';
2
+ export declare const messageOperations: INodeProperties[];
3
+ export declare const messageFields: INodeProperties[];