mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-17 18:12:04 +00:00
feat(ServiceNow Node): Add basicAuth support and fix getColumns loadOptions (#2712)
* ✨ Support basic auth for ServiceNow * 🐛 Support ServiceNow sysparm_fields as string * ⚡ credential test for basic auth * fix(Google Tasks Node): Fix "Show Completed" option and hide title field where not needed (#2741) * 🐛 Google Tasks: Fix showCompleted * ⚡ Improvements Co-authored-by: ricardo <ricardoespinoza105@gmail.com> * feat(Mocean Node): Add "Delivery Report URL" option and credential tests (#3075) * add dlr url column add dlr url(delivery report URl) column. Allow user set the endpoint to receive the report * update update delivery report url description * ⚡ fixed nodelinter issues, added credential test, replaced icon * ⚡ Improvements Co-authored-by: d3no <d3no520@gmail.com> Co-authored-by: Michael Kret <michael.k@radency.com> * feat(Emelia Node): Add Campaign > Duplicate functionality (#3000) * feat(Emelia Node): Add campaign duplication feature * ⚡ small ui fixes, added credential test, fixed nodelinter issues * ⚡ Improvements * ⚡ Updated wording for Number operations on IF-Node (#3065) * fix(Google Tasks Node): Fix "Show Completed" option and hide title field where not needed (#2741) * 🐛 Google Tasks: Fix showCompleted * ⚡ Improvements Co-authored-by: ricardo <ricardoespinoza105@gmail.com> * feat(Mocean Node): Add "Delivery Report URL" option and credential tests (#3075) * add dlr url column add dlr url(delivery report URl) column. Allow user set the endpoint to receive the report * update update delivery report url description * ⚡ fixed nodelinter issues, added credential test, replaced icon * ⚡ Improvements Co-authored-by: d3no <d3no520@gmail.com> Co-authored-by: Michael Kret <michael.k@radency.com> * ⚡ Normalize name Co-authored-by: Michael Kret <michael.k@radency.com> Co-authored-by: ricardo <ricardoespinoza105@gmail.com> Co-authored-by: Jonathan Bennetts <jonathan.bennetts@gmail.com> Co-authored-by: Tom <19203795+that-one-tom@users.noreply.github.com> Co-authored-by: Ricardo Espinoza <ricardo@n8n.io> Co-authored-by: d3no <d3no520@gmail.com> Co-authored-by: Jan Oberhauser <jan.oberhauser@gmail.com> * ⚡ fix nodelinter issues, added hint to field option * fix(GraphQL Node)!: Correctly report errors returned by the API (#3071) * upstream merge * ⚡ graphql node will throw error when response has errors property * 🔨 updated changelog * ⚡ Improvements * ⚡ Improvements * ⚡ Add package-lock.json back Co-authored-by: ricardo <ricardoespinoza105@gmail.com> * feat(FTP Node): Add option to recursively create directories on rename (#3001) * Recursively Make Directories on SFTP Rename * Linting * ⚡ Improvement * ⚡ Rename "Move" to "Create Directories" * Change "Create Directories" description Co-authored-by: ricardo <ricardoespinoza105@gmail.com> * feat(Microsoft Teams Node): Add chat message support (#2635) * ✨ Add chat messages to MS Teams node * Updated credentials to include missing scope * ⚡ Small improvements Co-authored-by: Jonathan Bennetts <jonathan.bennetts@gmail.com> Co-authored-by: ricardo <ricardoespinoza105@gmail.com> * feat(Mautic Node): Add credential test and allow trailing slash in host (#3080) * Updated Mautic to stop trailing slashes from causing an issue * Fixed oauth failing when there is a trailing slash in the mautic host * Added credential test * test: Fix randomly failing UM tests (#3061) * ⚡ Declutter test logs * 🐛 Fix random passwords length * 🐛 Fix password hashing in test user creation * 🐛 Hash leftover password * ⚡ Improve error message for `compare` * ⚡ Restore `randomInvalidPassword` contant * ⚡ Mock Telemetry module to prevent `--forceExit` * ⚡ Silence logger * ⚡ Simplify condition * ⚡ Unhash password in payload * fix(NocoDB Node): Fix pagination (#3081) * feat(Strava Node): Add "Get Streams" operation (#2582) * Strava node: adding getStreams operation * Changed the keys to use multiOptions Co-authored-by: Jonathan Bennetts <jonathan.bennetts@gmail.com> * ⚡ Improvements * fix(core): Fix crash on webhook when last node did not return data * fix(Salesforce Node): Fix issue that "status" did not get used for Case => Create & Update (#2212) * bugfix for salesforce case create and update case not picking status * 🐛 Fix issue with package-lock.json Co-authored-by: ricardo <ricardoespinoza105@gmail.com> * 🐛 Fix issue with credentials * ⚡ Fix basicAuth * ⚡ Reset default Co-authored-by: Michael Kret <michael.k@radency.com> Co-authored-by: Tom <19203795+that-one-tom@users.noreply.github.com> Co-authored-by: ricardo <ricardoespinoza105@gmail.com> Co-authored-by: Ricardo Espinoza <ricardo@n8n.io> Co-authored-by: d3no <d3no520@gmail.com> Co-authored-by: Charles Lecalier <charles.lecalier@gmail.com> Co-authored-by: Jonathan Bennetts <jonathan.bennetts@gmail.com> Co-authored-by: Jan Oberhauser <jan.oberhauser@gmail.com> Co-authored-by: Michael Kret <88898367+michael-radency@users.noreply.github.com> Co-authored-by: Rhys Williams <me@rhyswilliams.co.za> Co-authored-by: Iván Ovejero <ivov.src@gmail.com> Co-authored-by: Luis Cipriani <37157+lfcipriani@users.noreply.github.com> Co-authored-by: Ketan Somvanshi <ketan.somvanshi@plivo.com>
This commit is contained in:
@@ -9,6 +9,7 @@ import {
|
||||
INodePropertyOptions,
|
||||
INodeType,
|
||||
INodeTypeDescription,
|
||||
JsonObject,
|
||||
NodeOperationError,
|
||||
} from 'n8n-workflow';
|
||||
|
||||
@@ -82,13 +83,49 @@ export class ServiceNow implements INodeType {
|
||||
{
|
||||
name: 'serviceNowOAuth2Api',
|
||||
required: true,
|
||||
displayOptions: {
|
||||
show: {
|
||||
authentication: [
|
||||
'oAuth2',
|
||||
],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'serviceNowBasicApi',
|
||||
required: true,
|
||||
displayOptions: {
|
||||
show: {
|
||||
authentication: [
|
||||
'basicAuth',
|
||||
],
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
properties: [
|
||||
{
|
||||
displayName: 'Authentication',
|
||||
name: 'authentication',
|
||||
type: 'options',
|
||||
options: [
|
||||
{
|
||||
name: 'Basic Auth',
|
||||
value: 'basicAuth',
|
||||
},
|
||||
{
|
||||
name: 'OAuth2',
|
||||
value: 'oAuth2',
|
||||
},
|
||||
],
|
||||
default: 'oAuth2',
|
||||
description: 'Authentication method to use',
|
||||
},
|
||||
{
|
||||
displayName: 'Resource',
|
||||
name: 'resource',
|
||||
type: 'options',
|
||||
noDataExpression: true,
|
||||
options: [
|
||||
{
|
||||
name: 'Business Service',
|
||||
@@ -427,7 +464,7 @@ export class ServiceNow implements INodeType {
|
||||
const returnAll = this.getNodeParameter('returnAll', i) as boolean;
|
||||
qs = this.getNodeParameter('options', i) as IDataObject;
|
||||
|
||||
if (qs.sysparm_fields) {
|
||||
if (qs.sysparm_fields && typeof qs.sysparm_fields !== 'string') {
|
||||
qs.sysparm_fields = (qs.sysparm_fields as string[]).join(',');
|
||||
}
|
||||
|
||||
@@ -448,7 +485,7 @@ export class ServiceNow implements INodeType {
|
||||
const returnAll = this.getNodeParameter('returnAll', i) as boolean;
|
||||
qs = this.getNodeParameter('options', i) as IDataObject;
|
||||
|
||||
if (qs.sysparm_fields) {
|
||||
if (qs.sysparm_fields && typeof qs.sysparm_fields !== 'string') {
|
||||
qs.sysparm_fields = (qs.sysparm_fields as string[]).join(',');
|
||||
}
|
||||
|
||||
@@ -469,7 +506,7 @@ export class ServiceNow implements INodeType {
|
||||
const returnAll = this.getNodeParameter('returnAll', i) as boolean;
|
||||
qs = this.getNodeParameter('options', i) as IDataObject;
|
||||
|
||||
if (qs.sysparm_fields) {
|
||||
if (qs.sysparm_fields && typeof qs.sysparm_fields !== 'string') {
|
||||
qs.sysparm_fields = (qs.sysparm_fields as string[]).join(',');
|
||||
}
|
||||
|
||||
@@ -490,7 +527,7 @@ export class ServiceNow implements INodeType {
|
||||
const returnAll = this.getNodeParameter('returnAll', i) as boolean;
|
||||
qs = this.getNodeParameter('options', i) as IDataObject;
|
||||
|
||||
if (qs.sysparm_fields) {
|
||||
if (qs.sysparm_fields && typeof qs.sysparm_fields !== 'string') {
|
||||
qs.sysparm_fields = (qs.sysparm_fields as string[]).join(',');
|
||||
}
|
||||
|
||||
@@ -529,7 +566,7 @@ export class ServiceNow implements INodeType {
|
||||
const id = this.getNodeParameter('id', i) as string;
|
||||
qs = this.getNodeParameter('options', i) as IDataObject;
|
||||
|
||||
if (qs.sysparm_fields) {
|
||||
if (qs.sysparm_fields && typeof qs.sysparm_fields !== 'string') {
|
||||
qs.sysparm_fields = (qs.sysparm_fields as string[]).join(',');
|
||||
}
|
||||
|
||||
@@ -541,7 +578,7 @@ export class ServiceNow implements INodeType {
|
||||
const returnAll = this.getNodeParameter('returnAll', i) as boolean;
|
||||
qs = this.getNodeParameter('options', i) as IDataObject;
|
||||
|
||||
if (qs.sysparm_fields) {
|
||||
if (qs.sysparm_fields && typeof qs.sysparm_fields !== 'string') {
|
||||
qs.sysparm_fields = (qs.sysparm_fields as string[]).join(',');
|
||||
}
|
||||
|
||||
@@ -604,7 +641,7 @@ export class ServiceNow implements INodeType {
|
||||
const id = this.getNodeParameter('id', i) as string;
|
||||
qs = this.getNodeParameter('options', i) as IDataObject;
|
||||
|
||||
if (qs.sysparm_fields) {
|
||||
if (qs.sysparm_fields && typeof qs.sysparm_fields !== 'string') {
|
||||
qs.sysparm_fields = (qs.sysparm_fields as string[]).join(',');
|
||||
}
|
||||
|
||||
@@ -617,7 +654,7 @@ export class ServiceNow implements INodeType {
|
||||
const returnAll = this.getNodeParameter('returnAll', i) as boolean;
|
||||
qs = this.getNodeParameter('options', i) as IDataObject;
|
||||
|
||||
if (qs.sysparm_fields) {
|
||||
if (qs.sysparm_fields && typeof qs.sysparm_fields !== 'string') {
|
||||
qs.sysparm_fields = (qs.sysparm_fields as string[]).join(',');
|
||||
}
|
||||
|
||||
@@ -679,7 +716,7 @@ export class ServiceNow implements INodeType {
|
||||
const getOption = this.getNodeParameter('getOption', i) as string;
|
||||
qs = this.getNodeParameter('options', i) as IDataObject;
|
||||
|
||||
if (qs.sysparm_fields) {
|
||||
if (qs.sysparm_fields && typeof qs.sysparm_fields !== 'string') {
|
||||
qs.sysparm_fields = (qs.sysparm_fields as string[]).join(',');
|
||||
}
|
||||
|
||||
@@ -700,7 +737,7 @@ export class ServiceNow implements INodeType {
|
||||
const returnAll = this.getNodeParameter('returnAll', i) as boolean;
|
||||
qs = this.getNodeParameter('options', i) as IDataObject;
|
||||
|
||||
if (qs.sysparm_fields) {
|
||||
if (qs.sysparm_fields && typeof qs.sysparm_fields !== 'string') {
|
||||
qs.sysparm_fields = (qs.sysparm_fields as string[]).join(',');
|
||||
}
|
||||
|
||||
@@ -730,7 +767,7 @@ export class ServiceNow implements INodeType {
|
||||
const returnAll = this.getNodeParameter('returnAll', i) as boolean;
|
||||
qs = this.getNodeParameter('options', i) as IDataObject;
|
||||
|
||||
if (qs.sysparm_fields) {
|
||||
if (qs.sysparm_fields && typeof qs.sysparm_fields !== 'string') {
|
||||
qs.sysparm_fields = (qs.sysparm_fields as string[]).join(',');
|
||||
}
|
||||
|
||||
@@ -751,7 +788,7 @@ export class ServiceNow implements INodeType {
|
||||
const returnAll = this.getNodeParameter('returnAll', i) as boolean;
|
||||
qs = this.getNodeParameter('options', i) as IDataObject;
|
||||
|
||||
if (qs.sysparm_fields) {
|
||||
if (qs.sysparm_fields && typeof qs.sysparm_fields !== 'string') {
|
||||
qs.sysparm_fields = (qs.sysparm_fields as string[]).join(',');
|
||||
}
|
||||
|
||||
@@ -771,7 +808,7 @@ export class ServiceNow implements INodeType {
|
||||
}
|
||||
} catch (error) {
|
||||
if (this.continueOnFail()) {
|
||||
returnData.push({ error: error.message });
|
||||
returnData.push({ error: (error as JsonObject).message });
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user