n8n-nodes-base 1.89.0 → 1.90.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 (44) hide show
  1. package/dist/credentials/CustomerIoApi.credentials.js +2 -2
  2. package/dist/credentials/CustomerIoApi.credentials.js.map +1 -1
  3. package/dist/nodes/Aws/__tests__/credentials.js +35 -0
  4. package/dist/nodes/Aws/__tests__/credentials.js.map +1 -0
  5. package/dist/nodes/Code/Pyodide.js +16 -1
  6. package/dist/nodes/Code/Pyodide.js.map +1 -1
  7. package/dist/nodes/EmailReadImap/v2/EmailReadImapV2.node.js +1 -1
  8. package/dist/nodes/EmailReadImap/v2/EmailReadImapV2.node.js.map +1 -1
  9. package/dist/nodes/ExecuteWorkflow/ExecuteWorkflow/methods/localResourceMapping.js +3 -1
  10. package/dist/nodes/ExecuteWorkflow/ExecuteWorkflow/methods/localResourceMapping.js.map +1 -1
  11. package/dist/nodes/Form/formCompletionUtils.js +1 -3
  12. package/dist/nodes/Form/formCompletionUtils.js.map +1 -1
  13. package/dist/nodes/Google/Sheet/GoogleSheetsTrigger.node.js +12 -4
  14. package/dist/nodes/Google/Sheet/GoogleSheetsTrigger.node.js.map +1 -1
  15. package/dist/nodes/Jira/GenericFunctions.js +7 -3
  16. package/dist/nodes/Jira/GenericFunctions.js.map +1 -1
  17. package/dist/nodes/Jira/Jira.node.js +4 -6
  18. package/dist/nodes/Jira/Jira.node.js.map +1 -1
  19. package/dist/nodes/Microsoft/AzureCosmosDb/test/credentials.js +36 -0
  20. package/dist/nodes/Microsoft/AzureCosmosDb/test/credentials.js.map +1 -0
  21. package/dist/nodes/Microsoft/Excel/test/credentials.js +36 -0
  22. package/dist/nodes/Microsoft/Excel/test/credentials.js.map +1 -0
  23. package/dist/nodes/Microsoft/Storage/test/credentials.js +57 -0
  24. package/dist/nodes/Microsoft/Storage/test/credentials.js.map +1 -0
  25. package/dist/nodes/Microsoft/Teams/test/credentials.js +36 -0
  26. package/dist/nodes/Microsoft/Teams/test/credentials.js.map +1 -0
  27. package/dist/nodes/SplitInBatches/v3/SplitInBatchesV3.node.js +1 -1
  28. package/dist/nodes/SplitInBatches/v3/SplitInBatchesV3.node.js.map +1 -1
  29. package/dist/nodes/Wordpress/__tests__/workflow/credentials.js +36 -0
  30. package/dist/nodes/Wordpress/__tests__/workflow/credentials.js.map +1 -0
  31. package/dist/test/globalSetup.js +3 -0
  32. package/dist/test/globalSetup.js.map +1 -1
  33. package/dist/test/nodes/ExecuteWorkflow.js +3 -2
  34. package/dist/test/nodes/ExecuteWorkflow.js.map +1 -1
  35. package/dist/test/nodes/Helpers.js +4 -17
  36. package/dist/test/nodes/Helpers.js.map +1 -1
  37. package/dist/test/nodes/credentials-helper.js +9 -13
  38. package/dist/test/nodes/credentials-helper.js.map +1 -1
  39. package/dist/types/nodes.json +3 -3
  40. package/dist/utils/workflowInputsResourceMapping/GenericFunctions.js +6 -1
  41. package/dist/utils/workflowInputsResourceMapping/GenericFunctions.js.map +1 -1
  42. package/package.json +11 -10
  43. package/dist/test/nodes/FakeCredentialsMap.js +0 -313
  44. package/dist/test/nodes/FakeCredentialsMap.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../nodes/Jira/GenericFunctions.ts"],"sourcesContent":["import type {\n\tIDataObject,\n\tIExecuteFunctions,\n\tIHookFunctions,\n\tIHttpRequestMethods,\n\tILoadOptionsFunctions,\n\tINodeListSearchItems,\n\tINodePropertyOptions,\n\tIRequestOptions,\n\tJsonObject,\n} from 'n8n-workflow';\nimport { NodeApiError } from 'n8n-workflow';\n\nimport type { JiraServerInfo, JiraWebhook } from './types';\n\nexport async function jiraSoftwareCloudApiRequest(\n\tthis: IHookFunctions | IExecuteFunctions | ILoadOptionsFunctions,\n\tendpoint: string,\n\tmethod: IHttpRequestMethods,\n\tbody: any = {},\n\tquery?: IDataObject,\n\turi?: string,\n\toption: IDataObject = {},\n): Promise<any> {\n\tconst jiraVersion = this.getNodeParameter('jiraVersion', 0) as string;\n\n\tlet domain = '';\n\tlet credentialType: string;\n\n\tif (jiraVersion === 'server') {\n\t\tdomain = (await this.getCredentials('jiraSoftwareServerApi')).domain as string;\n\t\tcredentialType = 'jiraSoftwareServerApi';\n\t} else if (jiraVersion === 'serverPat') {\n\t\tdomain = (await this.getCredentials('jiraSoftwareServerPatApi')).domain as string;\n\t\tcredentialType = 'jiraSoftwareServerPatApi';\n\t} else {\n\t\tdomain = (await this.getCredentials('jiraSoftwareCloudApi')).domain as string;\n\t\tcredentialType = 'jiraSoftwareCloudApi';\n\t}\n\n\tconst options: IRequestOptions = {\n\t\theaders: {\n\t\t\tAccept: 'application/json',\n\t\t\t'Content-Type': 'application/json',\n\t\t\t'X-Atlassian-Token': 'no-check',\n\t\t},\n\t\tmethod,\n\t\tqs: query,\n\t\turi: uri || `${domain}/rest${endpoint}`,\n\t\tbody,\n\t\tjson: true,\n\t};\n\n\tif (Object.keys(option).length !== 0) {\n\t\tObject.assign(options, option);\n\t}\n\n\tif (Object.keys(body as IDataObject).length === 0) {\n\t\tdelete options.body;\n\t}\n\n\tif (Object.keys(query || {}).length === 0) {\n\t\tdelete options.qs;\n\t}\n\ttry {\n\t\treturn await this.helpers.requestWithAuthentication.call(this, credentialType, options);\n\t} catch (error) {\n\t\tif (error.description?.includes?.(\"Field 'priority' cannot be set\")) {\n\t\t\tthrow new NodeApiError(this.getNode(), error as JsonObject, {\n\t\t\t\tmessage:\n\t\t\t\t\t\"Field 'priority' cannot be set. You need to add the Priority field to your Jira Project's Issue Types.\",\n\t\t\t});\n\t\t}\n\t\tthrow error;\n\t}\n}\n\nexport async function jiraSoftwareCloudApiRequestAllItems(\n\tthis: IHookFunctions | IExecuteFunctions | ILoadOptionsFunctions,\n\tpropertyName: string,\n\tendpoint: string,\n\tmethod: IHttpRequestMethods,\n\tbody: any = {},\n\tquery: IDataObject = {},\n): Promise<any> {\n\tconst returnData: IDataObject[] = [];\n\n\tlet responseData;\n\n\tquery.startAt = 0;\n\tbody.startAt = 0;\n\tquery.maxResults = 100;\n\tbody.maxResults = 100;\n\n\tdo {\n\t\tresponseData = await jiraSoftwareCloudApiRequest.call(this, endpoint, method, body, query);\n\t\treturnData.push.apply(returnData, responseData[propertyName] as IDataObject[]);\n\t\tquery.startAt = (responseData.startAt as number) + (responseData.maxResults as number);\n\t\tbody.startAt = (responseData.startAt as number) + (responseData.maxResults as number);\n\t} while (\n\t\t(responseData.startAt as number) + (responseData.maxResults as number) <\n\t\tresponseData.total\n\t);\n\n\treturn returnData;\n}\n\nexport function validateJSON(json: string | undefined): any {\n\tlet result;\n\ttry {\n\t\tresult = JSON.parse(json!);\n\t} catch (exception) {\n\t\tresult = '';\n\t}\n\treturn result;\n}\n\nexport function eventExists(currentEvents: string[], webhookEvents: string[]) {\n\tfor (const currentEvent of currentEvents) {\n\t\tif (!webhookEvents.includes(currentEvent)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\nexport function getWebhookId(webhook: JiraWebhook) {\n\tif (webhook.id) return webhook.id.toString();\n\treturn webhook.self?.split('/').pop();\n}\n\nexport function simplifyIssueOutput(responseData: {\n\tnames: { [key: string]: string };\n\tfields: IDataObject;\n\tid: string;\n\tkey: string;\n\tself: string;\n}) {\n\tconst mappedFields: IDataObject = {\n\t\tid: responseData.id,\n\t\tkey: responseData.key,\n\t\tself: responseData.self,\n\t};\n\t// Sort custom fields last so we map them last\n\tconst customField = /^customfield_\\d+$/;\n\tconst sortedFields: string[] = Object.keys(responseData.fields).sort((a, b) => {\n\t\tif (customField.test(a) && customField.test(b)) {\n\t\t\treturn a > b ? 1 : -1;\n\t\t}\n\t\tif (customField.test(a)) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (customField.test(b)) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn a > b ? 1 : -1;\n\t});\n\tfor (const field of sortedFields) {\n\t\tif (responseData.names[field] in mappedFields) {\n\t\t\tlet newField: string = responseData.names[field];\n\t\t\tlet counter = 0;\n\t\t\twhile (newField in mappedFields) {\n\t\t\t\tcounter++;\n\t\t\t\tnewField = `${responseData.names[field]}_${counter}`;\n\t\t\t}\n\t\t\tmappedFields[newField] = responseData.fields[field];\n\t\t} else {\n\t\t\tmappedFields[responseData.names[field] || field] = responseData.fields[field];\n\t\t}\n\t}\n\n\treturn mappedFields;\n}\n\nexport const allEvents = [\n\t'board_created',\n\t'board_updated',\n\t'board_deleted',\n\t'board_configuration_changed',\n\t'comment_created',\n\t'comment_updated',\n\t'comment_deleted',\n\t'jira:issue_created',\n\t'jira:issue_updated',\n\t'jira:issue_deleted',\n\t'option_voting_changed',\n\t'option_watching_changed',\n\t'option_unassigned_issues_changed',\n\t'option_subtasks_changed',\n\t'option_attachments_changed',\n\t'option_issuelinks_changed',\n\t'option_timetracking_changed',\n\t'project_created',\n\t'project_updated',\n\t'project_deleted',\n\t'sprint_created',\n\t'sprint_deleted',\n\t'sprint_updated',\n\t'sprint_started',\n\t'sprint_closed',\n\t'user_created',\n\t'user_updated',\n\t'user_deleted',\n\t'jira:version_released',\n\t'jira:version_unreleased',\n\t'jira:version_created',\n\t'jira:version_moved',\n\t'jira:version_updated',\n\t'jira:version_deleted',\n\t'issuelink_created',\n\t'issuelink_deleted',\n\t'worklog_created',\n\t'worklog_updated',\n\t'worklog_deleted',\n];\n\nexport function filterSortSearchListItems(items: INodeListSearchItems[], filter?: string) {\n\treturn items\n\t\t.filter(\n\t\t\t(item) =>\n\t\t\t\t!filter ||\n\t\t\t\titem.name.toLowerCase().includes(filter.toLowerCase()) ||\n\t\t\t\titem.value.toString().toLowerCase().includes(filter.toLowerCase()),\n\t\t)\n\t\t.sort((a, b) => {\n\t\t\tif (a.name.toLocaleLowerCase() < b.name.toLocaleLowerCase()) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif (a.name.toLocaleLowerCase() > b.name.toLocaleLowerCase()) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\treturn 0;\n\t\t});\n}\n\nexport async function getUsers(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\tconst jiraVersion = this.getCurrentNodeParameter('jiraVersion') as string;\n\tconst maxResults = 1000;\n\tconst query: IDataObject = { maxResults };\n\tlet endpoint = '/api/2/users/search';\n\n\tif (jiraVersion === 'server' || jiraVersion === 'serverPat') {\n\t\tendpoint = '/api/2/user/search';\n\t\tquery.username = \"'\";\n\t}\n\n\tconst users = [];\n\tlet hasNextPage: boolean;\n\n\tdo {\n\t\tconst usersPage = (await jiraSoftwareCloudApiRequest.call(\n\t\t\tthis,\n\t\t\tendpoint,\n\t\t\t'GET',\n\t\t\t{},\n\t\t\t{ ...query, startAt: users.length },\n\t\t)) as IDataObject[];\n\t\tusers.push(...usersPage);\n\t\thasNextPage = usersPage.length === maxResults;\n\t} while (hasNextPage);\n\n\treturn users\n\t\t.filter((user) => user.active)\n\t\t.map((user) => ({\n\t\t\tname: user.displayName as string,\n\t\t\tvalue: (user.accountId ?? user.name) as string,\n\t\t}))\n\t\t.sort((a: INodePropertyOptions, b: INodePropertyOptions) => {\n\t\t\treturn a.name.toLowerCase() > b.name.toLowerCase() ? 1 : -1;\n\t\t});\n}\n\nexport async function getServerInfo(this: IHookFunctions) {\n\treturn await (jiraSoftwareCloudApiRequest.call(\n\t\tthis,\n\t\t'/api/2/serverInfo',\n\t\t'GET',\n\t) as Promise<JiraServerInfo>);\n}\n\nexport async function getWebhookEndpoint(this: IHookFunctions) {\n\tconst serverInfo = await getServerInfo.call(this).catch(() => null);\n\n\tif (!serverInfo || serverInfo.deploymentType === 'Cloud') return '/webhooks/1.0/webhook';\n\n\t// Assume old version when versionNumbers is not set\n\tconst majorVersion = serverInfo.versionNumbers?.[0] ?? 1;\n\n\treturn majorVersion >= 10 ? '/jira-webhook/1.0/webhooks' : '/webhooks/1.0/webhook';\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../nodes/Jira/GenericFunctions.ts"],"sourcesContent":["import type {\n\tIDataObject,\n\tIExecuteFunctions,\n\tIHookFunctions,\n\tIHttpRequestMethods,\n\tILoadOptionsFunctions,\n\tINodeListSearchItems,\n\tINodePropertyOptions,\n\tIRequestOptions,\n\tJsonObject,\n} from 'n8n-workflow';\nimport { NodeApiError } from 'n8n-workflow';\n\nimport type { JiraServerInfo, JiraWebhook } from './types';\n\nexport async function jiraSoftwareCloudApiRequest(\n\tthis: IHookFunctions | IExecuteFunctions | ILoadOptionsFunctions,\n\tendpoint: string,\n\tmethod: IHttpRequestMethods,\n\tbody: any = {},\n\tquery?: IDataObject,\n\turi?: string,\n\toption: IDataObject = {},\n): Promise<any> {\n\tconst jiraVersion = this.getNodeParameter('jiraVersion', 0) as string;\n\n\tlet domain = '';\n\tlet credentialType: string;\n\n\tif (jiraVersion === 'server') {\n\t\tdomain = (await this.getCredentials('jiraSoftwareServerApi')).domain as string;\n\t\tcredentialType = 'jiraSoftwareServerApi';\n\t} else if (jiraVersion === 'serverPat') {\n\t\tdomain = (await this.getCredentials('jiraSoftwareServerPatApi')).domain as string;\n\t\tcredentialType = 'jiraSoftwareServerPatApi';\n\t} else {\n\t\tdomain = (await this.getCredentials('jiraSoftwareCloudApi')).domain as string;\n\t\tcredentialType = 'jiraSoftwareCloudApi';\n\t}\n\n\tconst options: IRequestOptions = {\n\t\theaders: {\n\t\t\tAccept: 'application/json',\n\t\t\t'Content-Type': 'application/json',\n\t\t\t'X-Atlassian-Token': 'no-check',\n\t\t},\n\t\tmethod,\n\t\tqs: query,\n\t\turi: uri || `${domain}/rest${endpoint}`,\n\t\tbody,\n\t\tjson: true,\n\t};\n\n\tif (Object.keys(option).length !== 0) {\n\t\tObject.assign(options, option);\n\t}\n\n\tif (Object.keys(body as IDataObject).length === 0) {\n\t\tdelete options.body;\n\t}\n\n\tif (Object.keys(query || {}).length === 0) {\n\t\tdelete options.qs;\n\t}\n\ttry {\n\t\treturn await this.helpers.requestWithAuthentication.call(this, credentialType, options);\n\t} catch (error) {\n\t\tif (error.description?.includes?.(\"Field 'priority' cannot be set\")) {\n\t\t\tthrow new NodeApiError(this.getNode(), error as JsonObject, {\n\t\t\t\tmessage:\n\t\t\t\t\t\"Field 'priority' cannot be set. You need to add the Priority field to your Jira Project's Issue Types.\",\n\t\t\t});\n\t\t}\n\t\tthrow error;\n\t}\n}\n\nexport async function jiraSoftwareCloudApiRequestAllItems(\n\tthis: IHookFunctions | IExecuteFunctions | ILoadOptionsFunctions,\n\tpropertyName: string,\n\tendpoint: string,\n\tmethod: IHttpRequestMethods,\n\tbody: any = {},\n\tquery: IDataObject = {},\n): Promise<any> {\n\tconst returnData: IDataObject[] = [];\n\n\tlet responseData;\n\n\tquery.startAt = 0;\n\tquery.maxResults = 100;\n\tif (method !== 'GET') {\n\t\tbody.startAt = 0;\n\t\tbody.maxResults = 100;\n\t}\n\n\tdo {\n\t\tresponseData = await jiraSoftwareCloudApiRequest.call(this, endpoint, method, body, query);\n\t\treturnData.push.apply(returnData, responseData[propertyName] as IDataObject[]);\n\t\tquery.startAt = (responseData.startAt as number) + (responseData.maxResults as number);\n\t\tif (method !== 'GET') {\n\t\t\tbody.startAt = (responseData.startAt as number) + (responseData.maxResults as number);\n\t\t}\n\t} while (\n\t\t(responseData.startAt as number) + (responseData.maxResults as number) <\n\t\tresponseData.total\n\t);\n\n\treturn returnData;\n}\n\nexport function validateJSON(json: string | undefined): any {\n\tlet result;\n\ttry {\n\t\tresult = JSON.parse(json!);\n\t} catch (exception) {\n\t\tresult = '';\n\t}\n\treturn result;\n}\n\nexport function eventExists(currentEvents: string[], webhookEvents: string[]) {\n\tfor (const currentEvent of currentEvents) {\n\t\tif (!webhookEvents.includes(currentEvent)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\nexport function getWebhookId(webhook: JiraWebhook) {\n\tif (webhook.id) return webhook.id.toString();\n\treturn webhook.self?.split('/').pop();\n}\n\nexport function simplifyIssueOutput(responseData: {\n\tnames: { [key: string]: string };\n\tfields: IDataObject;\n\tid: string;\n\tkey: string;\n\tself: string;\n}) {\n\tconst mappedFields: IDataObject = {\n\t\tid: responseData.id,\n\t\tkey: responseData.key,\n\t\tself: responseData.self,\n\t};\n\t// Sort custom fields last so we map them last\n\tconst customField = /^customfield_\\d+$/;\n\tconst sortedFields: string[] = Object.keys(responseData.fields).sort((a, b) => {\n\t\tif (customField.test(a) && customField.test(b)) {\n\t\t\treturn a > b ? 1 : -1;\n\t\t}\n\t\tif (customField.test(a)) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (customField.test(b)) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn a > b ? 1 : -1;\n\t});\n\tfor (const field of sortedFields) {\n\t\tif (responseData.names[field] in mappedFields) {\n\t\t\tlet newField: string = responseData.names[field];\n\t\t\tlet counter = 0;\n\t\t\twhile (newField in mappedFields) {\n\t\t\t\tcounter++;\n\t\t\t\tnewField = `${responseData.names[field]}_${counter}`;\n\t\t\t}\n\t\t\tmappedFields[newField] = responseData.fields[field];\n\t\t} else {\n\t\t\tmappedFields[responseData.names[field] || field] = responseData.fields[field];\n\t\t}\n\t}\n\n\treturn mappedFields;\n}\n\nexport const allEvents = [\n\t'board_created',\n\t'board_updated',\n\t'board_deleted',\n\t'board_configuration_changed',\n\t'comment_created',\n\t'comment_updated',\n\t'comment_deleted',\n\t'jira:issue_created',\n\t'jira:issue_updated',\n\t'jira:issue_deleted',\n\t'option_voting_changed',\n\t'option_watching_changed',\n\t'option_unassigned_issues_changed',\n\t'option_subtasks_changed',\n\t'option_attachments_changed',\n\t'option_issuelinks_changed',\n\t'option_timetracking_changed',\n\t'project_created',\n\t'project_updated',\n\t'project_deleted',\n\t'sprint_created',\n\t'sprint_deleted',\n\t'sprint_updated',\n\t'sprint_started',\n\t'sprint_closed',\n\t'user_created',\n\t'user_updated',\n\t'user_deleted',\n\t'jira:version_released',\n\t'jira:version_unreleased',\n\t'jira:version_created',\n\t'jira:version_moved',\n\t'jira:version_updated',\n\t'jira:version_deleted',\n\t'issuelink_created',\n\t'issuelink_deleted',\n\t'worklog_created',\n\t'worklog_updated',\n\t'worklog_deleted',\n];\n\nexport function filterSortSearchListItems(items: INodeListSearchItems[], filter?: string) {\n\treturn items\n\t\t.filter(\n\t\t\t(item) =>\n\t\t\t\t!filter ||\n\t\t\t\titem.name.toLowerCase().includes(filter.toLowerCase()) ||\n\t\t\t\titem.value.toString().toLowerCase().includes(filter.toLowerCase()),\n\t\t)\n\t\t.sort((a, b) => {\n\t\t\tif (a.name.toLocaleLowerCase() < b.name.toLocaleLowerCase()) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif (a.name.toLocaleLowerCase() > b.name.toLocaleLowerCase()) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\treturn 0;\n\t\t});\n}\n\nexport async function getUsers(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\tconst jiraVersion = this.getCurrentNodeParameter('jiraVersion') as string;\n\tconst maxResults = 1000;\n\tconst query: IDataObject = { maxResults };\n\tlet endpoint = '/api/2/users/search';\n\n\tif (jiraVersion === 'server' || jiraVersion === 'serverPat') {\n\t\tendpoint = '/api/2/user/search';\n\t\tquery.username = \"'\";\n\t}\n\n\tconst users = [];\n\tlet hasNextPage: boolean;\n\n\tdo {\n\t\tconst usersPage = (await jiraSoftwareCloudApiRequest.call(\n\t\t\tthis,\n\t\t\tendpoint,\n\t\t\t'GET',\n\t\t\t{},\n\t\t\t{ ...query, startAt: users.length },\n\t\t)) as IDataObject[];\n\t\tusers.push(...usersPage);\n\t\thasNextPage = usersPage.length === maxResults;\n\t} while (hasNextPage);\n\n\treturn users\n\t\t.filter((user) => user.active)\n\t\t.map((user) => ({\n\t\t\tname: user.displayName as string,\n\t\t\tvalue: (user.accountId ?? user.name) as string,\n\t\t}))\n\t\t.sort((a: INodePropertyOptions, b: INodePropertyOptions) => {\n\t\t\treturn a.name.toLowerCase() > b.name.toLowerCase() ? 1 : -1;\n\t\t});\n}\n\nexport async function getServerInfo(this: IHookFunctions) {\n\treturn await (jiraSoftwareCloudApiRequest.call(\n\t\tthis,\n\t\t'/api/2/serverInfo',\n\t\t'GET',\n\t) as Promise<JiraServerInfo>);\n}\n\nexport async function getWebhookEndpoint(this: IHookFunctions) {\n\tconst serverInfo = await getServerInfo.call(this).catch(() => null);\n\n\tif (!serverInfo || serverInfo.deploymentType === 'Cloud') return '/webhooks/1.0/webhook';\n\n\t// Assume old version when versionNumbers is not set\n\tconst majorVersion = serverInfo.versionNumbers?.[0] ?? 1;\n\n\treturn majorVersion >= 10 ? '/jira-webhook/1.0/webhooks' : '/webhooks/1.0/webhook';\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA,0BAA6B;AAI7B,eAAsB,4BAErB,UACA,QACA,OAAY,CAAC,GACb,OACA,KACA,SAAsB,CAAC,GACR;AACf,QAAM,cAAc,KAAK,iBAAiB,eAAe,CAAC;AAE1D,MAAI,SAAS;AACb,MAAI;AAEJ,MAAI,gBAAgB,UAAU;AAC7B,cAAU,MAAM,KAAK,eAAe,uBAAuB,GAAG;AAC9D,qBAAiB;AAAA,EAClB,WAAW,gBAAgB,aAAa;AACvC,cAAU,MAAM,KAAK,eAAe,0BAA0B,GAAG;AACjE,qBAAiB;AAAA,EAClB,OAAO;AACN,cAAU,MAAM,KAAK,eAAe,sBAAsB,GAAG;AAC7D,qBAAiB;AAAA,EAClB;AAEA,QAAM,UAA2B;AAAA,IAChC,SAAS;AAAA,MACR,QAAQ;AAAA,MACR,gBAAgB;AAAA,MAChB,qBAAqB;AAAA,IACtB;AAAA,IACA;AAAA,IACA,IAAI;AAAA,IACJ,KAAK,OAAO,GAAG,MAAM,QAAQ,QAAQ;AAAA,IACrC;AAAA,IACA,MAAM;AAAA,EACP;AAEA,MAAI,OAAO,KAAK,MAAM,EAAE,WAAW,GAAG;AACrC,WAAO,OAAO,SAAS,MAAM;AAAA,EAC9B;AAEA,MAAI,OAAO,KAAK,IAAmB,EAAE,WAAW,GAAG;AAClD,WAAO,QAAQ;AAAA,EAChB;AAEA,MAAI,OAAO,KAAK,SAAS,CAAC,CAAC,EAAE,WAAW,GAAG;AAC1C,WAAO,QAAQ;AAAA,EAChB;AACA,MAAI;AACH,WAAO,MAAM,KAAK,QAAQ,0BAA0B,KAAK,MAAM,gBAAgB,OAAO;AAAA,EACvF,SAAS,OAAO;AACf,QAAI,MAAM,aAAa,WAAW,gCAAgC,GAAG;AACpE,YAAM,IAAI,iCAAa,KAAK,QAAQ,GAAG,OAAqB;AAAA,QAC3D,SACC;AAAA,MACF,CAAC;AAAA,IACF;AACA,UAAM;AAAA,EACP;AACD;AAEA,eAAsB,oCAErB,cACA,UACA,QACA,OAAY,CAAC,GACb,QAAqB,CAAC,GACP;AACf,QAAM,aAA4B,CAAC;AAEnC,MAAI;AAEJ,QAAM,UAAU;AAChB,QAAM,aAAa;AACnB,MAAI,WAAW,OAAO;AACrB,SAAK,UAAU;AACf,SAAK,aAAa;AAAA,EACnB;AAEA,KAAG;AACF,mBAAe,MAAM,4BAA4B,KAAK,MAAM,UAAU,QAAQ,MAAM,KAAK;AACzF,eAAW,KAAK,MAAM,YAAY,aAAa,YAAY,CAAkB;AAC7E,UAAM,UAAW,aAAa,UAAsB,aAAa;AACjE,QAAI,WAAW,OAAO;AACrB,WAAK,UAAW,aAAa,UAAsB,aAAa;AAAA,IACjE;AAAA,EACD,SACE,aAAa,UAAsB,aAAa,aACjD,aAAa;AAGd,SAAO;AACR;AAEO,SAAS,aAAa,MAA+B;AAC3D,MAAI;AACJ,MAAI;AACH,aAAS,KAAK,MAAM,IAAK;AAAA,EAC1B,SAAS,WAAW;AACnB,aAAS;AAAA,EACV;AACA,SAAO;AACR;AAEO,SAAS,YAAY,eAAyB,eAAyB;AAC7E,aAAW,gBAAgB,eAAe;AACzC,QAAI,CAAC,cAAc,SAAS,YAAY,GAAG;AAC1C,aAAO;AAAA,IACR;AAAA,EACD;AACA,SAAO;AACR;AAEO,SAAS,aAAa,SAAsB;AAClD,MAAI,QAAQ,GAAI,QAAO,QAAQ,GAAG,SAAS;AAC3C,SAAO,QAAQ,MAAM,MAAM,GAAG,EAAE,IAAI;AACrC;AAEO,SAAS,oBAAoB,cAMjC;AACF,QAAM,eAA4B;AAAA,IACjC,IAAI,aAAa;AAAA,IACjB,KAAK,aAAa;AAAA,IAClB,MAAM,aAAa;AAAA,EACpB;AAEA,QAAM,cAAc;AACpB,QAAM,eAAyB,OAAO,KAAK,aAAa,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM;AAC9E,QAAI,YAAY,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,GAAG;AAC/C,aAAO,IAAI,IAAI,IAAI;AAAA,IACpB;AACA,QAAI,YAAY,KAAK,CAAC,GAAG;AACxB,aAAO;AAAA,IACR;AACA,QAAI,YAAY,KAAK,CAAC,GAAG;AACxB,aAAO;AAAA,IACR;AACA,WAAO,IAAI,IAAI,IAAI;AAAA,EACpB,CAAC;AACD,aAAW,SAAS,cAAc;AACjC,QAAI,aAAa,MAAM,KAAK,KAAK,cAAc;AAC9C,UAAI,WAAmB,aAAa,MAAM,KAAK;AAC/C,UAAI,UAAU;AACd,aAAO,YAAY,cAAc;AAChC;AACA,mBAAW,GAAG,aAAa,MAAM,KAAK,CAAC,IAAI,OAAO;AAAA,MACnD;AACA,mBAAa,QAAQ,IAAI,aAAa,OAAO,KAAK;AAAA,IACnD,OAAO;AACN,mBAAa,aAAa,MAAM,KAAK,KAAK,KAAK,IAAI,aAAa,OAAO,KAAK;AAAA,IAC7E;AAAA,EACD;AAEA,SAAO;AACR;AAEO,MAAM,YAAY;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAEO,SAAS,0BAA0B,OAA+B,QAAiB;AACzF,SAAO,MACL;AAAA,IACA,CAAC,SACA,CAAC,UACD,KAAK,KAAK,YAAY,EAAE,SAAS,OAAO,YAAY,CAAC,KACrD,KAAK,MAAM,SAAS,EAAE,YAAY,EAAE,SAAS,OAAO,YAAY,CAAC;AAAA,EACnE,EACC,KAAK,CAAC,GAAG,MAAM;AACf,QAAI,EAAE,KAAK,kBAAkB,IAAI,EAAE,KAAK,kBAAkB,GAAG;AAC5D,aAAO;AAAA,IACR;AACA,QAAI,EAAE,KAAK,kBAAkB,IAAI,EAAE,KAAK,kBAAkB,GAAG;AAC5D,aAAO;AAAA,IACR;AACA,WAAO;AAAA,EACR,CAAC;AACH;AAEA,eAAsB,WAAuE;AAC5F,QAAM,cAAc,KAAK,wBAAwB,aAAa;AAC9D,QAAM,aAAa;AACnB,QAAM,QAAqB,EAAE,WAAW;AACxC,MAAI,WAAW;AAEf,MAAI,gBAAgB,YAAY,gBAAgB,aAAa;AAC5D,eAAW;AACX,UAAM,WAAW;AAAA,EAClB;AAEA,QAAM,QAAQ,CAAC;AACf,MAAI;AAEJ,KAAG;AACF,UAAM,YAAa,MAAM,4BAA4B;AAAA,MACpD;AAAA,MACA;AAAA,MACA;AAAA,MACA,CAAC;AAAA,MACD,EAAE,GAAG,OAAO,SAAS,MAAM,OAAO;AAAA,IACnC;AACA,UAAM,KAAK,GAAG,SAAS;AACvB,kBAAc,UAAU,WAAW;AAAA,EACpC,SAAS;AAET,SAAO,MACL,OAAO,CAAC,SAAS,KAAK,MAAM,EAC5B,IAAI,CAAC,UAAU;AAAA,IACf,MAAM,KAAK;AAAA,IACX,OAAQ,KAAK,aAAa,KAAK;AAAA,EAChC,EAAE,EACD,KAAK,CAAC,GAAyB,MAA4B;AAC3D,WAAO,EAAE,KAAK,YAAY,IAAI,EAAE,KAAK,YAAY,IAAI,IAAI;AAAA,EAC1D,CAAC;AACH;AAEA,eAAsB,gBAAoC;AACzD,SAAO,MAAO,4BAA4B;AAAA,IACzC;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;AAEA,eAAsB,qBAAyC;AAC9D,QAAM,aAAa,MAAM,cAAc,KAAK,IAAI,EAAE,MAAM,MAAM,IAAI;AAElE,MAAI,CAAC,cAAc,WAAW,mBAAmB,QAAS,QAAO;AAGjE,QAAM,eAAe,WAAW,iBAAiB,CAAC,KAAK;AAEvD,SAAO,gBAAgB,KAAK,+BAA+B;AAC5D;","names":[]}
@@ -510,7 +510,7 @@ class Jira {
510
510
  this,
511
511
  "/api/2/issuetype",
512
512
  "GET",
513
- body,
513
+ {},
514
514
  qs
515
515
  );
516
516
  const subtaskIssues = [];
@@ -623,8 +623,7 @@ class Jira {
623
623
  const issueTypes = await import_GenericFunctions.jiraSoftwareCloudApiRequest.call(
624
624
  this,
625
625
  "/api/2/issuetype",
626
- "GET",
627
- body
626
+ "GET"
628
627
  );
629
628
  const subtaskIssues = [];
630
629
  for (const issueType of issueTypes) {
@@ -1153,7 +1152,6 @@ class Jira {
1153
1152
  const issueKey = this.getNodeParameter("issueKey", i);
1154
1153
  const returnAll = this.getNodeParameter("returnAll", i);
1155
1154
  const options = this.getNodeParameter("options", i);
1156
- const body = {};
1157
1155
  Object.assign(qs, options);
1158
1156
  if (returnAll) {
1159
1157
  responseData = await import_GenericFunctions.jiraSoftwareCloudApiRequestAllItems.call(
@@ -1161,7 +1159,7 @@ class Jira {
1161
1159
  "comments",
1162
1160
  `/api/${apiVersion}/issue/${issueKey}/comment`,
1163
1161
  "GET",
1164
- body,
1162
+ {},
1165
1163
  qs
1166
1164
  );
1167
1165
  } else {
@@ -1171,7 +1169,7 @@ class Jira {
1171
1169
  this,
1172
1170
  `/api/${apiVersion}/issue/${issueKey}/comment`,
1173
1171
  "GET",
1174
- body,
1172
+ {},
1175
1173
  qs
1176
1174
  );
1177
1175
  responseData = responseData.comments;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../nodes/Jira/Jira.node.ts"],"sourcesContent":["import mergeWith from 'lodash/mergeWith';\nimport type {\n\tIDataObject,\n\tIExecuteFunctions,\n\tILoadOptionsFunctions,\n\tINodeExecutionData,\n\tINodeListSearchItems,\n\tINodeListSearchResult,\n\tINodePropertyOptions,\n\tINodeType,\n\tINodeTypeDescription,\n} from 'n8n-workflow';\nimport { BINARY_ENCODING, NodeConnectionTypes, NodeOperationError } from 'n8n-workflow';\nimport type { Readable } from 'stream';\n\nimport {\n\tfilterSortSearchListItems,\n\tgetUsers,\n\tjiraSoftwareCloudApiRequest,\n\tjiraSoftwareCloudApiRequestAllItems,\n\tsimplifyIssueOutput,\n\tvalidateJSON,\n} from './GenericFunctions';\nimport { issueAttachmentFields, issueAttachmentOperations } from './IssueAttachmentDescription';\nimport { issueCommentFields, issueCommentOperations } from './IssueCommentDescription';\nimport { issueFields, issueOperations } from './IssueDescription';\nimport type {\n\tIFields,\n\tIIssue,\n\tINotificationRecipients,\n\tINotify,\n\tNotificationRecipientsRestrictions,\n} from './IssueInterface';\nimport { userFields, userOperations } from './UserDescription';\n\nexport class Jira implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Jira Software',\n\t\tname: 'jira',\n\t\ticon: 'file:jira.svg',\n\t\tgroup: ['output'],\n\t\tversion: 1,\n\t\tsubtitle: '={{$parameter[\"operation\"] + \": \" + $parameter[\"resource\"]}}',\n\t\tdescription: 'Consume Jira Software API',\n\t\tdefaults: {\n\t\t\tname: 'Jira Software',\n\t\t},\n\t\tinputs: [NodeConnectionTypes.Main],\n\t\toutputs: [NodeConnectionTypes.Main],\n\t\tusableAsTool: true,\n\t\tcredentials: [\n\t\t\t{\n\t\t\t\tname: 'jiraSoftwareCloudApi',\n\t\t\t\trequired: true,\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tjiraVersion: ['cloud'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'jiraSoftwareServerApi',\n\t\t\t\trequired: true,\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tjiraVersion: ['server'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'jiraSoftwareServerPatApi',\n\t\t\t\trequired: true,\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tjiraVersion: ['serverPat'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\tproperties: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Jira Version',\n\t\t\t\tname: 'jiraVersion',\n\t\t\t\ttype: 'options',\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Cloud',\n\t\t\t\t\t\tvalue: 'cloud',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Server (Self Hosted)',\n\t\t\t\t\t\tvalue: 'server',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Server Pat (Self Hosted)',\n\t\t\t\t\t\tvalue: 'serverPat',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'cloud',\n\t\t\t},\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: 'Issue',\n\t\t\t\t\t\tvalue: 'issue',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Creates an issue or, where the option to create subtasks is enabled in Jira, a subtask',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Issue Attachment',\n\t\t\t\t\t\tvalue: 'issueAttachment',\n\t\t\t\t\t\tdescription: 'Add, remove, and get an attachment from an issue',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Issue Comment',\n\t\t\t\t\t\tvalue: 'issueComment',\n\t\t\t\t\t\tdescription: 'Get, create, update, and delete a comment from an issue',\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\tdescription: 'Get, create and delete a user',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'issue',\n\t\t\t},\n\t\t\t...issueOperations,\n\t\t\t...issueFields,\n\t\t\t...issueAttachmentOperations,\n\t\t\t...issueAttachmentFields,\n\t\t\t...issueCommentOperations,\n\t\t\t...issueCommentFields,\n\t\t\t...userOperations,\n\t\t\t...userFields,\n\t\t],\n\t};\n\n\tmethods = {\n\t\tlistSearch: {\n\t\t\t// Get all the projects to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getProjects(\n\t\t\t\tthis: ILoadOptionsFunctions,\n\t\t\t\tfilter?: string,\n\t\t\t): Promise<INodeListSearchResult> {\n\t\t\t\tconst returnData: INodeListSearchItems[] = [];\n\t\t\t\tconst jiraVersion = this.getCurrentNodeParameter('jiraVersion') as string;\n\t\t\t\tlet endpoint = '';\n\t\t\t\tlet projects;\n\n\t\t\t\tif (jiraVersion === 'server' || jiraVersion === 'serverPat') {\n\t\t\t\t\tendpoint = '/api/2/project';\n\t\t\t\t\tprojects = await jiraSoftwareCloudApiRequest.call(this, endpoint, 'GET');\n\t\t\t\t} else {\n\t\t\t\t\tendpoint = '/api/2/project/search';\n\t\t\t\t\tprojects = await jiraSoftwareCloudApiRequestAllItems.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t'values',\n\t\t\t\t\t\tendpoint,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (projects.values && Array.isArray(projects.values)) {\n\t\t\t\t\tprojects = projects.values;\n\t\t\t\t}\n\t\t\t\tfor (const project of projects) {\n\t\t\t\t\tconst projectName = project.name;\n\t\t\t\t\tconst projectId = project.id;\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: projectName,\n\t\t\t\t\t\tvalue: projectId,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn { results: filterSortSearchListItems(returnData, filter) };\n\t\t\t},\n\n\t\t\t// Get all the issue types to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getIssueTypes(this: ILoadOptionsFunctions): Promise<INodeListSearchResult> {\n\t\t\t\tconst projectId = this.getCurrentNodeParameter('project', { extractValue: true });\n\t\t\t\tconst returnData: INodeListSearchItems[] = [];\n\t\t\t\tconst { issueTypes } = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\tthis,\n\t\t\t\t\t`/api/2/project/${projectId}`,\n\t\t\t\t\t'GET',\n\t\t\t\t);\n\n\t\t\t\tif (!issueTypes) return { results: [] };\n\n\t\t\t\tfor (const issueType of issueTypes) {\n\t\t\t\t\tconst issueTypeName = issueType.name;\n\t\t\t\t\tconst issueTypeId = issueType.id;\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: issueTypeName,\n\t\t\t\t\t\tvalue: issueTypeId,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturnData.sort((a, b) => {\n\t\t\t\t\tif (a.name < b.name) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (a.name > b.name) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\t\t\t\treturn { results: returnData };\n\t\t\t},\n\n\t\t\t// Get all the users to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getUsers(this: ILoadOptionsFunctions, filter?: string): Promise<INodeListSearchResult> {\n\t\t\t\tconst users = await getUsers.call(this);\n\n\t\t\t\treturn { results: filterSortSearchListItems(users, filter) };\n\t\t\t},\n\n\t\t\t// Get all the priorities to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getPriorities(this: ILoadOptionsFunctions): Promise<INodeListSearchResult> {\n\t\t\t\tconst returnData: INodeListSearchItems[] = [];\n\n\t\t\t\tconst priorities = await jiraSoftwareCloudApiRequest.call(this, '/api/2/priority', 'GET');\n\n\t\t\t\tfor (const priority of priorities) {\n\t\t\t\t\tconst priorityName = priority.name;\n\t\t\t\t\tconst priorityId = priority.id;\n\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: priorityName,\n\t\t\t\t\t\tvalue: priorityId,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturnData.sort((a, b) => {\n\t\t\t\t\tif (a.name < b.name) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (a.name > b.name) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\n\t\t\t\treturn { results: returnData };\n\t\t\t},\n\n\t\t\t// Get all the transitions (status) to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getTransitions(this: ILoadOptionsFunctions): Promise<INodeListSearchResult> {\n\t\t\t\tconst returnData: INodeListSearchItems[] = [];\n\n\t\t\t\tconst issueKey = this.getCurrentNodeParameter('issueKey');\n\t\t\t\tconst transitions = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\tthis,\n\t\t\t\t\t`/api/2/issue/${issueKey}/transitions`,\n\t\t\t\t\t'GET',\n\t\t\t\t);\n\n\t\t\t\tfor (const transition of transitions.transitions) {\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: transition.name,\n\t\t\t\t\t\tvalue: transition.id,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturnData.sort((a, b) => {\n\t\t\t\t\tif (a.name < b.name) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (a.name > b.name) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\n\t\t\t\treturn { results: returnData };\n\t\t\t},\n\n\t\t\t// Get all the custom fields to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getCustomFields(this: ILoadOptionsFunctions): Promise<INodeListSearchResult> {\n\t\t\t\tconst returnData: INodeListSearchItems[] = [];\n\t\t\t\tconst operation = this.getCurrentNodeParameter('operation') as string;\n\t\t\t\tconst jiraVersion = this.getNodeParameter('jiraVersion', 0) as string;\n\n\t\t\t\tlet projectId: string;\n\t\t\t\tlet issueTypeId: string;\n\t\t\t\tlet issueId: string = ''; // /editmeta endpoint requires issueId\n\n\t\t\t\tif (operation === 'create') {\n\t\t\t\t\tprojectId = this.getCurrentNodeParameter('project', { extractValue: true }) as string;\n\t\t\t\t\tissueTypeId = this.getCurrentNodeParameter('issueType', { extractValue: true }) as string;\n\t\t\t\t} else {\n\t\t\t\t\tconst issueKey = this.getCurrentNodeParameter('issueKey') as string;\n\t\t\t\t\tconst res = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/2/issue/${issueKey}`,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\t{},\n\t\t\t\t\t);\n\t\t\t\t\tprojectId = res.fields.project.id;\n\t\t\t\t\tissueTypeId = res.fields.issuetype.id;\n\t\t\t\t\tissueId = res.id;\n\t\t\t\t}\n\n\t\t\t\tif (jiraVersion === 'server' && operation === 'update' && issueId) {\n\t\t\t\t\t// https://developer.atlassian.com/server/jira/platform/jira-rest-api-example-edit-issues-6291632/?utm_source=chatgpt.com\n\t\t\t\t\tconst { fields } = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/2/issue/${issueId}/editmeta`,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t);\n\n\t\t\t\t\tfor (const field of Object.keys(fields || {})) {\n\t\t\t\t\t\tif (field.startsWith('customfield_')) {\n\t\t\t\t\t\t\treturnData.push({\n\t\t\t\t\t\t\t\tname: fields[field].name,\n\t\t\t\t\t\t\t\tvalue: field,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn { results: returnData };\n\t\t\t\t}\n\n\t\t\t\tconst res = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\tthis,\n\t\t\t\t\t`/api/2/issue/createmeta?projectIds=${projectId}&issueTypeIds=${issueTypeId}&expand=projects.issuetypes.fields`,\n\t\t\t\t\t'GET',\n\t\t\t\t);\n\n\t\t\t\tconst fields = res.projects\n\t\t\t\t\t.find((o: any) => o.id === projectId)\n\t\t\t\t\t.issuetypes.find((o: any) => o.id === issueTypeId).fields;\n\n\t\t\t\tfor (const key of Object.keys(fields as IDataObject)) {\n\t\t\t\t\tconst field = fields[key];\n\t\t\t\t\tif (field.schema && Object.keys(field.schema as IDataObject).includes('customId')) {\n\t\t\t\t\t\treturnData.push({\n\t\t\t\t\t\t\tname: field.name,\n\t\t\t\t\t\t\tvalue: field.key || field.fieldId,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn { results: returnData };\n\t\t\t},\n\t\t},\n\t\tloadOptions: {\n\t\t\t// Get all the labels to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getLabels(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\tconst returnData: INodePropertyOptions[] = [];\n\n\t\t\t\tconst labels = await jiraSoftwareCloudApiRequest.call(this, '/api/2/label', 'GET');\n\n\t\t\t\tfor (const label of labels.values) {\n\t\t\t\t\tconst labelName = label;\n\t\t\t\t\tconst labelId = label;\n\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: labelName,\n\t\t\t\t\t\tvalue: labelId,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturnData.sort((a, b) => {\n\t\t\t\t\tif (a.name < b.name) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (a.name > b.name) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\n\t\t\t\treturn returnData;\n\t\t\t},\n\n\t\t\t// Get all the users to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getUsers(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\treturn await getUsers.call(this);\n\t\t\t},\n\n\t\t\t// Get all the groups to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getGroups(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\tconst returnData: INodePropertyOptions[] = [];\n\n\t\t\t\tconst groups = await jiraSoftwareCloudApiRequest.call(this, '/api/2/groups/picker', 'GET');\n\n\t\t\t\tfor (const group of groups.groups) {\n\t\t\t\t\tconst groupName = group.name;\n\t\t\t\t\tconst groupId = group.name;\n\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: groupName,\n\t\t\t\t\t\tvalue: groupId,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturnData.sort((a, b) => {\n\t\t\t\t\tif (a.name < b.name) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (a.name > b.name) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\n\t\t\t\treturn returnData;\n\t\t\t},\n\n\t\t\t// Get all the components to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getProjectComponents(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\tconst returnData: INodePropertyOptions[] = [];\n\n\t\t\t\tconst project = this.getCurrentNodeParameter('project', { extractValue: true });\n\t\t\t\tconst { values: components } = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\tthis,\n\t\t\t\t\t`/api/2/project/${project}/component`,\n\t\t\t\t\t'GET',\n\t\t\t\t);\n\n\t\t\t\tfor (const component of components) {\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: component.name,\n\t\t\t\t\t\tvalue: component.id,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturnData.sort((a, b) => {\n\t\t\t\t\tif (a.name < b.name) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (a.name > b.name) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\n\t\t\t\treturn returnData;\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: INodeExecutionData[] = [];\n\t\tconst length = items.length;\n\t\tlet responseData;\n\t\tconst qs: IDataObject = {};\n\n\t\tconst resource = this.getNodeParameter('resource', 0);\n\t\tconst operation = this.getNodeParameter('operation', 0);\n\t\tconst jiraVersion = this.getNodeParameter('jiraVersion', 0) as string;\n\n\t\tif (resource === 'issue') {\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-post\n\t\t\tif (operation === 'create') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst summary = this.getNodeParameter('summary', i) as string;\n\t\t\t\t\tconst projectId = this.getNodeParameter('project', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t}) as string;\n\t\t\t\t\tconst issueTypeId = this.getNodeParameter('issueType', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t}) as string;\n\t\t\t\t\tconst additionalFields = this.getNodeParameter('additionalFields', i);\n\n\t\t\t\t\tconst assignee = this.getNodeParameter('additionalFields.assignee', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t});\n\t\t\t\t\tif (assignee) additionalFields.assignee = assignee;\n\n\t\t\t\t\tconst reporter = this.getNodeParameter('additionalFields.reporter', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t});\n\t\t\t\t\tif (reporter) additionalFields.reporter = reporter;\n\n\t\t\t\t\tconst priority = this.getNodeParameter('additionalFields.priority', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t});\n\t\t\t\t\tif (priority) additionalFields.priority = priority;\n\n\t\t\t\t\tconst body: IIssue = {};\n\t\t\t\t\tconst fields: IFields = {\n\t\t\t\t\t\tsummary,\n\t\t\t\t\t\tproject: {\n\t\t\t\t\t\t\tid: projectId,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tissuetype: {\n\t\t\t\t\t\t\tid: issueTypeId,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t\tif (additionalFields.labels) {\n\t\t\t\t\t\tfields.labels = additionalFields.labels as string[];\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.serverLabels) {\n\t\t\t\t\t\tfields.labels = additionalFields.serverLabels as string[];\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.priority) {\n\t\t\t\t\t\tfields.priority = {\n\t\t\t\t\t\t\tid: additionalFields.priority as string,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.assignee) {\n\t\t\t\t\t\tif (jiraVersion === 'server' || jiraVersion === 'serverPat') {\n\t\t\t\t\t\t\tfields.assignee = {\n\t\t\t\t\t\t\t\tname: additionalFields.assignee as string,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfields.assignee = {\n\t\t\t\t\t\t\t\tid: additionalFields.assignee as string,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.reporter) {\n\t\t\t\t\t\tif (jiraVersion === 'server' || jiraVersion === 'serverPat') {\n\t\t\t\t\t\t\tfields.reporter = {\n\t\t\t\t\t\t\t\tname: additionalFields.reporter as string,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfields.reporter = {\n\t\t\t\t\t\t\t\tid: additionalFields.reporter as string,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.description) {\n\t\t\t\t\t\tfields.description = additionalFields.description as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.updateHistory) {\n\t\t\t\t\t\tqs.updateHistory = additionalFields.updateHistory as boolean;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.componentIds) {\n\t\t\t\t\t\tfields.components = (additionalFields.componentIds as string[]).map((id) => ({ id }));\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.customFieldsUi) {\n\t\t\t\t\t\tconst customFields = (additionalFields.customFieldsUi as IDataObject)\n\t\t\t\t\t\t\t.customFieldsValues as IDataObject[];\n\t\t\t\t\t\tif (customFields) {\n\t\t\t\t\t\t\t// resolve resource locator fieldId value\n\t\t\t\t\t\t\tcustomFields.forEach((cf) => {\n\t\t\t\t\t\t\t\tif (typeof cf.fieldId !== 'string') {\n\t\t\t\t\t\t\t\t\tcf.fieldId = ((cf.fieldId as IDataObject).value as string).trim();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tconst data = customFields.reduce(\n\t\t\t\t\t\t\t\t(obj, value) => Object.assign(obj, { [`${value.fieldId}`]: value.fieldValue }),\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tObject.assign(fields, data);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst issueTypes = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t'/api/2/issuetype',\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\tbody,\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\t\t\t\t\tconst subtaskIssues = [];\n\t\t\t\t\tfor (const issueType of issueTypes) {\n\t\t\t\t\t\tif (issueType.subtask) {\n\t\t\t\t\t\t\tsubtaskIssues.push(issueType.id);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!additionalFields.parentIssueKey && subtaskIssues.includes(issueTypeId)) {\n\t\t\t\t\t\tthrow new NodeOperationError(\n\t\t\t\t\t\t\tthis.getNode(),\n\t\t\t\t\t\t\t'You must define a Parent Issue Key when Issue type is sub-task',\n\t\t\t\t\t\t\t{ itemIndex: i },\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if (additionalFields.parentIssueKey && subtaskIssues.includes(issueTypeId)) {\n\t\t\t\t\t\tfields.parent = {\n\t\t\t\t\t\t\tkey: (additionalFields.parentIssueKey as string).toUpperCase(),\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tbody.fields = fields;\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(this, '/api/2/issue', 'POST', body);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-issueIdOrKey-put\n\t\t\tif (operation === 'update') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst updateFields = this.getNodeParameter('updateFields', i);\n\n\t\t\t\t\tconst assignee = this.getNodeParameter('updateFields.assignee', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t});\n\t\t\t\t\tif (assignee) updateFields.assignee = assignee;\n\n\t\t\t\t\tconst reporter = this.getNodeParameter('updateFields.reporter', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t});\n\t\t\t\t\tif (reporter) updateFields.reporter = reporter;\n\n\t\t\t\t\tconst priority = this.getNodeParameter('updateFields.priority', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t});\n\t\t\t\t\tif (priority) updateFields.priority = priority;\n\n\t\t\t\t\tconst statusId = this.getNodeParameter('updateFields.statusId', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t});\n\t\t\t\t\tif (statusId) updateFields.statusId = statusId;\n\n\t\t\t\t\tconst body: IIssue = {};\n\t\t\t\t\tconst fields: IFields = {};\n\t\t\t\t\tif (updateFields.summary) {\n\t\t\t\t\t\tfields.summary = updateFields.summary as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (updateFields.issueType) {\n\t\t\t\t\t\tfields.issuetype = {\n\t\t\t\t\t\t\tid: updateFields.issueType as string,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tif (updateFields.labels) {\n\t\t\t\t\t\tfields.labels = updateFields.labels as string[];\n\t\t\t\t\t}\n\t\t\t\t\tif (updateFields.serverLabels) {\n\t\t\t\t\t\tfields.labels = updateFields.serverLabels as string[];\n\t\t\t\t\t}\n\t\t\t\t\tif (updateFields.priority) {\n\t\t\t\t\t\tfields.priority = {\n\t\t\t\t\t\t\tid: updateFields.priority as string,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tif (updateFields.assignee) {\n\t\t\t\t\t\tif (jiraVersion === 'server' || jiraVersion === 'serverPat') {\n\t\t\t\t\t\t\tfields.assignee = {\n\t\t\t\t\t\t\t\tname: updateFields.assignee as string,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfields.assignee = {\n\t\t\t\t\t\t\t\tid: updateFields.assignee as string,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (updateFields.reporter) {\n\t\t\t\t\t\tif (jiraVersion === 'server' || jiraVersion === 'serverPat') {\n\t\t\t\t\t\t\tfields.reporter = {\n\t\t\t\t\t\t\t\tname: updateFields.reporter as string,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfields.reporter = {\n\t\t\t\t\t\t\t\tid: updateFields.reporter as string,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (updateFields.description) {\n\t\t\t\t\t\tfields.description = updateFields.description as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (updateFields.customFieldsUi) {\n\t\t\t\t\t\tconst customFields = (updateFields.customFieldsUi as IDataObject)\n\t\t\t\t\t\t\t.customFieldsValues as IDataObject[];\n\t\t\t\t\t\tif (customFields) {\n\t\t\t\t\t\t\t// resolve resource locator fieldId value\n\t\t\t\t\t\t\tcustomFields.forEach((cf) => {\n\t\t\t\t\t\t\t\tif (typeof cf.fieldId !== 'string') {\n\t\t\t\t\t\t\t\t\tcf.fieldId = ((cf.fieldId as IDataObject).value as string).trim();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tconst data = customFields.reduce(\n\t\t\t\t\t\t\t\t(obj, value) => Object.assign(obj, { [`${value.fieldId}`]: value.fieldValue }),\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tObject.assign(fields, data);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst issueTypes = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t'/api/2/issuetype',\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\tbody,\n\t\t\t\t\t);\n\t\t\t\t\tconst subtaskIssues = [];\n\t\t\t\t\tfor (const issueType of issueTypes) {\n\t\t\t\t\t\tif (issueType.subtask) {\n\t\t\t\t\t\t\tsubtaskIssues.push(issueType.id);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!updateFields.parentIssueKey && subtaskIssues.includes(updateFields.issueType)) {\n\t\t\t\t\t\tthrow new NodeOperationError(\n\t\t\t\t\t\t\tthis.getNode(),\n\t\t\t\t\t\t\t'You must define a Parent Issue Key when Issue type is sub-task',\n\t\t\t\t\t\t\t{ itemIndex: i },\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if (\n\t\t\t\t\t\tupdateFields.parentIssueKey &&\n\t\t\t\t\t\tsubtaskIssues.includes(updateFields.issueType)\n\t\t\t\t\t) {\n\t\t\t\t\t\tfields.parent = {\n\t\t\t\t\t\t\tkey: (updateFields.parentIssueKey as string).toUpperCase(),\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tbody.fields = fields;\n\n\t\t\t\t\tif (updateFields.statusId) {\n\t\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t`/api/2/issue/${issueKey}/transitions`,\n\t\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t\t{ transition: { id: updateFields.statusId } },\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/2/issue/${issueKey}`,\n\t\t\t\t\t\t'PUT',\n\t\t\t\t\t\tbody,\n\t\t\t\t\t);\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray({ success: true }),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-issueIdOrKey-get\n\t\t\tif (operation === 'get') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst simplifyOutput = this.getNodeParameter('simplifyOutput', i) as boolean;\n\t\t\t\t\tconst additionalFields = this.getNodeParameter('additionalFields', i);\n\t\t\t\t\tif (additionalFields.fields) {\n\t\t\t\t\t\tqs.fields = additionalFields.fields as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.fieldsByKey) {\n\t\t\t\t\t\tqs.fieldsByKey = additionalFields.fieldsByKey as boolean;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.expand) {\n\t\t\t\t\t\tqs.expand = additionalFields.expand as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (simplifyOutput) {\n\t\t\t\t\t\tqs.expand = `${qs.expand || ''},names`;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.properties) {\n\t\t\t\t\t\tqs.properties = additionalFields.properties as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.updateHistory) {\n\t\t\t\t\t\tqs.updateHistory = additionalFields.updateHistory as string;\n\t\t\t\t\t}\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/2/issue/${issueKey}`,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tif (simplifyOutput) {\n\t\t\t\t\t\t// Use rendered fields if requested and available\n\t\t\t\t\t\tqs.expand = qs.expand || '';\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t(qs.expand as string).toLowerCase().indexOf('renderedfields') !== -1 &&\n\t\t\t\t\t\t\tresponseData.renderedFields &&\n\t\t\t\t\t\t\tObject.keys(responseData.renderedFields as IDataObject[]).length\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tresponseData.fields = mergeWith(\n\t\t\t\t\t\t\t\tresponseData.fields,\n\t\t\t\t\t\t\t\tresponseData.renderedFields,\n\t\t\t\t\t\t\t\t(a, b) => (b === null ? a : b),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\t\tthis.helpers.returnJsonArray(simplifyIssueOutput(responseData)),\n\t\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-search-post\n\t\t\tif (operation === 'getAll') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\tconst body: IDataObject = {};\n\t\t\t\t\tif (options.fields) {\n\t\t\t\t\t\tbody.fields = (options.fields as string).split(',');\n\t\t\t\t\t}\n\t\t\t\t\tif (options.jql) {\n\t\t\t\t\t\tbody.jql = options.jql as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (options.expand) {\n\t\t\t\t\t\tif (typeof options.expand === 'string') {\n\t\t\t\t\t\t\tbody.expand = options.expand.split(',');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbody.expand = options.expand;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (returnAll) {\n\t\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequestAllItems.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'issues',\n\t\t\t\t\t\t\t'/api/2/search',\n\t\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst limit = this.getNodeParameter('limit', i);\n\t\t\t\t\t\tbody.maxResults = limit;\n\t\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'/api/2/search',\n\t\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tresponseData = responseData.issues;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-issueIdOrKey-changelog-get\n\t\t\tif (operation === 'changelog') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\tif (returnAll) {\n\t\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequestAllItems.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'values',\n\t\t\t\t\t\t\t`/api/2/issue/${issueKey}/changelog`,\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tqs.maxResults = this.getNodeParameter('limit', i);\n\t\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t`/api/2/issue/${issueKey}/changelog`,\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tresponseData = responseData.values;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-issueIdOrKey-notify-post\n\t\t\tif (operation === 'notify') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst additionalFields = this.getNodeParameter('additionalFields', i);\n\t\t\t\t\tconst jsonActive = this.getNodeParameter('jsonParameters', 0);\n\t\t\t\t\tconst body: INotify = {};\n\t\t\t\t\tif (additionalFields.textBody) {\n\t\t\t\t\t\tbody.textBody = additionalFields.textBody as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.htmlBody) {\n\t\t\t\t\t\tbody.htmlBody = additionalFields.htmlBody as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (!jsonActive) {\n\t\t\t\t\t\tconst notificationRecipientsValues = (\n\t\t\t\t\t\t\tthis.getNodeParameter('notificationRecipientsUi', i) as IDataObject\n\t\t\t\t\t\t).notificationRecipientsValues as IDataObject;\n\t\t\t\t\t\tconst notificationRecipients: INotificationRecipients = {};\n\t\t\t\t\t\tif (notificationRecipientsValues) {\n\t\t\t\t\t\t\tif (notificationRecipientsValues.reporter) {\n\t\t\t\t\t\t\t\tnotificationRecipients.reporter = notificationRecipientsValues.reporter as boolean;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (notificationRecipientsValues.assignee) {\n\t\t\t\t\t\t\t\tnotificationRecipients.assignee = notificationRecipientsValues.assignee as boolean;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (notificationRecipientsValues.assignee) {\n\t\t\t\t\t\t\t\tnotificationRecipients.watchers = notificationRecipientsValues.watchers as boolean;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (notificationRecipientsValues.voters) {\n\t\t\t\t\t\t\t\tnotificationRecipients.watchers = notificationRecipientsValues.voters as boolean;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (((notificationRecipientsValues.users as IDataObject[]) || []).length > 0) {\n\t\t\t\t\t\t\t\tnotificationRecipients.users = (\n\t\t\t\t\t\t\t\t\tnotificationRecipientsValues.users as IDataObject[]\n\t\t\t\t\t\t\t\t).map((user) => {\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\taccountId: user,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (((notificationRecipientsValues.groups as IDataObject[]) || []).length > 0) {\n\t\t\t\t\t\t\t\tnotificationRecipients.groups = (\n\t\t\t\t\t\t\t\t\tnotificationRecipientsValues.groups as IDataObject[]\n\t\t\t\t\t\t\t\t).map((group) => {\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\tname: group,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbody.to = notificationRecipients;\n\t\t\t\t\t\tconst notificationRecipientsRestrictionsValues = (\n\t\t\t\t\t\t\tthis.getNodeParameter('notificationRecipientsRestrictionsUi', i) as IDataObject\n\t\t\t\t\t\t).notificationRecipientsRestrictionsValues as IDataObject;\n\t\t\t\t\t\tconst notificationRecipientsRestrictions: NotificationRecipientsRestrictions = {};\n\t\t\t\t\t\tif (notificationRecipientsRestrictionsValues) {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t((notificationRecipientsRestrictionsValues.groups as IDataObject[]) || []).length >\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tnotificationRecipientsRestrictions.groups = (\n\t\t\t\t\t\t\t\t\tnotificationRecipientsRestrictionsValues.groups as IDataObject[]\n\t\t\t\t\t\t\t\t).map((group) => {\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\tname: group,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbody.restrict = notificationRecipientsRestrictions;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst notificationRecipientsJson = validateJSON(\n\t\t\t\t\t\t\tthis.getNodeParameter('notificationRecipientsJson', i) as string,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (notificationRecipientsJson) {\n\t\t\t\t\t\t\tbody.to = notificationRecipientsJson;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst notificationRecipientsRestrictionsJson = validateJSON(\n\t\t\t\t\t\t\tthis.getNodeParameter('notificationRecipientsRestrictionsJson', i) as string,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (notificationRecipientsRestrictionsJson) {\n\t\t\t\t\t\t\tbody.restrict = notificationRecipientsRestrictionsJson;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/2/issue/${issueKey}/notify`,\n\t\t\t\t\t\t'POST',\n\t\t\t\t\t\tbody,\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray({ success: true }), //endpoint returns no content\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-issueIdOrKey-transitions-get\n\t\t\tif (operation === 'transitions') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst additionalFields = this.getNodeParameter('additionalFields', i);\n\t\t\t\t\tif (additionalFields.transitionId) {\n\t\t\t\t\t\tqs.transitionId = additionalFields.transitionId as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.expand) {\n\t\t\t\t\t\tqs.expand = additionalFields.expand as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.skipRemoteOnlyCondition) {\n\t\t\t\t\t\tqs.skipRemoteOnlyCondition = additionalFields.skipRemoteOnlyCondition as boolean;\n\t\t\t\t\t}\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/2/issue/${issueKey}/transitions`,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\t\t\t\t\tresponseData = responseData.transitions;\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-issueIdOrKey-delete\n\t\t\tif (operation === 'delete') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst deleteSubtasks = this.getNodeParameter('deleteSubtasks', i) as boolean;\n\t\t\t\t\tqs.deleteSubtasks = deleteSubtasks;\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/2/issue/${issueKey}`,\n\t\t\t\t\t\t'DELETE',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray({ success: true }),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (resource === 'issueAttachment') {\n\t\t\tconst apiVersion =\n\t\t\t\tjiraVersion === 'server' || jiraVersion === 'serverPat' ? '2' : ('3' as string);\n\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-attachments/#api-rest-api-3-issue-issueidorkey-attachments-post\n\t\t\tif (operation === 'add') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst binaryPropertyName = this.getNodeParameter('binaryPropertyName', i);\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst binaryData = this.helpers.assertBinaryData(i, binaryPropertyName);\n\n\t\t\t\t\tlet uploadData: Buffer | Readable;\n\t\t\t\t\tif (binaryData.id) {\n\t\t\t\t\t\tuploadData = await this.helpers.getBinaryStream(binaryData.id);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tuploadData = Buffer.from(binaryData.data, BINARY_ENCODING);\n\t\t\t\t\t}\n\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/issue/${issueKey}/attachments`,\n\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tformData: {\n\t\t\t\t\t\t\t\tfile: {\n\t\t\t\t\t\t\t\t\tvalue: uploadData,\n\t\t\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\t\t\tfilename: binaryData.fileName,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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 executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-attachments/#api-rest-api-3-attachment-id-delete\n\t\t\tif (operation === 'remove') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst attachmentId = this.getNodeParameter('attachmentId', i) as string;\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/attachment/${attachmentId}`,\n\t\t\t\t\t\t'DELETE',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray({ success: true }),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-attachments/#api-rest-api-3-attachment-id-get\n\t\t\tif (operation === 'get') {\n\t\t\t\tconst download = this.getNodeParameter('download', 0);\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst attachmentId = this.getNodeParameter('attachmentId', i) as string;\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/attachment/${attachmentId}`,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t\tif (download) {\n\t\t\t\t\tconst binaryPropertyName = this.getNodeParameter('binaryProperty', 0);\n\t\t\t\t\tfor (const [index, attachment] of returnData.entries()) {\n\t\t\t\t\t\treturnData[index].binary = {};\n\n\t\t\t\t\t\tconst buffer = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\tattachment?.json.content as string,\n\t\t\t\t\t\t\t{ json: false, encoding: null, useStream: true },\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturnData[index].binary[binaryPropertyName] = await this.helpers.prepareBinaryData(\n\t\t\t\t\t\t\tbuffer as Buffer,\n\t\t\t\t\t\t\tattachment.json.filename as string,\n\t\t\t\t\t\t\tattachment.json.mimeType as string,\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\tif (operation === 'getAll') {\n\t\t\t\tconst download = this.getNodeParameter('download', 0);\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\tconst {\n\t\t\t\t\t\tfields: { attachment },\n\t\t\t\t\t} = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/2/issue/${issueKey}`,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\t\t\t\t\tresponseData = attachment;\n\t\t\t\t\tif (!returnAll) {\n\t\t\t\t\t\tconst limit = this.getNodeParameter('limit', i);\n\t\t\t\t\t\tresponseData = responseData.slice(0, limit);\n\t\t\t\t\t}\n\t\t\t\t\tresponseData = responseData.map((data: IDataObject) => ({ json: data }));\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t\tif (download) {\n\t\t\t\t\tconst binaryPropertyName = this.getNodeParameter('binaryProperty', 0);\n\t\t\t\t\tfor (const [index, attachment] of returnData.entries()) {\n\t\t\t\t\t\treturnData[index].binary = {};\n\t\t\t\t\t\tconst buffer = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\tattachment.json.content as string,\n\t\t\t\t\t\t\t{ json: false, encoding: null, useStream: true },\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturnData[index].binary[binaryPropertyName] = await this.helpers.prepareBinaryData(\n\t\t\t\t\t\t\tbuffer as Buffer,\n\t\t\t\t\t\t\tattachment.json.filename as string,\n\t\t\t\t\t\t\tattachment.json.mimeType as string,\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\n\t\tif (resource === 'issueComment') {\n\t\t\tlet apiVersion =\n\t\t\t\tjiraVersion === 'server' || jiraVersion === 'serverPat' ? '2' : ('3' as string);\n\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-comments/#api-rest-api-3-issue-issueidorkey-comment-post\n\t\t\tif (operation === 'add') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst jsonParameters = this.getNodeParameter('jsonParameters', 0);\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\tif (options.wikiMarkup) {\n\t\t\t\t\t\tapiVersion = '2';\n\t\t\t\t\t}\n\n\t\t\t\t\tconst body: IDataObject = {};\n\t\t\t\t\tif (options.expand) {\n\t\t\t\t\t\tqs.expand = options.expand as string;\n\t\t\t\t\t\tdelete options.expand;\n\t\t\t\t\t}\n\n\t\t\t\t\tObject.assign(body, options);\n\t\t\t\t\tif (!jsonParameters) {\n\t\t\t\t\t\tconst comment = this.getNodeParameter('comment', i) as string;\n\t\t\t\t\t\tif (jiraVersion === 'server' || jiraVersion === 'serverPat' || options.wikiMarkup) {\n\t\t\t\t\t\t\tObject.assign(body, { body: comment });\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tObject.assign(body, {\n\t\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\ttype: 'doc',\n\t\t\t\t\t\t\t\t\tversion: 1,\n\t\t\t\t\t\t\t\t\tcontent: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\ttype: 'paragraph',\n\t\t\t\t\t\t\t\t\t\t\tcontent: [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\t\t\t\t\t\ttext: comment,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst commentJson = this.getNodeParameter('commentJson', i) as string;\n\t\t\t\t\t\tconst json = validateJSON(commentJson);\n\t\t\t\t\t\tif (json === '') {\n\t\t\t\t\t\t\tthrow new NodeOperationError(this.getNode(), 'Document Format must be a valid JSON', {\n\t\t\t\t\t\t\t\titemIndex: i,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tObject.assign(body, { body: json });\n\t\t\t\t\t}\n\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/issue/${issueKey}/comment`,\n\t\t\t\t\t\t'POST',\n\t\t\t\t\t\tbody,\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-issueIdOrKey-get\n\t\t\tif (operation === 'get') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst commentId = this.getNodeParameter('commentId', i) as string;\n\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\tObject.assign(qs, options);\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/issue/${issueKey}/comment/${commentId}`,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-comments/#api-rest-api-3-issue-issueidorkey-comment-get\n\t\t\tif (operation === 'getAll') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\tconst body: IDataObject = {};\n\t\t\t\t\tObject.assign(qs, options);\n\t\t\t\t\tif (returnAll) {\n\t\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequestAllItems.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'comments',\n\t\t\t\t\t\t\t`/api/${apiVersion}/issue/${issueKey}/comment`,\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst limit = this.getNodeParameter('limit', i);\n\t\t\t\t\t\tqs.maxResults = limit;\n\t\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t`/api/${apiVersion}/issue/${issueKey}/comment`,\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tresponseData = responseData.comments;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-comments/#api-rest-api-3-issue-issueidorkey-comment-id-delete\n\t\t\tif (operation === 'remove') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst commentId = this.getNodeParameter('commentId', i) as string;\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/issue/${issueKey}/comment/${commentId}`,\n\t\t\t\t\t\t'DELETE',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray({ success: true }),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-comments/#api-rest-api-3-issue-issueidorkey-comment-id-put\n\t\t\tif (operation === 'update') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst commentId = this.getNodeParameter('commentId', i) as string;\n\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\tconst jsonParameters = this.getNodeParameter('jsonParameters', 0);\n\t\t\t\t\tconst body: IDataObject = {};\n\t\t\t\t\tif (options.expand) {\n\t\t\t\t\t\tqs.expand = options.expand as string;\n\t\t\t\t\t\tdelete options.expand;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (options.wikiMarkup) {\n\t\t\t\t\t\tapiVersion = '2';\n\t\t\t\t\t}\n\n\t\t\t\t\tObject.assign(qs, options);\n\t\t\t\t\tif (!jsonParameters) {\n\t\t\t\t\t\tconst comment = this.getNodeParameter('comment', i) as string;\n\t\t\t\t\t\tif (jiraVersion === 'server' || jiraVersion === 'serverPat' || options.wikiMarkup) {\n\t\t\t\t\t\t\tObject.assign(body, { body: comment });\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tObject.assign(body, {\n\t\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\ttype: 'doc',\n\t\t\t\t\t\t\t\t\tversion: 1,\n\t\t\t\t\t\t\t\t\tcontent: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\ttype: 'paragraph',\n\t\t\t\t\t\t\t\t\t\t\tcontent: [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\t\t\t\t\t\ttext: comment,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst commentJson = this.getNodeParameter('commentJson', i) as string;\n\t\t\t\t\t\tconst json = validateJSON(commentJson);\n\t\t\t\t\t\tif (json === '') {\n\t\t\t\t\t\t\tthrow new NodeOperationError(this.getNode(), 'Document Format must be a valid JSON', {\n\t\t\t\t\t\t\t\titemIndex: i,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tObject.assign(body, { body: json });\n\t\t\t\t\t}\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/issue/${issueKey}/comment/${commentId}`,\n\t\t\t\t\t\t'PUT',\n\t\t\t\t\t\tbody,\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (resource === 'user') {\n\t\t\tconst apiVersion =\n\t\t\t\tjiraVersion === 'server' || jiraVersion === 'serverPat' ? '2' : ('3' as string);\n\n\t\t\tif (operation === 'create') {\n\t\t\t\t// https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-users/#api-rest-api-3-user-post\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst body = {\n\t\t\t\t\t\tname: this.getNodeParameter('username', i),\n\t\t\t\t\t\temailAddress: this.getNodeParameter('emailAddress', i),\n\t\t\t\t\t\tdisplayName: this.getNodeParameter('displayName', i),\n\t\t\t\t\t};\n\n\t\t\t\t\tconst additionalFields = this.getNodeParameter('additionalFields', i);\n\n\t\t\t\t\tObject.assign(body, additionalFields);\n\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/user`,\n\t\t\t\t\t\t'POST',\n\t\t\t\t\t\tbody,\n\t\t\t\t\t\t{},\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t} else if (operation === 'delete') {\n\t\t\t\t// https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-users/#api-rest-api-3-user-delete\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tqs.accountId = this.getNodeParameter('accountId', i);\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/user`,\n\t\t\t\t\t\t'DELETE',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray({ success: true }),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t} else if (operation === 'get') {\n\t\t\t\t// https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-users/#api-rest-api-3-user-get\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tqs.accountId = this.getNodeParameter('accountId', i);\n\n\t\t\t\t\tconst { expand } = this.getNodeParameter('additionalFields', i) as { expand: string[] };\n\n\t\t\t\t\tif (expand) {\n\t\t\t\t\t\tqs.expand = expand.join(',');\n\t\t\t\t\t}\n\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/user`,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn [returnData];\n\t}\n}\n"],"mappings":"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","names":["res","fields","mergeWith"]}
1
+ {"version":3,"sources":["../../../nodes/Jira/Jira.node.ts"],"sourcesContent":["import mergeWith from 'lodash/mergeWith';\nimport type {\n\tIDataObject,\n\tIExecuteFunctions,\n\tILoadOptionsFunctions,\n\tINodeExecutionData,\n\tINodeListSearchItems,\n\tINodeListSearchResult,\n\tINodePropertyOptions,\n\tINodeType,\n\tINodeTypeDescription,\n} from 'n8n-workflow';\nimport { BINARY_ENCODING, NodeConnectionTypes, NodeOperationError } from 'n8n-workflow';\nimport type { Readable } from 'stream';\n\nimport {\n\tfilterSortSearchListItems,\n\tgetUsers,\n\tjiraSoftwareCloudApiRequest,\n\tjiraSoftwareCloudApiRequestAllItems,\n\tsimplifyIssueOutput,\n\tvalidateJSON,\n} from './GenericFunctions';\nimport { issueAttachmentFields, issueAttachmentOperations } from './IssueAttachmentDescription';\nimport { issueCommentFields, issueCommentOperations } from './IssueCommentDescription';\nimport { issueFields, issueOperations } from './IssueDescription';\nimport type {\n\tIFields,\n\tIIssue,\n\tINotificationRecipients,\n\tINotify,\n\tNotificationRecipientsRestrictions,\n} from './IssueInterface';\nimport { userFields, userOperations } from './UserDescription';\n\nexport class Jira implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Jira Software',\n\t\tname: 'jira',\n\t\ticon: 'file:jira.svg',\n\t\tgroup: ['output'],\n\t\tversion: 1,\n\t\tsubtitle: '={{$parameter[\"operation\"] + \": \" + $parameter[\"resource\"]}}',\n\t\tdescription: 'Consume Jira Software API',\n\t\tdefaults: {\n\t\t\tname: 'Jira Software',\n\t\t},\n\t\tinputs: [NodeConnectionTypes.Main],\n\t\toutputs: [NodeConnectionTypes.Main],\n\t\tusableAsTool: true,\n\t\tcredentials: [\n\t\t\t{\n\t\t\t\tname: 'jiraSoftwareCloudApi',\n\t\t\t\trequired: true,\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tjiraVersion: ['cloud'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'jiraSoftwareServerApi',\n\t\t\t\trequired: true,\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tjiraVersion: ['server'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'jiraSoftwareServerPatApi',\n\t\t\t\trequired: true,\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tjiraVersion: ['serverPat'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\tproperties: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Jira Version',\n\t\t\t\tname: 'jiraVersion',\n\t\t\t\ttype: 'options',\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Cloud',\n\t\t\t\t\t\tvalue: 'cloud',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Server (Self Hosted)',\n\t\t\t\t\t\tvalue: 'server',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Server Pat (Self Hosted)',\n\t\t\t\t\t\tvalue: 'serverPat',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'cloud',\n\t\t\t},\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: 'Issue',\n\t\t\t\t\t\tvalue: 'issue',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Creates an issue or, where the option to create subtasks is enabled in Jira, a subtask',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Issue Attachment',\n\t\t\t\t\t\tvalue: 'issueAttachment',\n\t\t\t\t\t\tdescription: 'Add, remove, and get an attachment from an issue',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Issue Comment',\n\t\t\t\t\t\tvalue: 'issueComment',\n\t\t\t\t\t\tdescription: 'Get, create, update, and delete a comment from an issue',\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\tdescription: 'Get, create and delete a user',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'issue',\n\t\t\t},\n\t\t\t...issueOperations,\n\t\t\t...issueFields,\n\t\t\t...issueAttachmentOperations,\n\t\t\t...issueAttachmentFields,\n\t\t\t...issueCommentOperations,\n\t\t\t...issueCommentFields,\n\t\t\t...userOperations,\n\t\t\t...userFields,\n\t\t],\n\t};\n\n\tmethods = {\n\t\tlistSearch: {\n\t\t\t// Get all the projects to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getProjects(\n\t\t\t\tthis: ILoadOptionsFunctions,\n\t\t\t\tfilter?: string,\n\t\t\t): Promise<INodeListSearchResult> {\n\t\t\t\tconst returnData: INodeListSearchItems[] = [];\n\t\t\t\tconst jiraVersion = this.getCurrentNodeParameter('jiraVersion') as string;\n\t\t\t\tlet endpoint = '';\n\t\t\t\tlet projects;\n\n\t\t\t\tif (jiraVersion === 'server' || jiraVersion === 'serverPat') {\n\t\t\t\t\tendpoint = '/api/2/project';\n\t\t\t\t\tprojects = await jiraSoftwareCloudApiRequest.call(this, endpoint, 'GET');\n\t\t\t\t} else {\n\t\t\t\t\tendpoint = '/api/2/project/search';\n\t\t\t\t\tprojects = await jiraSoftwareCloudApiRequestAllItems.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t'values',\n\t\t\t\t\t\tendpoint,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (projects.values && Array.isArray(projects.values)) {\n\t\t\t\t\tprojects = projects.values;\n\t\t\t\t}\n\t\t\t\tfor (const project of projects) {\n\t\t\t\t\tconst projectName = project.name;\n\t\t\t\t\tconst projectId = project.id;\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: projectName,\n\t\t\t\t\t\tvalue: projectId,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn { results: filterSortSearchListItems(returnData, filter) };\n\t\t\t},\n\n\t\t\t// Get all the issue types to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getIssueTypes(this: ILoadOptionsFunctions): Promise<INodeListSearchResult> {\n\t\t\t\tconst projectId = this.getCurrentNodeParameter('project', { extractValue: true });\n\t\t\t\tconst returnData: INodeListSearchItems[] = [];\n\t\t\t\tconst { issueTypes } = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\tthis,\n\t\t\t\t\t`/api/2/project/${projectId}`,\n\t\t\t\t\t'GET',\n\t\t\t\t);\n\n\t\t\t\tif (!issueTypes) return { results: [] };\n\n\t\t\t\tfor (const issueType of issueTypes) {\n\t\t\t\t\tconst issueTypeName = issueType.name;\n\t\t\t\t\tconst issueTypeId = issueType.id;\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: issueTypeName,\n\t\t\t\t\t\tvalue: issueTypeId,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturnData.sort((a, b) => {\n\t\t\t\t\tif (a.name < b.name) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (a.name > b.name) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\t\t\t\treturn { results: returnData };\n\t\t\t},\n\n\t\t\t// Get all the users to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getUsers(this: ILoadOptionsFunctions, filter?: string): Promise<INodeListSearchResult> {\n\t\t\t\tconst users = await getUsers.call(this);\n\n\t\t\t\treturn { results: filterSortSearchListItems(users, filter) };\n\t\t\t},\n\n\t\t\t// Get all the priorities to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getPriorities(this: ILoadOptionsFunctions): Promise<INodeListSearchResult> {\n\t\t\t\tconst returnData: INodeListSearchItems[] = [];\n\n\t\t\t\tconst priorities = await jiraSoftwareCloudApiRequest.call(this, '/api/2/priority', 'GET');\n\n\t\t\t\tfor (const priority of priorities) {\n\t\t\t\t\tconst priorityName = priority.name;\n\t\t\t\t\tconst priorityId = priority.id;\n\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: priorityName,\n\t\t\t\t\t\tvalue: priorityId,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturnData.sort((a, b) => {\n\t\t\t\t\tif (a.name < b.name) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (a.name > b.name) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\n\t\t\t\treturn { results: returnData };\n\t\t\t},\n\n\t\t\t// Get all the transitions (status) to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getTransitions(this: ILoadOptionsFunctions): Promise<INodeListSearchResult> {\n\t\t\t\tconst returnData: INodeListSearchItems[] = [];\n\n\t\t\t\tconst issueKey = this.getCurrentNodeParameter('issueKey');\n\t\t\t\tconst transitions = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\tthis,\n\t\t\t\t\t`/api/2/issue/${issueKey}/transitions`,\n\t\t\t\t\t'GET',\n\t\t\t\t);\n\n\t\t\t\tfor (const transition of transitions.transitions) {\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: transition.name,\n\t\t\t\t\t\tvalue: transition.id,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturnData.sort((a, b) => {\n\t\t\t\t\tif (a.name < b.name) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (a.name > b.name) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\n\t\t\t\treturn { results: returnData };\n\t\t\t},\n\n\t\t\t// Get all the custom fields to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getCustomFields(this: ILoadOptionsFunctions): Promise<INodeListSearchResult> {\n\t\t\t\tconst returnData: INodeListSearchItems[] = [];\n\t\t\t\tconst operation = this.getCurrentNodeParameter('operation') as string;\n\t\t\t\tconst jiraVersion = this.getNodeParameter('jiraVersion', 0) as string;\n\n\t\t\t\tlet projectId: string;\n\t\t\t\tlet issueTypeId: string;\n\t\t\t\tlet issueId: string = ''; // /editmeta endpoint requires issueId\n\n\t\t\t\tif (operation === 'create') {\n\t\t\t\t\tprojectId = this.getCurrentNodeParameter('project', { extractValue: true }) as string;\n\t\t\t\t\tissueTypeId = this.getCurrentNodeParameter('issueType', { extractValue: true }) as string;\n\t\t\t\t} else {\n\t\t\t\t\tconst issueKey = this.getCurrentNodeParameter('issueKey') as string;\n\t\t\t\t\tconst res = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/2/issue/${issueKey}`,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\t{},\n\t\t\t\t\t);\n\t\t\t\t\tprojectId = res.fields.project.id;\n\t\t\t\t\tissueTypeId = res.fields.issuetype.id;\n\t\t\t\t\tissueId = res.id;\n\t\t\t\t}\n\n\t\t\t\tif (jiraVersion === 'server' && operation === 'update' && issueId) {\n\t\t\t\t\t// https://developer.atlassian.com/server/jira/platform/jira-rest-api-example-edit-issues-6291632/?utm_source=chatgpt.com\n\t\t\t\t\tconst { fields } = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/2/issue/${issueId}/editmeta`,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t);\n\n\t\t\t\t\tfor (const field of Object.keys(fields || {})) {\n\t\t\t\t\t\tif (field.startsWith('customfield_')) {\n\t\t\t\t\t\t\treturnData.push({\n\t\t\t\t\t\t\t\tname: fields[field].name,\n\t\t\t\t\t\t\t\tvalue: field,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn { results: returnData };\n\t\t\t\t}\n\n\t\t\t\tconst res = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\tthis,\n\t\t\t\t\t`/api/2/issue/createmeta?projectIds=${projectId}&issueTypeIds=${issueTypeId}&expand=projects.issuetypes.fields`,\n\t\t\t\t\t'GET',\n\t\t\t\t);\n\n\t\t\t\tconst fields = res.projects\n\t\t\t\t\t.find((o: any) => o.id === projectId)\n\t\t\t\t\t.issuetypes.find((o: any) => o.id === issueTypeId).fields;\n\n\t\t\t\tfor (const key of Object.keys(fields as IDataObject)) {\n\t\t\t\t\tconst field = fields[key];\n\t\t\t\t\tif (field.schema && Object.keys(field.schema as IDataObject).includes('customId')) {\n\t\t\t\t\t\treturnData.push({\n\t\t\t\t\t\t\tname: field.name,\n\t\t\t\t\t\t\tvalue: field.key || field.fieldId,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn { results: returnData };\n\t\t\t},\n\t\t},\n\t\tloadOptions: {\n\t\t\t// Get all the labels to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getLabels(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\tconst returnData: INodePropertyOptions[] = [];\n\n\t\t\t\tconst labels = await jiraSoftwareCloudApiRequest.call(this, '/api/2/label', 'GET');\n\n\t\t\t\tfor (const label of labels.values) {\n\t\t\t\t\tconst labelName = label;\n\t\t\t\t\tconst labelId = label;\n\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: labelName,\n\t\t\t\t\t\tvalue: labelId,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturnData.sort((a, b) => {\n\t\t\t\t\tif (a.name < b.name) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (a.name > b.name) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\n\t\t\t\treturn returnData;\n\t\t\t},\n\n\t\t\t// Get all the users to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getUsers(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\treturn await getUsers.call(this);\n\t\t\t},\n\n\t\t\t// Get all the groups to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getGroups(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\tconst returnData: INodePropertyOptions[] = [];\n\n\t\t\t\tconst groups = await jiraSoftwareCloudApiRequest.call(this, '/api/2/groups/picker', 'GET');\n\n\t\t\t\tfor (const group of groups.groups) {\n\t\t\t\t\tconst groupName = group.name;\n\t\t\t\t\tconst groupId = group.name;\n\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: groupName,\n\t\t\t\t\t\tvalue: groupId,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturnData.sort((a, b) => {\n\t\t\t\t\tif (a.name < b.name) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (a.name > b.name) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\n\t\t\t\treturn returnData;\n\t\t\t},\n\n\t\t\t// Get all the components to display them to user so that they can\n\t\t\t// select them easily\n\t\t\tasync getProjectComponents(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {\n\t\t\t\tconst returnData: INodePropertyOptions[] = [];\n\n\t\t\t\tconst project = this.getCurrentNodeParameter('project', { extractValue: true });\n\t\t\t\tconst { values: components } = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\tthis,\n\t\t\t\t\t`/api/2/project/${project}/component`,\n\t\t\t\t\t'GET',\n\t\t\t\t);\n\n\t\t\t\tfor (const component of components) {\n\t\t\t\t\treturnData.push({\n\t\t\t\t\t\tname: component.name,\n\t\t\t\t\t\tvalue: component.id,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturnData.sort((a, b) => {\n\t\t\t\t\tif (a.name < b.name) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t\tif (a.name > b.name) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\n\t\t\t\treturn returnData;\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: INodeExecutionData[] = [];\n\t\tconst length = items.length;\n\t\tlet responseData;\n\t\tconst qs: IDataObject = {};\n\n\t\tconst resource = this.getNodeParameter('resource', 0);\n\t\tconst operation = this.getNodeParameter('operation', 0);\n\t\tconst jiraVersion = this.getNodeParameter('jiraVersion', 0) as string;\n\n\t\tif (resource === 'issue') {\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-post\n\t\t\tif (operation === 'create') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst summary = this.getNodeParameter('summary', i) as string;\n\t\t\t\t\tconst projectId = this.getNodeParameter('project', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t}) as string;\n\t\t\t\t\tconst issueTypeId = this.getNodeParameter('issueType', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t}) as string;\n\t\t\t\t\tconst additionalFields = this.getNodeParameter('additionalFields', i);\n\n\t\t\t\t\tconst assignee = this.getNodeParameter('additionalFields.assignee', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t});\n\t\t\t\t\tif (assignee) additionalFields.assignee = assignee;\n\n\t\t\t\t\tconst reporter = this.getNodeParameter('additionalFields.reporter', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t});\n\t\t\t\t\tif (reporter) additionalFields.reporter = reporter;\n\n\t\t\t\t\tconst priority = this.getNodeParameter('additionalFields.priority', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t});\n\t\t\t\t\tif (priority) additionalFields.priority = priority;\n\n\t\t\t\t\tconst body: IIssue = {};\n\t\t\t\t\tconst fields: IFields = {\n\t\t\t\t\t\tsummary,\n\t\t\t\t\t\tproject: {\n\t\t\t\t\t\t\tid: projectId,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tissuetype: {\n\t\t\t\t\t\t\tid: issueTypeId,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t\tif (additionalFields.labels) {\n\t\t\t\t\t\tfields.labels = additionalFields.labels as string[];\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.serverLabels) {\n\t\t\t\t\t\tfields.labels = additionalFields.serverLabels as string[];\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.priority) {\n\t\t\t\t\t\tfields.priority = {\n\t\t\t\t\t\t\tid: additionalFields.priority as string,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.assignee) {\n\t\t\t\t\t\tif (jiraVersion === 'server' || jiraVersion === 'serverPat') {\n\t\t\t\t\t\t\tfields.assignee = {\n\t\t\t\t\t\t\t\tname: additionalFields.assignee as string,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfields.assignee = {\n\t\t\t\t\t\t\t\tid: additionalFields.assignee as string,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.reporter) {\n\t\t\t\t\t\tif (jiraVersion === 'server' || jiraVersion === 'serverPat') {\n\t\t\t\t\t\t\tfields.reporter = {\n\t\t\t\t\t\t\t\tname: additionalFields.reporter as string,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfields.reporter = {\n\t\t\t\t\t\t\t\tid: additionalFields.reporter as string,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.description) {\n\t\t\t\t\t\tfields.description = additionalFields.description as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.updateHistory) {\n\t\t\t\t\t\tqs.updateHistory = additionalFields.updateHistory as boolean;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.componentIds) {\n\t\t\t\t\t\tfields.components = (additionalFields.componentIds as string[]).map((id) => ({ id }));\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.customFieldsUi) {\n\t\t\t\t\t\tconst customFields = (additionalFields.customFieldsUi as IDataObject)\n\t\t\t\t\t\t\t.customFieldsValues as IDataObject[];\n\t\t\t\t\t\tif (customFields) {\n\t\t\t\t\t\t\t// resolve resource locator fieldId value\n\t\t\t\t\t\t\tcustomFields.forEach((cf) => {\n\t\t\t\t\t\t\t\tif (typeof cf.fieldId !== 'string') {\n\t\t\t\t\t\t\t\t\tcf.fieldId = ((cf.fieldId as IDataObject).value as string).trim();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tconst data = customFields.reduce(\n\t\t\t\t\t\t\t\t(obj, value) => Object.assign(obj, { [`${value.fieldId}`]: value.fieldValue }),\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tObject.assign(fields, data);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst issueTypes = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t'/api/2/issuetype',\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\t\t\t\t\tconst subtaskIssues = [];\n\t\t\t\t\tfor (const issueType of issueTypes) {\n\t\t\t\t\t\tif (issueType.subtask) {\n\t\t\t\t\t\t\tsubtaskIssues.push(issueType.id);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!additionalFields.parentIssueKey && subtaskIssues.includes(issueTypeId)) {\n\t\t\t\t\t\tthrow new NodeOperationError(\n\t\t\t\t\t\t\tthis.getNode(),\n\t\t\t\t\t\t\t'You must define a Parent Issue Key when Issue type is sub-task',\n\t\t\t\t\t\t\t{ itemIndex: i },\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if (additionalFields.parentIssueKey && subtaskIssues.includes(issueTypeId)) {\n\t\t\t\t\t\tfields.parent = {\n\t\t\t\t\t\t\tkey: (additionalFields.parentIssueKey as string).toUpperCase(),\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tbody.fields = fields;\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(this, '/api/2/issue', 'POST', body);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-issueIdOrKey-put\n\t\t\tif (operation === 'update') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst updateFields = this.getNodeParameter('updateFields', i);\n\n\t\t\t\t\tconst assignee = this.getNodeParameter('updateFields.assignee', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t});\n\t\t\t\t\tif (assignee) updateFields.assignee = assignee;\n\n\t\t\t\t\tconst reporter = this.getNodeParameter('updateFields.reporter', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t});\n\t\t\t\t\tif (reporter) updateFields.reporter = reporter;\n\n\t\t\t\t\tconst priority = this.getNodeParameter('updateFields.priority', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t});\n\t\t\t\t\tif (priority) updateFields.priority = priority;\n\n\t\t\t\t\tconst statusId = this.getNodeParameter('updateFields.statusId', i, '', {\n\t\t\t\t\t\textractValue: true,\n\t\t\t\t\t});\n\t\t\t\t\tif (statusId) updateFields.statusId = statusId;\n\n\t\t\t\t\tconst body: IIssue = {};\n\t\t\t\t\tconst fields: IFields = {};\n\t\t\t\t\tif (updateFields.summary) {\n\t\t\t\t\t\tfields.summary = updateFields.summary as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (updateFields.issueType) {\n\t\t\t\t\t\tfields.issuetype = {\n\t\t\t\t\t\t\tid: updateFields.issueType as string,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tif (updateFields.labels) {\n\t\t\t\t\t\tfields.labels = updateFields.labels as string[];\n\t\t\t\t\t}\n\t\t\t\t\tif (updateFields.serverLabels) {\n\t\t\t\t\t\tfields.labels = updateFields.serverLabels as string[];\n\t\t\t\t\t}\n\t\t\t\t\tif (updateFields.priority) {\n\t\t\t\t\t\tfields.priority = {\n\t\t\t\t\t\t\tid: updateFields.priority as string,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tif (updateFields.assignee) {\n\t\t\t\t\t\tif (jiraVersion === 'server' || jiraVersion === 'serverPat') {\n\t\t\t\t\t\t\tfields.assignee = {\n\t\t\t\t\t\t\t\tname: updateFields.assignee as string,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfields.assignee = {\n\t\t\t\t\t\t\t\tid: updateFields.assignee as string,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (updateFields.reporter) {\n\t\t\t\t\t\tif (jiraVersion === 'server' || jiraVersion === 'serverPat') {\n\t\t\t\t\t\t\tfields.reporter = {\n\t\t\t\t\t\t\t\tname: updateFields.reporter as string,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfields.reporter = {\n\t\t\t\t\t\t\t\tid: updateFields.reporter as string,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (updateFields.description) {\n\t\t\t\t\t\tfields.description = updateFields.description as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (updateFields.customFieldsUi) {\n\t\t\t\t\t\tconst customFields = (updateFields.customFieldsUi as IDataObject)\n\t\t\t\t\t\t\t.customFieldsValues as IDataObject[];\n\t\t\t\t\t\tif (customFields) {\n\t\t\t\t\t\t\t// resolve resource locator fieldId value\n\t\t\t\t\t\t\tcustomFields.forEach((cf) => {\n\t\t\t\t\t\t\t\tif (typeof cf.fieldId !== 'string') {\n\t\t\t\t\t\t\t\t\tcf.fieldId = ((cf.fieldId as IDataObject).value as string).trim();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tconst data = customFields.reduce(\n\t\t\t\t\t\t\t\t(obj, value) => Object.assign(obj, { [`${value.fieldId}`]: value.fieldValue }),\n\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tObject.assign(fields, data);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst issueTypes = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t'/api/2/issuetype',\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t);\n\t\t\t\t\tconst subtaskIssues = [];\n\t\t\t\t\tfor (const issueType of issueTypes) {\n\t\t\t\t\t\tif (issueType.subtask) {\n\t\t\t\t\t\t\tsubtaskIssues.push(issueType.id);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!updateFields.parentIssueKey && subtaskIssues.includes(updateFields.issueType)) {\n\t\t\t\t\t\tthrow new NodeOperationError(\n\t\t\t\t\t\t\tthis.getNode(),\n\t\t\t\t\t\t\t'You must define a Parent Issue Key when Issue type is sub-task',\n\t\t\t\t\t\t\t{ itemIndex: i },\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if (\n\t\t\t\t\t\tupdateFields.parentIssueKey &&\n\t\t\t\t\t\tsubtaskIssues.includes(updateFields.issueType)\n\t\t\t\t\t) {\n\t\t\t\t\t\tfields.parent = {\n\t\t\t\t\t\t\tkey: (updateFields.parentIssueKey as string).toUpperCase(),\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tbody.fields = fields;\n\n\t\t\t\t\tif (updateFields.statusId) {\n\t\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t`/api/2/issue/${issueKey}/transitions`,\n\t\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t\t{ transition: { id: updateFields.statusId } },\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/2/issue/${issueKey}`,\n\t\t\t\t\t\t'PUT',\n\t\t\t\t\t\tbody,\n\t\t\t\t\t);\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray({ success: true }),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-issueIdOrKey-get\n\t\t\tif (operation === 'get') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst simplifyOutput = this.getNodeParameter('simplifyOutput', i) as boolean;\n\t\t\t\t\tconst additionalFields = this.getNodeParameter('additionalFields', i);\n\t\t\t\t\tif (additionalFields.fields) {\n\t\t\t\t\t\tqs.fields = additionalFields.fields as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.fieldsByKey) {\n\t\t\t\t\t\tqs.fieldsByKey = additionalFields.fieldsByKey as boolean;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.expand) {\n\t\t\t\t\t\tqs.expand = additionalFields.expand as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (simplifyOutput) {\n\t\t\t\t\t\tqs.expand = `${qs.expand || ''},names`;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.properties) {\n\t\t\t\t\t\tqs.properties = additionalFields.properties as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.updateHistory) {\n\t\t\t\t\t\tqs.updateHistory = additionalFields.updateHistory as string;\n\t\t\t\t\t}\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/2/issue/${issueKey}`,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tif (simplifyOutput) {\n\t\t\t\t\t\t// Use rendered fields if requested and available\n\t\t\t\t\t\tqs.expand = qs.expand || '';\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t(qs.expand as string).toLowerCase().indexOf('renderedfields') !== -1 &&\n\t\t\t\t\t\t\tresponseData.renderedFields &&\n\t\t\t\t\t\t\tObject.keys(responseData.renderedFields as IDataObject[]).length\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tresponseData.fields = mergeWith(\n\t\t\t\t\t\t\t\tresponseData.fields,\n\t\t\t\t\t\t\t\tresponseData.renderedFields,\n\t\t\t\t\t\t\t\t(a, b) => (b === null ? a : b),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\t\tthis.helpers.returnJsonArray(simplifyIssueOutput(responseData)),\n\t\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-search-post\n\t\t\tif (operation === 'getAll') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\tconst body: IDataObject = {};\n\t\t\t\t\tif (options.fields) {\n\t\t\t\t\t\tbody.fields = (options.fields as string).split(',');\n\t\t\t\t\t}\n\t\t\t\t\tif (options.jql) {\n\t\t\t\t\t\tbody.jql = options.jql as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (options.expand) {\n\t\t\t\t\t\tif (typeof options.expand === 'string') {\n\t\t\t\t\t\t\tbody.expand = options.expand.split(',');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbody.expand = options.expand;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (returnAll) {\n\t\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequestAllItems.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'issues',\n\t\t\t\t\t\t\t'/api/2/search',\n\t\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst limit = this.getNodeParameter('limit', i);\n\t\t\t\t\t\tbody.maxResults = limit;\n\t\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'/api/2/search',\n\t\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tresponseData = responseData.issues;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-issueIdOrKey-changelog-get\n\t\t\tif (operation === 'changelog') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\tif (returnAll) {\n\t\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequestAllItems.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'values',\n\t\t\t\t\t\t\t`/api/2/issue/${issueKey}/changelog`,\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tqs.maxResults = this.getNodeParameter('limit', i);\n\t\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t`/api/2/issue/${issueKey}/changelog`,\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tresponseData = responseData.values;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-issueIdOrKey-notify-post\n\t\t\tif (operation === 'notify') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst additionalFields = this.getNodeParameter('additionalFields', i);\n\t\t\t\t\tconst jsonActive = this.getNodeParameter('jsonParameters', 0);\n\t\t\t\t\tconst body: INotify = {};\n\t\t\t\t\tif (additionalFields.textBody) {\n\t\t\t\t\t\tbody.textBody = additionalFields.textBody as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.htmlBody) {\n\t\t\t\t\t\tbody.htmlBody = additionalFields.htmlBody as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (!jsonActive) {\n\t\t\t\t\t\tconst notificationRecipientsValues = (\n\t\t\t\t\t\t\tthis.getNodeParameter('notificationRecipientsUi', i) as IDataObject\n\t\t\t\t\t\t).notificationRecipientsValues as IDataObject;\n\t\t\t\t\t\tconst notificationRecipients: INotificationRecipients = {};\n\t\t\t\t\t\tif (notificationRecipientsValues) {\n\t\t\t\t\t\t\tif (notificationRecipientsValues.reporter) {\n\t\t\t\t\t\t\t\tnotificationRecipients.reporter = notificationRecipientsValues.reporter as boolean;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (notificationRecipientsValues.assignee) {\n\t\t\t\t\t\t\t\tnotificationRecipients.assignee = notificationRecipientsValues.assignee as boolean;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (notificationRecipientsValues.assignee) {\n\t\t\t\t\t\t\t\tnotificationRecipients.watchers = notificationRecipientsValues.watchers as boolean;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (notificationRecipientsValues.voters) {\n\t\t\t\t\t\t\t\tnotificationRecipients.watchers = notificationRecipientsValues.voters as boolean;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (((notificationRecipientsValues.users as IDataObject[]) || []).length > 0) {\n\t\t\t\t\t\t\t\tnotificationRecipients.users = (\n\t\t\t\t\t\t\t\t\tnotificationRecipientsValues.users as IDataObject[]\n\t\t\t\t\t\t\t\t).map((user) => {\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\taccountId: user,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (((notificationRecipientsValues.groups as IDataObject[]) || []).length > 0) {\n\t\t\t\t\t\t\t\tnotificationRecipients.groups = (\n\t\t\t\t\t\t\t\t\tnotificationRecipientsValues.groups as IDataObject[]\n\t\t\t\t\t\t\t\t).map((group) => {\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\tname: group,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbody.to = notificationRecipients;\n\t\t\t\t\t\tconst notificationRecipientsRestrictionsValues = (\n\t\t\t\t\t\t\tthis.getNodeParameter('notificationRecipientsRestrictionsUi', i) as IDataObject\n\t\t\t\t\t\t).notificationRecipientsRestrictionsValues as IDataObject;\n\t\t\t\t\t\tconst notificationRecipientsRestrictions: NotificationRecipientsRestrictions = {};\n\t\t\t\t\t\tif (notificationRecipientsRestrictionsValues) {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t((notificationRecipientsRestrictionsValues.groups as IDataObject[]) || []).length >\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tnotificationRecipientsRestrictions.groups = (\n\t\t\t\t\t\t\t\t\tnotificationRecipientsRestrictionsValues.groups as IDataObject[]\n\t\t\t\t\t\t\t\t).map((group) => {\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\tname: group,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbody.restrict = notificationRecipientsRestrictions;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst notificationRecipientsJson = validateJSON(\n\t\t\t\t\t\t\tthis.getNodeParameter('notificationRecipientsJson', i) as string,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (notificationRecipientsJson) {\n\t\t\t\t\t\t\tbody.to = notificationRecipientsJson;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst notificationRecipientsRestrictionsJson = validateJSON(\n\t\t\t\t\t\t\tthis.getNodeParameter('notificationRecipientsRestrictionsJson', i) as string,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (notificationRecipientsRestrictionsJson) {\n\t\t\t\t\t\t\tbody.restrict = notificationRecipientsRestrictionsJson;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/2/issue/${issueKey}/notify`,\n\t\t\t\t\t\t'POST',\n\t\t\t\t\t\tbody,\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray({ success: true }), //endpoint returns no content\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-issueIdOrKey-transitions-get\n\t\t\tif (operation === 'transitions') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst additionalFields = this.getNodeParameter('additionalFields', i);\n\t\t\t\t\tif (additionalFields.transitionId) {\n\t\t\t\t\t\tqs.transitionId = additionalFields.transitionId as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.expand) {\n\t\t\t\t\t\tqs.expand = additionalFields.expand as string;\n\t\t\t\t\t}\n\t\t\t\t\tif (additionalFields.skipRemoteOnlyCondition) {\n\t\t\t\t\t\tqs.skipRemoteOnlyCondition = additionalFields.skipRemoteOnlyCondition as boolean;\n\t\t\t\t\t}\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/2/issue/${issueKey}/transitions`,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\t\t\t\t\tresponseData = responseData.transitions;\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-issueIdOrKey-delete\n\t\t\tif (operation === 'delete') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst deleteSubtasks = this.getNodeParameter('deleteSubtasks', i) as boolean;\n\t\t\t\t\tqs.deleteSubtasks = deleteSubtasks;\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/2/issue/${issueKey}`,\n\t\t\t\t\t\t'DELETE',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray({ success: true }),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (resource === 'issueAttachment') {\n\t\t\tconst apiVersion =\n\t\t\t\tjiraVersion === 'server' || jiraVersion === 'serverPat' ? '2' : ('3' as string);\n\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-attachments/#api-rest-api-3-issue-issueidorkey-attachments-post\n\t\t\tif (operation === 'add') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst binaryPropertyName = this.getNodeParameter('binaryPropertyName', i);\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst binaryData = this.helpers.assertBinaryData(i, binaryPropertyName);\n\n\t\t\t\t\tlet uploadData: Buffer | Readable;\n\t\t\t\t\tif (binaryData.id) {\n\t\t\t\t\t\tuploadData = await this.helpers.getBinaryStream(binaryData.id);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tuploadData = Buffer.from(binaryData.data, BINARY_ENCODING);\n\t\t\t\t\t}\n\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/issue/${issueKey}/attachments`,\n\t\t\t\t\t\t'POST',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tformData: {\n\t\t\t\t\t\t\t\tfile: {\n\t\t\t\t\t\t\t\t\tvalue: uploadData,\n\t\t\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\t\t\tfilename: binaryData.fileName,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\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 executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-attachments/#api-rest-api-3-attachment-id-delete\n\t\t\tif (operation === 'remove') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst attachmentId = this.getNodeParameter('attachmentId', i) as string;\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/attachment/${attachmentId}`,\n\t\t\t\t\t\t'DELETE',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray({ success: true }),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-attachments/#api-rest-api-3-attachment-id-get\n\t\t\tif (operation === 'get') {\n\t\t\t\tconst download = this.getNodeParameter('download', 0);\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst attachmentId = this.getNodeParameter('attachmentId', i) as string;\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/attachment/${attachmentId}`,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t\tif (download) {\n\t\t\t\t\tconst binaryPropertyName = this.getNodeParameter('binaryProperty', 0);\n\t\t\t\t\tfor (const [index, attachment] of returnData.entries()) {\n\t\t\t\t\t\treturnData[index].binary = {};\n\n\t\t\t\t\t\tconst buffer = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\tattachment?.json.content as string,\n\t\t\t\t\t\t\t{ json: false, encoding: null, useStream: true },\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturnData[index].binary[binaryPropertyName] = await this.helpers.prepareBinaryData(\n\t\t\t\t\t\t\tbuffer as Buffer,\n\t\t\t\t\t\t\tattachment.json.filename as string,\n\t\t\t\t\t\t\tattachment.json.mimeType as string,\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\tif (operation === 'getAll') {\n\t\t\t\tconst download = this.getNodeParameter('download', 0);\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\tconst {\n\t\t\t\t\t\tfields: { attachment },\n\t\t\t\t\t} = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/2/issue/${issueKey}`,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\t\t\t\t\tresponseData = attachment;\n\t\t\t\t\tif (!returnAll) {\n\t\t\t\t\t\tconst limit = this.getNodeParameter('limit', i);\n\t\t\t\t\t\tresponseData = responseData.slice(0, limit);\n\t\t\t\t\t}\n\t\t\t\t\tresponseData = responseData.map((data: IDataObject) => ({ json: data }));\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t\tif (download) {\n\t\t\t\t\tconst binaryPropertyName = this.getNodeParameter('binaryProperty', 0);\n\t\t\t\t\tfor (const [index, attachment] of returnData.entries()) {\n\t\t\t\t\t\treturnData[index].binary = {};\n\t\t\t\t\t\tconst buffer = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\tattachment.json.content as string,\n\t\t\t\t\t\t\t{ json: false, encoding: null, useStream: true },\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturnData[index].binary[binaryPropertyName] = await this.helpers.prepareBinaryData(\n\t\t\t\t\t\t\tbuffer as Buffer,\n\t\t\t\t\t\t\tattachment.json.filename as string,\n\t\t\t\t\t\t\tattachment.json.mimeType as string,\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\n\t\tif (resource === 'issueComment') {\n\t\t\tlet apiVersion =\n\t\t\t\tjiraVersion === 'server' || jiraVersion === 'serverPat' ? '2' : ('3' as string);\n\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-comments/#api-rest-api-3-issue-issueidorkey-comment-post\n\t\t\tif (operation === 'add') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst jsonParameters = this.getNodeParameter('jsonParameters', 0);\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\n\t\t\t\t\tif (options.wikiMarkup) {\n\t\t\t\t\t\tapiVersion = '2';\n\t\t\t\t\t}\n\n\t\t\t\t\tconst body: IDataObject = {};\n\t\t\t\t\tif (options.expand) {\n\t\t\t\t\t\tqs.expand = options.expand as string;\n\t\t\t\t\t\tdelete options.expand;\n\t\t\t\t\t}\n\n\t\t\t\t\tObject.assign(body, options);\n\t\t\t\t\tif (!jsonParameters) {\n\t\t\t\t\t\tconst comment = this.getNodeParameter('comment', i) as string;\n\t\t\t\t\t\tif (jiraVersion === 'server' || jiraVersion === 'serverPat' || options.wikiMarkup) {\n\t\t\t\t\t\t\tObject.assign(body, { body: comment });\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tObject.assign(body, {\n\t\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\ttype: 'doc',\n\t\t\t\t\t\t\t\t\tversion: 1,\n\t\t\t\t\t\t\t\t\tcontent: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\ttype: 'paragraph',\n\t\t\t\t\t\t\t\t\t\t\tcontent: [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\t\t\t\t\t\ttext: comment,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst commentJson = this.getNodeParameter('commentJson', i) as string;\n\t\t\t\t\t\tconst json = validateJSON(commentJson);\n\t\t\t\t\t\tif (json === '') {\n\t\t\t\t\t\t\tthrow new NodeOperationError(this.getNode(), 'Document Format must be a valid JSON', {\n\t\t\t\t\t\t\t\titemIndex: i,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tObject.assign(body, { body: json });\n\t\t\t\t\t}\n\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/issue/${issueKey}/comment`,\n\t\t\t\t\t\t'POST',\n\t\t\t\t\t\tbody,\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-issue-issueIdOrKey-get\n\t\t\tif (operation === 'get') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst commentId = this.getNodeParameter('commentId', i) as string;\n\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\tObject.assign(qs, options);\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/issue/${issueKey}/comment/${commentId}`,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-comments/#api-rest-api-3-issue-issueidorkey-comment-get\n\t\t\tif (operation === 'getAll') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst returnAll = this.getNodeParameter('returnAll', i);\n\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\tObject.assign(qs, options);\n\t\t\t\t\tif (returnAll) {\n\t\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequestAllItems.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t'comments',\n\t\t\t\t\t\t\t`/api/${apiVersion}/issue/${issueKey}/comment`,\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst limit = this.getNodeParameter('limit', i);\n\t\t\t\t\t\tqs.maxResults = limit;\n\t\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t`/api/${apiVersion}/issue/${issueKey}/comment`,\n\t\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\tqs,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tresponseData = responseData.comments;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-comments/#api-rest-api-3-issue-issueidorkey-comment-id-delete\n\t\t\tif (operation === 'remove') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst commentId = this.getNodeParameter('commentId', i) as string;\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/issue/${issueKey}/comment/${commentId}`,\n\t\t\t\t\t\t'DELETE',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray({ success: true }),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t\t//https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-comments/#api-rest-api-3-issue-issueidorkey-comment-id-put\n\t\t\tif (operation === 'update') {\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst issueKey = this.getNodeParameter('issueKey', i) as string;\n\t\t\t\t\tconst commentId = this.getNodeParameter('commentId', i) as string;\n\t\t\t\t\tconst options = this.getNodeParameter('options', i);\n\t\t\t\t\tconst jsonParameters = this.getNodeParameter('jsonParameters', 0);\n\t\t\t\t\tconst body: IDataObject = {};\n\t\t\t\t\tif (options.expand) {\n\t\t\t\t\t\tqs.expand = options.expand as string;\n\t\t\t\t\t\tdelete options.expand;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (options.wikiMarkup) {\n\t\t\t\t\t\tapiVersion = '2';\n\t\t\t\t\t}\n\n\t\t\t\t\tObject.assign(qs, options);\n\t\t\t\t\tif (!jsonParameters) {\n\t\t\t\t\t\tconst comment = this.getNodeParameter('comment', i) as string;\n\t\t\t\t\t\tif (jiraVersion === 'server' || jiraVersion === 'serverPat' || options.wikiMarkup) {\n\t\t\t\t\t\t\tObject.assign(body, { body: comment });\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tObject.assign(body, {\n\t\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\ttype: 'doc',\n\t\t\t\t\t\t\t\t\tversion: 1,\n\t\t\t\t\t\t\t\t\tcontent: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\ttype: 'paragraph',\n\t\t\t\t\t\t\t\t\t\t\tcontent: [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\t\t\t\t\t\ttext: comment,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst commentJson = this.getNodeParameter('commentJson', i) as string;\n\t\t\t\t\t\tconst json = validateJSON(commentJson);\n\t\t\t\t\t\tif (json === '') {\n\t\t\t\t\t\t\tthrow new NodeOperationError(this.getNode(), 'Document Format must be a valid JSON', {\n\t\t\t\t\t\t\t\titemIndex: i,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tObject.assign(body, { body: json });\n\t\t\t\t\t}\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/issue/${issueKey}/comment/${commentId}`,\n\t\t\t\t\t\t'PUT',\n\t\t\t\t\t\tbody,\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (resource === 'user') {\n\t\t\tconst apiVersion =\n\t\t\t\tjiraVersion === 'server' || jiraVersion === 'serverPat' ? '2' : ('3' as string);\n\n\t\t\tif (operation === 'create') {\n\t\t\t\t// https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-users/#api-rest-api-3-user-post\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tconst body = {\n\t\t\t\t\t\tname: this.getNodeParameter('username', i),\n\t\t\t\t\t\temailAddress: this.getNodeParameter('emailAddress', i),\n\t\t\t\t\t\tdisplayName: this.getNodeParameter('displayName', i),\n\t\t\t\t\t};\n\n\t\t\t\t\tconst additionalFields = this.getNodeParameter('additionalFields', i);\n\n\t\t\t\t\tObject.assign(body, additionalFields);\n\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/user`,\n\t\t\t\t\t\t'POST',\n\t\t\t\t\t\tbody,\n\t\t\t\t\t\t{},\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t} else if (operation === 'delete') {\n\t\t\t\t// https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-users/#api-rest-api-3-user-delete\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tqs.accountId = this.getNodeParameter('accountId', i);\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/user`,\n\t\t\t\t\t\t'DELETE',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray({ success: true }),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t} else if (operation === 'get') {\n\t\t\t\t// https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-users/#api-rest-api-3-user-get\n\t\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\t\tqs.accountId = this.getNodeParameter('accountId', i);\n\n\t\t\t\t\tconst { expand } = this.getNodeParameter('additionalFields', i) as { expand: string[] };\n\n\t\t\t\t\tif (expand) {\n\t\t\t\t\t\tqs.expand = expand.join(',');\n\t\t\t\t\t}\n\n\t\t\t\t\tresponseData = await jiraSoftwareCloudApiRequest.call(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`/api/${apiVersion}/user`,\n\t\t\t\t\t\t'GET',\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst executionData = this.helpers.constructExecutionMetaData(\n\t\t\t\t\t\tthis.helpers.returnJsonArray(responseData as IDataObject[]),\n\t\t\t\t\t\t{ itemData: { item: i } },\n\t\t\t\t\t);\n\n\t\t\t\t\treturnData.push(...executionData);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn [returnData];\n\t}\n}\n"],"mappings":"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","names":["res","fields","mergeWith"]}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var credentials_exports = {};
20
+ __export(credentials_exports, {
21
+ credentials: () => credentials
22
+ });
23
+ module.exports = __toCommonJS(credentials_exports);
24
+ const credentials = {
25
+ microsoftAzureCosmosDbSharedKeyApi: {
26
+ account: "n8n-us-east-account",
27
+ key: "I3rwpzP0XoFpNzJ7hRIUXjwgpD1qaVKi71NZBbk7oOHUXrbd80WAoIAAoRaT47W9hHO3b6us1yABACDbVdilag==",
28
+ database: "database_1",
29
+ baseUrl: "https://n8n-us-east-account.documents.azure.com/dbs/database_1"
30
+ }
31
+ };
32
+ // Annotate the CommonJS export names for ESM import in node:
33
+ 0 && (module.exports = {
34
+ credentials
35
+ });
36
+ //# sourceMappingURL=credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../nodes/Microsoft/AzureCosmosDb/test/credentials.ts"],"sourcesContent":["export const credentials = {\n\tmicrosoftAzureCosmosDbSharedKeyApi: {\n\t\taccount: 'n8n-us-east-account',\n\t\tkey: 'I3rwpzP0XoFpNzJ7hRIUXjwgpD1qaVKi71NZBbk7oOHUXrbd80WAoIAAoRaT47W9hHO3b6us1yABACDbVdilag==',\n\t\tdatabase: 'database_1',\n\t\tbaseUrl: 'https://n8n-us-east-account.documents.azure.com/dbs/database_1',\n\t},\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,cAAc;AAAA,EAC1B,oCAAoC;AAAA,IACnC,SAAS;AAAA,IACT,KAAK;AAAA,IACL,UAAU;AAAA,IACV,SAAS;AAAA,EACV;AACD;","names":[]}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var credentials_exports = {};
20
+ __export(credentials_exports, {
21
+ credentials: () => credentials
22
+ });
23
+ module.exports = __toCommonJS(credentials_exports);
24
+ const credentials = {
25
+ microsoftExcelOAuth2Api: {
26
+ scope: "openid",
27
+ oauthTokenData: {
28
+ access_token: "token"
29
+ }
30
+ }
31
+ };
32
+ // Annotate the CommonJS export names for ESM import in node:
33
+ 0 && (module.exports = {
34
+ credentials
35
+ });
36
+ //# sourceMappingURL=credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../nodes/Microsoft/Excel/test/credentials.ts"],"sourcesContent":["export const credentials = {\n\tmicrosoftExcelOAuth2Api: {\n\t\tscope: 'openid',\n\t\toauthTokenData: {\n\t\t\taccess_token: 'token',\n\t\t},\n\t},\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,cAAc;AAAA,EAC1B,yBAAyB;AAAA,IACxB,OAAO;AAAA,IACP,gBAAgB;AAAA,MACf,cAAc;AAAA,IACf;AAAA,EACD;AACD;","names":[]}