n8n-nodes-innotes 1.0.8 → 1.0.9
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.
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* @author Marco
|
|
4
|
-
* @date 2025-06-
|
|
3
|
+
* @author Marco
|
|
4
|
+
* @date 2025-06-28
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.InNotes = void 0;
|
|
@@ -79,6 +79,37 @@ class InNotes {
|
|
|
79
79
|
...StatusDescription_1.statusFields,
|
|
80
80
|
...TagDescription_1.tagFields,
|
|
81
81
|
...UserDescription_1.userFields,
|
|
82
|
+
{
|
|
83
|
+
displayName: 'Options',
|
|
84
|
+
name: 'options',
|
|
85
|
+
type: 'collection',
|
|
86
|
+
placeholder: 'Add Option',
|
|
87
|
+
default: {},
|
|
88
|
+
options: [
|
|
89
|
+
{
|
|
90
|
+
displayName: 'Batch Size',
|
|
91
|
+
name: 'batchSize',
|
|
92
|
+
type: 'number',
|
|
93
|
+
default: 10,
|
|
94
|
+
description: 'Number of items to process in each batch (to avoid rate limiting)',
|
|
95
|
+
typeOptions: {
|
|
96
|
+
minValue: 1,
|
|
97
|
+
maxValue: 100,
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
displayName: 'Timeout Between Batches (ms)',
|
|
102
|
+
name: 'timeoutBetweenBatches',
|
|
103
|
+
type: 'number',
|
|
104
|
+
default: 1000,
|
|
105
|
+
description: 'Delay in milliseconds between processing batches (to avoid rate limiting)',
|
|
106
|
+
typeOptions: {
|
|
107
|
+
minValue: 0,
|
|
108
|
+
maxValue: 30000,
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
],
|
|
112
|
+
},
|
|
82
113
|
],
|
|
83
114
|
};
|
|
84
115
|
this.methods = {
|
|
@@ -115,42 +146,59 @@ class InNotes {
|
|
|
115
146
|
const returnData = [];
|
|
116
147
|
const resource = this.getNodeParameter('resource', 0);
|
|
117
148
|
const operation = this.getNodeParameter('operation', 0);
|
|
149
|
+
// Get batch options
|
|
150
|
+
const options = this.getNodeParameter('options', 0, {});
|
|
151
|
+
const batchSize = options.batchSize || 10;
|
|
152
|
+
const timeoutBetweenBatches = options.timeoutBetweenBatches || 1000;
|
|
118
153
|
// Create a node instance to access the methods
|
|
119
154
|
const nodeInstance = new InNotes();
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
responseData =
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
155
|
+
// Helper function to add delay between batches
|
|
156
|
+
const delay = (ms) => new Promise(resolve => setTimeout(resolve, ms));
|
|
157
|
+
// Process items in batches
|
|
158
|
+
for (let batchStart = 0; batchStart < items.length; batchStart += batchSize) {
|
|
159
|
+
const batchEnd = Math.min(batchStart + batchSize, items.length);
|
|
160
|
+
const currentBatch = items.slice(batchStart, batchEnd);
|
|
161
|
+
// Process current batch
|
|
162
|
+
for (let i = 0; i < currentBatch.length; i++) {
|
|
163
|
+
const actualIndex = batchStart + i;
|
|
164
|
+
try {
|
|
165
|
+
let responseData = {};
|
|
166
|
+
if (resource === 'contact') {
|
|
167
|
+
responseData = await nodeInstance.executeContactOperation(this, actualIndex, operation);
|
|
168
|
+
}
|
|
169
|
+
else if (resource === 'note') {
|
|
170
|
+
responseData = await nodeInstance.executeNoteOperation(this, actualIndex, operation);
|
|
171
|
+
}
|
|
172
|
+
else if (resource === 'job') {
|
|
173
|
+
responseData = await nodeInstance.executeJobOperation(this, actualIndex, operation);
|
|
174
|
+
}
|
|
175
|
+
else if (resource === 'status') {
|
|
176
|
+
responseData = await nodeInstance.executeStatusOperation(this, actualIndex, operation);
|
|
177
|
+
}
|
|
178
|
+
else if (resource === 'tag') {
|
|
179
|
+
responseData = await nodeInstance.executeTagOperation(this, actualIndex, operation);
|
|
180
|
+
}
|
|
181
|
+
else if (resource === 'user') {
|
|
182
|
+
responseData = await nodeInstance.executeUserOperation(this, actualIndex, operation);
|
|
183
|
+
}
|
|
184
|
+
if (Array.isArray(responseData)) {
|
|
185
|
+
returnData.push(...responseData);
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
returnData.push(responseData);
|
|
189
|
+
}
|
|
143
190
|
}
|
|
144
|
-
|
|
145
|
-
|
|
191
|
+
catch (error) {
|
|
192
|
+
if (this.continueOnFail()) {
|
|
193
|
+
returnData.push({ error: error.message });
|
|
194
|
+
continue;
|
|
195
|
+
}
|
|
196
|
+
throw error;
|
|
146
197
|
}
|
|
147
198
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
continue;
|
|
152
|
-
}
|
|
153
|
-
throw error;
|
|
199
|
+
// Add delay between batches (except after the last batch)
|
|
200
|
+
if (batchEnd < items.length && timeoutBetweenBatches > 0) {
|
|
201
|
+
await delay(timeoutBetweenBatches);
|
|
154
202
|
}
|
|
155
203
|
}
|
|
156
204
|
return [this.helpers.returnJsonArray(returnData)];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../nodes/InNotes/InNotes.node.ts"],"names":[],"mappings":"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","file":"InNotes.node.js","sourcesContent":["/**\n * @author Marco Visin\n * @date 2025-06-02\n */\n\nimport {\n\tIDataObject,\n\tIExecuteFunctions,\n\tIHttpRequestMethods,\n\tILoadOptionsFunctions,\n\tINodeExecutionData,\n\tINodePropertyOptions,\n\tINodeType,\n\tINodeTypeDescription,\n\tNodeApiError,\n\tNodeConnectionType,\n} from 'n8n-workflow';\n\nimport {contactFields, contactOperations} from '../../descriptions/ContactDescription';\nimport {noteFields, noteOperations} from '../../descriptions/NoteDescription';\nimport {jobFields, jobOperations} from '../../descriptions/JobDescription';\nimport {statusFields, statusOperations} from '../../descriptions/StatusDescription';\nimport {tagFields, tagOperations} from '../../descriptions/TagDescription';\nimport {userFields, userOperations} from '../../descriptions/UserDescription';\n\nexport class InNotes implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'InNotes',\n\t\tname: 'inNotes',\n\t\ticon: 'file:Logo_128.png',\n\t\tgroup: ['output'],\n\t\tversion: 1,\n\t\tsubtitle: '={{$parameter[\"operation\"] + \": \" + $parameter[\"resource\"]}}',\n\t\tdescription: 'Consume InNotes CRM API',\n\t\tdefaults: {\n\t\t\tname: 'InNotes',\n\t\t},\n\t\tinputs: [NodeConnectionType.Main],\n\t\toutputs: [NodeConnectionType.Main],\n\t\tcredentials: [\n\t\t\t{\n\t\t\t\tname: 'inNotesApi',\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t],\n\t\tproperties: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Resource',\n\t\t\t\tname: 'resource',\n\t\t\t\ttype: 'options',\n\t\t\t\tnoDataExpression: true,\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Contact',\n\t\t\t\t\t\tvalue: 'contact',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Note',\n\t\t\t\t\t\tvalue: 'note',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Job',\n\t\t\t\t\t\tvalue: 'job',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Status',\n\t\t\t\t\t\tvalue: 'status',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Tag',\n\t\t\t\t\t\tvalue: 'tag',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'User',\n\t\t\t\t\t\tvalue: 'user',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'contact',\n\t\t\t},\n\t\t\t...contactOperations,\n\t\t\t...noteOperations,\n\t\t\t...jobOperations,\n\t\t\t...statusOperations,\n\t\t\t...tagOperations,\n\t\t\t...userOperations,\n\t\t\t...contactFields,\n\t\t\t...noteFields,\n\t\t\t...jobFields,\n\t\t\t...statusFields,\n\t\t\t...tagFields,\n\t\t\t...userFields,\n\t\t],\n\t};\n\n\tmethods = {\n\t\tloadOptions: {\n\t\t\tasync jobStatuses(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\ttry {\n\t\t\t\t\tconst credentials = await this.getCredentials('inNotesApi');\n\t\t\t\t\tconst baseUrl = credentials.baseUrl as string;\n\n\t\t\t\t\tconst response = await this.helpers.httpRequestWithAuthentication.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t'inNotesApi',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmethod: 'GET' as IHttpRequestMethods,\n\t\t\t\t\t\t\turl: `${baseUrl}/api/statuses`,\n\t\t\t\t\t\t\tqs: { type: 'job' },\n\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\n\t\t\t\t\tconst statuses = Array.isArray(response) ? response : [response];\n\t\t\t\t\treturn statuses.map((status: any) => ({\n\t\t\t\t\t\tname: status.name,\n\t\t\t\t\t\tvalue: status.name,\n\t\t\t\t\t}));\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthrow new NodeApiError(this.getNode(), {\n\t\t\t\t\t\tmessage: `Failed to load job statuses: ${(error as Error).message}`,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t};\n\n\tasync execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {\n\t\tconst items = this.getInputData();\n\t\tconst returnData: IDataObject[] = [];\n\t\tconst resource = this.getNodeParameter('resource', 0);\n\t\tconst operation = this.getNodeParameter('operation', 0);\n\n\t\t// Create a node instance to access the methods\n\t\tconst nodeInstance = new InNotes();\n\n\t\tfor (let i = 0; i < items.length; i++) {\n\t\t\ttry {\n\t\t\t\tlet responseData: IDataObject | IDataObject[] = {};\n\n\t\t\t\tif (resource === 'contact') {\n\t\t\t\t\tresponseData = await nodeInstance.executeContactOperation(this, i, operation);\n\t\t\t\t} else if (resource === 'note') {\n\t\t\t\t\tresponseData = await nodeInstance.executeNoteOperation(this, i, operation);\n\t\t\t\t} else if (resource === 'job') {\n\t\t\t\t\tresponseData = await nodeInstance.executeJobOperation(this, i, operation);\n\t\t\t\t} else if (resource === 'status') {\n\t\t\t\t\tresponseData = await nodeInstance.executeStatusOperation(this, i, operation);\n\t\t\t\t} else if (resource === 'tag') {\n\t\t\t\t\tresponseData = await nodeInstance.executeTagOperation(this, i, operation);\n\t\t\t\t} else if (resource === 'user') {\n\t\t\t\t\tresponseData = await nodeInstance.executeUserOperation(this, i, operation);\n\t\t\t\t}\n\n\t\t\t\tif (Array.isArray(responseData)) {\n\t\t\t\t\treturnData.push(...responseData);\n\t\t\t\t} else {\n\t\t\t\t\treturnData.push(responseData);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tif (this.continueOnFail()) {\n\t\t\t\t\treturnData.push({ error: (error as Error).message });\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\n\t\treturn [this.helpers.returnJsonArray(returnData)];\n\t}\n\n\tprivate async executeContactOperation(executeFunctions: IExecuteFunctions, itemIndex: number, operation: string): Promise<IDataObject | IDataObject[]> {\n\t\tconst credentials = await executeFunctions.getCredentials('inNotesApi');\n\t\tconst baseUrl = credentials.baseUrl as string;\n\n\t\tif (operation === 'create') {\n\t\t\tconst name = executeFunctions.getNodeParameter('name', itemIndex) as string;\n\t\t\tconst linkedin_key = executeFunctions.getNodeParameter('linkedin_key', itemIndex) as string;\n\t\t\tconst linkedin_user = executeFunctions.getNodeParameter('linkedin_user', itemIndex, '') as string;\n\t\t\tconst location = executeFunctions.getNodeParameter('location', itemIndex, '') as string;\n\t\t\tconst current_company = executeFunctions.getNodeParameter('current_company', itemIndex, '') as string;\n\t\t\tconst picture_url = executeFunctions.getNodeParameter('picture_url', itemIndex, '') as string;\n\t\t\tconst tags = executeFunctions.getNodeParameter('tags', itemIndex, '') as string;\n\t\t\tconst status_id = executeFunctions.getNodeParameter('status_id', itemIndex, '') as string;\n\n\t\t\tconst body: IDataObject = {\n\t\t\t\tname,\n\t\t\t\tlinkedin_key,\n\t\t\t\t...(linkedin_user && { linkedin_user }),\n\t\t\t\t...(location && { location }),\n\t\t\t\t...(current_company && { current_company }),\n\t\t\t\t...(picture_url && { picture_url }),\n\t\t\t\t...(tags && { tags: tags.split(',').map((tag: string) => tag.trim()) }),\n\t\t\t\t...(status_id && { status_id }),\n\t\t\t};\n\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'POST' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/contacts`,\n\t\t\t\t\tbody,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn response;\n\t\t}\n\n\t\tif (operation === 'get') {\n\t\t\tconst contactId = executeFunctions.getNodeParameter('contactId', itemIndex) as string;\n\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'GET' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/contacts/${contactId}`,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn response;\n\t\t}\n\n\t\tif (operation === 'getAll') {\n\t\t\tconst returnAll = executeFunctions.getNodeParameter('returnAll', itemIndex, false) as boolean;\n\t\t\tconst search = executeFunctions.getNodeParameter('search', itemIndex, '') as string;\n\t\t\tconst tags = executeFunctions.getNodeParameter('tags', itemIndex, '') as string;\n\n\t\t\tconst qs: IDataObject = {};\n\t\t\tif (search) qs.search = search;\n\t\t\tif (tags) qs.tags = tags;\n\n\t\t\tif (!returnAll) {\n\t\t\t\tconst limit = executeFunctions.getNodeParameter('limit', itemIndex, 24);\n\t\t\t\tqs.pageSize = limit;\n\t\t\t\tqs.page = 1;\n\t\t\t}\n\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'GET' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/contacts`,\n\t\t\t\t\tqs,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn Array.isArray(response) ? response : [response];\n\t\t}\n\n\t\tif (operation === 'update') {\n\t\t\tconst contactId = executeFunctions.getNodeParameter('contactId', itemIndex) as string;\n\t\t\tconst updateFields = executeFunctions.getNodeParameter('updateFields', itemIndex);\n\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'PUT' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/contacts/${contactId}`,\n\t\t\t\t\tbody: updateFields,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn response;\n\t\t}\n\n\t\tif (operation === 'delete') {\n\t\t\tconst contactId = executeFunctions.getNodeParameter('contactId', itemIndex) as string;\n\n\t\t\tawait executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'DELETE' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/contacts/${contactId}`,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn { success: true };\n\t\t}\n\n\t\tthrow new NodeApiError(executeFunctions.getNode(), {\n\t\t\tmessage: `The operation \"${operation}\" is not supported for resource \"contact\"!`,\n\t\t});\n\t}\n\n\tprivate async executeNoteOperation(executeFunctions: IExecuteFunctions, itemIndex: number, operation: string): Promise<IDataObject | IDataObject[]> {\n\t\tconst credentials = await executeFunctions.getCredentials('inNotesApi');\n\t\tconst baseUrl = credentials.baseUrl as string;\n\n\t\tif (operation === 'create') {\n\t\t\tconst content = executeFunctions.getNodeParameter('content', itemIndex) as string;\n\t\t\tconst contactId = executeFunctions.getNodeParameter('contactId', itemIndex) as string | number;\n\t\t\tconst visibility = executeFunctions.getNodeParameter('visibility', itemIndex, '') as string;\n\t\t\tconst ext_table_name = executeFunctions.getNodeParameter('ext_table_name', itemIndex, '') as string;\n\n\t\t\tconst body: IDataObject = {\n\t\t\t\tcontent,\n\t\t\t\tcontact_id: contactId,\n\t\t\t\t...(visibility && { visibility }),\n\t\t\t\t...(ext_table_name && { ext_table_name }),\n\t\t\t};\n\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'POST' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/note`,\n\t\t\t\t\tbody,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn response;\n\t\t}\n\n\t\tif (operation === 'get') {\n\t\t\tconst noteId = executeFunctions.getNodeParameter('noteId', itemIndex) as string | number;\n\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'GET' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/note/${noteId}`,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn response;\n\t\t}\n\n\t\tif (operation === 'getAll') {\n\t\t\tconst contactId = executeFunctions.getNodeParameter('contactId', itemIndex) as string | number;\n\t\t\tconst returnAll = executeFunctions.getNodeParameter('returnAll', itemIndex, false) as boolean;\n\n\t\t\tconst qs: IDataObject = {\n\t\t\t\tcontact_id: contactId,\n\t\t\t};\n\n\t\t\tif (!returnAll) {\n\t\t\t\tconst limit = executeFunctions.getNodeParameter('limit', itemIndex, 24);\n\t\t\t\tqs.pageSize = limit;\n\t\t\t\tqs.page = 1;\n\t\t\t}\n\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'GET' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/note`,\n\t\t\t\t\tqs,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn Array.isArray(response) ? response : [response];\n\t\t}\n\n\t\tif (operation === 'update') {\n\t\t\tconst noteId = executeFunctions.getNodeParameter('noteId', itemIndex) as string | number;\n\t\t\tconst updateFields = executeFunctions.getNodeParameter('updateFields', itemIndex);\n\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'PUT' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/note/${noteId}`,\n\t\t\t\t\tbody: updateFields,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn response;\n\t\t}\n\n\t\tif (operation === 'delete') {\n\t\t\tconst noteId = executeFunctions.getNodeParameter('noteId', itemIndex) as string | number;\n\n\t\t\tawait executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'DELETE' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/note/${noteId}`,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn { success: true };\n\t\t}\n\n\t\tthrow new NodeApiError(executeFunctions.getNode(), {\n\t\t\tmessage: `The operation \"${operation}\" is not supported for resource \"note\"!`,\n\t\t});\n\t}\n\n\tprivate async executeJobOperation(executeFunctions: IExecuteFunctions, itemIndex: number, operation: string): Promise<IDataObject | IDataObject[]> {\n\t\tconst credentials = await executeFunctions.getCredentials('inNotesApi');\n\t\tconst baseUrl = credentials.baseUrl as string;\n\n\t\tif (operation === 'create') {\n\t\t\tconst name = executeFunctions.getNodeParameter('name', itemIndex) as string;\n\t\t\tconst company_name = executeFunctions.getNodeParameter('company_name', itemIndex) as string;\n\t\t\tconst status = executeFunctions.getNodeParameter('status', itemIndex, '') as string;\n\t\t\tconst description = executeFunctions.getNodeParameter('description', itemIndex, '') as string;\n\t\t\tconst location = executeFunctions.getNodeParameter('location', itemIndex, '') as string;\n\t\t\tconst remote_setting = executeFunctions.getNodeParameter('remote_setting', itemIndex, '') as string;\n\t\t\tconst company_url = executeFunctions.getNodeParameter('company_url', itemIndex, '') as string;\n\t\t\tconst ext_id = executeFunctions.getNodeParameter('ext_id', itemIndex, '') as string;\n\t\t\tconst picture_url = executeFunctions.getNodeParameter('picture_url', itemIndex, '') as string;\n\t\t\tconst tags = executeFunctions.getNodeParameter('tags', itemIndex, '') as string;\n\n\t\t\tlet status_id: string | undefined;\n\n\t\t\t// If status is provided, lookup the status ID\n\t\t\tif (status) {\n\t\t\t\ttry {\n\t\t\t\t\t// Get all job statuses\n\t\t\t\t\tconst statusResponse = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\t\t\texecuteFunctions,\n\t\t\t\t\t\t'inNotesApi',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmethod: 'GET' as IHttpRequestMethods,\n\t\t\t\t\t\t\turl: `${baseUrl}/api/statuses`,\n\t\t\t\t\t\t\tqs: { type: 'job' },\n\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\n\t\t\t\t\t// Find matching status by name (case-insensitive)\n\t\t\t\t\tconst statuses = Array.isArray(statusResponse) ? statusResponse : [statusResponse];\n\t\t\t\t\tconst matchingStatus = statuses.find((s: any) =>\n\t\t\t\t\t\ts.name && s.name.toLowerCase() === status.toLowerCase(),\n\t\t\t\t\t);\n\n\t\t\t\t\tif (matchingStatus) {\n\t\t\t\t\t\tstatus_id = matchingStatus.id.toString();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow new NodeApiError(executeFunctions.getNode(), {\n\t\t\t\t\t\t\tmessage: `Status \"${status}\" not found. Available statuses: ${statuses.map((s: any) => s.name).join(', ')}`,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (error instanceof NodeApiError) {\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\t\t\t\t\tthrow new NodeApiError(executeFunctions.getNode(), {\n\t\t\t\t\t\tmessage: `Failed to lookup status \"${status}\": ${(error as Error).message}`,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst body: IDataObject = {\n\t\t\t\tname,\n\t\t\t\tcompany_name,\n\t\t\t\tstatus,\n\t\t\t\t...(description && { description }),\n\t\t\t\t...(location && { location }),\n\t\t\t\t...(remote_setting && { remote_setting }),\n\t\t\t\t...(company_url && { company_url }),\n\t\t\t\t...(status_id && { status_id }),\n\t\t\t\t...(ext_id && { ext_id }),\n\t\t\t\t...(picture_url && { picture_url }),\n\t\t\t\t...(tags && { tags: tags.split(',').map((tag: string) => tag.trim()) }),\n\t\t\t};\n\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'POST' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/job`,\n\t\t\t\t\tbody,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn response;\n\t\t}\n\n\t\tif (operation === 'get') {\n\t\t\tconst jobId = executeFunctions.getNodeParameter('jobId', itemIndex) as string | number;\n\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'GET' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/job/${jobId}`,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn response;\n\t\t}\n\n\t\tif (operation === 'getAll') {\n\t\t\tconst returnAll = executeFunctions.getNodeParameter('returnAll', itemIndex, false) as boolean;\n\t\t\tconst search = executeFunctions.getNodeParameter('search', itemIndex, '') as string;\n\t\t\tconst tags = executeFunctions.getNodeParameter('tags', itemIndex, '') as string;\n\n\t\t\tconst qs: IDataObject = {};\n\t\t\tif (search) qs.search = search;\n\t\t\tif (tags) qs.tags = tags;\n\n\t\t\tif (!returnAll) {\n\t\t\t\tconst limit = executeFunctions.getNodeParameter('limit', itemIndex, 24);\n\t\t\t\tqs.pageSize = limit;\n\t\t\t\tqs.page = 1;\n\t\t\t}\n\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'GET' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/job`,\n\t\t\t\t\tqs,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn Array.isArray(response) ? response : [response];\n\t\t}\n\n\t\tif (operation === 'update') {\n\t\t\tconst jobId = executeFunctions.getNodeParameter('jobId', itemIndex) as string | number;\n\t\t\tconst updateFields = executeFunctions.getNodeParameter('updateFields', itemIndex);\n\n\t\t\t// Handle status string lookup if provided\n\t\t\tif (updateFields.status && typeof updateFields.status === 'string') {\n\t\t\t\ttry {\n\t\t\t\t\t// Get all job statuses\n\t\t\t\t\tconst statusResponse = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\t\t\texecuteFunctions,\n\t\t\t\t\t\t'inNotesApi',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmethod: 'GET' as IHttpRequestMethods,\n\t\t\t\t\t\t\turl: `${baseUrl}/api/statuses`,\n\t\t\t\t\t\t\tqs: { type: 'job' },\n\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\n\t\t\t\t\t// Find matching status by name (case-insensitive)\n\t\t\t\t\tconst statuses = Array.isArray(statusResponse) ? statusResponse : [statusResponse];\n\t\t\t\t\tconst matchingStatus = statuses.find((s: any) =>\n\t\t\t\t\t\ts.name && s.name.toLowerCase() === (updateFields.status as string).toLowerCase(),\n\t\t\t\t\t);\n\n\t\t\t\t\tif (matchingStatus) {\n\t\t\t\t\t\t// Replace status with status_id and remove status field\n\t\t\t\t\t\tupdateFields.status_id = matchingStatus.id.toString();\n\t\t\t\t\t\tdelete updateFields.status;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow new NodeApiError(executeFunctions.getNode(), {\n\t\t\t\t\t\t\tmessage: `Status \"${updateFields.status}\" not found. Available statuses: ${statuses.map((s: any) => s.name).join(', ')}`,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (error instanceof NodeApiError) {\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\t\t\t\t\tthrow new NodeApiError(executeFunctions.getNode(), {\n\t\t\t\t\t\tmessage: `Failed to lookup status \"${updateFields.status}\": ${(error as Error).message}`,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Process tags if provided as comma-separated string\n\t\t\tif (updateFields.tags && typeof updateFields.tags === 'string') {\n\t\t\t\tupdateFields.tags = (updateFields.tags).split(',').map((tag: string) => tag.trim());\n\t\t\t}\n\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'PUT' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/job/${jobId}`,\n\t\t\t\t\tbody: updateFields,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn response;\n\t\t}\n\n\t\tif (operation === 'delete') {\n\t\t\tconst jobId = executeFunctions.getNodeParameter('jobId', itemIndex) as string | number;\n\n\t\t\tawait executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'DELETE' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/job/${jobId}`,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn { success: true };\n\t\t}\n\n\t\tif (operation === 'search') {\n\t\t\tconst searchMethod = executeFunctions.getNodeParameter('searchMethod', itemIndex) as string;\n\t\t\tconst searchQuery = executeFunctions.getNodeParameter('searchQuery', itemIndex) as string;\n\t\t\tconst searchOptions = executeFunctions.getNodeParameter('searchOptions', itemIndex, {}) as IDataObject;\n\n\t\t\tconst qs: IDataObject = {};\n\n\t\t\t// Handle different search methods\n\t\t\tswitch (searchMethod) {\n\t\t\tcase 'general':\n\t\t\t\tqs.searchTerm = searchQuery;\n\t\t\t\tbreak;\n\t\t\tcase 'ext_id':\n\t\t\t\tqs.ext_id = searchQuery;\n\t\t\t\tbreak;\n\t\t\tcase 'title':\n\t\t\t\tqs.searchTerm = searchQuery;\n\t\t\t\tqs.searchField = 'title';\n\t\t\t\tbreak;\n\t\t\tcase 'company':\n\t\t\t\tqs.searchTerm = searchQuery;\n\t\t\t\tqs.searchField = 'company';\n\t\t\t\tbreak;\n\t\t\tcase 'location':\n\t\t\t\tqs.searchTerm = searchQuery;\n\t\t\t\tqs.searchField = 'location';\n\t\t\t\tbreak;\n\t\t\tcase 'description':\n\t\t\t\tqs.searchTerm = searchQuery;\n\t\t\t\tqs.searchField = 'description';\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tqs.searchTerm = searchQuery;\n\t\t\t}\n\n\t\t\t// Add additional filter parameters\n\t\t\tif (searchOptions.remote_setting) qs.remote_setting = searchOptions.remote_setting;\n\t\t\tif (searchOptions.status) qs.status = searchOptions.status;\n\t\t\tif (searchOptions.tags) qs.tags = searchOptions.tags;\n\n\t\t\t// Set limit with default value\n\t\t\tconst limit = (searchOptions.limit as number) || 24;\n\t\t\tqs.pageSize = limit;\n\t\t\tqs.page = 1;\n\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'GET' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/job`,\n\t\t\t\t\tqs,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn Array.isArray(response) ? response : [response];\n\t\t}\n\n\t\tthrow new NodeApiError(executeFunctions.getNode(), {\n\t\t\tmessage: `The operation \"${operation}\" is not supported for resource \"job\"!`,\n\t\t});\n\t}\n\n\tprivate async executeStatusOperation(executeFunctions: IExecuteFunctions, itemIndex: number, operation: string): Promise<IDataObject | IDataObject[]> {\n\t\tconst credentials = await executeFunctions.getCredentials('inNotesApi');\n\t\tconst baseUrl = credentials.baseUrl as string;\n\n\t\tif (operation === 'create') {\n\t\t\tconst name = executeFunctions.getNodeParameter('name', itemIndex) as string;\n\t\t\tconst type = executeFunctions.getNodeParameter('type', itemIndex) as string;\n\t\t\tconst color = executeFunctions.getNodeParameter('color', itemIndex, '') as string;\n\n\t\t\tconst body: IDataObject = {\n\t\t\t\tname,\n\t\t\t\ttype,\n\t\t\t\t...(color && { color }),\n\t\t\t};\n\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'POST' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/statuses`,\n\t\t\t\t\tbody,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn response;\n\t\t}\n\n\t\tif (operation === 'getAll') {\n\t\t\tconst type = executeFunctions.getNodeParameter('type', itemIndex, 'contact') as string;\n\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'GET' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/statuses`,\n\t\t\t\t\tqs: { type },\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn Array.isArray(response) ? response : [response];\n\t\t}\n\n\t\tif (operation === 'update') {\n\t\t\tconst statusId = executeFunctions.getNodeParameter('statusId', itemIndex) as string | number;\n\t\t\tconst updateFields = executeFunctions.getNodeParameter('updateFields', itemIndex);\n\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'PUT' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/statuses/${statusId}`,\n\t\t\t\t\tbody: updateFields,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn response;\n\t\t}\n\n\t\tif (operation === 'delete') {\n\t\t\tconst statusId = executeFunctions.getNodeParameter('statusId', itemIndex) as string | number;\n\n\t\t\tawait executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'DELETE' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/statuses/${statusId}`,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn { success: true };\n\t\t}\n\n\t\tthrow new NodeApiError(executeFunctions.getNode(), {\n\t\t\tmessage: `The operation \"${operation}\" is not supported for resource \"status\"!`,\n\t\t});\n\t}\n\n\tprivate async executeTagOperation(executeFunctions: IExecuteFunctions, _itemIndex: number, operation: string): Promise<IDataObject | IDataObject[]> {\n\t\tconst credentials = await executeFunctions.getCredentials('inNotesApi');\n\t\tconst baseUrl = credentials.baseUrl as string;\n\n\t\tif (operation === 'getAll') {\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'GET' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/tags`,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn Array.isArray(response) ? response : [response];\n\t\t}\n\n\t\tthrow new NodeApiError(executeFunctions.getNode(), {\n\t\t\tmessage: `The operation \"${operation}\" is not supported for resource \"tag\"! Supported operations: getAll`,\n\t\t});\n\t}\n\n\tprivate async executeUserOperation(executeFunctions: IExecuteFunctions, itemIndex: number, operation: string): Promise<IDataObject | IDataObject[]> {\n\t\tconst credentials = await executeFunctions.getCredentials('inNotesApi');\n\t\tconst baseUrl = credentials.baseUrl as string;\n\n\t\tif (operation === 'get') {\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'GET' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/user`,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn response;\n\t\t}\n\n\t\tif (operation === 'getCv') {\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'GET' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/user`,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\t// Return only CV-related fields\n\t\t\tconst { cv, job_preferences, cv_updated_at } = response;\n\n\t\t\t// Parse job_preferences if it's a JSON string\n\t\t\tlet parsedPreferences = null;\n\t\t\tlet searchJobTitles = [];\n\t\t\tlet locations = [];\n\n\t\t\tif (job_preferences) {\n\t\t\t\ttry {\n\t\t\t\t\tparsedPreferences = typeof job_preferences === 'string'\n\t\t\t\t\t\t? JSON.parse(job_preferences)\n\t\t\t\t\t\t: job_preferences;\n\n\t\t\t\t\tsearchJobTitles = parsedPreferences.searchJobTitles || [];\n\t\t\t\t\tlocations = parsedPreferences.locations || [];\n\t\t\t\t} catch (error) {\n\t\t\t\t\t// If parsing fails, keep empty arrays\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tcv,\n\t\t\t\tjob_preferences: parsedPreferences,\n\t\t\t\tcv_updated_at,\n\t\t\t\tsearchJobTitles: searchJobTitles.join(', '),\n\t\t\t\tlocations: locations.join(', '),\n\t\t\t};\n\t\t}\n\n\t\tif (operation === 'update') {\n\t\t\tconst updateFields = executeFunctions.getNodeParameter('updateFields', itemIndex);\n\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'PUT' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/user`,\n\t\t\t\t\tbody: updateFields,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn response;\n\t\t}\n\n\t\tthrow new NodeApiError(executeFunctions.getNode(), {\n\t\t\tmessage: `The operation \"${operation}\" is not supported for resource \"user\"! Supported operations: get, getCv, update`,\n\t\t});\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../nodes/InNotes/InNotes.node.ts"],"names":[],"mappings":"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","file":"InNotes.node.js","sourcesContent":["/**\n * @author Marco\n * @date 2025-06-28\n */\n\nimport {\n\tIDataObject,\n\tIExecuteFunctions,\n\tIHttpRequestMethods,\n\tILoadOptionsFunctions,\n\tINodeExecutionData,\n\tINodePropertyOptions,\n\tINodeType,\n\tINodeTypeDescription,\n\tNodeApiError,\n\tNodeConnectionType,\n} from 'n8n-workflow';\n\nimport {contactFields, contactOperations} from '../../descriptions/ContactDescription';\nimport {noteFields, noteOperations} from '../../descriptions/NoteDescription';\nimport {jobFields, jobOperations} from '../../descriptions/JobDescription';\nimport {statusFields, statusOperations} from '../../descriptions/StatusDescription';\nimport {tagFields, tagOperations} from '../../descriptions/TagDescription';\nimport {userFields, userOperations} from '../../descriptions/UserDescription';\n\nexport class InNotes implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'InNotes',\n\t\tname: 'inNotes',\n\t\ticon: 'file:Logo_128.png',\n\t\tgroup: ['output'],\n\t\tversion: 1,\n\t\tsubtitle: '={{$parameter[\"operation\"] + \": \" + $parameter[\"resource\"]}}',\n\t\tdescription: 'Consume InNotes CRM API',\n\t\tdefaults: {\n\t\t\tname: 'InNotes',\n\t\t},\n\t\tinputs: [NodeConnectionType.Main],\n\t\toutputs: [NodeConnectionType.Main],\n\t\tcredentials: [\n\t\t\t{\n\t\t\t\tname: 'inNotesApi',\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t],\n\t\tproperties: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Resource',\n\t\t\t\tname: 'resource',\n\t\t\t\ttype: 'options',\n\t\t\t\tnoDataExpression: true,\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Contact',\n\t\t\t\t\t\tvalue: 'contact',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Note',\n\t\t\t\t\t\tvalue: 'note',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Job',\n\t\t\t\t\t\tvalue: 'job',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Status',\n\t\t\t\t\t\tvalue: 'status',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Tag',\n\t\t\t\t\t\tvalue: 'tag',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'User',\n\t\t\t\t\t\tvalue: 'user',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'contact',\n\t\t\t},\n\t\t\t...contactOperations,\n\t\t\t...noteOperations,\n\t\t\t...jobOperations,\n\t\t\t...statusOperations,\n\t\t\t...tagOperations,\n\t\t\t...userOperations,\n\t\t\t...contactFields,\n\t\t\t...noteFields,\n\t\t\t...jobFields,\n\t\t\t...statusFields,\n\t\t\t...tagFields,\n\t\t\t...userFields,\n\t\t\t{\n\t\t\t\tdisplayName: 'Options',\n\t\t\t\tname: 'options',\n\t\t\t\ttype: 'collection',\n\t\t\t\tplaceholder: 'Add Option',\n\t\t\t\tdefault: {},\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Batch Size',\n\t\t\t\t\t\tname: 'batchSize',\n\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\tdefault: 10,\n\t\t\t\t\t\tdescription: 'Number of items to process in each batch (to avoid rate limiting)',\n\t\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\t\tminValue: 1,\n\t\t\t\t\t\t\tmaxValue: 100,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Timeout Between Batches (ms)',\n\t\t\t\t\t\tname: 'timeoutBetweenBatches',\n\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\tdefault: 1000,\n\t\t\t\t\t\tdescription: 'Delay in milliseconds between processing batches (to avoid rate limiting)',\n\t\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\t\tminValue: 0,\n\t\t\t\t\t\t\tmaxValue: 30000,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t};\n\n\tmethods = {\n\t\tloadOptions: {\n\t\t\tasync jobStatuses(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\ttry {\n\t\t\t\t\tconst credentials = await this.getCredentials('inNotesApi');\n\t\t\t\t\tconst baseUrl = credentials.baseUrl as string;\n\n\t\t\t\t\tconst response = await this.helpers.httpRequestWithAuthentication.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t'inNotesApi',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmethod: 'GET' as IHttpRequestMethods,\n\t\t\t\t\t\t\turl: `${baseUrl}/api/statuses`,\n\t\t\t\t\t\t\tqs: { type: 'job' },\n\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\n\t\t\t\t\tconst statuses = Array.isArray(response) ? response : [response];\n\t\t\t\t\treturn statuses.map((status: any) => ({\n\t\t\t\t\t\tname: status.name,\n\t\t\t\t\t\tvalue: status.name,\n\t\t\t\t\t}));\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthrow new NodeApiError(this.getNode(), {\n\t\t\t\t\t\tmessage: `Failed to load job statuses: ${(error as Error).message}`,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t};\n\n\tasync execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {\n\t\tconst items = this.getInputData();\n\t\tconst returnData: IDataObject[] = [];\n\t\tconst resource = this.getNodeParameter('resource', 0);\n\t\tconst operation = this.getNodeParameter('operation', 0);\n\n\t\t// Get batch options\n\t\tconst options = this.getNodeParameter('options', 0, {}) as IDataObject;\n\t\tconst batchSize = options.batchSize as number || 10;\n\t\tconst timeoutBetweenBatches = options.timeoutBetweenBatches as number || 1000;\n\n\t\t// Create a node instance to access the methods\n\t\tconst nodeInstance = new InNotes();\n\n\t\t// Helper function to add delay between batches\n\t\tconst delay = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));\n\n\t\t// Process items in batches\n\t\tfor (let batchStart = 0; batchStart < items.length; batchStart += batchSize) {\n\t\t\tconst batchEnd = Math.min(batchStart + batchSize, items.length);\n\t\t\tconst currentBatch = items.slice(batchStart, batchEnd);\n\n\t\t\t// Process current batch\n\t\t\tfor (let i = 0; i < currentBatch.length; i++) {\n\t\t\t\tconst actualIndex = batchStart + i;\n\t\t\t\ttry {\n\t\t\t\t\tlet responseData: IDataObject | IDataObject[] = {};\n\n\t\t\t\t\tif (resource === 'contact') {\n\t\t\t\t\t\tresponseData = await nodeInstance.executeContactOperation(this, actualIndex, operation);\n\t\t\t\t\t} else if (resource === 'note') {\n\t\t\t\t\t\tresponseData = await nodeInstance.executeNoteOperation(this, actualIndex, operation);\n\t\t\t\t\t} else if (resource === 'job') {\n\t\t\t\t\t\tresponseData = await nodeInstance.executeJobOperation(this, actualIndex, operation);\n\t\t\t\t\t} else if (resource === 'status') {\n\t\t\t\t\t\tresponseData = await nodeInstance.executeStatusOperation(this, actualIndex, operation);\n\t\t\t\t\t} else if (resource === 'tag') {\n\t\t\t\t\t\tresponseData = await nodeInstance.executeTagOperation(this, actualIndex, operation);\n\t\t\t\t\t} else if (resource === 'user') {\n\t\t\t\t\t\tresponseData = await nodeInstance.executeUserOperation(this, actualIndex, operation);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (Array.isArray(responseData)) {\n\t\t\t\t\t\treturnData.push(...responseData);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturnData.push(responseData);\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (this.continueOnFail()) {\n\t\t\t\t\t\treturnData.push({ error: (error as Error).message });\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add delay between batches (except after the last batch)\n\t\t\tif (batchEnd < items.length && timeoutBetweenBatches > 0) {\n\t\t\t\tawait delay(timeoutBetweenBatches);\n\t\t\t}\n\t\t}\n\n\t\treturn [this.helpers.returnJsonArray(returnData)];\n\t}\n\n\tprivate async executeContactOperation(executeFunctions: IExecuteFunctions, itemIndex: number, operation: string): Promise<IDataObject | IDataObject[]> {\n\t\tconst credentials = await executeFunctions.getCredentials('inNotesApi');\n\t\tconst baseUrl = credentials.baseUrl as string;\n\n\t\tif (operation === 'create') {\n\t\t\tconst name = executeFunctions.getNodeParameter('name', itemIndex) as string;\n\t\t\tconst linkedin_key = executeFunctions.getNodeParameter('linkedin_key', itemIndex) as string;\n\t\t\tconst linkedin_user = executeFunctions.getNodeParameter('linkedin_user', itemIndex, '') as string;\n\t\t\tconst location = executeFunctions.getNodeParameter('location', itemIndex, '') as string;\n\t\t\tconst current_company = executeFunctions.getNodeParameter('current_company', itemIndex, '') as string;\n\t\t\tconst picture_url = executeFunctions.getNodeParameter('picture_url', itemIndex, '') as string;\n\t\t\tconst tags = executeFunctions.getNodeParameter('tags', itemIndex, '') as string;\n\t\t\tconst status_id = executeFunctions.getNodeParameter('status_id', itemIndex, '') as string;\n\n\t\t\tconst body: IDataObject = {\n\t\t\t\tname,\n\t\t\t\tlinkedin_key,\n\t\t\t\t...(linkedin_user && { linkedin_user }),\n\t\t\t\t...(location && { location }),\n\t\t\t\t...(current_company && { current_company }),\n\t\t\t\t...(picture_url && { picture_url }),\n\t\t\t\t...(tags && { tags: tags.split(',').map((tag: string) => tag.trim()) }),\n\t\t\t\t...(status_id && { status_id }),\n\t\t\t};\n\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'POST' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/contacts`,\n\t\t\t\t\tbody,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn response;\n\t\t}\n\n\t\tif (operation === 'get') {\n\t\t\tconst contactId = executeFunctions.getNodeParameter('contactId', itemIndex) as string;\n\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'GET' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/contacts/${contactId}`,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn response;\n\t\t}\n\n\t\tif (operation === 'getAll') {\n\t\t\tconst returnAll = executeFunctions.getNodeParameter('returnAll', itemIndex, false) as boolean;\n\t\t\tconst search = executeFunctions.getNodeParameter('search', itemIndex, '') as string;\n\t\t\tconst tags = executeFunctions.getNodeParameter('tags', itemIndex, '') as string;\n\n\t\t\tconst qs: IDataObject = {};\n\t\t\tif (search) qs.search = search;\n\t\t\tif (tags) qs.tags = tags;\n\n\t\t\tif (!returnAll) {\n\t\t\t\tconst limit = executeFunctions.getNodeParameter('limit', itemIndex, 24);\n\t\t\t\tqs.pageSize = limit;\n\t\t\t\tqs.page = 1;\n\t\t\t}\n\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'GET' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/contacts`,\n\t\t\t\t\tqs,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn Array.isArray(response) ? response : [response];\n\t\t}\n\n\t\tif (operation === 'update') {\n\t\t\tconst contactId = executeFunctions.getNodeParameter('contactId', itemIndex) as string;\n\t\t\tconst updateFields = executeFunctions.getNodeParameter('updateFields', itemIndex);\n\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'PUT' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/contacts/${contactId}`,\n\t\t\t\t\tbody: updateFields,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn response;\n\t\t}\n\n\t\tif (operation === 'delete') {\n\t\t\tconst contactId = executeFunctions.getNodeParameter('contactId', itemIndex) as string;\n\n\t\t\tawait executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'DELETE' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/contacts/${contactId}`,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn { success: true };\n\t\t}\n\n\t\tthrow new NodeApiError(executeFunctions.getNode(), {\n\t\t\tmessage: `The operation \"${operation}\" is not supported for resource \"contact\"!`,\n\t\t});\n\t}\n\n\tprivate async executeNoteOperation(executeFunctions: IExecuteFunctions, itemIndex: number, operation: string): Promise<IDataObject | IDataObject[]> {\n\t\tconst credentials = await executeFunctions.getCredentials('inNotesApi');\n\t\tconst baseUrl = credentials.baseUrl as string;\n\n\t\tif (operation === 'create') {\n\t\t\tconst content = executeFunctions.getNodeParameter('content', itemIndex) as string;\n\t\t\tconst contactId = executeFunctions.getNodeParameter('contactId', itemIndex) as string | number;\n\t\t\tconst visibility = executeFunctions.getNodeParameter('visibility', itemIndex, '') as string;\n\t\t\tconst ext_table_name = executeFunctions.getNodeParameter('ext_table_name', itemIndex, '') as string;\n\n\t\t\tconst body: IDataObject = {\n\t\t\t\tcontent,\n\t\t\t\tcontact_id: contactId,\n\t\t\t\t...(visibility && { visibility }),\n\t\t\t\t...(ext_table_name && { ext_table_name }),\n\t\t\t};\n\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'POST' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/note`,\n\t\t\t\t\tbody,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn response;\n\t\t}\n\n\t\tif (operation === 'get') {\n\t\t\tconst noteId = executeFunctions.getNodeParameter('noteId', itemIndex) as string | number;\n\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'GET' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/note/${noteId}`,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn response;\n\t\t}\n\n\t\tif (operation === 'getAll') {\n\t\t\tconst contactId = executeFunctions.getNodeParameter('contactId', itemIndex) as string | number;\n\t\t\tconst returnAll = executeFunctions.getNodeParameter('returnAll', itemIndex, false) as boolean;\n\n\t\t\tconst qs: IDataObject = {\n\t\t\t\tcontact_id: contactId,\n\t\t\t};\n\n\t\t\tif (!returnAll) {\n\t\t\t\tconst limit = executeFunctions.getNodeParameter('limit', itemIndex, 24);\n\t\t\t\tqs.pageSize = limit;\n\t\t\t\tqs.page = 1;\n\t\t\t}\n\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'GET' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/note`,\n\t\t\t\t\tqs,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn Array.isArray(response) ? response : [response];\n\t\t}\n\n\t\tif (operation === 'update') {\n\t\t\tconst noteId = executeFunctions.getNodeParameter('noteId', itemIndex) as string | number;\n\t\t\tconst updateFields = executeFunctions.getNodeParameter('updateFields', itemIndex);\n\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'PUT' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/note/${noteId}`,\n\t\t\t\t\tbody: updateFields,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn response;\n\t\t}\n\n\t\tif (operation === 'delete') {\n\t\t\tconst noteId = executeFunctions.getNodeParameter('noteId', itemIndex) as string | number;\n\n\t\t\tawait executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'DELETE' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/note/${noteId}`,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn { success: true };\n\t\t}\n\n\t\tthrow new NodeApiError(executeFunctions.getNode(), {\n\t\t\tmessage: `The operation \"${operation}\" is not supported for resource \"note\"!`,\n\t\t});\n\t}\n\n\tprivate async executeJobOperation(executeFunctions: IExecuteFunctions, itemIndex: number, operation: string): Promise<IDataObject | IDataObject[]> {\n\t\tconst credentials = await executeFunctions.getCredentials('inNotesApi');\n\t\tconst baseUrl = credentials.baseUrl as string;\n\n\t\tif (operation === 'create') {\n\t\t\tconst name = executeFunctions.getNodeParameter('name', itemIndex) as string;\n\t\t\tconst company_name = executeFunctions.getNodeParameter('company_name', itemIndex) as string;\n\t\t\tconst status = executeFunctions.getNodeParameter('status', itemIndex, '') as string;\n\t\t\tconst description = executeFunctions.getNodeParameter('description', itemIndex, '') as string;\n\t\t\tconst location = executeFunctions.getNodeParameter('location', itemIndex, '') as string;\n\t\t\tconst remote_setting = executeFunctions.getNodeParameter('remote_setting', itemIndex, '') as string;\n\t\t\tconst company_url = executeFunctions.getNodeParameter('company_url', itemIndex, '') as string;\n\t\t\tconst ext_id = executeFunctions.getNodeParameter('ext_id', itemIndex, '') as string;\n\t\t\tconst picture_url = executeFunctions.getNodeParameter('picture_url', itemIndex, '') as string;\n\t\t\tconst tags = executeFunctions.getNodeParameter('tags', itemIndex, '') as string;\n\n\t\t\tlet status_id: string | undefined;\n\n\t\t\t// If status is provided, lookup the status ID\n\t\t\tif (status) {\n\t\t\t\ttry {\n\t\t\t\t\t// Get all job statuses\n\t\t\t\t\tconst statusResponse = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\t\t\texecuteFunctions,\n\t\t\t\t\t\t'inNotesApi',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmethod: 'GET' as IHttpRequestMethods,\n\t\t\t\t\t\t\turl: `${baseUrl}/api/statuses`,\n\t\t\t\t\t\t\tqs: { type: 'job' },\n\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\n\t\t\t\t\t// Find matching status by name (case-insensitive)\n\t\t\t\t\tconst statuses = Array.isArray(statusResponse) ? statusResponse : [statusResponse];\n\t\t\t\t\tconst matchingStatus = statuses.find((s: any) =>\n\t\t\t\t\t\ts.name && s.name.toLowerCase() === status.toLowerCase(),\n\t\t\t\t\t);\n\n\t\t\t\t\tif (matchingStatus) {\n\t\t\t\t\t\tstatus_id = matchingStatus.id.toString();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow new NodeApiError(executeFunctions.getNode(), {\n\t\t\t\t\t\t\tmessage: `Status \"${status}\" not found. Available statuses: ${statuses.map((s: any) => s.name).join(', ')}`,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (error instanceof NodeApiError) {\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\t\t\t\t\tthrow new NodeApiError(executeFunctions.getNode(), {\n\t\t\t\t\t\tmessage: `Failed to lookup status \"${status}\": ${(error as Error).message}`,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst body: IDataObject = {\n\t\t\t\tname,\n\t\t\t\tcompany_name,\n\t\t\t\tstatus,\n\t\t\t\t...(description && { description }),\n\t\t\t\t...(location && { location }),\n\t\t\t\t...(remote_setting && { remote_setting }),\n\t\t\t\t...(company_url && { company_url }),\n\t\t\t\t...(status_id && { status_id }),\n\t\t\t\t...(ext_id && { ext_id }),\n\t\t\t\t...(picture_url && { picture_url }),\n\t\t\t\t...(tags && { tags: tags.split(',').map((tag: string) => tag.trim()) }),\n\t\t\t};\n\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'POST' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/job`,\n\t\t\t\t\tbody,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn response;\n\t\t}\n\n\t\tif (operation === 'get') {\n\t\t\tconst jobId = executeFunctions.getNodeParameter('jobId', itemIndex) as string | number;\n\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'GET' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/job/${jobId}`,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn response;\n\t\t}\n\n\t\tif (operation === 'getAll') {\n\t\t\tconst returnAll = executeFunctions.getNodeParameter('returnAll', itemIndex, false) as boolean;\n\t\t\tconst search = executeFunctions.getNodeParameter('search', itemIndex, '') as string;\n\t\t\tconst tags = executeFunctions.getNodeParameter('tags', itemIndex, '') as string;\n\n\t\t\tconst qs: IDataObject = {};\n\t\t\tif (search) qs.search = search;\n\t\t\tif (tags) qs.tags = tags;\n\n\t\t\tif (!returnAll) {\n\t\t\t\tconst limit = executeFunctions.getNodeParameter('limit', itemIndex, 24);\n\t\t\t\tqs.pageSize = limit;\n\t\t\t\tqs.page = 1;\n\t\t\t}\n\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'GET' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/job`,\n\t\t\t\t\tqs,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn Array.isArray(response) ? response : [response];\n\t\t}\n\n\t\tif (operation === 'update') {\n\t\t\tconst jobId = executeFunctions.getNodeParameter('jobId', itemIndex) as string | number;\n\t\t\tconst updateFields = executeFunctions.getNodeParameter('updateFields', itemIndex);\n\n\t\t\t// Handle status string lookup if provided\n\t\t\tif (updateFields.status && typeof updateFields.status === 'string') {\n\t\t\t\ttry {\n\t\t\t\t\t// Get all job statuses\n\t\t\t\t\tconst statusResponse = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\t\t\texecuteFunctions,\n\t\t\t\t\t\t'inNotesApi',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmethod: 'GET' as IHttpRequestMethods,\n\t\t\t\t\t\t\turl: `${baseUrl}/api/statuses`,\n\t\t\t\t\t\t\tqs: { type: 'job' },\n\t\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\n\t\t\t\t\t// Find matching status by name (case-insensitive)\n\t\t\t\t\tconst statuses = Array.isArray(statusResponse) ? statusResponse : [statusResponse];\n\t\t\t\t\tconst matchingStatus = statuses.find((s: any) =>\n\t\t\t\t\t\ts.name && s.name.toLowerCase() === (updateFields.status as string).toLowerCase(),\n\t\t\t\t\t);\n\n\t\t\t\t\tif (matchingStatus) {\n\t\t\t\t\t\t// Replace status with status_id and remove status field\n\t\t\t\t\t\tupdateFields.status_id = matchingStatus.id.toString();\n\t\t\t\t\t\tdelete updateFields.status;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow new NodeApiError(executeFunctions.getNode(), {\n\t\t\t\t\t\t\tmessage: `Status \"${updateFields.status}\" not found. Available statuses: ${statuses.map((s: any) => s.name).join(', ')}`,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (error instanceof NodeApiError) {\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\t\t\t\t\tthrow new NodeApiError(executeFunctions.getNode(), {\n\t\t\t\t\t\tmessage: `Failed to lookup status \"${updateFields.status}\": ${(error as Error).message}`,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Process tags if provided as comma-separated string\n\t\t\tif (updateFields.tags && typeof updateFields.tags === 'string') {\n\t\t\t\tupdateFields.tags = (updateFields.tags).split(',').map((tag: string) => tag.trim());\n\t\t\t}\n\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'PUT' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/job/${jobId}`,\n\t\t\t\t\tbody: updateFields,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn response;\n\t\t}\n\n\t\tif (operation === 'delete') {\n\t\t\tconst jobId = executeFunctions.getNodeParameter('jobId', itemIndex) as string | number;\n\n\t\t\tawait executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'DELETE' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/job/${jobId}`,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn { success: true };\n\t\t}\n\n\t\tif (operation === 'search') {\n\t\t\tconst searchMethod = executeFunctions.getNodeParameter('searchMethod', itemIndex) as string;\n\t\t\tconst searchQuery = executeFunctions.getNodeParameter('searchQuery', itemIndex) as string;\n\t\t\tconst searchOptions = executeFunctions.getNodeParameter('searchOptions', itemIndex, {}) as IDataObject;\n\n\t\t\tconst qs: IDataObject = {};\n\n\t\t\t// Handle different search methods\n\t\t\tswitch (searchMethod) {\n\t\t\tcase 'general':\n\t\t\t\tqs.searchTerm = searchQuery;\n\t\t\t\tbreak;\n\t\t\tcase 'ext_id':\n\t\t\t\tqs.ext_id = searchQuery;\n\t\t\t\tbreak;\n\t\t\tcase 'title':\n\t\t\t\tqs.searchTerm = searchQuery;\n\t\t\t\tqs.searchField = 'title';\n\t\t\t\tbreak;\n\t\t\tcase 'company':\n\t\t\t\tqs.searchTerm = searchQuery;\n\t\t\t\tqs.searchField = 'company';\n\t\t\t\tbreak;\n\t\t\tcase 'location':\n\t\t\t\tqs.searchTerm = searchQuery;\n\t\t\t\tqs.searchField = 'location';\n\t\t\t\tbreak;\n\t\t\tcase 'description':\n\t\t\t\tqs.searchTerm = searchQuery;\n\t\t\t\tqs.searchField = 'description';\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tqs.searchTerm = searchQuery;\n\t\t\t}\n\n\t\t\t// Add additional filter parameters\n\t\t\tif (searchOptions.remote_setting) qs.remote_setting = searchOptions.remote_setting;\n\t\t\tif (searchOptions.status) qs.status = searchOptions.status;\n\t\t\tif (searchOptions.tags) qs.tags = searchOptions.tags;\n\n\t\t\t// Set limit with default value\n\t\t\tconst limit = (searchOptions.limit as number) || 24;\n\t\t\tqs.pageSize = limit;\n\t\t\tqs.page = 1;\n\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'GET' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/job`,\n\t\t\t\t\tqs,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn Array.isArray(response) ? response : [response];\n\t\t}\n\n\t\tthrow new NodeApiError(executeFunctions.getNode(), {\n\t\t\tmessage: `The operation \"${operation}\" is not supported for resource \"job\"!`,\n\t\t});\n\t}\n\n\tprivate async executeStatusOperation(executeFunctions: IExecuteFunctions, itemIndex: number, operation: string): Promise<IDataObject | IDataObject[]> {\n\t\tconst credentials = await executeFunctions.getCredentials('inNotesApi');\n\t\tconst baseUrl = credentials.baseUrl as string;\n\n\t\tif (operation === 'create') {\n\t\t\tconst name = executeFunctions.getNodeParameter('name', itemIndex) as string;\n\t\t\tconst type = executeFunctions.getNodeParameter('type', itemIndex) as string;\n\t\t\tconst color = executeFunctions.getNodeParameter('color', itemIndex, '') as string;\n\n\t\t\tconst body: IDataObject = {\n\t\t\t\tname,\n\t\t\t\ttype,\n\t\t\t\t...(color && { color }),\n\t\t\t};\n\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'POST' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/statuses`,\n\t\t\t\t\tbody,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn response;\n\t\t}\n\n\t\tif (operation === 'getAll') {\n\t\t\tconst type = executeFunctions.getNodeParameter('type', itemIndex, 'contact') as string;\n\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'GET' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/statuses`,\n\t\t\t\t\tqs: { type },\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn Array.isArray(response) ? response : [response];\n\t\t}\n\n\t\tif (operation === 'update') {\n\t\t\tconst statusId = executeFunctions.getNodeParameter('statusId', itemIndex) as string | number;\n\t\t\tconst updateFields = executeFunctions.getNodeParameter('updateFields', itemIndex);\n\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'PUT' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/statuses/${statusId}`,\n\t\t\t\t\tbody: updateFields,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn response;\n\t\t}\n\n\t\tif (operation === 'delete') {\n\t\t\tconst statusId = executeFunctions.getNodeParameter('statusId', itemIndex) as string | number;\n\n\t\t\tawait executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'DELETE' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/statuses/${statusId}`,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn { success: true };\n\t\t}\n\n\t\tthrow new NodeApiError(executeFunctions.getNode(), {\n\t\t\tmessage: `The operation \"${operation}\" is not supported for resource \"status\"!`,\n\t\t});\n\t}\n\n\tprivate async executeTagOperation(executeFunctions: IExecuteFunctions, _itemIndex: number, operation: string): Promise<IDataObject | IDataObject[]> {\n\t\tconst credentials = await executeFunctions.getCredentials('inNotesApi');\n\t\tconst baseUrl = credentials.baseUrl as string;\n\n\t\tif (operation === 'getAll') {\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'GET' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/tags`,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn Array.isArray(response) ? response : [response];\n\t\t}\n\n\t\tthrow new NodeApiError(executeFunctions.getNode(), {\n\t\t\tmessage: `The operation \"${operation}\" is not supported for resource \"tag\"! Supported operations: getAll`,\n\t\t});\n\t}\n\n\tprivate async executeUserOperation(executeFunctions: IExecuteFunctions, itemIndex: number, operation: string): Promise<IDataObject | IDataObject[]> {\n\t\tconst credentials = await executeFunctions.getCredentials('inNotesApi');\n\t\tconst baseUrl = credentials.baseUrl as string;\n\n\t\tif (operation === 'get') {\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'GET' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/user`,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn response;\n\t\t}\n\n\t\tif (operation === 'getCv') {\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'GET' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/user`,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\t// Return only CV-related fields\n\t\t\tconst { cv, job_preferences, cv_updated_at } = response;\n\n\t\t\t// Parse job_preferences if it's a JSON string\n\t\t\tlet parsedPreferences = null;\n\t\t\tlet searchJobTitles = [];\n\t\t\tlet locations = [];\n\n\t\t\tif (job_preferences) {\n\t\t\t\ttry {\n\t\t\t\t\tparsedPreferences = typeof job_preferences === 'string'\n\t\t\t\t\t\t? JSON.parse(job_preferences)\n\t\t\t\t\t\t: job_preferences;\n\n\t\t\t\t\tsearchJobTitles = parsedPreferences.searchJobTitles || [];\n\t\t\t\t\tlocations = parsedPreferences.locations || [];\n\t\t\t\t} catch (error) {\n\t\t\t\t\t// If parsing fails, keep empty arrays\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tcv,\n\t\t\t\tjob_preferences: parsedPreferences,\n\t\t\t\tcv_updated_at,\n\t\t\t\tsearchJobTitles: searchJobTitles.join(', '),\n\t\t\t\tlocations: locations.join(', '),\n\t\t\t};\n\t\t}\n\n\t\tif (operation === 'update') {\n\t\t\tconst updateFields = executeFunctions.getNodeParameter('updateFields', itemIndex);\n\n\t\t\tconst response = await executeFunctions.helpers.httpRequestWithAuthentication.call(\n\t\t\t\texecuteFunctions,\n\t\t\t\t'inNotesApi',\n\t\t\t\t{\n\t\t\t\t\tmethod: 'PUT' as IHttpRequestMethods,\n\t\t\t\t\turl: `${baseUrl}/api/user`,\n\t\t\t\t\tbody: updateFields,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tAccept: 'application/json',\n\t\t\t\t\t\t'Content-Type': 'application/json',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn response;\n\t\t}\n\n\t\tthrow new NodeApiError(executeFunctions.getNode(), {\n\t\t\tmessage: `The operation \"${operation}\" is not supported for resource \"user\"! Supported operations: get, getCv, update`,\n\t\t});\n\t}\n}\n"]}
|
package/dist/package.json
CHANGED