From 267c623060a186fefc865c5be43a78b8e640c75f Mon Sep 17 00:00:00 2001 From: bearbobs Date: Tue, 23 Nov 2021 12:30:33 +0530 Subject: [PATCH 01/73] Init Node --- .../credentials/SyncroMspAPI.credentials.ts | 24 ++++ .../nodes/SyncroMSP/SyncroMsp.node.ts | 28 +++++ .../nodes-base/nodes/SyncroMSP/syncromsp.png | Bin 0 -> 9746 bytes .../nodes/SyncroMSP/v1/SyncroMspV1.node.ts | 31 +++++ .../nodes/SyncroMSP/v1/actions/Interfaces.ts | 33 +++++ .../nodes/SyncroMSP/v1/actions/router.ts | 32 +++++ .../nodes/SyncroMSP/v1/actions/syncromsp.png | Bin 0 -> 9746 bytes .../v1/actions/user/getAll/description.ts | 119 ++++++++++++++++++ .../v1/actions/user/getAll/execute.ts | 98 +++++++++++++++ .../SyncroMSP/v1/actions/user/getAll/index.ts | 7 ++ .../nodes/SyncroMSP/v1/actions/user/index.ts | 60 +++++++++ .../v1/actions/versionDescription.ts | 44 +++++++ .../nodes/SyncroMSP/v1/syncromsp.png | Bin 0 -> 9746 bytes .../nodes/SyncroMSP/v1/transport/index.ts | 72 +++++++++++ packages/nodes-base/package.json | 2 + 15 files changed, 550 insertions(+) create mode 100644 packages/nodes-base/credentials/SyncroMspAPI.credentials.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/SyncroMsp.node.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/syncromsp.png create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/SyncroMspV1.node.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/syncromsp.png create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/user/getAll/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/user/getAll/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/user/getAll/index.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/user/index.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/syncromsp.png create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/transport/index.ts diff --git a/packages/nodes-base/credentials/SyncroMspAPI.credentials.ts b/packages/nodes-base/credentials/SyncroMspAPI.credentials.ts new file mode 100644 index 0000000000000..163d71788f623 --- /dev/null +++ b/packages/nodes-base/credentials/SyncroMspAPI.credentials.ts @@ -0,0 +1,24 @@ +import { + ICredentialType, + INodeProperties, +} from 'n8n-workflow'; + +export class SyncroMspApi implements ICredentialType { + name = 'syncroMspApi'; + displayName = 'SyncroMSP API'; + documentationUrl = 'syncromsp'; + properties: INodeProperties[] = [ + { + displayName: 'API Key', + name: 'apiKey', + type: 'string', + default: '', + }, + { + displayName: 'Sub-Domain', + name: 'subDomain', + type: 'string', + default: '', + }, + ]; +} diff --git a/packages/nodes-base/nodes/SyncroMSP/SyncroMsp.node.ts b/packages/nodes-base/nodes/SyncroMSP/SyncroMsp.node.ts new file mode 100644 index 0000000000000..ff3abff51d9dc --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/SyncroMsp.node.ts @@ -0,0 +1,28 @@ +import { + INodeTypeBaseDescription, + INodeVersionedType, +} from 'n8n-workflow'; + +import { NodeVersionedType } from '../../src/NodeVersionedType'; + +import { SyncroMspV1 } from './v1/SyncroMspV1.node'; + +export class SyncroMsp extends NodeVersionedType { + constructor() { + const baseDescription: INodeTypeBaseDescription = { + displayName: 'SyncroMSP', + name: 'syncromsp', + icon: 'file:syncromsp.png', + group: ['output'], + subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', + description: 'Gets data from SyncroMSP', + defaultVersion: 1, + }; + + const nodeVersions: INodeVersionedType['nodeVersions'] = { + 1: new SyncroMspV1(baseDescription), + }; + + super(nodeVersions, baseDescription); + } +} diff --git a/packages/nodes-base/nodes/SyncroMSP/syncromsp.png b/packages/nodes-base/nodes/SyncroMSP/syncromsp.png new file mode 100644 index 0000000000000000000000000000000000000000..8f54b6d4420aa2388ceeaeb3d538e70efb3611bd GIT binary patch literal 9746 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 M; + +export type MattermostChannel = Entity; +export type MattermostMessage = Entity; +export type MattermostReaction = Entity; +export type MattermostUser = Entity; + +export type ChannelProperties = PropertiesOf; +export type MessageProperties = PropertiesOf; +export type ReactionProperties = PropertiesOf; +export type UserProperties = PropertiesOf; + +export interface IAttachment { + fields: { + item?: object[]; + }; + actions: { + item?: object[]; + }; +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts new file mode 100644 index 0000000000000..1334471d219e7 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts @@ -0,0 +1,32 @@ +import { + IExecuteFunctions, +} from 'n8n-core'; + +import { + INodeExecutionData, +} from 'n8n-workflow'; + +import * as user from './user'; +import { Mattermost } from './Interfaces'; + +export async function router(this: IExecuteFunctions): Promise { + const items = this.getInputData(); + const operationResult: INodeExecutionData[] = []; + + for (let i = 0; i < items.length; i++) { + const resource = this.getNodeParameter('resource', i); + let operation = this.getNodeParameter('operation', i); + if (operation === 'del') { + operation = 'delete'; + } else if (operation === 'desactive') { + operation = 'deactive'; + } + + const mattermost = { + resource, + operation, + } as Mattermost; + } + + return operationResult; +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/syncromsp.png b/packages/nodes-base/nodes/SyncroMSP/v1/actions/syncromsp.png new file mode 100644 index 0000000000000000000000000000000000000000..8f54b6d4420aa2388ceeaeb3d538e70efb3611bd GIT binary patch literal 9746 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 M { + const returnAll = this.getNodeParameter('returnAll', index) as boolean; + const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + + const qs = {} as IDataObject; + const requestMethod = 'GET'; + const endpoint = '/users'; + const body = {} as IDataObject; + + if (additionalFields.inTeam) { + qs.in_team = additionalFields.inTeam; + } + + if (additionalFields.notInTeam) { + qs.not_in_team = additionalFields.notInTeam; + } + + if (additionalFields.inChannel) { + qs.in_channel = additionalFields.inChannel; + } + + if (additionalFields.notInChannel) { + qs.not_in_channel = additionalFields.notInChannel; + } + + if (additionalFields.sort) { + qs.sort = snakeCase(additionalFields.sort as string); + } + + const validRules = { + inTeam: ['last_activity_at', 'created_at', 'username'], + inChannel: ['status', 'username'], + }; + + if (additionalFields.sort) { + if (additionalFields.inTeam !== undefined || additionalFields.inChannel !== undefined) { + + if (additionalFields.inTeam !== undefined + && !validRules.inTeam.includes(snakeCase(additionalFields.sort as string))) { + throw new NodeOperationError(this.getNode(), `When In Team is set the only valid values for sorting are ${validRules.inTeam.join(',')}`); + } + if (additionalFields.inChannel !== undefined + && !validRules.inChannel.includes(snakeCase(additionalFields.sort as string))) { + throw new NodeOperationError(this.getNode(), `When In Channel is set the only valid values for sorting are ${validRules.inChannel.join(',')}`); + } + if (additionalFields.inChannel === '' + && additionalFields.sort !== 'username') { + throw new NodeOperationError(this.getNode(), 'When sort is different than username In Channel must be set'); + } + + if (additionalFields.inTeam === '' + && additionalFields.sort !== 'username') { + throw new NodeOperationError(this.getNode(), 'When sort is different than username In Team must be set'); + } + + } else { + throw new NodeOperationError(this.getNode(), `When sort is defined either 'in team' or 'in channel' must be defined`); + } + } + + if (additionalFields.sort === 'username') { + qs.sort = ''; + } + + if (returnAll === false) { + qs.per_page = this.getNodeParameter('limit', index) as number; + } + + + let responseData; + + if (returnAll) { + responseData = await apiRequestAllItems.call(this, requestMethod, endpoint, body, qs); + } else { + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + } + + return this.helpers.returnJsonArray(responseData); +} \ No newline at end of file diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/user/getAll/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/user/getAll/index.ts new file mode 100644 index 0000000000000..e1e1b5ddd627b --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/user/getAll/index.ts @@ -0,0 +1,7 @@ +import { getAll as execute } from './execute'; +import { userGetAllDescription as description } from './description'; + +export { + description, + execute, +}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/user/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/user/index.ts new file mode 100644 index 0000000000000..864db63c1c384 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/user/index.ts @@ -0,0 +1,60 @@ + +import * as getAll from './getAll'; + +import { INodeProperties } from 'n8n-workflow'; + +export { + getAll, +}; + + +export const descriptions = [ + { + displayName: 'Operation', + name: 'operation', + type: 'options', + displayOptions: { + show: { + resource: [ + 'user', + ], + }, + }, + options: [ + { + name: 'Create', + value: 'create', + description: 'Create a new user', + }, + { + name: 'Deactive', + value: 'deactive', + description: 'Deactivates the user and revokes all its sessions by archiving its user object.', + }, + { + name: 'Get All', + value: 'getAll', + description: 'Retrieve all users', + }, + { + name: 'Get By Email', + value: 'getByEmail', + description: 'Get a user by email', + }, + { + name: 'Get By ID', + value: 'getById', + description: 'Get a user by id', + }, + { + name: 'Invite', + value: 'invite', + description: 'Invite user to team', + }, + ], + default: '', + description: 'The operation to perform.', + }, + ...getAll.description, +] as INodeProperties[]; + diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts new file mode 100644 index 0000000000000..cc444824d3ce7 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts @@ -0,0 +1,44 @@ +import { + INodeProperties, + INodeTypeDescription, +} from 'n8n-workflow'; + +import * as user from './user'; + +export const versionDescription: INodeTypeDescription = { + displayName: 'SyncroMSP', + name: 'syncromsp', + icon: 'file:syncromsp.png', + group: ['output'], + version: 1, + subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', + description: 'Gets data from SyncroMSP', + defaults: { + name: 'SyncroMSP', + color: '#000000', + }, + inputs: ['main'], + outputs: ['main'], + credentials: [ + { + name: 'syncroMspApi', + required: true, + }, + ], + properties: [ + { + displayName: 'Resource', + name: 'resource', + type: 'options', + options: [ + { + name: 'Customer', + value: 'user', + }, + ], + default: 'user', + description: 'The resource to operate on', + }, + ...user.descriptions, + ], +}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/syncromsp.png b/packages/nodes-base/nodes/SyncroMSP/v1/syncromsp.png new file mode 100644 index 0000000000000000000000000000000000000000..8f54b6d4420aa2388ceeaeb3d538e70efb3611bd GIT binary patch literal 9746 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 M Date: Tue, 23 Nov 2021 15:28:59 +0530 Subject: [PATCH 02/73] Added get customer details api for syncomsp-node --- .../nodes/SyncroMSP/v1/actions/Interfaces.ts | 19 +-- .../v1/actions/customer/getAll/description.ts | 39 ++++++ .../v1/actions/customer/getAll/execute.ts | 31 +++++ .../{user => customer}/getAll/index.ts | 2 +- .../SyncroMSP/v1/actions/customer/index.ts | 35 ++++++ .../nodes/SyncroMSP/v1/actions/router.ts | 22 +++- .../v1/actions/user/getAll/description.ts | 119 ------------------ .../v1/actions/user/getAll/execute.ts | 98 --------------- .../nodes/SyncroMSP/v1/actions/user/index.ts | 60 --------- .../v1/actions/versionDescription.ts | 8 +- .../nodes/SyncroMSP/v1/transport/index.ts | 34 +---- 11 files changed, 136 insertions(+), 331 deletions(-) create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts rename packages/nodes-base/nodes/SyncroMSP/v1/actions/{user => customer}/getAll/index.ts (53%) create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts delete mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/user/getAll/description.ts delete mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/user/getAll/execute.ts delete mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/user/index.ts diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts index b9d6dd7efa3bc..44594ccbe4183 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts @@ -4,24 +4,15 @@ import { PropertiesOf, } from 'n8n-workflow'; -type MattermostMap = { - channel: 'addUser' | 'create' | 'delete' | 'members' | 'restore' | 'statistics'; - message: 'delete' | 'post' | 'postEphemeral'; - reaction: 'create' | 'delete' | 'getAll'; - user: 'create' | 'deactive' | 'getAll' | 'getByEmail' | 'getById' | 'invite'; +type SyncroMspMap = { + customer: 'getAll'; }; -export type Mattermost = AllEntities; +export type SyncroMsp = AllEntities; -export type MattermostChannel = Entity; -export type MattermostMessage = Entity; -export type MattermostReaction = Entity; -export type MattermostUser = Entity; +export type SyncroMspMapCustomer = Entity; -export type ChannelProperties = PropertiesOf; -export type MessageProperties = PropertiesOf; -export type ReactionProperties = PropertiesOf; -export type UserProperties = PropertiesOf; +export type CustomerProperties = PropertiesOf; export interface IAttachment { fields: { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts new file mode 100644 index 0000000000000..c2bf36cb08ec3 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts @@ -0,0 +1,39 @@ +import { + CustomerProperties, +} from '../../Interfaces'; + +export const customerGetAllDescription: CustomerProperties = [ + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + displayOptions: { + show: { + resource: [ + 'customer', + ], + operation: [ + 'getAll', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'Query', + name: 'query', + type: 'string', + default: '', + description: 'Search query', + }, + { + displayName: 'Page', + name: 'page', + type: 'number', + default: 25, + description: 'Returns provided page of results, each page contains 25 results', + }, + ], + }, +]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts new file mode 100644 index 0000000000000..7a244d9c8b3ae --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts @@ -0,0 +1,31 @@ +import { + IExecuteFunctions, +} from 'n8n-core'; + +import { + IDataObject, + INodeExecutionData, +} from 'n8n-workflow'; + +import { + apiRequest, +} from '../../../transport'; + + +export async function getAll(this: IExecuteFunctions, index: number): Promise { + const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + + let qs = {} as IDataObject; + const requestMethod = 'GET'; + const endpoint = 'customers'; + const body = {} as IDataObject; + + if (additionalFields) { + qs = additionalFields; + } + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + + return this.helpers.returnJsonArray(responseData.customers); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/user/getAll/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/index.ts similarity index 53% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/user/getAll/index.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/index.ts index e1e1b5ddd627b..0c41710eb56f7 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/user/getAll/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/index.ts @@ -1,5 +1,5 @@ import { getAll as execute } from './execute'; -import { userGetAllDescription as description } from './description'; +import { customerGetAllDescription as description } from './description'; export { description, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts new file mode 100644 index 0000000000000..33f56b43dcfcf --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts @@ -0,0 +1,35 @@ + +import * as getAll from './getAll'; + +import { INodeProperties } from 'n8n-workflow'; + +export { + getAll, +}; + + +export const descriptions = [ + { + displayName: 'Operation', + name: 'operation', + type: 'options', + displayOptions: { + show: { + resource: [ + 'customer', + ], + }, + }, + options: [ + { + name: 'Get All Customers', + value: 'getAll', + description: 'Retrieve all customers', + }, + ], + default: '', + description: 'The operation to perform.', + }, + ...getAll.description, +] as INodeProperties[]; + diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts index 1334471d219e7..7dc71bd4ebe99 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts @@ -6,15 +6,15 @@ import { INodeExecutionData, } from 'n8n-workflow'; -import * as user from './user'; -import { Mattermost } from './Interfaces'; +import * as customer from './customer'; +import { SyncroMsp } from './Interfaces'; export async function router(this: IExecuteFunctions): Promise { const items = this.getInputData(); const operationResult: INodeExecutionData[] = []; for (let i = 0; i < items.length; i++) { - const resource = this.getNodeParameter('resource', i); + const resource = this.getNodeParameter('resource', i); let operation = this.getNodeParameter('operation', i); if (operation === 'del') { operation = 'delete'; @@ -22,10 +22,22 @@ export async function router(this: IExecuteFunctions): Promise { - const returnAll = this.getNodeParameter('returnAll', index) as boolean; - const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; - - const qs = {} as IDataObject; - const requestMethod = 'GET'; - const endpoint = '/users'; - const body = {} as IDataObject; - - if (additionalFields.inTeam) { - qs.in_team = additionalFields.inTeam; - } - - if (additionalFields.notInTeam) { - qs.not_in_team = additionalFields.notInTeam; - } - - if (additionalFields.inChannel) { - qs.in_channel = additionalFields.inChannel; - } - - if (additionalFields.notInChannel) { - qs.not_in_channel = additionalFields.notInChannel; - } - - if (additionalFields.sort) { - qs.sort = snakeCase(additionalFields.sort as string); - } - - const validRules = { - inTeam: ['last_activity_at', 'created_at', 'username'], - inChannel: ['status', 'username'], - }; - - if (additionalFields.sort) { - if (additionalFields.inTeam !== undefined || additionalFields.inChannel !== undefined) { - - if (additionalFields.inTeam !== undefined - && !validRules.inTeam.includes(snakeCase(additionalFields.sort as string))) { - throw new NodeOperationError(this.getNode(), `When In Team is set the only valid values for sorting are ${validRules.inTeam.join(',')}`); - } - if (additionalFields.inChannel !== undefined - && !validRules.inChannel.includes(snakeCase(additionalFields.sort as string))) { - throw new NodeOperationError(this.getNode(), `When In Channel is set the only valid values for sorting are ${validRules.inChannel.join(',')}`); - } - if (additionalFields.inChannel === '' - && additionalFields.sort !== 'username') { - throw new NodeOperationError(this.getNode(), 'When sort is different than username In Channel must be set'); - } - - if (additionalFields.inTeam === '' - && additionalFields.sort !== 'username') { - throw new NodeOperationError(this.getNode(), 'When sort is different than username In Team must be set'); - } - - } else { - throw new NodeOperationError(this.getNode(), `When sort is defined either 'in team' or 'in channel' must be defined`); - } - } - - if (additionalFields.sort === 'username') { - qs.sort = ''; - } - - if (returnAll === false) { - qs.per_page = this.getNodeParameter('limit', index) as number; - } - - - let responseData; - - if (returnAll) { - responseData = await apiRequestAllItems.call(this, requestMethod, endpoint, body, qs); - } else { - responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); - } - - return this.helpers.returnJsonArray(responseData); -} \ No newline at end of file diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/user/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/user/index.ts deleted file mode 100644 index 864db63c1c384..0000000000000 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/user/index.ts +++ /dev/null @@ -1,60 +0,0 @@ - -import * as getAll from './getAll'; - -import { INodeProperties } from 'n8n-workflow'; - -export { - getAll, -}; - - -export const descriptions = [ - { - displayName: 'Operation', - name: 'operation', - type: 'options', - displayOptions: { - show: { - resource: [ - 'user', - ], - }, - }, - options: [ - { - name: 'Create', - value: 'create', - description: 'Create a new user', - }, - { - name: 'Deactive', - value: 'deactive', - description: 'Deactivates the user and revokes all its sessions by archiving its user object.', - }, - { - name: 'Get All', - value: 'getAll', - description: 'Retrieve all users', - }, - { - name: 'Get By Email', - value: 'getByEmail', - description: 'Get a user by email', - }, - { - name: 'Get By ID', - value: 'getById', - description: 'Get a user by id', - }, - { - name: 'Invite', - value: 'invite', - description: 'Invite user to team', - }, - ], - default: '', - description: 'The operation to perform.', - }, - ...getAll.description, -] as INodeProperties[]; - diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts index cc444824d3ce7..217de1f93bc7c 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts @@ -3,7 +3,7 @@ import { INodeTypeDescription, } from 'n8n-workflow'; -import * as user from './user'; +import * as customer from './customer'; export const versionDescription: INodeTypeDescription = { displayName: 'SyncroMSP', @@ -33,12 +33,12 @@ export const versionDescription: INodeTypeDescription = { options: [ { name: 'Customer', - value: 'user', + value: 'customer', }, ], - default: 'user', + default: 'customer', description: 'The resource to operate on', }, - ...user.descriptions, + ...customer.descriptions, ], }; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/transport/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/transport/index.ts index 834005b10fc4f..ef070281b5235 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/transport/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/transport/index.ts @@ -28,15 +28,14 @@ export async function apiRequest( throw new NodeOperationError(this.getNode(), 'No credentials returned!'); } + query['api_key']=credentials.apiKey + const options: IHttpRequestOptions = { method, body, qs: query, - url: `${credentials.baseUrl}/api/v1/${endpoint}`, - headers: { - authorization: `Bearer ${credentials.accessToken}`, - 'content-type': 'application/json; charset=utf-8', - }, + url: `https://${credentials.subDomain}.syncromsp.com/api/v1/${endpoint}`, + headers: {}, }; try { @@ -45,28 +44,3 @@ export async function apiRequest( throw new NodeApiError(this.getNode(), error); } } - -export async function apiRequestAllItems( - this: IExecuteFunctions | ILoadOptionsFunctions, - method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'HEAD', - endpoint: string, - body: IDataObject = {}, - query: IDataObject = {}, -) { - - const returnData: IDataObject[] = []; - - let responseData; - query.page = 0; - query.per_page = 100; - - do { - responseData = await apiRequest.call(this, method, endpoint, body, query); - query.page++; - returnData.push.apply(returnData, responseData); - } while ( - responseData.length !== 0 - ); - - return returnData; -} From 84360a37ffc173b2966e7d8365420279c8abc1c7 Mon Sep 17 00:00:00 2001 From: bearbobs Date: Tue, 23 Nov 2021 15:37:31 +0530 Subject: [PATCH 03/73] Fixed formatting bug :bug: --- packages/nodes-base/nodes/SyncroMSP/v1/transport/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/transport/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/transport/index.ts index ef070281b5235..349c768379e7f 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/transport/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/transport/index.ts @@ -28,7 +28,7 @@ export async function apiRequest( throw new NodeOperationError(this.getNode(), 'No credentials returned!'); } - query['api_key']=credentials.apiKey + query['api_key']=credentials.apiKey; const options: IHttpRequestOptions = { method, From 15d0d02363768aa9c10b25d7ed3c7a5ef3ce50c9 Mon Sep 17 00:00:00 2001 From: bearbobs Date: Wed, 24 Nov 2021 11:02:22 +0530 Subject: [PATCH 04/73] Updated description for query params, and removed redundant condition in router --- .../nodes/SyncroMSP/v1/actions/customer/getAll/description.ts | 2 +- packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts index c2bf36cb08ec3..84c4532474fe3 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts @@ -25,7 +25,7 @@ export const customerGetAllDescription: CustomerProperties = [ name: 'query', type: 'string', default: '', - description: 'Search query', + description: 'Search query, it can be anything related to customer data like name etc.', }, { displayName: 'Page', diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts index 7dc71bd4ebe99..7087916a5a58d 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts @@ -18,8 +18,6 @@ export async function router(this: IExecuteFunctions): Promise Date: Wed, 24 Nov 2021 11:03:12 +0530 Subject: [PATCH 05/73] Changed default value for page parameter --- .../nodes/SyncroMSP/v1/actions/customer/getAll/description.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts index 84c4532474fe3..4e7ff2f1a0c51 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts @@ -31,7 +31,7 @@ export const customerGetAllDescription: CustomerProperties = [ displayName: 'Page', name: 'page', type: 'number', - default: 25, + default: 1, description: 'Returns provided page of results, each page contains 25 results', }, ], From 5337f1b2410b06fc78a54a4d4adfd88e9e3ef8fa Mon Sep 17 00:00:00 2001 From: bearbobs Date: Wed, 24 Nov 2021 14:17:43 +0530 Subject: [PATCH 06/73] :ship: Added tickets API --- .../nodes/SyncroMSP/v1/actions/Interfaces.ts | 3 ++ .../nodes/SyncroMSP/v1/actions/router.ts | 3 ++ .../v1/actions/ticket/getAll/description.ts | 39 +++++++++++++++++++ .../v1/actions/ticket/getAll/execute.ts | 31 +++++++++++++++ .../v1/actions/ticket/getAll/index.ts | 7 ++++ .../SyncroMSP/v1/actions/ticket/index.ts | 35 +++++++++++++++++ .../v1/actions/versionDescription.ts | 6 +++ 7 files changed, 124 insertions(+) create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/index.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/index.ts diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts index 44594ccbe4183..8a90ef8f41ad6 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts @@ -6,13 +6,16 @@ import { type SyncroMspMap = { customer: 'getAll'; + ticket: 'getAll'; }; export type SyncroMsp = AllEntities; export type SyncroMspMapCustomer = Entity; +export type SyncroMspMapTicket = Entity; export type CustomerProperties = PropertiesOf; +export type TicketProperties = PropertiesOf; export interface IAttachment { fields: { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts index 7087916a5a58d..52efd81c3c242 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts @@ -7,6 +7,7 @@ import { } from 'n8n-workflow'; import * as customer from './customer'; +import * as ticket from './ticket'; import { SyncroMsp } from './Interfaces'; export async function router(this: IExecuteFunctions): Promise { @@ -28,6 +29,8 @@ export async function router(this: IExecuteFunctions): Promise { + const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + + let qs = {} as IDataObject; + const requestMethod = 'GET'; + const endpoint = 'tickets'; + const body = {} as IDataObject; + + if (additionalFields) { + qs = additionalFields; + } + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + + return this.helpers.returnJsonArray(responseData.tickets); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/index.ts new file mode 100644 index 0000000000000..3a74352f14efe --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/index.ts @@ -0,0 +1,7 @@ +import { getAll as execute } from './execute'; +import { ticketGetAllDescription as description } from './description'; + +export { + description, + execute, +}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/index.ts new file mode 100644 index 0000000000000..f5f5025b3e00b --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/index.ts @@ -0,0 +1,35 @@ + +import * as getAll from './getAll'; + +import { INodeProperties } from 'n8n-workflow'; + +export { + getAll, +}; + + +export const descriptions = [ + { + displayName: 'Operation', + name: 'operation', + type: 'options', + displayOptions: { + show: { + resource: [ + 'ticket', + ], + }, + }, + options: [ + { + name: 'Get All Tickets', + value: 'getAll', + description: 'Retrieve all tickets', + }, + ], + default: '', + description: 'The operation to perform.', + }, + ...getAll.description, +] as INodeProperties[]; + diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts index 217de1f93bc7c..dd33c0a00db37 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts @@ -4,6 +4,7 @@ import { } from 'n8n-workflow'; import * as customer from './customer'; +import * as ticket from './ticket'; export const versionDescription: INodeTypeDescription = { displayName: 'SyncroMSP', @@ -35,10 +36,15 @@ export const versionDescription: INodeTypeDescription = { name: 'Customer', value: 'customer', }, + { + name: 'Ticket', + value: 'ticket', + }, ], default: 'customer', description: 'The resource to operate on', }, ...customer.descriptions, + ...ticket.descriptions, ], }; From ad4ed8e4adf5d93b707647f90edf626a5b8456a0 Mon Sep 17 00:00:00 2001 From: bearbobs Date: Wed, 24 Nov 2021 17:03:18 +0530 Subject: [PATCH 07/73] :ship: Added contacts API --- .../nodes/SyncroMSP/v1/actions/Interfaces.ts | 3 ++ .../v1/actions/contact/getAll/description.ts | 39 +++++++++++++++++++ .../v1/actions/contact/getAll/execute.ts | 31 +++++++++++++++ .../v1/actions/contact/getAll/index.ts | 7 ++++ .../SyncroMSP/v1/actions/contact/index.ts | 35 +++++++++++++++++ .../nodes/SyncroMSP/v1/actions/router.ts | 3 ++ .../v1/actions/versionDescription.ts | 6 +++ 7 files changed, 124 insertions(+) create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/index.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts index 8a90ef8f41ad6..b9bb098d1210d 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts @@ -7,15 +7,18 @@ import { type SyncroMspMap = { customer: 'getAll'; ticket: 'getAll'; + contact: 'getAll'; }; export type SyncroMsp = AllEntities; export type SyncroMspMapCustomer = Entity; export type SyncroMspMapTicket = Entity; +export type SyncroMspMapContact = Entity; export type CustomerProperties = PropertiesOf; export type TicketProperties = PropertiesOf; +export type ContactProperties = PropertiesOf; export interface IAttachment { fields: { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts new file mode 100644 index 0000000000000..913ae23d5842b --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts @@ -0,0 +1,39 @@ +import { + ContactProperties, +} from '../../Interfaces'; + +export const contactGetAllDescription: ContactProperties = [ + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + displayOptions: { + show: { + resource: [ + 'contact', + ], + operation: [ + 'getAll', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'Query', + name: 'query', + type: 'string', + default: '', + description: 'Search query, it can be anything related to contact data like name etc.', + }, + { + displayName: 'Page', + name: 'page', + type: 'number', + default: 1, + description: 'Returns provided page of results, each page contains 25 results', + }, + ], + }, +]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/execute.ts new file mode 100644 index 0000000000000..d8441c9f96c16 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/execute.ts @@ -0,0 +1,31 @@ +import { + IExecuteFunctions, +} from 'n8n-core'; + +import { + IDataObject, + INodeExecutionData, +} from 'n8n-workflow'; + +import { + apiRequest, +} from '../../../transport'; + + +export async function getAll(this: IExecuteFunctions, index: number): Promise { + const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + + let qs = {} as IDataObject; + const requestMethod = 'GET'; + const endpoint = 'contacts'; + const body = {} as IDataObject; + + if (additionalFields) { + qs = additionalFields; + } + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + + return this.helpers.returnJsonArray(responseData.contacts); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/index.ts new file mode 100644 index 0000000000000..5bfeb146b63e9 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/index.ts @@ -0,0 +1,7 @@ +import { getAll as execute } from './execute'; +import { contactGetAllDescription as description } from './description'; + +export { + description, + execute, +}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts new file mode 100644 index 0000000000000..77d53ae78b8f4 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts @@ -0,0 +1,35 @@ + +import * as getAll from './getAll'; + +import { INodeProperties } from 'n8n-workflow'; + +export { + getAll, +}; + + +export const descriptions = [ + { + displayName: 'Operation', + name: 'operation', + type: 'options', + displayOptions: { + show: { + resource: [ + 'contact', + ], + }, + }, + options: [ + { + name: 'Get All Contacts', + value: 'getAll', + description: 'Retrieve all contacts', + }, + ], + default: '', + description: 'The operation to perform.', + }, + ...getAll.description, +] as INodeProperties[]; + diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts index 52efd81c3c242..b7fd87d1d88e9 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts @@ -8,6 +8,7 @@ import { import * as customer from './customer'; import * as ticket from './ticket'; +import * as contact from './contact'; import { SyncroMsp } from './Interfaces'; export async function router(this: IExecuteFunctions): Promise { @@ -31,6 +32,8 @@ export async function router(this: IExecuteFunctions): Promise Date: Wed, 24 Nov 2021 17:22:52 +0530 Subject: [PATCH 08/73] :ship: Added RMM Alerts API --- .../nodes/SyncroMSP/v1/actions/Interfaces.ts | 3 ++ .../v1/actions/rmm/getAlerts/description.ts | 39 +++++++++++++++++++ .../v1/actions/rmm/getAlerts/execute.ts | 31 +++++++++++++++ .../v1/actions/rmm/getAlerts/index.ts | 7 ++++ .../nodes/SyncroMSP/v1/actions/rmm/index.ts | 35 +++++++++++++++++ .../nodes/SyncroMSP/v1/actions/router.ts | 4 ++ .../v1/actions/versionDescription.ts | 6 +++ 7 files changed, 125 insertions(+) create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/index.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/index.ts diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts index b9bb098d1210d..2a57af5d07116 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts @@ -8,6 +8,7 @@ type SyncroMspMap = { customer: 'getAll'; ticket: 'getAll'; contact: 'getAll'; + rmm: 'getAlerts'; }; export type SyncroMsp = AllEntities; @@ -15,10 +16,12 @@ export type SyncroMsp = AllEntities; export type SyncroMspMapCustomer = Entity; export type SyncroMspMapTicket = Entity; export type SyncroMspMapContact = Entity; +export type SyncroMspMapRmm = Entity; export type CustomerProperties = PropertiesOf; export type TicketProperties = PropertiesOf; export type ContactProperties = PropertiesOf; +export type RmmProperties = PropertiesOf; export interface IAttachment { fields: { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/description.ts new file mode 100644 index 0000000000000..ed4e20427d4df --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/description.ts @@ -0,0 +1,39 @@ +import { + RmmProperties, +} from '../../Interfaces'; + +export const rmmGetAllDescription: RmmProperties = [ + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + displayOptions: { + show: { + resource: [ + 'rmm', + ], + operation: [ + 'getAlerts', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'Status', + name: 'status', + type: 'string', + default: '', + description: 'Possible values resolved, all, active.', + }, + { + displayName: 'Page', + name: 'page', + type: 'number', + default: 1, + description: 'Returns provided page of results, each page contains 25 results', + }, + ], + }, +]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/execute.ts new file mode 100644 index 0000000000000..e8b33d740d395 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/execute.ts @@ -0,0 +1,31 @@ +import { + IExecuteFunctions, +} from 'n8n-core'; + +import { + IDataObject, + INodeExecutionData, +} from 'n8n-workflow'; + +import { + apiRequest, +} from '../../../transport'; + + +export async function getAll(this: IExecuteFunctions, index: number): Promise { + const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + + let qs = {} as IDataObject; + const requestMethod = 'GET'; + const endpoint = 'rmm_alerts'; + const body = {} as IDataObject; + + if (additionalFields) { + qs = additionalFields; + } + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + + return this.helpers.returnJsonArray(responseData.rmm_alerts); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/index.ts new file mode 100644 index 0000000000000..473b83575632a --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/index.ts @@ -0,0 +1,7 @@ +import { getAll as execute } from './execute'; +import { rmmGetAllDescription as description } from './description'; + +export { + description, + execute, +}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/index.ts new file mode 100644 index 0000000000000..f04aad9fa7c36 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/index.ts @@ -0,0 +1,35 @@ + +import * as getAlerts from './getAlerts'; + +import { INodeProperties } from 'n8n-workflow'; + +export { + getAlerts, +}; + + +export const descriptions = [ + { + displayName: 'Operation', + name: 'operation', + type: 'options', + displayOptions: { + show: { + resource: [ + 'rmm', + ], + }, + }, + options: [ + { + name: 'Get RMM Alerts', + value: 'getAlerts', + description: 'Retrieve RMM Alerts', + }, + ], + default: '', + description: 'The operation to perform.', + }, + ...getAlerts.description, +] as INodeProperties[]; + diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts index b7fd87d1d88e9..60e930084fb64 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts @@ -9,6 +9,8 @@ import { import * as customer from './customer'; import * as ticket from './ticket'; import * as contact from './contact'; +import * as rmm from './rmm'; + import { SyncroMsp } from './Interfaces'; export async function router(this: IExecuteFunctions): Promise { @@ -34,6 +36,8 @@ export async function router(this: IExecuteFunctions): Promise Date: Wed, 24 Nov 2021 20:15:52 +0530 Subject: [PATCH 09/73] Add customer API --- .../nodes/SyncroMSP/v1/actions/Interfaces.ts | 2 +- .../customer/addCustomer/description.ts | 39 +++++++++++++++++++ .../actions/customer/addCustomer/execute.ts | 31 +++++++++++++++ .../v1/actions/customer/addCustomer/index.ts | 7 ++++ .../SyncroMSP/v1/actions/customer/index.ts | 5 +++ 5 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/index.ts diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts index 2a57af5d07116..4cdfec0b963fb 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts @@ -5,7 +5,7 @@ import { } from 'n8n-workflow'; type SyncroMspMap = { - customer: 'getAll'; + customer: 'getAll'|'addCustomer'; ticket: 'getAll'; contact: 'getAll'; rmm: 'getAlerts'; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/description.ts new file mode 100644 index 0000000000000..70c251ab16c29 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/description.ts @@ -0,0 +1,39 @@ +import { + CustomerProperties, +} from '../../Interfaces'; + +export const customerAddCustomerDescription: CustomerProperties = [ + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + displayOptions: { + show: { + resource: [ + 'customer', + ], + operation: [ + 'addCustomer', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'Query', + name: 'query', + type: 'string', + default: '', + description: 'Search query, it can be anything related to customer data like name etc.', + }, + { + displayName: 'Page', + name: 'page', + type: 'number', + default: 1, + description: 'Returns provided page of results, each page contains 25 results', + }, + ], + }, +]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/execute.ts new file mode 100644 index 0000000000000..525c1735171f1 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/execute.ts @@ -0,0 +1,31 @@ +import { + IExecuteFunctions, +} from 'n8n-core'; + +import { + IDataObject, + INodeExecutionData, +} from 'n8n-workflow'; + +import { + apiRequest, +} from '../../../transport'; + + +export async function getAll(this: IExecuteFunctions, index: number): Promise { + const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + + let qs = {} as IDataObject; + const requestMethod = 'POST'; + const endpoint = 'customers'; + let body = {} as IDataObject; + + if (additionalFields) { + body = additionalFields; + } + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + + return this.helpers.returnJsonArray(responseData.customers); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/index.ts new file mode 100644 index 0000000000000..ebf275ba5c538 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/index.ts @@ -0,0 +1,7 @@ +import { getAll as execute } from './execute'; +import { customerAddCustomerDescription as description } from './description'; + +export { + description, + execute, +}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts index 33f56b43dcfcf..429ae39edbcaf 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts @@ -26,6 +26,11 @@ export const descriptions = [ value: 'getAll', description: 'Retrieve all customers', }, + { + name: 'Add Customer', + value: 'addCustomer', + description: 'add new customers', + }, ], default: '', description: 'The operation to perform.', From f65e832e2a18c701d3342d4c8e4ff0903154da08 Mon Sep 17 00:00:00 2001 From: bearbobs Date: Thu, 25 Nov 2021 09:26:12 +0530 Subject: [PATCH 10/73] Updates post code review --- .../v1/actions/contact/getAll/description.ts | 27 ++++++++++++++++++- .../v1/actions/contact/getAll/execute.ts | 13 ++++++--- .../SyncroMSP/v1/actions/contact/index.ts | 2 +- .../v1/actions/customer/getAll/description.ts | 27 ++++++++++++++++++- .../v1/actions/customer/getAll/execute.ts | 13 ++++++--- .../SyncroMSP/v1/actions/customer/index.ts | 2 +- .../v1/actions/rmm/getAlerts/description.ts | 25 +++++++++++++++++ .../v1/actions/rmm/getAlerts/execute.ts | 13 ++++++--- .../nodes/SyncroMSP/v1/actions/rmm/index.ts | 2 +- .../v1/actions/ticket/getAll/description.ts | 27 ++++++++++++++++++- .../v1/actions/ticket/getAll/execute.ts | 13 ++++++--- .../SyncroMSP/v1/actions/ticket/index.ts | 2 +- .../nodes/SyncroMSP/v1/transport/index.ts | 23 ++++++++++++++++ 13 files changed, 166 insertions(+), 23 deletions(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts index 913ae23d5842b..dbdcf98871485 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts @@ -3,6 +3,23 @@ import { } from '../../Interfaces'; export const contactGetAllDescription: ContactProperties = [ + { + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', + displayOptions: { + show: { + resource: [ + 'contact', + ], + operation: [ + 'getAll', + ], + }, + }, + default: false, + description: 'If all results should be returned or only up to a given limit.', + }, { displayName: 'Additional Fields', name: 'additionalFields', @@ -21,12 +38,20 @@ export const contactGetAllDescription: ContactProperties = [ default: {}, options: [ { - displayName: 'Query', + displayName: 'Search Query', name: 'query', type: 'string', default: '', + placeholder: 'John Doe', description: 'Search query, it can be anything related to contact data like name etc.', }, + { + displayName: 'Limit', + name: 'per_page', + type: 'number', + default: 25, + description: 'limit the number of rows returned', + }, { displayName: 'Page', name: 'page', diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/execute.ts index d8441c9f96c16..329982c7276fd 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/execute.ts @@ -8,11 +8,12 @@ import { } from 'n8n-workflow'; import { - apiRequest, + apiRequest, apiRequestAllItems } from '../../../transport'; export async function getAll(this: IExecuteFunctions, index: number): Promise { + const returnAll = this.getNodeParameter('returnAll', index) as boolean; const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; let qs = {} as IDataObject; @@ -25,7 +26,11 @@ export async function getAll(this: IExecuteFunctions, index: number): Promise { + const returnAll = this.getNodeParameter('returnAll', index) as boolean; const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; let qs = {} as IDataObject; @@ -25,7 +26,11 @@ export async function getAll(this: IExecuteFunctions, index: number): Promise { + const returnAll = this.getNodeParameter('returnAll', index) as boolean; const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; let qs = {} as IDataObject; @@ -25,7 +26,11 @@ export async function getAll(this: IExecuteFunctions, index: number): Promise { + const returnAll = this.getNodeParameter('returnAll', index) as boolean; const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; let qs = {} as IDataObject; @@ -25,7 +26,11 @@ export async function getAll(this: IExecuteFunctions, index: number): Promise Date: Thu, 25 Nov 2021 09:29:53 +0530 Subject: [PATCH 11/73] Rename SyncroMspAPI.credentials.ts to SyncroMspApi.credentials.ts --- .../{SyncroMspAPI.credentials.ts => SyncroMspApi.credentials.ts} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename packages/nodes-base/credentials/{SyncroMspAPI.credentials.ts => SyncroMspApi.credentials.ts} (100%) diff --git a/packages/nodes-base/credentials/SyncroMspAPI.credentials.ts b/packages/nodes-base/credentials/SyncroMspApi.credentials.ts similarity index 100% rename from packages/nodes-base/credentials/SyncroMspAPI.credentials.ts rename to packages/nodes-base/credentials/SyncroMspApi.credentials.ts From 423b9acc2adcbb630d68a4ff4aa2a7f65e0a5a7f Mon Sep 17 00:00:00 2001 From: bearbobs Date: Thu, 25 Nov 2021 14:03:04 +0530 Subject: [PATCH 12/73] added create and delete method to customers module --- .../nodes/SyncroMSP/v1/actions/Interfaces.ts | 2 +- .../customer/addCustomer/description.ts | 96 +++++++++++++++++-- .../actions/customer/addCustomer/execute.ts | 11 ++- .../v1/actions/customer/getAll/description.ts | 17 ++++ .../v1/actions/customer/getAll/execute.ts | 5 +- .../SyncroMSP/v1/actions/customer/index.ts | 13 ++- 6 files changed, 132 insertions(+), 12 deletions(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts index 4cdfec0b963fb..91fc7653f8a9f 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts @@ -5,7 +5,7 @@ import { } from 'n8n-workflow'; type SyncroMspMap = { - customer: 'getAll'|'addCustomer'; + customer: 'getAll' | 'addCustomer' | 'deleteCustomer'; ticket: 'getAll'; contact: 'getAll'; rmm: 'getAlerts'; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/description.ts index 70c251ab16c29..392b7a19fae18 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/description.ts @@ -3,6 +3,70 @@ import { } from '../../Interfaces'; export const customerAddCustomerDescription: CustomerProperties = [ + { + displayName: 'First Name', + name: 'firstname', + type: 'string', + displayOptions: { + show: { + resource: [ + 'customer', + ], + operation: [ + 'addCustomer', + ], + }, + }, + default: '', + }, + { + displayName: 'Last Name', + name: 'lastname', + type: 'string', + displayOptions: { + show: { + resource: [ + 'customer', + ], + operation: [ + 'addCustomer', + ], + }, + }, + default: '', + }, + { + displayName: 'Business Name', + name: 'business_name', + type: 'string', + displayOptions: { + show: { + resource: [ + 'customer', + ], + operation: [ + 'addCustomer', + ], + }, + }, + default: '', + }, + { + displayName: 'Email', + name: 'email', + type: 'string', + displayOptions: { + show: { + resource: [ + 'customer', + ], + operation: [ + 'addCustomer', + ], + }, + }, + default: '', + }, { displayName: 'Additional Fields', name: 'additionalFields', @@ -21,18 +85,34 @@ export const customerAddCustomerDescription: CustomerProperties = [ default: {}, options: [ { - displayName: 'Query', - name: 'query', + displayName: 'Phone', + name: 'phone', + type: 'string', + default: '', + }, + { + displayName: 'Address', + name: 'address', type: 'string', default: '', - description: 'Search query, it can be anything related to customer data like name etc.', }, { - displayName: 'Page', - name: 'page', - type: 'number', - default: 1, - description: 'Returns provided page of results, each page contains 25 results', + displayName: 'City', + name: 'city', + type: 'string', + default: '', + }, + { + displayName: 'State', + name: 'state', + type: 'string', + default: '', + }, + { + displayName: 'ZIP', + name: 'zip', + type: 'string', + default: '', }, ], }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/execute.ts index 525c1735171f1..230f7603e8386 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/execute.ts @@ -13,6 +13,10 @@ import { export async function getAll(this: IExecuteFunctions, index: number): Promise { + const firstname = this.getNodeParameter('firstname', index) as IDataObject; + const lastname = this.getNodeParameter('lastname', index) as IDataObject; + const email = this.getNodeParameter('email', index) as IDataObject; + const business_name = this.getNodeParameter('business_name', index) as IDataObject; const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; let qs = {} as IDataObject; @@ -24,8 +28,13 @@ export async function getAll(this: IExecuteFunctions, index: number): Promise { + const id = this.getNodeParameter('id', index) as string; const returnAll = this.getNodeParameter('returnAll', index) as boolean; const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; @@ -21,7 +22,9 @@ export async function getAll(this: IExecuteFunctions, index: number): Promise Date: Thu, 25 Nov 2021 14:06:37 +0530 Subject: [PATCH 13/73] fix liniting issue --- .../actions/customer/addCustomer/execute.ts | 6 ++--- .../customer/deleteCustomer/description.ts | 23 ++++++++++++++++ .../customer/deleteCustomer/execute.ts | 26 +++++++++++++++++++ .../actions/customer/deleteCustomer/index.ts | 7 +++++ .../v1/actions/customer/getAll/execute.ts | 2 +- 5 files changed, 60 insertions(+), 4 deletions(-) create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/deleteCustomer/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/deleteCustomer/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/deleteCustomer/index.ts diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/execute.ts index 230f7603e8386..8760e892953b2 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/execute.ts @@ -16,10 +16,10 @@ export async function getAll(this: IExecuteFunctions, index: number): Promise { + const id = this.getNodeParameter('id', index) as string; + + const qs = {} as IDataObject; + const requestMethod = 'DELETE'; + const endpoint = `customers/${id}`; + const body = {} as IDataObject; + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + return this.helpers.returnJsonArray(responseData); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/deleteCustomer/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/deleteCustomer/index.ts new file mode 100644 index 0000000000000..432674f0bcb62 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/deleteCustomer/index.ts @@ -0,0 +1,7 @@ +import { deleteCustomer as execute } from './execute'; +import { customerDeleteDescription as description } from './description'; + +export { + description, + execute, +}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts index 1de7d4c6549f3..65ee369b0b7c7 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts @@ -23,7 +23,7 @@ export async function getAll(this: IExecuteFunctions, index: number): Promise Date: Thu, 25 Nov 2021 14:37:20 +0530 Subject: [PATCH 14/73] Added Update method to customer module --- .../nodes/SyncroMSP/v1/actions/Interfaces.ts | 2 +- .../customer/addCustomer/description.ts | 36 +++++ .../actions/customer/addCustomer/execute.ts | 2 +- .../v1/actions/customer/addCustomer/index.ts | 2 +- .../SyncroMSP/v1/actions/customer/index.ts | 8 ++ .../customer/updateCustomer/description.ts | 131 ++++++++++++++++++ .../customer/updateCustomer/execute.ts | 32 +++++ .../actions/customer/updateCustomer/index.ts | 7 + 8 files changed, 217 insertions(+), 3 deletions(-) create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/updateCustomer/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/updateCustomer/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/updateCustomer/index.ts diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts index 91fc7653f8a9f..26d6fae415106 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts @@ -5,7 +5,7 @@ import { } from 'n8n-workflow'; type SyncroMspMap = { - customer: 'getAll' | 'addCustomer' | 'deleteCustomer'; + customer: 'getAll' | 'addCustomer' | 'deleteCustomer' | 'updateCustomer'; ticket: 'getAll'; contact: 'getAll'; rmm: 'getAlerts'; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/description.ts index 392b7a19fae18..4fb58149b93dc 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/description.ts @@ -114,6 +114,42 @@ export const customerAddCustomerDescription: CustomerProperties = [ type: 'string', default: '', }, + { + displayName: 'Notes', + name: 'notes', + type: 'string', + default: '', + }, + { + displayName: 'Get SMS', + name: 'get_sms', + type: 'boolean', + default: true, + }, + { + displayName: 'No Email', + name: 'no_email', + type: 'boolean', + default: false, + }, + { + displayName: 'Referred By', + name: 'referred_by', + type: 'string', + default: '', + }, + { + displayName: 'Notification Email', + name: 'notification_email', + type: 'string', + default: '', + }, + { + displayName: 'Invoice Email', + name: 'invoice_cc_email', + type: 'string', + default: '', + }, ], }, ]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/execute.ts index 8760e892953b2..619220a654de6 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/execute.ts @@ -12,7 +12,7 @@ import { } from '../../../transport'; -export async function getAll(this: IExecuteFunctions, index: number): Promise { +export async function addCustomer(this: IExecuteFunctions, index: number): Promise { const firstname = this.getNodeParameter('firstname', index) as IDataObject; const lastname = this.getNodeParameter('lastname', index) as IDataObject; const email = this.getNodeParameter('email', index) as IDataObject; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/index.ts index ebf275ba5c538..3121c7262cb86 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/index.ts @@ -1,4 +1,4 @@ -import { getAll as execute } from './execute'; +import { addCustomer as execute } from './execute'; import { customerAddCustomerDescription as description } from './description'; export { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts index 471b3175685ea..79a891d34c86d 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts @@ -2,6 +2,7 @@ import * as getAll from './getAll'; import * as addCustomer from './addCustomer'; import * as deleteCustomer from './deleteCustomer'; +import * as updateCustomer from './updateCustomer'; import { INodeProperties } from 'n8n-workflow'; @@ -9,6 +10,7 @@ export { getAll, addCustomer, deleteCustomer, + updateCustomer, }; @@ -40,6 +42,11 @@ export const descriptions = [ value: 'deleteCustomer', description: 'delete customers', }, + { + name: 'Update', + value: 'updateCustomer', + description: 'update customers', + }, ], default: '', description: 'The operation to perform.', @@ -47,5 +54,6 @@ export const descriptions = [ ...getAll.description, ...addCustomer.description, ...deleteCustomer.description, + ...updateCustomer.description, ] as INodeProperties[]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/updateCustomer/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/updateCustomer/description.ts new file mode 100644 index 0000000000000..28392236aa2d5 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/updateCustomer/description.ts @@ -0,0 +1,131 @@ +import { + CustomerProperties, +} from '../../Interfaces'; + +export const customerUpdateCustomerDescription: CustomerProperties = [ + { + displayName: 'Customer Id', + name: 'id', + type: 'string', + displayOptions: { + show: { + resource: [ + 'customer', + ], + operation: [ + 'updateCustomer', + ], + }, + }, + default: '', + }, + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + displayOptions: { + show: { + resource: [ + 'customer', + ], + operation: [ + 'updateCustomer', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'First Name', + name: 'firstname', + type: 'string', + default: '', + }, + { + displayName: 'Last Name', + name: 'lastname', + type: 'string', + default: '', + }, + { + displayName: 'Business Name', + name: 'business_name', + type: 'string', + default: '', + }, + { + displayName: 'Email', + name: 'email', + type: 'string', + default: '', + }, + { + displayName: 'Phone', + name: 'phone', + type: 'string', + default: '', + }, + { + displayName: 'Address', + name: 'address', + type: 'string', + default: '', + }, + { + displayName: 'City', + name: 'city', + type: 'string', + default: '', + }, + { + displayName: 'State', + name: 'state', + type: 'string', + default: '', + }, + { + displayName: 'ZIP', + name: 'zip', + type: 'string', + default: '', + }, + { + displayName: 'Notes', + name: 'notes', + type: 'string', + default: '', + }, + { + displayName: 'Get SMS', + name: 'get_sms', + type: 'boolean', + default: true, + }, + { + displayName: 'No Email', + name: 'no_email', + type: 'boolean', + default: false, + }, + { + displayName: 'Referred By', + name: 'referred_by', + type: 'string', + default: '', + }, + { + displayName: 'Notification Email', + name: 'notification_email', + type: 'string', + default: '', + }, + { + displayName: 'Invoice Email', + name: 'invoice_cc_email', + type: 'string', + default: '', + }, + ], + }, +]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/updateCustomer/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/updateCustomer/execute.ts new file mode 100644 index 0000000000000..35505bd01c864 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/updateCustomer/execute.ts @@ -0,0 +1,32 @@ +import { + IExecuteFunctions, +} from 'n8n-core'; + +import { + IDataObject, + INodeExecutionData, +} from 'n8n-workflow'; + +import { + apiRequest, +} from '../../../transport'; + + +export async function updateCustomer(this: IExecuteFunctions, index: number): Promise { + const id = this.getNodeParameter('id', index) as IDataObject; + const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + + const qs = {} as IDataObject; + const requestMethod = 'PUT'; + const endpoint = `customers/${id}`; + let body = {} as IDataObject; + + if (additionalFields) { + body = additionalFields; + } + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + + return this.helpers.returnJsonArray(responseData.customer); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/updateCustomer/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/updateCustomer/index.ts new file mode 100644 index 0000000000000..514ab3c0b5665 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/updateCustomer/index.ts @@ -0,0 +1,7 @@ +import { updateCustomer as execute } from './execute'; +import { customerUpdateCustomerDescription as description } from './description'; + +export { + description, + execute, +}; From 4c5b25c956dff0536f65f5e7f043fa251951c0e4 Mon Sep 17 00:00:00 2001 From: bearbobs Date: Thu, 25 Nov 2021 17:53:25 +0530 Subject: [PATCH 15/73] Code Review Changes --- .../nodes/SyncroMSP/v1/actions/Interfaces.ts | 2 +- .../v1/actions/customer/getAll/description.ts | 20 +++---- .../v1/actions/customer/getAll/execute.ts | 5 +- .../customer/getCustomer/description.ts | 57 +++++++++++++++++++ .../actions/customer/getCustomer/execute.ts | 32 +++++++++++ .../v1/actions/customer/getCustomer/index.ts | 7 +++ .../SyncroMSP/v1/actions/customer/index.ts | 8 +++ 7 files changed, 114 insertions(+), 17 deletions(-) create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/index.ts diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts index 26d6fae415106..6145564b9a032 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts @@ -5,7 +5,7 @@ import { } from 'n8n-workflow'; type SyncroMspMap = { - customer: 'getAll' | 'addCustomer' | 'deleteCustomer' | 'updateCustomer'; + customer: 'getAll' | 'addCustomer' | 'deleteCustomer' | 'updateCustomer' | 'getCustomer'; ticket: 'getAll'; contact: 'getAll'; rmm: 'getAlerts'; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts index 2708b8dc189c6..046fac2ef4b7f 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts @@ -21,9 +21,9 @@ export const customerGetAllDescription: CustomerProperties = [ description: 'If all results should be returned or only up to a given limit.', }, { - displayName: 'Get by Id', - name: 'id', - type: 'string', + displayName: 'Limit', + name: 'per_page', + type: 'number', displayOptions: { show: { resource: [ @@ -32,10 +32,13 @@ export const customerGetAllDescription: CustomerProperties = [ operation: [ 'getAll', ], + returnAll: [ + false, + ], }, }, - default: '', - description: 'get specific customer by id', + default: 25, + description: 'limit the number of rows returned', }, { displayName: 'Additional Fields', @@ -62,13 +65,6 @@ export const customerGetAllDescription: CustomerProperties = [ placeholder: 'John Doe', description: 'Search query, it can be anything related to customer data like name etc.', }, - { - displayName: 'Limit', - name: 'per_page', - type: 'number', - default: 25, - description: 'limit the number of rows returned', - }, { displayName: 'Page', name: 'page', diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts index 65ee369b0b7c7..58a4f3074bd8d 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts @@ -13,7 +13,6 @@ import { export async function getAll(this: IExecuteFunctions, index: number): Promise { - const id = this.getNodeParameter('id', index) as string; const returnAll = this.getNodeParameter('returnAll', index) as boolean; const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; @@ -22,9 +21,7 @@ export async function getAll(this: IExecuteFunctions, index: number): Promise { + const id = this.getNodeParameter('id', index) as string; + const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + + let qs = {} as IDataObject; + const requestMethod = 'GET'; + const endpoint = 'customers'; + const body = {} as IDataObject; + + if (additionalFields) { + qs = additionalFields; + } + qs.id=id; + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + return this.helpers.returnJsonArray(responseData.customers); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/index.ts new file mode 100644 index 0000000000000..d3658b10183d6 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/index.ts @@ -0,0 +1,7 @@ +import { getCustomer as execute } from './execute'; +import { customerGetCustomerDescription as description } from './description'; + +export { + description, + execute, +}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts index 79a891d34c86d..20547e27ff316 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts @@ -3,6 +3,7 @@ import * as getAll from './getAll'; import * as addCustomer from './addCustomer'; import * as deleteCustomer from './deleteCustomer'; import * as updateCustomer from './updateCustomer'; +import * as getCustomer from './getCustomer'; import { INodeProperties } from 'n8n-workflow'; @@ -11,6 +12,7 @@ export { addCustomer, deleteCustomer, updateCustomer, + getCustomer, }; @@ -32,6 +34,11 @@ export const descriptions = [ value: 'getAll', description: 'Retrieve all customers', }, + { + name: 'Get', + value: 'getCustomer', + description: 'Retrieve customer', + }, { name: 'Create', value: 'addCustomer', @@ -52,6 +59,7 @@ export const descriptions = [ description: 'The operation to perform.', }, ...getAll.description, + ...getCustomer.description, ...addCustomer.description, ...deleteCustomer.description, ...updateCustomer.description, From a03b1ec7e8fd1d156bfab4755f634cc878a0c483 Mon Sep 17 00:00:00 2001 From: bearbobs Date: Fri, 26 Nov 2021 11:17:37 +0530 Subject: [PATCH 16/73] :ship: Added CRUD for contacts endpoint --- .../nodes/SyncroMSP/v1/actions/Interfaces.ts | 2 +- .../actions/contact/addContact/description.ts | 109 ++++++++++++++++++ .../v1/actions/contact/addContact/execute.ts | 38 ++++++ .../v1/actions/contact/addContact/index.ts | 7 ++ .../contact/deleteContact/description.ts | 23 ++++ .../actions/contact/deleteContact/execute.ts | 26 +++++ .../v1/actions/contact/deleteContact/index.ts | 7 ++ .../v1/actions/contact/getAll/description.ts | 27 +++-- .../actions/contact/getContact/description.ts | 23 ++++ .../v1/actions/contact/getContact/execute.ts | 31 +++++ .../v1/actions/contact/getContact/index.ts | 7 ++ .../SyncroMSP/v1/actions/contact/index.ts | 32 +++++ .../contact/updateContact/description.ts | 89 ++++++++++++++ .../actions/contact/updateContact/execute.ts | 32 +++++ .../v1/actions/contact/updateContact/index.ts | 7 ++ 15 files changed, 452 insertions(+), 8 deletions(-) create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/index.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/deleteContact/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/deleteContact/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/deleteContact/index.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getContact/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getContact/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getContact/index.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/index.ts diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts index 6145564b9a032..7274a9a25f211 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts @@ -7,7 +7,7 @@ import { type SyncroMspMap = { customer: 'getAll' | 'addCustomer' | 'deleteCustomer' | 'updateCustomer' | 'getCustomer'; ticket: 'getAll'; - contact: 'getAll'; + contact: 'getAll' | 'addContact' | 'deleteContact' | 'updateContact' | 'getContact'; rmm: 'getAlerts'; }; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/description.ts new file mode 100644 index 0000000000000..0ffde0d8c6c9b --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/description.ts @@ -0,0 +1,109 @@ +import { + ContactProperties, +} from '../../Interfaces'; + +export const contactAddContactDescription: ContactProperties = [ + { + displayName: 'Customer Id', + name: 'customerId', + type: 'string', + displayOptions: { + show: { + resource: [ + 'contact', + ], + operation: [ + 'addContact', + ], + }, + }, + default: '', + }, + { + displayName: 'Name', + name: 'name', + type: 'string', + displayOptions: { + show: { + resource: [ + 'contact', + ], + operation: [ + 'addContact', + ], + }, + }, + default: '', + }, + { + displayName: 'Email', + name: 'email', + type: 'string', + displayOptions: { + show: { + resource: [ + 'contact', + ], + operation: [ + 'addContact', + ], + }, + }, + default: '', + }, + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + displayOptions: { + show: { + resource: [ + 'contact', + ], + operation: [ + 'addContact', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'Phone', + name: 'phone', + type: 'string', + default: '', + }, + { + displayName: 'Address', + name: 'address', + type: 'string', + default: '', + }, + { + displayName: 'City', + name: 'city', + type: 'string', + default: '', + }, + { + displayName: 'State', + name: 'state', + type: 'string', + default: '', + }, + { + displayName: 'ZIP', + name: 'zip', + type: 'string', + default: '', + }, + { + displayName: 'Notes', + name: 'notes', + type: 'string', + default: '', + }, + ], + }, +]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/execute.ts new file mode 100644 index 0000000000000..e01180b7ef570 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/execute.ts @@ -0,0 +1,38 @@ +import { + IExecuteFunctions, +} from 'n8n-core'; + +import { + IDataObject, + INodeExecutionData, +} from 'n8n-workflow'; + +import { + apiRequest, +} from '../../../transport'; + + +export async function addContact(this: IExecuteFunctions, index: number): Promise { + const id = this.getNodeParameter('customerId',index) as IDataObject; + const name = this.getNodeParameter('name', index) as IDataObject; + const email = this.getNodeParameter('email', index) as IDataObject; + const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + + const qs = {} as IDataObject; + const requestMethod = 'POST'; + const endpoint = 'contacts'; + let body = {} as IDataObject; + + if (additionalFields) { + body = additionalFields; + } + + body.name=name; + body.email=email; + body.customer_id=id; + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + + return this.helpers.returnJsonArray(responseData); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/index.ts new file mode 100644 index 0000000000000..90f36e59f92b2 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/index.ts @@ -0,0 +1,7 @@ +import { addContact as execute } from './execute'; +import { contactAddContactDescription as description } from './description'; + +export { + description, + execute, +}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/deleteContact/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/deleteContact/description.ts new file mode 100644 index 0000000000000..99696f1fa682d --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/deleteContact/description.ts @@ -0,0 +1,23 @@ +import { + ContactProperties, +} from '../../Interfaces'; + +export const contactDeleteDescription: ContactProperties = [ + { + displayName: 'Contact Id', + name: 'id', + type: 'string', + displayOptions: { + show: { + resource: [ + 'contact', + ], + operation: [ + 'deleteContact', + ], + }, + }, + default: '', + description: 'Delete a specific contact by id', + }, +]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/deleteContact/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/deleteContact/execute.ts new file mode 100644 index 0000000000000..e285b3c98590a --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/deleteContact/execute.ts @@ -0,0 +1,26 @@ +import { + IExecuteFunctions, +} from 'n8n-core'; + +import { + IDataObject, + INodeExecutionData, +} from 'n8n-workflow'; + +import { + apiRequest +} from '../../../transport'; + + +export async function deleteContact(this: IExecuteFunctions, index: number): Promise { + const id = this.getNodeParameter('id', index) as string; + + const qs = {} as IDataObject; + const requestMethod = 'DELETE'; + const endpoint = `contacts/${id}`; + const body = {} as IDataObject; + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + return this.helpers.returnJsonArray(responseData); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/deleteContact/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/deleteContact/index.ts new file mode 100644 index 0000000000000..d87102feae892 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/deleteContact/index.ts @@ -0,0 +1,7 @@ +import { deleteContact as execute } from './execute'; +import { contactDeleteDescription as description } from './description'; + +export { + description, + execute, +}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts index dbdcf98871485..63d596dfb2752 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts @@ -20,6 +20,26 @@ export const contactGetAllDescription: ContactProperties = [ default: false, description: 'If all results should be returned or only up to a given limit.', }, + { + displayName: 'Limit', + name: 'per_page', + type: 'number', + displayOptions: { + show: { + resource: [ + 'contact', + ], + operation: [ + 'getAll', + ], + returnAll: [ + false, + ], + }, + }, + default: 25, + description: 'limit the number of rows returned', + }, { displayName: 'Additional Fields', name: 'additionalFields', @@ -45,13 +65,6 @@ export const contactGetAllDescription: ContactProperties = [ placeholder: 'John Doe', description: 'Search query, it can be anything related to contact data like name etc.', }, - { - displayName: 'Limit', - name: 'per_page', - type: 'number', - default: 25, - description: 'limit the number of rows returned', - }, { displayName: 'Page', name: 'page', diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getContact/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getContact/description.ts new file mode 100644 index 0000000000000..7d436e96b6c40 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getContact/description.ts @@ -0,0 +1,23 @@ +import { + ContactProperties, +} from '../../Interfaces'; + +export const contactGetContactDescription: ContactProperties = [ + { + displayName: 'Contact Id', + name: 'id', + type: 'string', + displayOptions: { + show: { + resource: [ + 'contact', + ], + operation: [ + 'getContact', + ], + }, + }, + default: '', + description: 'get specific contact by id', + }, +]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getContact/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getContact/execute.ts new file mode 100644 index 0000000000000..b2afdbfac7045 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getContact/execute.ts @@ -0,0 +1,31 @@ +import { + IExecuteFunctions, +} from 'n8n-core'; + +import { + IDataObject, + INodeExecutionData, +} from 'n8n-workflow'; + +import { + apiRequest +} from '../../../transport'; + + +export async function getContact(this: IExecuteFunctions, index: number): Promise { + const id = this.getNodeParameter('id', index) as string; + const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + + let qs = {} as IDataObject; + const requestMethod = 'GET'; + const endpoint = `contacts/${id}`; + const body = {} as IDataObject; + + if (additionalFields) { + qs = additionalFields; + } + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + return this.helpers.returnJsonArray(responseData); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getContact/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getContact/index.ts new file mode 100644 index 0000000000000..23a19a57c068d --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getContact/index.ts @@ -0,0 +1,7 @@ +import { getContact as execute } from './execute'; +import { contactGetContactDescription as description } from './description'; + +export { + description, + execute, +}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts index 8bc5eb8ff6e47..e2d4f99d2756e 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts @@ -1,10 +1,18 @@ import * as getAll from './getAll'; +import * as addContact from './addContact'; +import * as getContact from './getContact'; +import * as updateContact from './updateContact'; +import * as deleteContact from './deleteContact'; import { INodeProperties } from 'n8n-workflow'; export { getAll, + addContact, + deleteContact, + updateContact, + getContact, }; @@ -26,10 +34,34 @@ export const descriptions = [ value: 'getAll', description: 'Retrieve all contacts', }, + { + name: 'Get', + value: 'getContact', + description: 'Retrieve contact', + }, + { + name: 'Create', + value: 'addContact', + description: 'add new contact', + }, + { + name: 'Delete', + value: 'deleteContact', + description: 'delete contact', + }, + { + name: 'Update', + value: 'updateContact', + description: 'update contact', + }, ], default: '', description: 'The operation to perform.', }, ...getAll.description, + ...addContact.description, + ...getContact.description, + ...updateContact.description, + ...deleteContact.description, ] as INodeProperties[]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/description.ts new file mode 100644 index 0000000000000..c74007216fb4c --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/description.ts @@ -0,0 +1,89 @@ +import { + ContactProperties, +} from '../../Interfaces'; + +export const contactUpdateContactDescription: ContactProperties = [ + { + displayName: 'Contact Id', + name: 'id', + type: 'string', + displayOptions: { + show: { + resource: [ + 'contact', + ], + operation: [ + 'updateContact', + ], + }, + }, + default: '', + }, + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + displayOptions: { + show: { + resource: [ + 'contact', + ], + operation: [ + 'updateContact', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'Name', + name: 'name', + type: 'string', + default: '', + }, + { + displayName: 'Email', + name: 'email', + type: 'string', + default: '', + }, + { + displayName: 'Phone', + name: 'phone', + type: 'string', + default: '', + }, + { + displayName: 'Address', + name: 'address', + type: 'string', + default: '', + }, + { + displayName: 'City', + name: 'city', + type: 'string', + default: '', + }, + { + displayName: 'State', + name: 'state', + type: 'string', + default: '', + }, + { + displayName: 'ZIP', + name: 'zip', + type: 'string', + default: '', + }, + { + displayName: 'Notes', + name: 'notes', + type: 'string', + default: '', + }, + ], + }, +]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/execute.ts new file mode 100644 index 0000000000000..88445ca4ced97 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/execute.ts @@ -0,0 +1,32 @@ +import { + IExecuteFunctions, +} from 'n8n-core'; + +import { + IDataObject, + INodeExecutionData, +} from 'n8n-workflow'; + +import { + apiRequest, +} from '../../../transport'; + + +export async function updateContact(this: IExecuteFunctions, index: number): Promise { + const id = this.getNodeParameter('id', index) as IDataObject; + const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + + const qs = {} as IDataObject; + const requestMethod = 'PUT'; + const endpoint = `contacts/${id}`; + let body = {} as IDataObject; + + if (additionalFields) { + body = additionalFields; + } + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + + return this.helpers.returnJsonArray(responseData); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/index.ts new file mode 100644 index 0000000000000..2497ad1c4d2a3 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/index.ts @@ -0,0 +1,7 @@ +import { updateContact as execute } from './execute'; +import { contactUpdateContactDescription as description } from './description'; + +export { + description, + execute, +}; From 9366b4d877625e328882fefd6e45f218c36dda33 Mon Sep 17 00:00:00 2001 From: bearbobs Date: Fri, 26 Nov 2021 15:35:07 +0530 Subject: [PATCH 17/73] :ship: Added CRUD for RMM Alert endpoint --- .../nodes/SyncroMSP/v1/actions/Interfaces.ts | 2 +- .../v1/actions/rmm/addAlert/description.ts | 100 ++++++++++++++++++ .../v1/actions/rmm/addAlert/execute.ts | 37 +++++++ .../v1/actions/rmm/addAlert/index.ts | 7 ++ .../v1/actions/rmm/deleteAlert/description.ts | 23 ++++ .../v1/actions/rmm/deleteAlert/execute.ts | 26 +++++ .../v1/actions/rmm/deleteAlert/index.ts | 7 ++ .../v1/actions/rmm/getAlert/description.ts | 23 ++++ .../v1/actions/rmm/getAlert/execute.ts | 31 ++++++ .../v1/actions/rmm/getAlert/index.ts | 7 ++ .../rmm/{getAlerts => getAll}/description.ts | 31 ++++-- .../rmm/{getAlerts => getAll}/execute.ts | 3 + .../rmm/{getAlerts => getAll}/index.ts | 0 .../nodes/SyncroMSP/v1/actions/rmm/index.ts | 52 +++++++-- .../v1/actions/rmm/muteAlert/description.ts | 70 ++++++++++++ .../v1/actions/rmm/muteAlert/execute.ts | 30 ++++++ .../v1/actions/rmm/muteAlert/index.ts | 7 ++ .../v1/actions/rmm/updateAlert/description.ts | 85 +++++++++++++++ .../v1/actions/rmm/updateAlert/execute.ts | 32 ++++++ .../v1/actions/rmm/updateAlert/index.ts | 7 ++ 20 files changed, 564 insertions(+), 16 deletions(-) create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/index.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/deleteAlert/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/deleteAlert/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/deleteAlert/index.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlert/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlert/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlert/index.ts rename packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/{getAlerts => getAll}/description.ts (76%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/{getAlerts => getAll}/execute.ts (91%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/{getAlerts => getAll}/index.ts (100%) create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/muteAlert/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/muteAlert/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/muteAlert/index.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/index.ts diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts index 7274a9a25f211..af37e820ac644 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts @@ -8,7 +8,7 @@ type SyncroMspMap = { customer: 'getAll' | 'addCustomer' | 'deleteCustomer' | 'updateCustomer' | 'getCustomer'; ticket: 'getAll'; contact: 'getAll' | 'addContact' | 'deleteContact' | 'updateContact' | 'getContact'; - rmm: 'getAlerts'; + rmm: 'getAll' | 'getAlert' | 'addAlert' | 'deleteAlert' | 'updateAlert' | 'muteAlert' ; }; export type SyncroMsp = AllEntities; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/description.ts new file mode 100644 index 0000000000000..acc48ee2657b1 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/description.ts @@ -0,0 +1,100 @@ +import { + RmmProperties, +} from '../../Interfaces'; + +export const rmmAddAlertDescription: RmmProperties = [ + { + displayName: 'Customer Id', + name: 'customerId', + type: 'string', + displayOptions: { + show: { + resource: [ + 'rmm', + ], + operation: [ + 'addAlert', + ], + }, + }, + default: '', + }, + { + displayName: 'Asset Id', + name: 'assetId', + type: 'string', + displayOptions: { + show: { + resource: [ + 'rmm', + ], + operation: [ + 'addAlert', + ], + }, + }, + default: '', + }, + { + displayName: 'Description', + name: 'description', + type: 'string', + displayOptions: { + show: { + resource: [ + 'rmm', + ], + operation: [ + 'addAlert', + ], + }, + }, + default: '', + }, + { + displayName: 'Resolved', + name: 'resolved', + type: 'boolean', + displayOptions: { + show: { + resource: [ + 'rmm', + ], + operation: [ + 'addAlert', + ], + }, + }, + default: false, + }, + { + displayName: 'Status', + name: 'status', + type: 'string', + displayOptions: { + show: { + resource: [ + 'rmm', + ], + operation: [ + 'addAlert', + ], + }, + }, + options : [ + { + name: 'Active', + value: 'active', + }, + { + name: 'Resolved', + value: 'resolved', + }, + { + name: 'All', + value: 'all', + }, + ], + default: '', + }, +]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/execute.ts new file mode 100644 index 0000000000000..517d3292822a4 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/execute.ts @@ -0,0 +1,37 @@ +import { + IExecuteFunctions, +} from 'n8n-core'; + +import { + IDataObject, + INodeExecutionData, +} from 'n8n-workflow'; + +import { + apiRequest, +} from '../../../transport'; + + +export async function addAlert(this: IExecuteFunctions, index: number): Promise { + const customerId = this.getNodeParameter('customerId',index) as IDataObject; + const assetId = this.getNodeParameter('assetId',index) as IDataObject; + const description = this.getNodeParameter('description', index) as IDataObject; + const resolved = this.getNodeParameter('resolved', index) as IDataObject; + const status = this.getNodeParameter('status', index) as IDataObject; + + const qs = {} as IDataObject; + const requestMethod = 'POST'; + const endpoint = 'rmm_alerts'; + let body = {} as IDataObject; + + body.customer_id = customerId; + body.asset_id = assetId; + body.description = description; + body.resolved = resolved; + body.status = status; + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + + return this.helpers.returnJsonArray(responseData); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/index.ts new file mode 100644 index 0000000000000..f85c7047dd7db --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/index.ts @@ -0,0 +1,7 @@ +import { addAlert as execute } from './execute'; +import { rmmAddAlertDescription as description } from './description'; + +export { + description, + execute, +}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/deleteAlert/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/deleteAlert/description.ts new file mode 100644 index 0000000000000..082a9a3d13bfc --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/deleteAlert/description.ts @@ -0,0 +1,23 @@ +import { + RmmProperties, +} from '../../Interfaces'; + +export const rmmDeleteAlertDescription: RmmProperties = [ + { + displayName: 'RMM Alert Id', + name: 'id', + type: 'string', + displayOptions: { + show: { + resource: [ + 'rmm', + ], + operation: [ + 'deleteAlert', + ], + }, + }, + default: '', + description: 'Delete alert by id', + }, +]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/deleteAlert/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/deleteAlert/execute.ts new file mode 100644 index 0000000000000..e21665866a0cb --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/deleteAlert/execute.ts @@ -0,0 +1,26 @@ +import { + IExecuteFunctions, +} from 'n8n-core'; + +import { + IDataObject, + INodeExecutionData, +} from 'n8n-workflow'; + +import { + apiRequest +} from '../../../transport'; + + +export async function deleteAlert(this: IExecuteFunctions, index: number): Promise { + const id = this.getNodeParameter('id', index) as string; + + const qs = {} as IDataObject; + const requestMethod = 'DELETE'; + const endpoint = `rmm_alerts/${id}`; + const body = {} as IDataObject; + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + return this.helpers.returnJsonArray(responseData); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/deleteAlert/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/deleteAlert/index.ts new file mode 100644 index 0000000000000..5bead212d303c --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/deleteAlert/index.ts @@ -0,0 +1,7 @@ +import { deleteAlert as execute } from './execute'; +import { rmmDeleteAlertDescription as description } from './description'; + +export { + description, + execute, +}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlert/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlert/description.ts new file mode 100644 index 0000000000000..8a997b1163877 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlert/description.ts @@ -0,0 +1,23 @@ +import { + RmmProperties, +} from '../../Interfaces'; + +export const rmmGetAlertsDescription: RmmProperties = [ + { + displayName: 'RMM Alert Id', + name: 'id', + type: 'string', + displayOptions: { + show: { + resource: [ + 'rmm', + ], + operation: [ + 'getAlert', + ], + }, + }, + default: '', + description: 'get specific rmm alert by id', + }, +]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlert/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlert/execute.ts new file mode 100644 index 0000000000000..e7e1c8c7346cd --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlert/execute.ts @@ -0,0 +1,31 @@ +import { + IExecuteFunctions, +} from 'n8n-core'; + +import { + IDataObject, + INodeExecutionData, +} from 'n8n-workflow'; + +import { + apiRequest +} from '../../../transport'; + + +export async function getAlert(this: IExecuteFunctions, index: number): Promise { + const id = this.getNodeParameter('id', index) as string; + const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + + let qs = {} as IDataObject; + const requestMethod = 'GET'; + const endpoint = `rmm_alerts/${id}`; + const body = {} as IDataObject; + + if (additionalFields) { + qs = additionalFields; + } + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + return this.helpers.returnJsonArray(responseData); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlert/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlert/index.ts new file mode 100644 index 0000000000000..9d43df48441ff --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlert/index.ts @@ -0,0 +1,7 @@ +import { getAlert as execute } from './execute'; +import { rmmGetAlertsDescription as description } from './description'; + +export { + description, + execute, +}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/description.ts similarity index 76% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/description.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/description.ts index cb8a59fe2bcaa..1386ad7461cb8 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/description.ts @@ -13,13 +13,33 @@ export const rmmGetAllDescription: RmmProperties = [ 'rmm', ], operation: [ - 'getAlerts', + 'getAll', ], }, }, default: false, description: 'If all results should be returned or only up to a given limit.', }, + { + displayName: 'Limit', + name: 'per_page', + type: 'number', + displayOptions: { + show: { + resource: [ + 'rmm', + ], + operation: [ + 'getAll', + ], + returnAll: [ + false, + ], + }, + }, + default: 25, + description: 'limit the number of rows returned', + }, { displayName: 'Additional Fields', name: 'additionalFields', @@ -31,7 +51,7 @@ export const rmmGetAllDescription: RmmProperties = [ 'rmm', ], operation: [ - 'getAlerts', + 'getAll', ], }, }, @@ -45,13 +65,6 @@ export const rmmGetAllDescription: RmmProperties = [ placeholder: 'all', description: 'Possible values resolved, all, active.', }, - { - displayName: 'Limit', - name: 'per_page', - type: 'number', - default: 25, - description: 'limit the number of rows returned', - }, { displayName: 'Page', name: 'page', diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/execute.ts similarity index 91% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/execute.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/execute.ts index c68f2c32f85e0..215889585d907 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/execute.ts @@ -14,6 +14,7 @@ import { export async function getAll(this: IExecuteFunctions, index: number): Promise { const returnAll = this.getNodeParameter('returnAll', index) as boolean; + const perPage = this.getNodeParameter('per_page',index) as string; const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; let qs = {} as IDataObject; @@ -25,6 +26,8 @@ export async function getAll(this: IExecuteFunctions, index: number): Promise { + const id = this.getNodeParameter('id', index) as string; + const mute = this.getNodeParameter('muteFor',index) as string; + + const qs = {} as IDataObject; + const requestMethod = 'POST'; + const endpoint = `rmm_alerts/${id}/mute`; + let body = {} as IDataObject; + + body.id =id; + body.mute_for = mute; + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + return this.helpers.returnJsonArray(responseData); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/muteAlert/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/muteAlert/index.ts new file mode 100644 index 0000000000000..d4f482a7b1a4c --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/muteAlert/index.ts @@ -0,0 +1,7 @@ +import { muteAlert as execute } from './execute'; +import { rmmMuteAlertDescription as description } from './description'; + +export { + description, + execute, +}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/description.ts new file mode 100644 index 0000000000000..d3d2bca550d3b --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/description.ts @@ -0,0 +1,85 @@ +import { + RmmProperties, +} from '../../Interfaces'; + +export const rmmUpdateAlertDescription: RmmProperties = [ + { + displayName: 'RMM Alert Id', + name: 'id', + type: 'string', + displayOptions: { + show: { + resource: [ + 'rmm', + ], + operation: [ + 'updateAlert', + ], + }, + }, + default: '', + }, + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + displayOptions: { + show: { + resource: [ + 'rmm', + ], + operation: [ + 'updateAlert', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'Customer id', + name: 'customer_id', + type: 'string', + default: '', + }, + { + displayName: 'Asset Id', + name: 'asset_id', + type: 'string', + default: '', + }, + { + displayName: 'Description', + name: 'description', + type: 'string', + default: '', + }, + { + displayName: 'Resolved', + name: 'resolved', + type: 'boolean', + default: false, + }, + { + displayName: 'Status', + name: 'status', + type: 'string', + options : [ + { + name: 'Active', + value: 'active', + }, + { + name: 'Resolved', + value: 'resolved', + }, + { + name: 'All', + value: 'all', + }, + ], + default: '', + }, + ], + }, +]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/execute.ts new file mode 100644 index 0000000000000..9a68d94f73957 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/execute.ts @@ -0,0 +1,32 @@ +import { + IExecuteFunctions, +} from 'n8n-core'; + +import { + IDataObject, + INodeExecutionData, +} from 'n8n-workflow'; + +import { + apiRequest, +} from '../../../transport'; + + +export async function updateAlert(this: IExecuteFunctions, index: number): Promise { + const id = this.getNodeParameter('id', index) as IDataObject; + const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + + const qs = {} as IDataObject; + const requestMethod = 'PUT'; + const endpoint = `rmm_alerts/${id}`; + let body = {} as IDataObject; + + if (additionalFields) { + body = additionalFields; + } + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + + return this.helpers.returnJsonArray(responseData); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/index.ts new file mode 100644 index 0000000000000..12d95b01cddea --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/index.ts @@ -0,0 +1,7 @@ +import { updateAlert as execute } from './execute'; +import { rmmUpdateAlertDescription as description } from './description'; + +export { + description, + execute, +}; From 522e1b451fa50f4d32f30d75d576141bdef7cc47 Mon Sep 17 00:00:00 2001 From: bearbobs Date: Fri, 26 Nov 2021 15:47:28 +0530 Subject: [PATCH 18/73] Added options for status field --- .../nodes/SyncroMSP/v1/actions/rmm/addAlert/description.ts | 2 +- .../nodes/SyncroMSP/v1/actions/rmm/updateAlert/description.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/description.ts index acc48ee2657b1..8eafdee657b76 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/description.ts @@ -70,7 +70,7 @@ export const rmmAddAlertDescription: RmmProperties = [ { displayName: 'Status', name: 'status', - type: 'string', + type: 'options', displayOptions: { show: { resource: [ diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/description.ts index d3d2bca550d3b..917ab38b77f5f 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/description.ts @@ -63,7 +63,7 @@ export const rmmUpdateAlertDescription: RmmProperties = [ { displayName: 'Status', name: 'status', - type: 'string', + type: 'options', options : [ { name: 'Active', From 59013afd57a5bf3436fdbee415b6338bd1de7463 Mon Sep 17 00:00:00 2001 From: bearbobs Date: Fri, 26 Nov 2021 15:59:52 +0530 Subject: [PATCH 19/73] :bug: fix linting issues --- .../nodes/SyncroMSP/v1/actions/rmm/addAlert/execute.ts | 2 +- .../nodes/SyncroMSP/v1/actions/rmm/muteAlert/execute.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/execute.ts index 517d3292822a4..34c3a5795ac3e 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/execute.ts @@ -22,7 +22,7 @@ export async function addAlert(this: IExecuteFunctions, index: number): Promise< const qs = {} as IDataObject; const requestMethod = 'POST'; const endpoint = 'rmm_alerts'; - let body = {} as IDataObject; + const body = {} as IDataObject; body.customer_id = customerId; body.asset_id = assetId; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/muteAlert/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/muteAlert/execute.ts index 2a0c1c071e9a6..f3a716e9c8712 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/muteAlert/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/muteAlert/execute.ts @@ -19,7 +19,7 @@ export async function muteAlert(this: IExecuteFunctions, index: number): Promise const qs = {} as IDataObject; const requestMethod = 'POST'; const endpoint = `rmm_alerts/${id}/mute`; - let body = {} as IDataObject; + const body = {} as IDataObject; body.id =id; body.mute_for = mute; From bfd68e4d1067ba37de90d4347f97c90c5ae936a5 Mon Sep 17 00:00:00 2001 From: bearbobs Date: Tue, 23 Nov 2021 12:30:33 +0530 Subject: [PATCH 20/73] Init Node --- .../credentials/SyncroMspAPI.credentials.ts | 24 ++++ .../nodes/SyncroMSP/SyncroMsp.node.ts | 28 +++++ .../nodes-base/nodes/SyncroMSP/syncromsp.png | Bin 0 -> 9746 bytes .../nodes/SyncroMSP/v1/SyncroMspV1.node.ts | 31 +++++ .../nodes/SyncroMSP/v1/actions/Interfaces.ts | 33 +++++ .../nodes/SyncroMSP/v1/actions/router.ts | 32 +++++ .../nodes/SyncroMSP/v1/actions/syncromsp.png | Bin 0 -> 9746 bytes .../v1/actions/user/getAll/description.ts | 119 ++++++++++++++++++ .../v1/actions/user/getAll/execute.ts | 98 +++++++++++++++ .../SyncroMSP/v1/actions/user/getAll/index.ts | 7 ++ .../nodes/SyncroMSP/v1/actions/user/index.ts | 60 +++++++++ .../v1/actions/versionDescription.ts | 44 +++++++ .../nodes/SyncroMSP/v1/syncromsp.png | Bin 0 -> 9746 bytes .../nodes/SyncroMSP/v1/transport/index.ts | 72 +++++++++++ packages/nodes-base/package.json | 2 + 15 files changed, 550 insertions(+) create mode 100644 packages/nodes-base/credentials/SyncroMspAPI.credentials.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/SyncroMsp.node.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/syncromsp.png create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/SyncroMspV1.node.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/syncromsp.png create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/user/getAll/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/user/getAll/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/user/getAll/index.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/user/index.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/syncromsp.png create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/transport/index.ts diff --git a/packages/nodes-base/credentials/SyncroMspAPI.credentials.ts b/packages/nodes-base/credentials/SyncroMspAPI.credentials.ts new file mode 100644 index 0000000000000..163d71788f623 --- /dev/null +++ b/packages/nodes-base/credentials/SyncroMspAPI.credentials.ts @@ -0,0 +1,24 @@ +import { + ICredentialType, + INodeProperties, +} from 'n8n-workflow'; + +export class SyncroMspApi implements ICredentialType { + name = 'syncroMspApi'; + displayName = 'SyncroMSP API'; + documentationUrl = 'syncromsp'; + properties: INodeProperties[] = [ + { + displayName: 'API Key', + name: 'apiKey', + type: 'string', + default: '', + }, + { + displayName: 'Sub-Domain', + name: 'subDomain', + type: 'string', + default: '', + }, + ]; +} diff --git a/packages/nodes-base/nodes/SyncroMSP/SyncroMsp.node.ts b/packages/nodes-base/nodes/SyncroMSP/SyncroMsp.node.ts new file mode 100644 index 0000000000000..ff3abff51d9dc --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/SyncroMsp.node.ts @@ -0,0 +1,28 @@ +import { + INodeTypeBaseDescription, + INodeVersionedType, +} from 'n8n-workflow'; + +import { NodeVersionedType } from '../../src/NodeVersionedType'; + +import { SyncroMspV1 } from './v1/SyncroMspV1.node'; + +export class SyncroMsp extends NodeVersionedType { + constructor() { + const baseDescription: INodeTypeBaseDescription = { + displayName: 'SyncroMSP', + name: 'syncromsp', + icon: 'file:syncromsp.png', + group: ['output'], + subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', + description: 'Gets data from SyncroMSP', + defaultVersion: 1, + }; + + const nodeVersions: INodeVersionedType['nodeVersions'] = { + 1: new SyncroMspV1(baseDescription), + }; + + super(nodeVersions, baseDescription); + } +} diff --git a/packages/nodes-base/nodes/SyncroMSP/syncromsp.png b/packages/nodes-base/nodes/SyncroMSP/syncromsp.png new file mode 100644 index 0000000000000000000000000000000000000000..8f54b6d4420aa2388ceeaeb3d538e70efb3611bd GIT binary patch literal 9746 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 M; + +export type MattermostChannel = Entity; +export type MattermostMessage = Entity; +export type MattermostReaction = Entity; +export type MattermostUser = Entity; + +export type ChannelProperties = PropertiesOf; +export type MessageProperties = PropertiesOf; +export type ReactionProperties = PropertiesOf; +export type UserProperties = PropertiesOf; + +export interface IAttachment { + fields: { + item?: object[]; + }; + actions: { + item?: object[]; + }; +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts new file mode 100644 index 0000000000000..1334471d219e7 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts @@ -0,0 +1,32 @@ +import { + IExecuteFunctions, +} from 'n8n-core'; + +import { + INodeExecutionData, +} from 'n8n-workflow'; + +import * as user from './user'; +import { Mattermost } from './Interfaces'; + +export async function router(this: IExecuteFunctions): Promise { + const items = this.getInputData(); + const operationResult: INodeExecutionData[] = []; + + for (let i = 0; i < items.length; i++) { + const resource = this.getNodeParameter('resource', i); + let operation = this.getNodeParameter('operation', i); + if (operation === 'del') { + operation = 'delete'; + } else if (operation === 'desactive') { + operation = 'deactive'; + } + + const mattermost = { + resource, + operation, + } as Mattermost; + } + + return operationResult; +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/syncromsp.png b/packages/nodes-base/nodes/SyncroMSP/v1/actions/syncromsp.png new file mode 100644 index 0000000000000000000000000000000000000000..8f54b6d4420aa2388ceeaeb3d538e70efb3611bd GIT binary patch literal 9746 zcmbVyWl-Hu%mi`~`ivKT_)&T!eHBeCtRMrE zDD@1;eCy|I?joyc`Ez;o^XRyGV|()W^zZde(&BQ&?1FCp57Ca^_P=|JXXjs**J9_F z(wA1h?d}Im&PjH{iqF1=+ubH{iGpNgL+iT!B9@^?U!0}qS|NTUNf}NQb8^iVxHFG%g zJOI#jD#=Re`uslpZRFO^g&nprwJDblpZ8$SU#XjvSPBbcoPF^|AXylzID)=&H~ve+ z@Ixh2IwvF5zHPT9Ib=&NT=$Du;qIP~E4TMU{?Q>(|EH!O1kaCf(L)qXxnwdzj$WoF zWCKQD$eSBaFl>#Fq5{0o?beQJM}JGyYaYcP5*fE<>;G8S@1hop$hdtPqVIXx)c-5t zy7a6`&hz!DvFQa3rR!<%Nn>;jU~+14COMI?D6?Mhc}Z(pOdF@RY2v&Lg3mqFaYbhF zl6uk6wgO{&XMy)#J_|2L9%IjaLYPe_2DQlfEs!;mC;*P(GzG0z*7#Ck2~?K}3rRdHt67t8ova+>j(0a#&bYJlxFp%*Zd_qSsz{ zQidG9Ec~KVBs4oZ0ji(*=EDDSfcUtr4by)R?QP(~g5rtO-lva0ZD*DaT;)F= zz4zS$*=7Jh?8vnNx3^ZAjYQ8mQi>BoClZX|SJ$T~N+MD5Ifn6ska>`gUf#PcMvU+N z%JrZ)xc1S6+qd1ZKO|#oL4ptOqu5Q~n4mFD@dCUW^(|V&0J$(CHm8HA%F7x&%Ox7j zwB3h4TNT`ia7x?OfEREKAowD{{=sXY9(8SJ_GB}9dtqsi%t=D^L4!ll0>aBXp7=D3~gR2olqRdW4O)ZrHOx}<_rxP~+Jr(C~XVpwY1UdLJ zp=N+`hD`Y=mzJSLdq|oV1MMMAa?JcLns|4BU<_g@5;@l`R30=7x6Y(oKAB`BUj%G| zQkjg6CyDK)3W49CZ-uZ`nesd{{0c#oWK0M>=0P#BN44@`7mP4fMhH4eQ2qi4+mvnM z;049jq`#05LfjzW;B^dyJQFu$`PhZ3zd z;-tsAyF7kp5}bLb>^&C`a3FoJw?qqX6c;fRhrW&zLaf9c3Q_yb#SOIr^~9@bFOuJ) zDouw+gH$)%mFbj5f}NE+xwxQ3aDP~pE?B(E$0MlW;M#*Zos;;oMEwm)P%gksdK;DV zibY>;B@P-XKE4ACPB9d}g8Z>ckhZ|sb-=w+GRsmVW6g*j)D?uj{-B;*vrd{wsES5) zhyH7kVdRiolv!*ZtctcScjUWb+(rC;09-G8-V4ZjVdmu#YQUqTLGW?v0DQwfyeW&B z_V=JM-4$@uAZakMEvy=_aNIH2fb&5WCS!Hf2RwaP=(USuFi#6)+V8GDnq&W#(m@y4J^hx*BeC8= zb*+j@H5FN9O!py1uRZTh0*i|osuecGQ{4iMe6c7{0##?OK*tAnJ|3&0uA}DpY45!& z@1P2ObzYU>JcfW!LN5QkE)b2MLO>)^KBXHa1xlqM(+35LL`FV|YlVV|Sb}i(zVr_~ z6S;QOd*$KO`rKQ6e`*kOjU+f#+v3|CoT)-xAtNPx>IBo4$383%a z`hoG@Tmx>WE23P=u7#*Z`NT#Wu<_^Lk!STMq`%>1h7y}5;a2KBkf7*5`YmksDBEJw z>8@Yp9H#22v&I)4v|_LlAa6aUO|iyaT!0QK6CWtPx~Zzml|r>z8Vl2=;3$_HBgTW) z3$*7_ms%hMSW90a!y11M8C%|}j2B^9t*sjymgqM0+lXEP*C4|h=Yu|-a_qXz1jT34 zBf8pNZ+s*!D>v;C#(GSu8Ph+Pn?65mCo!wb`paV}R4HKs&~2A<{XUK@B1g-&1bI6b zx|`T#AiBS+HvW6*t*&2CormtK70LQ}pi|Y*fLdG9^2$>o(ND)Sz#}+n^#d&o2gJ9e z8ZPnik}1jrh@K-t!muSRt~|9;E)Ivh1JU*Dx)^fEFB7SS*IoI#ljQ@|Ke)xI15`v# zvryZFPepNp9Kau~&WLk`kNB<5`+H1okE0|QKy-{a{!GcnrlRPz2AnrHw4c2!cnO?7 z6#gp1rr`jMEibZb8|ICxjG&XltXce#bLWGj6@X~c!&KwIx}m+4ck9H-JlEOSCsBMb zDyXybBJ~xQ^Hfl~Rl~C{#vgN;*kN1yj1}V%h7#&7J(NlNND2R3Bn+J|dw>ybKpiwXTn zJEEaYCRv=|o&HuBHL~*bJwlI9>SX~B)R!#V?Z$%+QD-AguwaV&j3XR`KC{TDG~F<( z5uTA(xXMnIGz$E)bznl@|M;)GUj+eKyYmrXLNCDi5%D24zTBTh^h+p}o5pWV0?DQX z3>#wM;D4_f#wudom(c=t$YdwTb7jwT+XFyT+SzD;HUTs@yy8!R4!!ojcT0|*)c;&1 zsNWT^KuM$A)P#+ea42ZhPhtp_EY+w+_uWB?B}~vaQG{B;W~>-mEf>ZNN)uEpd`he= z;0hsZwo#AHJw5o7k}@}3L#fnh3uIU^9dwaq&sp`rk4!}LrQmecF?ILjIr4BR9TWxr zi7N2r*IBSrvb0xrM1e5f>M+(iKiIreijg($tngi`^xGI2>`!z@ida-hXt$jD|11++ zD-iI}u)C83OOUvbeMYKt1_+J3cXk?D(V!grpxLjdW>$N;S!|d-jZAdWqOt_Dd# z62uI)kT5+`>pF=RJ|O-Fon1yanG8l2B9vRb577w{J+{>Os`|d3f@;()=bohLx%*}1+NKskG?)7l5^VFPgHRu z=<8&89x33-)dyvQZ&3JSP;$$`aBLc+p+6jqOu3t!`xdkYg({k|}Mu)^e zZ=9`vyL5l}_}RtIFChf)r_5!+4!B;$8t~%S%T0;i?G7#2L^I{ZPaVT8a=+$;Uwl=0 z!uv)1*Z_Q~;UQ*HsS9>spX@Qf3Hx$BPWAmsZeTTezcdWLsEub|-56+)UPrn!>h3=I z%d8*rhvgJit5ETG3ZW!zSj!!~=uPtng2!M-`))>Pn-V$%^;a_34N+sh$eX7drT~u6 zL!Kt#1iH3gotHMusIvTJ07Hux=Vw_m9Pj+OGqAp665<~>j-pA986qb84w&*lcJ@-c z+}M9(E5jbY^=^%@E6A7dd8zzU>@$nlf7v+GxIXrvcBP8}*Vnmd;8GoikuQ1cV#`Vn zl?J?IWR*s0F0pV^BfP(VSe~&nHG>W2?H zG|8h~Wd3>%I>+k}{T`$$yfXwyZUs=$?GocN&dR0O_QO)APU=J?VcbtpnKXrP3a@~$ z2n;(OBiKtVb9qbU{Kd>?HeQ+*&2!3`$L8f>Q@Wpr`VAwZvG>QLoAiN$TDCjUlQ$w*LhgRgz;+d*X_Z%$D}N><*<^nWYqq zi}oEDDx(Q3HW3@=sMj=ygnA{3cEYhX7!qcWZ=SzJ!22Y#Ag2oGuI*Q^&)O33e+~Hc z{&OkJa8ILhlNI|87a%JFPpXEmEQ=wb-Py|KiET19QGYi;P;jGD0bGz#0Y83AsrO7U z*$1uVti#cc$rJeq4$5)Xb+Qn!CTd#~Z`TqVqi@w2r0V|ZZjv#D*&~Zp5Nt)o0$e0| zPc`C^seUv?lPZ-Ze48a?=Ih8o2mC~T_T1$J+0je}%X|n4O_#QIV7{N5 zbAWsCVg@mlhh9CgmxIlOW9%OVklhEi|CNCUW|K#f#F&8e~&j??L&0&2v`M|Aq z@?D0lh~VB(K){o7!K!uXP{4Paiy$zzrq*9h_&C?ZYXayOvI^7k*&WYZtA%JZ5640H zf}9PkX*UoYENH0R4=fm(Xm&}`?@P}F945i|m)fz2puVv5T)0#4m#%a>D*YmG;?v)W zrp52QAI{$spAs$-3U{b8$Pjl{wPSq8_NEGZAq~VZoIF75d~;4c@{ZOnS*ioUjPra4 zP<<@`&}vk*HAuqp2^y3yEI3LZJ;k>EQOZC;6QH;=kjaO8*FlQJj$(*p`Igaai&Wv< zlN{+WyB_#0=vPW!=b$im8>bk&Qd~ar>0@Pcw#w`Xl^$NXR+dvRZ=L+%x-I$&_(n~UC zUD=`z^p?P=6*}kyBP#&>s+A|g)-X+}`;83s+`of`=NL9w2NlRx4E2h$F)uhl(37EW z%!@cB&P$j%whL{DkNKpy+wr}n-`|aA4ele!>;1vPO6Lo2y0P!Xp1>u7vfsXy78Yl% zXLZae0ak(d9`jlk(4M3rFst!=Qb{et=seOy9B=G;ZjXhOwqi1i7UI5|$W+In^3~Gt z^K*w^l4~<#uNMzd^o>#{s_sn6#D$(-XgxMDl-|4An&oa@Eg7k7GxtvLu6Z1qM4UX! zmaaVXmq6kkYY;*5sDo{>Cq(Ns6{>|5`{vv>71~h#^fHWr;*J#9vS>&WE1hMUX&)L( ze_mc~=8Xbi7J`UIIEG9FAUnI;o3wE9MT*agmi4uD@Id4wponma6`@34&*K*@m~5X@ z=JyBA@ZhD-FW*yU^Khl?egp;m*nV5q_^(E@!E!~&S)iwYMEf8jRbC{A9vx{5Jo?uI zlSbM(cP^H}5y}q;^2fe*FkcTD@R1p-AQmgvs7I?SkF66b*GR@lITBZ=+I=q$3DoMB z$Mf1hwFo2ohAy!%N#*&x{AotEHDZv3Yc)}mQt&I^u)f(qLTvW-GP;7s zOB2evL>Q9f{^rM`Q!zy757d%Pq?K+zI`4^xMs*7N+v z;1o0wpj)gepSQmNf2&Z<#vfd)Pa}$Pd?RTW(9otFj#TitUwKz{nG{)dmIG!kFL)@@ zWUG49)9)cuF(`PY8Q#j1rx4s7gl%@3ZKT;PzVa;~B|HI4<4pjKC1v zn~HH}^ae&^Xe+g!POGB7pqt?Bx5?6i3wW3tsl=6h`9jWV0-BdgB8v{uB5T8)#EfL| z8)8In)ZE{>Dpw#VFeioS+k{X4YgFZ*+7ES$j zkEN4Bx!k}!e95(ua4Au*9x*BOmteTX;L;sg8T%W^pok4njUrhq&xl{u*?j-W=5u$=nY$%GIW4q0DddR9HFfPOj8l2k zh%JE@z`8zCDa&I*?5g(PIlZ3)Y%iW)k=aZMeR~QX3b>d)MP{IvhesINU;%0F^}`aW z`}lzk&Ja?Qut#P#eR4mXw;ZLwK1Obq8&cI}C$$#D^He_g?;j0huZg$y0vXfc+lL^k z-=*)1MJkl=Re6W%R7$s(P>ZPzMe+j=W!g$EI--C{M@+BnV~6DuprloWGWy2l7rf2I zgd@+fD^gRDN_uaZ!&BlWpM73XoAh3VKzO?LbpvgWv zQj)d)rZS@w*_DT(B{vdqZcqFG{fq)=xurv^%888j(45l9vsSvk!BN09!!bJ{Qnn3h zeHHZPF_vj7ZgAJ!z)80Q)8dPsA~k@;>mSZ z1K6wTcwFvv2xr^vYdX~-z1z?5K~JM429NWuv2oMj-QCSRh4en}xU(AcF|nyDHwy%H_VYoQ67)UAq(Z)5Y(g zT;7xoYe8t1N{yOD&n;fy0^?kie*@ku6BAx(Jcet2EM*uAkFA9nDWJ6Y(xRX;Zs4h;cNIWDC9 zG?-ePQm$MrX^-mI!>l9_41T+(=gdw&p74HknJAdE+9RQpZ3e@7;Cxw#D@oe8 z_um*|ZI}3D00sxtO7SryH;1@NmTRb5l%3Ji(z0y8Ax&FGPaL!708H|pnBHd~HIOjy}(8SNAE z2XZv5x_|!cVvp1X7Orj_n4`_tn@+j zigZRMAO!>?7AO-W(D&Sa%0;gh+VKlJA5hkK=XnSuEfmUeNC&9QXg`;IKgb!2Xws(D zqIm=OZsZ(usW-Lo7%`C(<(6eHXopJqs_WOSh|#o0o^{I>$#MdR6TM~0!TYf{U9#5m z@T&jtb=@$EJwmJbADI;?6=ZN3d_e`~E7rZd&vprF;BDI!@TU>KyQe=4F3sA*VcmU~ zHHlm}=zs{`Y_b(@e!C}}0U_5^2);wDSf4CulHNBAr`<>K_#VX^WJIWSjzVSSTSsvv z{b_XTqe9u9!7{x}|3ArbZ`%b@7jdA3jIKpQz_o1_N6Hd@Ek<8{71vM409mSe4apzf zMwjUF@93M}PU!M;#efQkZw5-#fi}l0M=Zi4fwaJqR`ouMuZeNKX)oXkJ&ffXupAF? zNLye`()(nbNe2hW*X!xzGm|PM=5z!7Tdq-<=$^EFJKQJ6^K0-hQYlJY-k30Qtw8QG^ME9M2wK|lQS9H5Z0(kHVygxf7znpv4|1ibMkaTI6*kj|#mu`RQ2+AC#qEcGH7|$Xghl2PoFqyWO zKTSe5r_rdAJKg^E3VPVgF1U?u6ia+evkfXxBeVl?d>e@76*JXvWJ+3%M8V{5>Sl;| zK=uO~)d`nq1XIa{QkRuXk(PIdH=2OFH;sv%?J4z0&_^VrJrtLEOrg0ObOSE(6rEng zJb@8$MSsphEZ8%VqzbWUwxH0yy{U1aK25n7iPOYUf%|w4`Um1t+Atlmx*=P47qg)(u`TkoYliE-Ltd zUEL|GCKhdPTzi{e8@54G`g<$B2pc#TGDpz;G02@ccq%sP#g=5!jn*R_59WeDHJ}5- z_;#wGm(1#9mDUD*2HeGFjCn>F{@poGp6ECDaR3)*(i|H`k6nKIzv58?63Cp6%zd5E zX6;#JLu^-!A|RNkrURl}UWn#=_+7IR#55DX=QHCb0t)ubsU}fcG0+9W!W_OUA=53B zpbYYImh~dzZ!K1*DE@&CzoV^^Lic`?1WZzAmy61xp3o6Gqhrk!q2r{pjfp(v$VzLt zBdgKvI$S+`RtAWY)M~-hyfQYWh+7+0mLv_v(n&!obf4!&{pSLm{S`eX)|uiN#b~ni zv1@}oz!2I-r6cOWdE#@1v`xw-2{$_<8t1DNaN+M{hgpgcDjrZfYQZjF*kUK=RCoXd z9yYJ|$X{Bb1qo?TyTFUlyvuiwjG~`OqJg>|@d|Tj$Pvg0>*5dWCc&9IR#4~9zsk^U zh8-J!B5pooy*9%fx<+OVq6w|ealrrsC5d?#eLco5IiTm|iLeEzUl?{G9{4oW<{HzZ zZu|{@z3(k%S|v3X4Iwbkved$VitFe1QcyQ}`Gyt)tA$*Mj{sg_77R_Ik2J!`OFr3U~F{`_->NJ$I-%o2;9(*-!VrL1!^u8cTisYF_ z)S%RV-Tsg*-hUliy7b%!U(;*y;0GHlXO+$*kX2KIL5pW_s@ ztgd8zW0oWs*KxMCW`;(;8*(Ks8K5322g~N3pi} zvu@%}>ugYjE~ynn1m;lC00j$-!9FjUHn-_vOV4y5Puy*dAOH&&STugUOPx8)pT6Dy zSD1y@d%+}#7X(j14?rFB6jjGP=D8zYityL0Lvc}T>w>dx7_S9EfUOExv~uX!>bsSX zrIO`^%|FRK&KFt)pk!D0)8xObg%PhW8l&hOs?h}VKdv97>9NkV6ggfj5df}>ZdLKr zx%-)RA<`DcAP@NgGjqyj?QMl_yb!+^$^=3HDlMX5Pd>pvoQ)Hq$neKyd2GZ~K7(KrP}CJ%}sEnE4W(__4@g z8eT{2kr1Ys{!=0sW6zo*&&ls%aupR7@?x1UA2qRXZHs)g>;rTJUj~*$9+a~jJ=kB! zr%t7LGmI8ND~mG?XSVSDLUQK<8r{?Hfrb$BYX7$DwPl02yN2A#XigBEkLE1Z`Q_gO zbT-EWPD~y@%4c}=bt5ga$lV=DN@3$tTG?lHpm_De0D>GwA zUJ2k#h~o(P#^R-dr;OH9%8-i7PXcFabcl~oALEmmJ(<-og%4xh$ncf&XL!_`#bo5g zCktcH1;@`~{^i+R`f7oU)3lj28m#*IoKLX5c_tG|RSJEnpcw84-Gifq4n0s4QGF)q z6ohX|yy3pp@AZwMSCMfeCzGiGuAjpdwvsVMuX;4pZQyoTms zq2!}+b&s)Qw`+IpL{c+#bjpBe`D5hH)b$w6nSJtotnc#nfB$Zj M { + const returnAll = this.getNodeParameter('returnAll', index) as boolean; + const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + + const qs = {} as IDataObject; + const requestMethod = 'GET'; + const endpoint = '/users'; + const body = {} as IDataObject; + + if (additionalFields.inTeam) { + qs.in_team = additionalFields.inTeam; + } + + if (additionalFields.notInTeam) { + qs.not_in_team = additionalFields.notInTeam; + } + + if (additionalFields.inChannel) { + qs.in_channel = additionalFields.inChannel; + } + + if (additionalFields.notInChannel) { + qs.not_in_channel = additionalFields.notInChannel; + } + + if (additionalFields.sort) { + qs.sort = snakeCase(additionalFields.sort as string); + } + + const validRules = { + inTeam: ['last_activity_at', 'created_at', 'username'], + inChannel: ['status', 'username'], + }; + + if (additionalFields.sort) { + if (additionalFields.inTeam !== undefined || additionalFields.inChannel !== undefined) { + + if (additionalFields.inTeam !== undefined + && !validRules.inTeam.includes(snakeCase(additionalFields.sort as string))) { + throw new NodeOperationError(this.getNode(), `When In Team is set the only valid values for sorting are ${validRules.inTeam.join(',')}`); + } + if (additionalFields.inChannel !== undefined + && !validRules.inChannel.includes(snakeCase(additionalFields.sort as string))) { + throw new NodeOperationError(this.getNode(), `When In Channel is set the only valid values for sorting are ${validRules.inChannel.join(',')}`); + } + if (additionalFields.inChannel === '' + && additionalFields.sort !== 'username') { + throw new NodeOperationError(this.getNode(), 'When sort is different than username In Channel must be set'); + } + + if (additionalFields.inTeam === '' + && additionalFields.sort !== 'username') { + throw new NodeOperationError(this.getNode(), 'When sort is different than username In Team must be set'); + } + + } else { + throw new NodeOperationError(this.getNode(), `When sort is defined either 'in team' or 'in channel' must be defined`); + } + } + + if (additionalFields.sort === 'username') { + qs.sort = ''; + } + + if (returnAll === false) { + qs.per_page = this.getNodeParameter('limit', index) as number; + } + + + let responseData; + + if (returnAll) { + responseData = await apiRequestAllItems.call(this, requestMethod, endpoint, body, qs); + } else { + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + } + + return this.helpers.returnJsonArray(responseData); +} \ No newline at end of file diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/user/getAll/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/user/getAll/index.ts new file mode 100644 index 0000000000000..e1e1b5ddd627b --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/user/getAll/index.ts @@ -0,0 +1,7 @@ +import { getAll as execute } from './execute'; +import { userGetAllDescription as description } from './description'; + +export { + description, + execute, +}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/user/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/user/index.ts new file mode 100644 index 0000000000000..864db63c1c384 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/user/index.ts @@ -0,0 +1,60 @@ + +import * as getAll from './getAll'; + +import { INodeProperties } from 'n8n-workflow'; + +export { + getAll, +}; + + +export const descriptions = [ + { + displayName: 'Operation', + name: 'operation', + type: 'options', + displayOptions: { + show: { + resource: [ + 'user', + ], + }, + }, + options: [ + { + name: 'Create', + value: 'create', + description: 'Create a new user', + }, + { + name: 'Deactive', + value: 'deactive', + description: 'Deactivates the user and revokes all its sessions by archiving its user object.', + }, + { + name: 'Get All', + value: 'getAll', + description: 'Retrieve all users', + }, + { + name: 'Get By Email', + value: 'getByEmail', + description: 'Get a user by email', + }, + { + name: 'Get By ID', + value: 'getById', + description: 'Get a user by id', + }, + { + name: 'Invite', + value: 'invite', + description: 'Invite user to team', + }, + ], + default: '', + description: 'The operation to perform.', + }, + ...getAll.description, +] as INodeProperties[]; + diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts new file mode 100644 index 0000000000000..cc444824d3ce7 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts @@ -0,0 +1,44 @@ +import { + INodeProperties, + INodeTypeDescription, +} from 'n8n-workflow'; + +import * as user from './user'; + +export const versionDescription: INodeTypeDescription = { + displayName: 'SyncroMSP', + name: 'syncromsp', + icon: 'file:syncromsp.png', + group: ['output'], + version: 1, + subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', + description: 'Gets data from SyncroMSP', + defaults: { + name: 'SyncroMSP', + color: '#000000', + }, + inputs: ['main'], + outputs: ['main'], + credentials: [ + { + name: 'syncroMspApi', + required: true, + }, + ], + properties: [ + { + displayName: 'Resource', + name: 'resource', + type: 'options', + options: [ + { + name: 'Customer', + value: 'user', + }, + ], + default: 'user', + description: 'The resource to operate on', + }, + ...user.descriptions, + ], +}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/syncromsp.png b/packages/nodes-base/nodes/SyncroMSP/v1/syncromsp.png new file mode 100644 index 0000000000000000000000000000000000000000..8f54b6d4420aa2388ceeaeb3d538e70efb3611bd GIT binary patch literal 9746 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 M Date: Tue, 23 Nov 2021 15:28:59 +0530 Subject: [PATCH 21/73] Added get customer details api for syncomsp-node --- .../nodes/SyncroMSP/v1/actions/Interfaces.ts | 19 +-- .../v1/actions/customer/getAll/description.ts | 39 ++++++ .../v1/actions/customer/getAll/execute.ts | 31 +++++ .../{user => customer}/getAll/index.ts | 2 +- .../SyncroMSP/v1/actions/customer/index.ts | 35 ++++++ .../nodes/SyncroMSP/v1/actions/router.ts | 22 +++- .../v1/actions/user/getAll/description.ts | 119 ------------------ .../v1/actions/user/getAll/execute.ts | 98 --------------- .../nodes/SyncroMSP/v1/actions/user/index.ts | 60 --------- .../v1/actions/versionDescription.ts | 8 +- .../nodes/SyncroMSP/v1/transport/index.ts | 34 +---- 11 files changed, 136 insertions(+), 331 deletions(-) create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts rename packages/nodes-base/nodes/SyncroMSP/v1/actions/{user => customer}/getAll/index.ts (53%) create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts delete mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/user/getAll/description.ts delete mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/user/getAll/execute.ts delete mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/user/index.ts diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts index b9d6dd7efa3bc..44594ccbe4183 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts @@ -4,24 +4,15 @@ import { PropertiesOf, } from 'n8n-workflow'; -type MattermostMap = { - channel: 'addUser' | 'create' | 'delete' | 'members' | 'restore' | 'statistics'; - message: 'delete' | 'post' | 'postEphemeral'; - reaction: 'create' | 'delete' | 'getAll'; - user: 'create' | 'deactive' | 'getAll' | 'getByEmail' | 'getById' | 'invite'; +type SyncroMspMap = { + customer: 'getAll'; }; -export type Mattermost = AllEntities; +export type SyncroMsp = AllEntities; -export type MattermostChannel = Entity; -export type MattermostMessage = Entity; -export type MattermostReaction = Entity; -export type MattermostUser = Entity; +export type SyncroMspMapCustomer = Entity; -export type ChannelProperties = PropertiesOf; -export type MessageProperties = PropertiesOf; -export type ReactionProperties = PropertiesOf; -export type UserProperties = PropertiesOf; +export type CustomerProperties = PropertiesOf; export interface IAttachment { fields: { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts new file mode 100644 index 0000000000000..c2bf36cb08ec3 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts @@ -0,0 +1,39 @@ +import { + CustomerProperties, +} from '../../Interfaces'; + +export const customerGetAllDescription: CustomerProperties = [ + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + displayOptions: { + show: { + resource: [ + 'customer', + ], + operation: [ + 'getAll', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'Query', + name: 'query', + type: 'string', + default: '', + description: 'Search query', + }, + { + displayName: 'Page', + name: 'page', + type: 'number', + default: 25, + description: 'Returns provided page of results, each page contains 25 results', + }, + ], + }, +]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts new file mode 100644 index 0000000000000..7a244d9c8b3ae --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts @@ -0,0 +1,31 @@ +import { + IExecuteFunctions, +} from 'n8n-core'; + +import { + IDataObject, + INodeExecutionData, +} from 'n8n-workflow'; + +import { + apiRequest, +} from '../../../transport'; + + +export async function getAll(this: IExecuteFunctions, index: number): Promise { + const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + + let qs = {} as IDataObject; + const requestMethod = 'GET'; + const endpoint = 'customers'; + const body = {} as IDataObject; + + if (additionalFields) { + qs = additionalFields; + } + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + + return this.helpers.returnJsonArray(responseData.customers); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/user/getAll/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/index.ts similarity index 53% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/user/getAll/index.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/index.ts index e1e1b5ddd627b..0c41710eb56f7 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/user/getAll/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/index.ts @@ -1,5 +1,5 @@ import { getAll as execute } from './execute'; -import { userGetAllDescription as description } from './description'; +import { customerGetAllDescription as description } from './description'; export { description, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts new file mode 100644 index 0000000000000..33f56b43dcfcf --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts @@ -0,0 +1,35 @@ + +import * as getAll from './getAll'; + +import { INodeProperties } from 'n8n-workflow'; + +export { + getAll, +}; + + +export const descriptions = [ + { + displayName: 'Operation', + name: 'operation', + type: 'options', + displayOptions: { + show: { + resource: [ + 'customer', + ], + }, + }, + options: [ + { + name: 'Get All Customers', + value: 'getAll', + description: 'Retrieve all customers', + }, + ], + default: '', + description: 'The operation to perform.', + }, + ...getAll.description, +] as INodeProperties[]; + diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts index 1334471d219e7..7dc71bd4ebe99 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts @@ -6,15 +6,15 @@ import { INodeExecutionData, } from 'n8n-workflow'; -import * as user from './user'; -import { Mattermost } from './Interfaces'; +import * as customer from './customer'; +import { SyncroMsp } from './Interfaces'; export async function router(this: IExecuteFunctions): Promise { const items = this.getInputData(); const operationResult: INodeExecutionData[] = []; for (let i = 0; i < items.length; i++) { - const resource = this.getNodeParameter('resource', i); + const resource = this.getNodeParameter('resource', i); let operation = this.getNodeParameter('operation', i); if (operation === 'del') { operation = 'delete'; @@ -22,10 +22,22 @@ export async function router(this: IExecuteFunctions): Promise { - const returnAll = this.getNodeParameter('returnAll', index) as boolean; - const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; - - const qs = {} as IDataObject; - const requestMethod = 'GET'; - const endpoint = '/users'; - const body = {} as IDataObject; - - if (additionalFields.inTeam) { - qs.in_team = additionalFields.inTeam; - } - - if (additionalFields.notInTeam) { - qs.not_in_team = additionalFields.notInTeam; - } - - if (additionalFields.inChannel) { - qs.in_channel = additionalFields.inChannel; - } - - if (additionalFields.notInChannel) { - qs.not_in_channel = additionalFields.notInChannel; - } - - if (additionalFields.sort) { - qs.sort = snakeCase(additionalFields.sort as string); - } - - const validRules = { - inTeam: ['last_activity_at', 'created_at', 'username'], - inChannel: ['status', 'username'], - }; - - if (additionalFields.sort) { - if (additionalFields.inTeam !== undefined || additionalFields.inChannel !== undefined) { - - if (additionalFields.inTeam !== undefined - && !validRules.inTeam.includes(snakeCase(additionalFields.sort as string))) { - throw new NodeOperationError(this.getNode(), `When In Team is set the only valid values for sorting are ${validRules.inTeam.join(',')}`); - } - if (additionalFields.inChannel !== undefined - && !validRules.inChannel.includes(snakeCase(additionalFields.sort as string))) { - throw new NodeOperationError(this.getNode(), `When In Channel is set the only valid values for sorting are ${validRules.inChannel.join(',')}`); - } - if (additionalFields.inChannel === '' - && additionalFields.sort !== 'username') { - throw new NodeOperationError(this.getNode(), 'When sort is different than username In Channel must be set'); - } - - if (additionalFields.inTeam === '' - && additionalFields.sort !== 'username') { - throw new NodeOperationError(this.getNode(), 'When sort is different than username In Team must be set'); - } - - } else { - throw new NodeOperationError(this.getNode(), `When sort is defined either 'in team' or 'in channel' must be defined`); - } - } - - if (additionalFields.sort === 'username') { - qs.sort = ''; - } - - if (returnAll === false) { - qs.per_page = this.getNodeParameter('limit', index) as number; - } - - - let responseData; - - if (returnAll) { - responseData = await apiRequestAllItems.call(this, requestMethod, endpoint, body, qs); - } else { - responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); - } - - return this.helpers.returnJsonArray(responseData); -} \ No newline at end of file diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/user/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/user/index.ts deleted file mode 100644 index 864db63c1c384..0000000000000 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/user/index.ts +++ /dev/null @@ -1,60 +0,0 @@ - -import * as getAll from './getAll'; - -import { INodeProperties } from 'n8n-workflow'; - -export { - getAll, -}; - - -export const descriptions = [ - { - displayName: 'Operation', - name: 'operation', - type: 'options', - displayOptions: { - show: { - resource: [ - 'user', - ], - }, - }, - options: [ - { - name: 'Create', - value: 'create', - description: 'Create a new user', - }, - { - name: 'Deactive', - value: 'deactive', - description: 'Deactivates the user and revokes all its sessions by archiving its user object.', - }, - { - name: 'Get All', - value: 'getAll', - description: 'Retrieve all users', - }, - { - name: 'Get By Email', - value: 'getByEmail', - description: 'Get a user by email', - }, - { - name: 'Get By ID', - value: 'getById', - description: 'Get a user by id', - }, - { - name: 'Invite', - value: 'invite', - description: 'Invite user to team', - }, - ], - default: '', - description: 'The operation to perform.', - }, - ...getAll.description, -] as INodeProperties[]; - diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts index cc444824d3ce7..217de1f93bc7c 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts @@ -3,7 +3,7 @@ import { INodeTypeDescription, } from 'n8n-workflow'; -import * as user from './user'; +import * as customer from './customer'; export const versionDescription: INodeTypeDescription = { displayName: 'SyncroMSP', @@ -33,12 +33,12 @@ export const versionDescription: INodeTypeDescription = { options: [ { name: 'Customer', - value: 'user', + value: 'customer', }, ], - default: 'user', + default: 'customer', description: 'The resource to operate on', }, - ...user.descriptions, + ...customer.descriptions, ], }; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/transport/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/transport/index.ts index 834005b10fc4f..ef070281b5235 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/transport/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/transport/index.ts @@ -28,15 +28,14 @@ export async function apiRequest( throw new NodeOperationError(this.getNode(), 'No credentials returned!'); } + query['api_key']=credentials.apiKey + const options: IHttpRequestOptions = { method, body, qs: query, - url: `${credentials.baseUrl}/api/v1/${endpoint}`, - headers: { - authorization: `Bearer ${credentials.accessToken}`, - 'content-type': 'application/json; charset=utf-8', - }, + url: `https://${credentials.subDomain}.syncromsp.com/api/v1/${endpoint}`, + headers: {}, }; try { @@ -45,28 +44,3 @@ export async function apiRequest( throw new NodeApiError(this.getNode(), error); } } - -export async function apiRequestAllItems( - this: IExecuteFunctions | ILoadOptionsFunctions, - method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'HEAD', - endpoint: string, - body: IDataObject = {}, - query: IDataObject = {}, -) { - - const returnData: IDataObject[] = []; - - let responseData; - query.page = 0; - query.per_page = 100; - - do { - responseData = await apiRequest.call(this, method, endpoint, body, query); - query.page++; - returnData.push.apply(returnData, responseData); - } while ( - responseData.length !== 0 - ); - - return returnData; -} From acd1c7690c924a9ac643df179395db74f313bd3a Mon Sep 17 00:00:00 2001 From: bearbobs Date: Tue, 23 Nov 2021 15:37:31 +0530 Subject: [PATCH 22/73] Fixed formatting bug :bug: --- packages/nodes-base/nodes/SyncroMSP/v1/transport/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/transport/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/transport/index.ts index ef070281b5235..349c768379e7f 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/transport/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/transport/index.ts @@ -28,7 +28,7 @@ export async function apiRequest( throw new NodeOperationError(this.getNode(), 'No credentials returned!'); } - query['api_key']=credentials.apiKey + query['api_key']=credentials.apiKey; const options: IHttpRequestOptions = { method, From b912295bcdcbdad81b1e162774628bff23d11e67 Mon Sep 17 00:00:00 2001 From: bearbobs Date: Wed, 24 Nov 2021 11:02:22 +0530 Subject: [PATCH 23/73] Updated description for query params, and removed redundant condition in router --- .../nodes/SyncroMSP/v1/actions/customer/getAll/description.ts | 2 +- packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts index c2bf36cb08ec3..84c4532474fe3 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts @@ -25,7 +25,7 @@ export const customerGetAllDescription: CustomerProperties = [ name: 'query', type: 'string', default: '', - description: 'Search query', + description: 'Search query, it can be anything related to customer data like name etc.', }, { displayName: 'Page', diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts index 7dc71bd4ebe99..7087916a5a58d 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts @@ -18,8 +18,6 @@ export async function router(this: IExecuteFunctions): Promise Date: Wed, 24 Nov 2021 11:03:12 +0530 Subject: [PATCH 24/73] Changed default value for page parameter --- .../nodes/SyncroMSP/v1/actions/customer/getAll/description.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts index 84c4532474fe3..4e7ff2f1a0c51 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts @@ -31,7 +31,7 @@ export const customerGetAllDescription: CustomerProperties = [ displayName: 'Page', name: 'page', type: 'number', - default: 25, + default: 1, description: 'Returns provided page of results, each page contains 25 results', }, ], From db43999eee8fe81fe21807ae64d3f716b8256f77 Mon Sep 17 00:00:00 2001 From: bearbobs Date: Wed, 24 Nov 2021 14:17:43 +0530 Subject: [PATCH 25/73] :ship: Added tickets API --- .../nodes/SyncroMSP/v1/actions/Interfaces.ts | 3 ++ .../nodes/SyncroMSP/v1/actions/router.ts | 3 ++ .../v1/actions/ticket/getAll/description.ts | 39 +++++++++++++++++++ .../v1/actions/ticket/getAll/execute.ts | 31 +++++++++++++++ .../v1/actions/ticket/getAll/index.ts | 7 ++++ .../SyncroMSP/v1/actions/ticket/index.ts | 35 +++++++++++++++++ .../v1/actions/versionDescription.ts | 6 +++ 7 files changed, 124 insertions(+) create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/index.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/index.ts diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts index 44594ccbe4183..8a90ef8f41ad6 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts @@ -6,13 +6,16 @@ import { type SyncroMspMap = { customer: 'getAll'; + ticket: 'getAll'; }; export type SyncroMsp = AllEntities; export type SyncroMspMapCustomer = Entity; +export type SyncroMspMapTicket = Entity; export type CustomerProperties = PropertiesOf; +export type TicketProperties = PropertiesOf; export interface IAttachment { fields: { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts index 7087916a5a58d..52efd81c3c242 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts @@ -7,6 +7,7 @@ import { } from 'n8n-workflow'; import * as customer from './customer'; +import * as ticket from './ticket'; import { SyncroMsp } from './Interfaces'; export async function router(this: IExecuteFunctions): Promise { @@ -28,6 +29,8 @@ export async function router(this: IExecuteFunctions): Promise { + const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + + let qs = {} as IDataObject; + const requestMethod = 'GET'; + const endpoint = 'tickets'; + const body = {} as IDataObject; + + if (additionalFields) { + qs = additionalFields; + } + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + + return this.helpers.returnJsonArray(responseData.tickets); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/index.ts new file mode 100644 index 0000000000000..3a74352f14efe --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/index.ts @@ -0,0 +1,7 @@ +import { getAll as execute } from './execute'; +import { ticketGetAllDescription as description } from './description'; + +export { + description, + execute, +}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/index.ts new file mode 100644 index 0000000000000..f5f5025b3e00b --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/index.ts @@ -0,0 +1,35 @@ + +import * as getAll from './getAll'; + +import { INodeProperties } from 'n8n-workflow'; + +export { + getAll, +}; + + +export const descriptions = [ + { + displayName: 'Operation', + name: 'operation', + type: 'options', + displayOptions: { + show: { + resource: [ + 'ticket', + ], + }, + }, + options: [ + { + name: 'Get All Tickets', + value: 'getAll', + description: 'Retrieve all tickets', + }, + ], + default: '', + description: 'The operation to perform.', + }, + ...getAll.description, +] as INodeProperties[]; + diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts index 217de1f93bc7c..dd33c0a00db37 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts @@ -4,6 +4,7 @@ import { } from 'n8n-workflow'; import * as customer from './customer'; +import * as ticket from './ticket'; export const versionDescription: INodeTypeDescription = { displayName: 'SyncroMSP', @@ -35,10 +36,15 @@ export const versionDescription: INodeTypeDescription = { name: 'Customer', value: 'customer', }, + { + name: 'Ticket', + value: 'ticket', + }, ], default: 'customer', description: 'The resource to operate on', }, ...customer.descriptions, + ...ticket.descriptions, ], }; From 07465b4dfc293a8f4e1350c8ef9438d9f883bc58 Mon Sep 17 00:00:00 2001 From: bearbobs Date: Wed, 24 Nov 2021 17:03:18 +0530 Subject: [PATCH 26/73] :ship: Added contacts API --- .../nodes/SyncroMSP/v1/actions/Interfaces.ts | 3 ++ .../v1/actions/contact/getAll/description.ts | 39 +++++++++++++++++++ .../v1/actions/contact/getAll/execute.ts | 31 +++++++++++++++ .../v1/actions/contact/getAll/index.ts | 7 ++++ .../SyncroMSP/v1/actions/contact/index.ts | 35 +++++++++++++++++ .../nodes/SyncroMSP/v1/actions/router.ts | 3 ++ .../v1/actions/versionDescription.ts | 6 +++ 7 files changed, 124 insertions(+) create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/index.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts index 8a90ef8f41ad6..b9bb098d1210d 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts @@ -7,15 +7,18 @@ import { type SyncroMspMap = { customer: 'getAll'; ticket: 'getAll'; + contact: 'getAll'; }; export type SyncroMsp = AllEntities; export type SyncroMspMapCustomer = Entity; export type SyncroMspMapTicket = Entity; +export type SyncroMspMapContact = Entity; export type CustomerProperties = PropertiesOf; export type TicketProperties = PropertiesOf; +export type ContactProperties = PropertiesOf; export interface IAttachment { fields: { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts new file mode 100644 index 0000000000000..913ae23d5842b --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts @@ -0,0 +1,39 @@ +import { + ContactProperties, +} from '../../Interfaces'; + +export const contactGetAllDescription: ContactProperties = [ + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + displayOptions: { + show: { + resource: [ + 'contact', + ], + operation: [ + 'getAll', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'Query', + name: 'query', + type: 'string', + default: '', + description: 'Search query, it can be anything related to contact data like name etc.', + }, + { + displayName: 'Page', + name: 'page', + type: 'number', + default: 1, + description: 'Returns provided page of results, each page contains 25 results', + }, + ], + }, +]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/execute.ts new file mode 100644 index 0000000000000..d8441c9f96c16 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/execute.ts @@ -0,0 +1,31 @@ +import { + IExecuteFunctions, +} from 'n8n-core'; + +import { + IDataObject, + INodeExecutionData, +} from 'n8n-workflow'; + +import { + apiRequest, +} from '../../../transport'; + + +export async function getAll(this: IExecuteFunctions, index: number): Promise { + const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + + let qs = {} as IDataObject; + const requestMethod = 'GET'; + const endpoint = 'contacts'; + const body = {} as IDataObject; + + if (additionalFields) { + qs = additionalFields; + } + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + + return this.helpers.returnJsonArray(responseData.contacts); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/index.ts new file mode 100644 index 0000000000000..5bfeb146b63e9 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/index.ts @@ -0,0 +1,7 @@ +import { getAll as execute } from './execute'; +import { contactGetAllDescription as description } from './description'; + +export { + description, + execute, +}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts new file mode 100644 index 0000000000000..77d53ae78b8f4 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts @@ -0,0 +1,35 @@ + +import * as getAll from './getAll'; + +import { INodeProperties } from 'n8n-workflow'; + +export { + getAll, +}; + + +export const descriptions = [ + { + displayName: 'Operation', + name: 'operation', + type: 'options', + displayOptions: { + show: { + resource: [ + 'contact', + ], + }, + }, + options: [ + { + name: 'Get All Contacts', + value: 'getAll', + description: 'Retrieve all contacts', + }, + ], + default: '', + description: 'The operation to perform.', + }, + ...getAll.description, +] as INodeProperties[]; + diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts index 52efd81c3c242..b7fd87d1d88e9 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts @@ -8,6 +8,7 @@ import { import * as customer from './customer'; import * as ticket from './ticket'; +import * as contact from './contact'; import { SyncroMsp } from './Interfaces'; export async function router(this: IExecuteFunctions): Promise { @@ -31,6 +32,8 @@ export async function router(this: IExecuteFunctions): Promise Date: Wed, 24 Nov 2021 17:22:52 +0530 Subject: [PATCH 27/73] :ship: Added RMM Alerts API --- .../nodes/SyncroMSP/v1/actions/Interfaces.ts | 3 ++ .../v1/actions/rmm/getAlerts/description.ts | 39 +++++++++++++++++++ .../v1/actions/rmm/getAlerts/execute.ts | 31 +++++++++++++++ .../v1/actions/rmm/getAlerts/index.ts | 7 ++++ .../nodes/SyncroMSP/v1/actions/rmm/index.ts | 35 +++++++++++++++++ .../nodes/SyncroMSP/v1/actions/router.ts | 4 ++ .../v1/actions/versionDescription.ts | 6 +++ 7 files changed, 125 insertions(+) create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/index.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/index.ts diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts index b9bb098d1210d..2a57af5d07116 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts @@ -8,6 +8,7 @@ type SyncroMspMap = { customer: 'getAll'; ticket: 'getAll'; contact: 'getAll'; + rmm: 'getAlerts'; }; export type SyncroMsp = AllEntities; @@ -15,10 +16,12 @@ export type SyncroMsp = AllEntities; export type SyncroMspMapCustomer = Entity; export type SyncroMspMapTicket = Entity; export type SyncroMspMapContact = Entity; +export type SyncroMspMapRmm = Entity; export type CustomerProperties = PropertiesOf; export type TicketProperties = PropertiesOf; export type ContactProperties = PropertiesOf; +export type RmmProperties = PropertiesOf; export interface IAttachment { fields: { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/description.ts new file mode 100644 index 0000000000000..ed4e20427d4df --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/description.ts @@ -0,0 +1,39 @@ +import { + RmmProperties, +} from '../../Interfaces'; + +export const rmmGetAllDescription: RmmProperties = [ + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + displayOptions: { + show: { + resource: [ + 'rmm', + ], + operation: [ + 'getAlerts', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'Status', + name: 'status', + type: 'string', + default: '', + description: 'Possible values resolved, all, active.', + }, + { + displayName: 'Page', + name: 'page', + type: 'number', + default: 1, + description: 'Returns provided page of results, each page contains 25 results', + }, + ], + }, +]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/execute.ts new file mode 100644 index 0000000000000..e8b33d740d395 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/execute.ts @@ -0,0 +1,31 @@ +import { + IExecuteFunctions, +} from 'n8n-core'; + +import { + IDataObject, + INodeExecutionData, +} from 'n8n-workflow'; + +import { + apiRequest, +} from '../../../transport'; + + +export async function getAll(this: IExecuteFunctions, index: number): Promise { + const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + + let qs = {} as IDataObject; + const requestMethod = 'GET'; + const endpoint = 'rmm_alerts'; + const body = {} as IDataObject; + + if (additionalFields) { + qs = additionalFields; + } + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + + return this.helpers.returnJsonArray(responseData.rmm_alerts); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/index.ts new file mode 100644 index 0000000000000..473b83575632a --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/index.ts @@ -0,0 +1,7 @@ +import { getAll as execute } from './execute'; +import { rmmGetAllDescription as description } from './description'; + +export { + description, + execute, +}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/index.ts new file mode 100644 index 0000000000000..f04aad9fa7c36 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/index.ts @@ -0,0 +1,35 @@ + +import * as getAlerts from './getAlerts'; + +import { INodeProperties } from 'n8n-workflow'; + +export { + getAlerts, +}; + + +export const descriptions = [ + { + displayName: 'Operation', + name: 'operation', + type: 'options', + displayOptions: { + show: { + resource: [ + 'rmm', + ], + }, + }, + options: [ + { + name: 'Get RMM Alerts', + value: 'getAlerts', + description: 'Retrieve RMM Alerts', + }, + ], + default: '', + description: 'The operation to perform.', + }, + ...getAlerts.description, +] as INodeProperties[]; + diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts index b7fd87d1d88e9..60e930084fb64 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts @@ -9,6 +9,8 @@ import { import * as customer from './customer'; import * as ticket from './ticket'; import * as contact from './contact'; +import * as rmm from './rmm'; + import { SyncroMsp } from './Interfaces'; export async function router(this: IExecuteFunctions): Promise { @@ -34,6 +36,8 @@ export async function router(this: IExecuteFunctions): Promise Date: Thu, 25 Nov 2021 09:26:12 +0530 Subject: [PATCH 28/73] Updates post code review --- .../v1/actions/contact/getAll/description.ts | 27 ++++++++++++++++++- .../v1/actions/contact/getAll/execute.ts | 13 ++++++--- .../SyncroMSP/v1/actions/contact/index.ts | 2 +- .../v1/actions/customer/getAll/description.ts | 27 ++++++++++++++++++- .../v1/actions/customer/getAll/execute.ts | 13 ++++++--- .../SyncroMSP/v1/actions/customer/index.ts | 2 +- .../v1/actions/rmm/getAlerts/description.ts | 25 +++++++++++++++++ .../v1/actions/rmm/getAlerts/execute.ts | 13 ++++++--- .../nodes/SyncroMSP/v1/actions/rmm/index.ts | 2 +- .../v1/actions/ticket/getAll/description.ts | 27 ++++++++++++++++++- .../v1/actions/ticket/getAll/execute.ts | 13 ++++++--- .../SyncroMSP/v1/actions/ticket/index.ts | 2 +- .../nodes/SyncroMSP/v1/transport/index.ts | 23 ++++++++++++++++ 13 files changed, 166 insertions(+), 23 deletions(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts index 913ae23d5842b..dbdcf98871485 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts @@ -3,6 +3,23 @@ import { } from '../../Interfaces'; export const contactGetAllDescription: ContactProperties = [ + { + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', + displayOptions: { + show: { + resource: [ + 'contact', + ], + operation: [ + 'getAll', + ], + }, + }, + default: false, + description: 'If all results should be returned or only up to a given limit.', + }, { displayName: 'Additional Fields', name: 'additionalFields', @@ -21,12 +38,20 @@ export const contactGetAllDescription: ContactProperties = [ default: {}, options: [ { - displayName: 'Query', + displayName: 'Search Query', name: 'query', type: 'string', default: '', + placeholder: 'John Doe', description: 'Search query, it can be anything related to contact data like name etc.', }, + { + displayName: 'Limit', + name: 'per_page', + type: 'number', + default: 25, + description: 'limit the number of rows returned', + }, { displayName: 'Page', name: 'page', diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/execute.ts index d8441c9f96c16..329982c7276fd 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/execute.ts @@ -8,11 +8,12 @@ import { } from 'n8n-workflow'; import { - apiRequest, + apiRequest, apiRequestAllItems } from '../../../transport'; export async function getAll(this: IExecuteFunctions, index: number): Promise { + const returnAll = this.getNodeParameter('returnAll', index) as boolean; const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; let qs = {} as IDataObject; @@ -25,7 +26,11 @@ export async function getAll(this: IExecuteFunctions, index: number): Promise { + const returnAll = this.getNodeParameter('returnAll', index) as boolean; const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; let qs = {} as IDataObject; @@ -25,7 +26,11 @@ export async function getAll(this: IExecuteFunctions, index: number): Promise { + const returnAll = this.getNodeParameter('returnAll', index) as boolean; const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; let qs = {} as IDataObject; @@ -25,7 +26,11 @@ export async function getAll(this: IExecuteFunctions, index: number): Promise { + const returnAll = this.getNodeParameter('returnAll', index) as boolean; const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; let qs = {} as IDataObject; @@ -25,7 +26,11 @@ export async function getAll(this: IExecuteFunctions, index: number): Promise Date: Wed, 24 Nov 2021 20:15:52 +0530 Subject: [PATCH 29/73] Add customer API --- .../nodes/SyncroMSP/v1/actions/Interfaces.ts | 2 +- .../customer/addCustomer/description.ts | 39 +++++++++++++++++++ .../actions/customer/addCustomer/execute.ts | 31 +++++++++++++++ .../v1/actions/customer/addCustomer/index.ts | 7 ++++ .../SyncroMSP/v1/actions/customer/index.ts | 5 +++ 5 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/index.ts diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts index 2a57af5d07116..4cdfec0b963fb 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts @@ -5,7 +5,7 @@ import { } from 'n8n-workflow'; type SyncroMspMap = { - customer: 'getAll'; + customer: 'getAll'|'addCustomer'; ticket: 'getAll'; contact: 'getAll'; rmm: 'getAlerts'; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/description.ts new file mode 100644 index 0000000000000..70c251ab16c29 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/description.ts @@ -0,0 +1,39 @@ +import { + CustomerProperties, +} from '../../Interfaces'; + +export const customerAddCustomerDescription: CustomerProperties = [ + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + displayOptions: { + show: { + resource: [ + 'customer', + ], + operation: [ + 'addCustomer', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'Query', + name: 'query', + type: 'string', + default: '', + description: 'Search query, it can be anything related to customer data like name etc.', + }, + { + displayName: 'Page', + name: 'page', + type: 'number', + default: 1, + description: 'Returns provided page of results, each page contains 25 results', + }, + ], + }, +]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/execute.ts new file mode 100644 index 0000000000000..525c1735171f1 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/execute.ts @@ -0,0 +1,31 @@ +import { + IExecuteFunctions, +} from 'n8n-core'; + +import { + IDataObject, + INodeExecutionData, +} from 'n8n-workflow'; + +import { + apiRequest, +} from '../../../transport'; + + +export async function getAll(this: IExecuteFunctions, index: number): Promise { + const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + + let qs = {} as IDataObject; + const requestMethod = 'POST'; + const endpoint = 'customers'; + let body = {} as IDataObject; + + if (additionalFields) { + body = additionalFields; + } + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + + return this.helpers.returnJsonArray(responseData.customers); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/index.ts new file mode 100644 index 0000000000000..ebf275ba5c538 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/index.ts @@ -0,0 +1,7 @@ +import { getAll as execute } from './execute'; +import { customerAddCustomerDescription as description } from './description'; + +export { + description, + execute, +}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts index 4321a6ad4cc3a..03d63e546205d 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts @@ -26,6 +26,11 @@ export const descriptions = [ value: 'getAll', description: 'Retrieve all customers', }, + { + name: 'Add Customer', + value: 'addCustomer', + description: 'add new customers', + }, ], default: '', description: 'The operation to perform.', From b1f423a1ee1280b628e3c1a9bec72d5bd4ffdbd5 Mon Sep 17 00:00:00 2001 From: bearbobs Date: Thu, 25 Nov 2021 14:03:04 +0530 Subject: [PATCH 30/73] added create and delete method to customers module --- .../nodes/SyncroMSP/v1/actions/Interfaces.ts | 2 +- .../customer/addCustomer/description.ts | 96 +++++++++++++++++-- .../actions/customer/addCustomer/execute.ts | 11 ++- .../v1/actions/customer/getAll/description.ts | 17 ++++ .../v1/actions/customer/getAll/execute.ts | 5 +- .../SyncroMSP/v1/actions/customer/index.ts | 13 ++- 6 files changed, 132 insertions(+), 12 deletions(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts index 4cdfec0b963fb..91fc7653f8a9f 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts @@ -5,7 +5,7 @@ import { } from 'n8n-workflow'; type SyncroMspMap = { - customer: 'getAll'|'addCustomer'; + customer: 'getAll' | 'addCustomer' | 'deleteCustomer'; ticket: 'getAll'; contact: 'getAll'; rmm: 'getAlerts'; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/description.ts index 70c251ab16c29..392b7a19fae18 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/description.ts @@ -3,6 +3,70 @@ import { } from '../../Interfaces'; export const customerAddCustomerDescription: CustomerProperties = [ + { + displayName: 'First Name', + name: 'firstname', + type: 'string', + displayOptions: { + show: { + resource: [ + 'customer', + ], + operation: [ + 'addCustomer', + ], + }, + }, + default: '', + }, + { + displayName: 'Last Name', + name: 'lastname', + type: 'string', + displayOptions: { + show: { + resource: [ + 'customer', + ], + operation: [ + 'addCustomer', + ], + }, + }, + default: '', + }, + { + displayName: 'Business Name', + name: 'business_name', + type: 'string', + displayOptions: { + show: { + resource: [ + 'customer', + ], + operation: [ + 'addCustomer', + ], + }, + }, + default: '', + }, + { + displayName: 'Email', + name: 'email', + type: 'string', + displayOptions: { + show: { + resource: [ + 'customer', + ], + operation: [ + 'addCustomer', + ], + }, + }, + default: '', + }, { displayName: 'Additional Fields', name: 'additionalFields', @@ -21,18 +85,34 @@ export const customerAddCustomerDescription: CustomerProperties = [ default: {}, options: [ { - displayName: 'Query', - name: 'query', + displayName: 'Phone', + name: 'phone', + type: 'string', + default: '', + }, + { + displayName: 'Address', + name: 'address', type: 'string', default: '', - description: 'Search query, it can be anything related to customer data like name etc.', }, { - displayName: 'Page', - name: 'page', - type: 'number', - default: 1, - description: 'Returns provided page of results, each page contains 25 results', + displayName: 'City', + name: 'city', + type: 'string', + default: '', + }, + { + displayName: 'State', + name: 'state', + type: 'string', + default: '', + }, + { + displayName: 'ZIP', + name: 'zip', + type: 'string', + default: '', }, ], }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/execute.ts index 525c1735171f1..230f7603e8386 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/execute.ts @@ -13,6 +13,10 @@ import { export async function getAll(this: IExecuteFunctions, index: number): Promise { + const firstname = this.getNodeParameter('firstname', index) as IDataObject; + const lastname = this.getNodeParameter('lastname', index) as IDataObject; + const email = this.getNodeParameter('email', index) as IDataObject; + const business_name = this.getNodeParameter('business_name', index) as IDataObject; const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; let qs = {} as IDataObject; @@ -24,8 +28,13 @@ export async function getAll(this: IExecuteFunctions, index: number): Promise { + const id = this.getNodeParameter('id', index) as string; const returnAll = this.getNodeParameter('returnAll', index) as boolean; const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; @@ -21,7 +22,9 @@ export async function getAll(this: IExecuteFunctions, index: number): Promise Date: Thu, 25 Nov 2021 14:06:37 +0530 Subject: [PATCH 31/73] fix liniting issue --- .../actions/customer/addCustomer/execute.ts | 6 ++--- .../customer/deleteCustomer/description.ts | 23 ++++++++++++++++ .../customer/deleteCustomer/execute.ts | 26 +++++++++++++++++++ .../actions/customer/deleteCustomer/index.ts | 7 +++++ .../v1/actions/customer/getAll/execute.ts | 2 +- 5 files changed, 60 insertions(+), 4 deletions(-) create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/deleteCustomer/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/deleteCustomer/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/deleteCustomer/index.ts diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/execute.ts index 230f7603e8386..8760e892953b2 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/execute.ts @@ -16,10 +16,10 @@ export async function getAll(this: IExecuteFunctions, index: number): Promise { + const id = this.getNodeParameter('id', index) as string; + + const qs = {} as IDataObject; + const requestMethod = 'DELETE'; + const endpoint = `customers/${id}`; + const body = {} as IDataObject; + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + return this.helpers.returnJsonArray(responseData); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/deleteCustomer/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/deleteCustomer/index.ts new file mode 100644 index 0000000000000..432674f0bcb62 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/deleteCustomer/index.ts @@ -0,0 +1,7 @@ +import { deleteCustomer as execute } from './execute'; +import { customerDeleteDescription as description } from './description'; + +export { + description, + execute, +}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts index 1de7d4c6549f3..65ee369b0b7c7 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts @@ -23,7 +23,7 @@ export async function getAll(this: IExecuteFunctions, index: number): Promise Date: Thu, 25 Nov 2021 14:37:20 +0530 Subject: [PATCH 32/73] Added Update method to customer module --- .../nodes/SyncroMSP/v1/actions/Interfaces.ts | 2 +- .../customer/addCustomer/description.ts | 36 +++++ .../actions/customer/addCustomer/execute.ts | 2 +- .../v1/actions/customer/addCustomer/index.ts | 2 +- .../SyncroMSP/v1/actions/customer/index.ts | 8 ++ .../customer/updateCustomer/description.ts | 131 ++++++++++++++++++ .../customer/updateCustomer/execute.ts | 32 +++++ .../actions/customer/updateCustomer/index.ts | 7 + 8 files changed, 217 insertions(+), 3 deletions(-) create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/updateCustomer/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/updateCustomer/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/updateCustomer/index.ts diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts index 91fc7653f8a9f..26d6fae415106 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts @@ -5,7 +5,7 @@ import { } from 'n8n-workflow'; type SyncroMspMap = { - customer: 'getAll' | 'addCustomer' | 'deleteCustomer'; + customer: 'getAll' | 'addCustomer' | 'deleteCustomer' | 'updateCustomer'; ticket: 'getAll'; contact: 'getAll'; rmm: 'getAlerts'; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/description.ts index 392b7a19fae18..4fb58149b93dc 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/description.ts @@ -114,6 +114,42 @@ export const customerAddCustomerDescription: CustomerProperties = [ type: 'string', default: '', }, + { + displayName: 'Notes', + name: 'notes', + type: 'string', + default: '', + }, + { + displayName: 'Get SMS', + name: 'get_sms', + type: 'boolean', + default: true, + }, + { + displayName: 'No Email', + name: 'no_email', + type: 'boolean', + default: false, + }, + { + displayName: 'Referred By', + name: 'referred_by', + type: 'string', + default: '', + }, + { + displayName: 'Notification Email', + name: 'notification_email', + type: 'string', + default: '', + }, + { + displayName: 'Invoice Email', + name: 'invoice_cc_email', + type: 'string', + default: '', + }, ], }, ]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/execute.ts index 8760e892953b2..619220a654de6 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/execute.ts @@ -12,7 +12,7 @@ import { } from '../../../transport'; -export async function getAll(this: IExecuteFunctions, index: number): Promise { +export async function addCustomer(this: IExecuteFunctions, index: number): Promise { const firstname = this.getNodeParameter('firstname', index) as IDataObject; const lastname = this.getNodeParameter('lastname', index) as IDataObject; const email = this.getNodeParameter('email', index) as IDataObject; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/index.ts index ebf275ba5c538..3121c7262cb86 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/index.ts @@ -1,4 +1,4 @@ -import { getAll as execute } from './execute'; +import { addCustomer as execute } from './execute'; import { customerAddCustomerDescription as description } from './description'; export { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts index 471b3175685ea..79a891d34c86d 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts @@ -2,6 +2,7 @@ import * as getAll from './getAll'; import * as addCustomer from './addCustomer'; import * as deleteCustomer from './deleteCustomer'; +import * as updateCustomer from './updateCustomer'; import { INodeProperties } from 'n8n-workflow'; @@ -9,6 +10,7 @@ export { getAll, addCustomer, deleteCustomer, + updateCustomer, }; @@ -40,6 +42,11 @@ export const descriptions = [ value: 'deleteCustomer', description: 'delete customers', }, + { + name: 'Update', + value: 'updateCustomer', + description: 'update customers', + }, ], default: '', description: 'The operation to perform.', @@ -47,5 +54,6 @@ export const descriptions = [ ...getAll.description, ...addCustomer.description, ...deleteCustomer.description, + ...updateCustomer.description, ] as INodeProperties[]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/updateCustomer/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/updateCustomer/description.ts new file mode 100644 index 0000000000000..28392236aa2d5 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/updateCustomer/description.ts @@ -0,0 +1,131 @@ +import { + CustomerProperties, +} from '../../Interfaces'; + +export const customerUpdateCustomerDescription: CustomerProperties = [ + { + displayName: 'Customer Id', + name: 'id', + type: 'string', + displayOptions: { + show: { + resource: [ + 'customer', + ], + operation: [ + 'updateCustomer', + ], + }, + }, + default: '', + }, + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + displayOptions: { + show: { + resource: [ + 'customer', + ], + operation: [ + 'updateCustomer', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'First Name', + name: 'firstname', + type: 'string', + default: '', + }, + { + displayName: 'Last Name', + name: 'lastname', + type: 'string', + default: '', + }, + { + displayName: 'Business Name', + name: 'business_name', + type: 'string', + default: '', + }, + { + displayName: 'Email', + name: 'email', + type: 'string', + default: '', + }, + { + displayName: 'Phone', + name: 'phone', + type: 'string', + default: '', + }, + { + displayName: 'Address', + name: 'address', + type: 'string', + default: '', + }, + { + displayName: 'City', + name: 'city', + type: 'string', + default: '', + }, + { + displayName: 'State', + name: 'state', + type: 'string', + default: '', + }, + { + displayName: 'ZIP', + name: 'zip', + type: 'string', + default: '', + }, + { + displayName: 'Notes', + name: 'notes', + type: 'string', + default: '', + }, + { + displayName: 'Get SMS', + name: 'get_sms', + type: 'boolean', + default: true, + }, + { + displayName: 'No Email', + name: 'no_email', + type: 'boolean', + default: false, + }, + { + displayName: 'Referred By', + name: 'referred_by', + type: 'string', + default: '', + }, + { + displayName: 'Notification Email', + name: 'notification_email', + type: 'string', + default: '', + }, + { + displayName: 'Invoice Email', + name: 'invoice_cc_email', + type: 'string', + default: '', + }, + ], + }, +]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/updateCustomer/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/updateCustomer/execute.ts new file mode 100644 index 0000000000000..35505bd01c864 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/updateCustomer/execute.ts @@ -0,0 +1,32 @@ +import { + IExecuteFunctions, +} from 'n8n-core'; + +import { + IDataObject, + INodeExecutionData, +} from 'n8n-workflow'; + +import { + apiRequest, +} from '../../../transport'; + + +export async function updateCustomer(this: IExecuteFunctions, index: number): Promise { + const id = this.getNodeParameter('id', index) as IDataObject; + const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + + const qs = {} as IDataObject; + const requestMethod = 'PUT'; + const endpoint = `customers/${id}`; + let body = {} as IDataObject; + + if (additionalFields) { + body = additionalFields; + } + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + + return this.helpers.returnJsonArray(responseData.customer); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/updateCustomer/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/updateCustomer/index.ts new file mode 100644 index 0000000000000..514ab3c0b5665 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/updateCustomer/index.ts @@ -0,0 +1,7 @@ +import { updateCustomer as execute } from './execute'; +import { customerUpdateCustomerDescription as description } from './description'; + +export { + description, + execute, +}; From 64986d106114a2712d9d7d7eaa001f1ca939bff3 Mon Sep 17 00:00:00 2001 From: Anuj Kapoor Date: Thu, 25 Nov 2021 09:29:53 +0530 Subject: [PATCH 33/73] Rename SyncroMspAPI.credentials.ts to SyncroMspApi.credentials.ts --- .../{SyncroMspAPI.credentials.ts => SyncroMspApi.credentials.ts} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename packages/nodes-base/credentials/{SyncroMspAPI.credentials.ts => SyncroMspApi.credentials.ts} (100%) diff --git a/packages/nodes-base/credentials/SyncroMspAPI.credentials.ts b/packages/nodes-base/credentials/SyncroMspApi.credentials.ts similarity index 100% rename from packages/nodes-base/credentials/SyncroMspAPI.credentials.ts rename to packages/nodes-base/credentials/SyncroMspApi.credentials.ts From eaf996c33595b6e750fb51a99769fae6742b371d Mon Sep 17 00:00:00 2001 From: bearbobs Date: Thu, 25 Nov 2021 17:53:25 +0530 Subject: [PATCH 34/73] Code Review Changes --- .../nodes/SyncroMSP/v1/actions/Interfaces.ts | 2 +- .../v1/actions/customer/getAll/description.ts | 20 +++---- .../v1/actions/customer/getAll/execute.ts | 5 +- .../customer/getCustomer/description.ts | 57 +++++++++++++++++++ .../actions/customer/getCustomer/execute.ts | 32 +++++++++++ .../v1/actions/customer/getCustomer/index.ts | 7 +++ .../SyncroMSP/v1/actions/customer/index.ts | 8 +++ 7 files changed, 114 insertions(+), 17 deletions(-) create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/index.ts diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts index 26d6fae415106..6145564b9a032 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts @@ -5,7 +5,7 @@ import { } from 'n8n-workflow'; type SyncroMspMap = { - customer: 'getAll' | 'addCustomer' | 'deleteCustomer' | 'updateCustomer'; + customer: 'getAll' | 'addCustomer' | 'deleteCustomer' | 'updateCustomer' | 'getCustomer'; ticket: 'getAll'; contact: 'getAll'; rmm: 'getAlerts'; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts index 2708b8dc189c6..046fac2ef4b7f 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts @@ -21,9 +21,9 @@ export const customerGetAllDescription: CustomerProperties = [ description: 'If all results should be returned or only up to a given limit.', }, { - displayName: 'Get by Id', - name: 'id', - type: 'string', + displayName: 'Limit', + name: 'per_page', + type: 'number', displayOptions: { show: { resource: [ @@ -32,10 +32,13 @@ export const customerGetAllDescription: CustomerProperties = [ operation: [ 'getAll', ], + returnAll: [ + false, + ], }, }, - default: '', - description: 'get specific customer by id', + default: 25, + description: 'limit the number of rows returned', }, { displayName: 'Additional Fields', @@ -62,13 +65,6 @@ export const customerGetAllDescription: CustomerProperties = [ placeholder: 'John Doe', description: 'Search query, it can be anything related to customer data like name etc.', }, - { - displayName: 'Limit', - name: 'per_page', - type: 'number', - default: 25, - description: 'limit the number of rows returned', - }, { displayName: 'Page', name: 'page', diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts index 65ee369b0b7c7..58a4f3074bd8d 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts @@ -13,7 +13,6 @@ import { export async function getAll(this: IExecuteFunctions, index: number): Promise { - const id = this.getNodeParameter('id', index) as string; const returnAll = this.getNodeParameter('returnAll', index) as boolean; const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; @@ -22,9 +21,7 @@ export async function getAll(this: IExecuteFunctions, index: number): Promise { + const id = this.getNodeParameter('id', index) as string; + const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + + let qs = {} as IDataObject; + const requestMethod = 'GET'; + const endpoint = 'customers'; + const body = {} as IDataObject; + + if (additionalFields) { + qs = additionalFields; + } + qs.id=id; + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + return this.helpers.returnJsonArray(responseData.customers); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/index.ts new file mode 100644 index 0000000000000..d3658b10183d6 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/index.ts @@ -0,0 +1,7 @@ +import { getCustomer as execute } from './execute'; +import { customerGetCustomerDescription as description } from './description'; + +export { + description, + execute, +}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts index 79a891d34c86d..20547e27ff316 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts @@ -3,6 +3,7 @@ import * as getAll from './getAll'; import * as addCustomer from './addCustomer'; import * as deleteCustomer from './deleteCustomer'; import * as updateCustomer from './updateCustomer'; +import * as getCustomer from './getCustomer'; import { INodeProperties } from 'n8n-workflow'; @@ -11,6 +12,7 @@ export { addCustomer, deleteCustomer, updateCustomer, + getCustomer, }; @@ -32,6 +34,11 @@ export const descriptions = [ value: 'getAll', description: 'Retrieve all customers', }, + { + name: 'Get', + value: 'getCustomer', + description: 'Retrieve customer', + }, { name: 'Create', value: 'addCustomer', @@ -52,6 +59,7 @@ export const descriptions = [ description: 'The operation to perform.', }, ...getAll.description, + ...getCustomer.description, ...addCustomer.description, ...deleteCustomer.description, ...updateCustomer.description, From cf48b4e90386307977956fb21ffb0a6a2bbfa761 Mon Sep 17 00:00:00 2001 From: bearbobs Date: Fri, 26 Nov 2021 11:17:37 +0530 Subject: [PATCH 35/73] :ship: Added CRUD for contacts endpoint --- .../nodes/SyncroMSP/v1/actions/Interfaces.ts | 2 +- .../actions/contact/addContact/description.ts | 109 ++++++++++++++++++ .../v1/actions/contact/addContact/execute.ts | 38 ++++++ .../v1/actions/contact/addContact/index.ts | 7 ++ .../contact/deleteContact/description.ts | 23 ++++ .../actions/contact/deleteContact/execute.ts | 26 +++++ .../v1/actions/contact/deleteContact/index.ts | 7 ++ .../v1/actions/contact/getAll/description.ts | 27 +++-- .../actions/contact/getContact/description.ts | 23 ++++ .../v1/actions/contact/getContact/execute.ts | 31 +++++ .../v1/actions/contact/getContact/index.ts | 7 ++ .../SyncroMSP/v1/actions/contact/index.ts | 32 +++++ .../contact/updateContact/description.ts | 89 ++++++++++++++ .../actions/contact/updateContact/execute.ts | 32 +++++ .../v1/actions/contact/updateContact/index.ts | 7 ++ 15 files changed, 452 insertions(+), 8 deletions(-) create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/index.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/deleteContact/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/deleteContact/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/deleteContact/index.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getContact/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getContact/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getContact/index.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/index.ts diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts index 6145564b9a032..7274a9a25f211 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts @@ -7,7 +7,7 @@ import { type SyncroMspMap = { customer: 'getAll' | 'addCustomer' | 'deleteCustomer' | 'updateCustomer' | 'getCustomer'; ticket: 'getAll'; - contact: 'getAll'; + contact: 'getAll' | 'addContact' | 'deleteContact' | 'updateContact' | 'getContact'; rmm: 'getAlerts'; }; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/description.ts new file mode 100644 index 0000000000000..0ffde0d8c6c9b --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/description.ts @@ -0,0 +1,109 @@ +import { + ContactProperties, +} from '../../Interfaces'; + +export const contactAddContactDescription: ContactProperties = [ + { + displayName: 'Customer Id', + name: 'customerId', + type: 'string', + displayOptions: { + show: { + resource: [ + 'contact', + ], + operation: [ + 'addContact', + ], + }, + }, + default: '', + }, + { + displayName: 'Name', + name: 'name', + type: 'string', + displayOptions: { + show: { + resource: [ + 'contact', + ], + operation: [ + 'addContact', + ], + }, + }, + default: '', + }, + { + displayName: 'Email', + name: 'email', + type: 'string', + displayOptions: { + show: { + resource: [ + 'contact', + ], + operation: [ + 'addContact', + ], + }, + }, + default: '', + }, + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + displayOptions: { + show: { + resource: [ + 'contact', + ], + operation: [ + 'addContact', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'Phone', + name: 'phone', + type: 'string', + default: '', + }, + { + displayName: 'Address', + name: 'address', + type: 'string', + default: '', + }, + { + displayName: 'City', + name: 'city', + type: 'string', + default: '', + }, + { + displayName: 'State', + name: 'state', + type: 'string', + default: '', + }, + { + displayName: 'ZIP', + name: 'zip', + type: 'string', + default: '', + }, + { + displayName: 'Notes', + name: 'notes', + type: 'string', + default: '', + }, + ], + }, +]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/execute.ts new file mode 100644 index 0000000000000..e01180b7ef570 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/execute.ts @@ -0,0 +1,38 @@ +import { + IExecuteFunctions, +} from 'n8n-core'; + +import { + IDataObject, + INodeExecutionData, +} from 'n8n-workflow'; + +import { + apiRequest, +} from '../../../transport'; + + +export async function addContact(this: IExecuteFunctions, index: number): Promise { + const id = this.getNodeParameter('customerId',index) as IDataObject; + const name = this.getNodeParameter('name', index) as IDataObject; + const email = this.getNodeParameter('email', index) as IDataObject; + const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + + const qs = {} as IDataObject; + const requestMethod = 'POST'; + const endpoint = 'contacts'; + let body = {} as IDataObject; + + if (additionalFields) { + body = additionalFields; + } + + body.name=name; + body.email=email; + body.customer_id=id; + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + + return this.helpers.returnJsonArray(responseData); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/index.ts new file mode 100644 index 0000000000000..90f36e59f92b2 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/index.ts @@ -0,0 +1,7 @@ +import { addContact as execute } from './execute'; +import { contactAddContactDescription as description } from './description'; + +export { + description, + execute, +}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/deleteContact/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/deleteContact/description.ts new file mode 100644 index 0000000000000..99696f1fa682d --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/deleteContact/description.ts @@ -0,0 +1,23 @@ +import { + ContactProperties, +} from '../../Interfaces'; + +export const contactDeleteDescription: ContactProperties = [ + { + displayName: 'Contact Id', + name: 'id', + type: 'string', + displayOptions: { + show: { + resource: [ + 'contact', + ], + operation: [ + 'deleteContact', + ], + }, + }, + default: '', + description: 'Delete a specific contact by id', + }, +]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/deleteContact/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/deleteContact/execute.ts new file mode 100644 index 0000000000000..e285b3c98590a --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/deleteContact/execute.ts @@ -0,0 +1,26 @@ +import { + IExecuteFunctions, +} from 'n8n-core'; + +import { + IDataObject, + INodeExecutionData, +} from 'n8n-workflow'; + +import { + apiRequest +} from '../../../transport'; + + +export async function deleteContact(this: IExecuteFunctions, index: number): Promise { + const id = this.getNodeParameter('id', index) as string; + + const qs = {} as IDataObject; + const requestMethod = 'DELETE'; + const endpoint = `contacts/${id}`; + const body = {} as IDataObject; + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + return this.helpers.returnJsonArray(responseData); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/deleteContact/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/deleteContact/index.ts new file mode 100644 index 0000000000000..d87102feae892 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/deleteContact/index.ts @@ -0,0 +1,7 @@ +import { deleteContact as execute } from './execute'; +import { contactDeleteDescription as description } from './description'; + +export { + description, + execute, +}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts index dbdcf98871485..63d596dfb2752 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts @@ -20,6 +20,26 @@ export const contactGetAllDescription: ContactProperties = [ default: false, description: 'If all results should be returned or only up to a given limit.', }, + { + displayName: 'Limit', + name: 'per_page', + type: 'number', + displayOptions: { + show: { + resource: [ + 'contact', + ], + operation: [ + 'getAll', + ], + returnAll: [ + false, + ], + }, + }, + default: 25, + description: 'limit the number of rows returned', + }, { displayName: 'Additional Fields', name: 'additionalFields', @@ -45,13 +65,6 @@ export const contactGetAllDescription: ContactProperties = [ placeholder: 'John Doe', description: 'Search query, it can be anything related to contact data like name etc.', }, - { - displayName: 'Limit', - name: 'per_page', - type: 'number', - default: 25, - description: 'limit the number of rows returned', - }, { displayName: 'Page', name: 'page', diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getContact/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getContact/description.ts new file mode 100644 index 0000000000000..7d436e96b6c40 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getContact/description.ts @@ -0,0 +1,23 @@ +import { + ContactProperties, +} from '../../Interfaces'; + +export const contactGetContactDescription: ContactProperties = [ + { + displayName: 'Contact Id', + name: 'id', + type: 'string', + displayOptions: { + show: { + resource: [ + 'contact', + ], + operation: [ + 'getContact', + ], + }, + }, + default: '', + description: 'get specific contact by id', + }, +]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getContact/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getContact/execute.ts new file mode 100644 index 0000000000000..b2afdbfac7045 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getContact/execute.ts @@ -0,0 +1,31 @@ +import { + IExecuteFunctions, +} from 'n8n-core'; + +import { + IDataObject, + INodeExecutionData, +} from 'n8n-workflow'; + +import { + apiRequest +} from '../../../transport'; + + +export async function getContact(this: IExecuteFunctions, index: number): Promise { + const id = this.getNodeParameter('id', index) as string; + const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + + let qs = {} as IDataObject; + const requestMethod = 'GET'; + const endpoint = `contacts/${id}`; + const body = {} as IDataObject; + + if (additionalFields) { + qs = additionalFields; + } + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + return this.helpers.returnJsonArray(responseData); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getContact/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getContact/index.ts new file mode 100644 index 0000000000000..23a19a57c068d --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getContact/index.ts @@ -0,0 +1,7 @@ +import { getContact as execute } from './execute'; +import { contactGetContactDescription as description } from './description'; + +export { + description, + execute, +}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts index 8bc5eb8ff6e47..e2d4f99d2756e 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts @@ -1,10 +1,18 @@ import * as getAll from './getAll'; +import * as addContact from './addContact'; +import * as getContact from './getContact'; +import * as updateContact from './updateContact'; +import * as deleteContact from './deleteContact'; import { INodeProperties } from 'n8n-workflow'; export { getAll, + addContact, + deleteContact, + updateContact, + getContact, }; @@ -26,10 +34,34 @@ export const descriptions = [ value: 'getAll', description: 'Retrieve all contacts', }, + { + name: 'Get', + value: 'getContact', + description: 'Retrieve contact', + }, + { + name: 'Create', + value: 'addContact', + description: 'add new contact', + }, + { + name: 'Delete', + value: 'deleteContact', + description: 'delete contact', + }, + { + name: 'Update', + value: 'updateContact', + description: 'update contact', + }, ], default: '', description: 'The operation to perform.', }, ...getAll.description, + ...addContact.description, + ...getContact.description, + ...updateContact.description, + ...deleteContact.description, ] as INodeProperties[]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/description.ts new file mode 100644 index 0000000000000..c74007216fb4c --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/description.ts @@ -0,0 +1,89 @@ +import { + ContactProperties, +} from '../../Interfaces'; + +export const contactUpdateContactDescription: ContactProperties = [ + { + displayName: 'Contact Id', + name: 'id', + type: 'string', + displayOptions: { + show: { + resource: [ + 'contact', + ], + operation: [ + 'updateContact', + ], + }, + }, + default: '', + }, + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + displayOptions: { + show: { + resource: [ + 'contact', + ], + operation: [ + 'updateContact', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'Name', + name: 'name', + type: 'string', + default: '', + }, + { + displayName: 'Email', + name: 'email', + type: 'string', + default: '', + }, + { + displayName: 'Phone', + name: 'phone', + type: 'string', + default: '', + }, + { + displayName: 'Address', + name: 'address', + type: 'string', + default: '', + }, + { + displayName: 'City', + name: 'city', + type: 'string', + default: '', + }, + { + displayName: 'State', + name: 'state', + type: 'string', + default: '', + }, + { + displayName: 'ZIP', + name: 'zip', + type: 'string', + default: '', + }, + { + displayName: 'Notes', + name: 'notes', + type: 'string', + default: '', + }, + ], + }, +]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/execute.ts new file mode 100644 index 0000000000000..88445ca4ced97 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/execute.ts @@ -0,0 +1,32 @@ +import { + IExecuteFunctions, +} from 'n8n-core'; + +import { + IDataObject, + INodeExecutionData, +} from 'n8n-workflow'; + +import { + apiRequest, +} from '../../../transport'; + + +export async function updateContact(this: IExecuteFunctions, index: number): Promise { + const id = this.getNodeParameter('id', index) as IDataObject; + const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + + const qs = {} as IDataObject; + const requestMethod = 'PUT'; + const endpoint = `contacts/${id}`; + let body = {} as IDataObject; + + if (additionalFields) { + body = additionalFields; + } + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + + return this.helpers.returnJsonArray(responseData); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/index.ts new file mode 100644 index 0000000000000..2497ad1c4d2a3 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/index.ts @@ -0,0 +1,7 @@ +import { updateContact as execute } from './execute'; +import { contactUpdateContactDescription as description } from './description'; + +export { + description, + execute, +}; From 886d14d25d8b5499c6752a192047df95a2e42c17 Mon Sep 17 00:00:00 2001 From: bearbobs Date: Fri, 26 Nov 2021 15:35:07 +0530 Subject: [PATCH 36/73] :ship: Added CRUD for RMM Alert endpoint --- .../nodes/SyncroMSP/v1/actions/Interfaces.ts | 2 +- .../v1/actions/rmm/addAlert/description.ts | 100 ++++++++++++++++++ .../v1/actions/rmm/addAlert/execute.ts | 37 +++++++ .../v1/actions/rmm/addAlert/index.ts | 7 ++ .../v1/actions/rmm/deleteAlert/description.ts | 23 ++++ .../v1/actions/rmm/deleteAlert/execute.ts | 26 +++++ .../v1/actions/rmm/deleteAlert/index.ts | 7 ++ .../v1/actions/rmm/getAlert/description.ts | 23 ++++ .../v1/actions/rmm/getAlert/execute.ts | 31 ++++++ .../v1/actions/rmm/getAlert/index.ts | 7 ++ .../rmm/{getAlerts => getAll}/description.ts | 31 ++++-- .../rmm/{getAlerts => getAll}/execute.ts | 3 + .../rmm/{getAlerts => getAll}/index.ts | 0 .../nodes/SyncroMSP/v1/actions/rmm/index.ts | 52 +++++++-- .../v1/actions/rmm/muteAlert/description.ts | 70 ++++++++++++ .../v1/actions/rmm/muteAlert/execute.ts | 30 ++++++ .../v1/actions/rmm/muteAlert/index.ts | 7 ++ .../v1/actions/rmm/updateAlert/description.ts | 85 +++++++++++++++ .../v1/actions/rmm/updateAlert/execute.ts | 32 ++++++ .../v1/actions/rmm/updateAlert/index.ts | 7 ++ 20 files changed, 564 insertions(+), 16 deletions(-) create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/index.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/deleteAlert/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/deleteAlert/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/deleteAlert/index.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlert/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlert/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlert/index.ts rename packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/{getAlerts => getAll}/description.ts (76%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/{getAlerts => getAll}/execute.ts (91%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/{getAlerts => getAll}/index.ts (100%) create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/muteAlert/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/muteAlert/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/muteAlert/index.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/index.ts diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts index 7274a9a25f211..af37e820ac644 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts @@ -8,7 +8,7 @@ type SyncroMspMap = { customer: 'getAll' | 'addCustomer' | 'deleteCustomer' | 'updateCustomer' | 'getCustomer'; ticket: 'getAll'; contact: 'getAll' | 'addContact' | 'deleteContact' | 'updateContact' | 'getContact'; - rmm: 'getAlerts'; + rmm: 'getAll' | 'getAlert' | 'addAlert' | 'deleteAlert' | 'updateAlert' | 'muteAlert' ; }; export type SyncroMsp = AllEntities; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/description.ts new file mode 100644 index 0000000000000..acc48ee2657b1 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/description.ts @@ -0,0 +1,100 @@ +import { + RmmProperties, +} from '../../Interfaces'; + +export const rmmAddAlertDescription: RmmProperties = [ + { + displayName: 'Customer Id', + name: 'customerId', + type: 'string', + displayOptions: { + show: { + resource: [ + 'rmm', + ], + operation: [ + 'addAlert', + ], + }, + }, + default: '', + }, + { + displayName: 'Asset Id', + name: 'assetId', + type: 'string', + displayOptions: { + show: { + resource: [ + 'rmm', + ], + operation: [ + 'addAlert', + ], + }, + }, + default: '', + }, + { + displayName: 'Description', + name: 'description', + type: 'string', + displayOptions: { + show: { + resource: [ + 'rmm', + ], + operation: [ + 'addAlert', + ], + }, + }, + default: '', + }, + { + displayName: 'Resolved', + name: 'resolved', + type: 'boolean', + displayOptions: { + show: { + resource: [ + 'rmm', + ], + operation: [ + 'addAlert', + ], + }, + }, + default: false, + }, + { + displayName: 'Status', + name: 'status', + type: 'string', + displayOptions: { + show: { + resource: [ + 'rmm', + ], + operation: [ + 'addAlert', + ], + }, + }, + options : [ + { + name: 'Active', + value: 'active', + }, + { + name: 'Resolved', + value: 'resolved', + }, + { + name: 'All', + value: 'all', + }, + ], + default: '', + }, +]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/execute.ts new file mode 100644 index 0000000000000..517d3292822a4 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/execute.ts @@ -0,0 +1,37 @@ +import { + IExecuteFunctions, +} from 'n8n-core'; + +import { + IDataObject, + INodeExecutionData, +} from 'n8n-workflow'; + +import { + apiRequest, +} from '../../../transport'; + + +export async function addAlert(this: IExecuteFunctions, index: number): Promise { + const customerId = this.getNodeParameter('customerId',index) as IDataObject; + const assetId = this.getNodeParameter('assetId',index) as IDataObject; + const description = this.getNodeParameter('description', index) as IDataObject; + const resolved = this.getNodeParameter('resolved', index) as IDataObject; + const status = this.getNodeParameter('status', index) as IDataObject; + + const qs = {} as IDataObject; + const requestMethod = 'POST'; + const endpoint = 'rmm_alerts'; + let body = {} as IDataObject; + + body.customer_id = customerId; + body.asset_id = assetId; + body.description = description; + body.resolved = resolved; + body.status = status; + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + + return this.helpers.returnJsonArray(responseData); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/index.ts new file mode 100644 index 0000000000000..f85c7047dd7db --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/index.ts @@ -0,0 +1,7 @@ +import { addAlert as execute } from './execute'; +import { rmmAddAlertDescription as description } from './description'; + +export { + description, + execute, +}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/deleteAlert/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/deleteAlert/description.ts new file mode 100644 index 0000000000000..082a9a3d13bfc --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/deleteAlert/description.ts @@ -0,0 +1,23 @@ +import { + RmmProperties, +} from '../../Interfaces'; + +export const rmmDeleteAlertDescription: RmmProperties = [ + { + displayName: 'RMM Alert Id', + name: 'id', + type: 'string', + displayOptions: { + show: { + resource: [ + 'rmm', + ], + operation: [ + 'deleteAlert', + ], + }, + }, + default: '', + description: 'Delete alert by id', + }, +]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/deleteAlert/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/deleteAlert/execute.ts new file mode 100644 index 0000000000000..e21665866a0cb --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/deleteAlert/execute.ts @@ -0,0 +1,26 @@ +import { + IExecuteFunctions, +} from 'n8n-core'; + +import { + IDataObject, + INodeExecutionData, +} from 'n8n-workflow'; + +import { + apiRequest +} from '../../../transport'; + + +export async function deleteAlert(this: IExecuteFunctions, index: number): Promise { + const id = this.getNodeParameter('id', index) as string; + + const qs = {} as IDataObject; + const requestMethod = 'DELETE'; + const endpoint = `rmm_alerts/${id}`; + const body = {} as IDataObject; + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + return this.helpers.returnJsonArray(responseData); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/deleteAlert/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/deleteAlert/index.ts new file mode 100644 index 0000000000000..5bead212d303c --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/deleteAlert/index.ts @@ -0,0 +1,7 @@ +import { deleteAlert as execute } from './execute'; +import { rmmDeleteAlertDescription as description } from './description'; + +export { + description, + execute, +}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlert/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlert/description.ts new file mode 100644 index 0000000000000..8a997b1163877 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlert/description.ts @@ -0,0 +1,23 @@ +import { + RmmProperties, +} from '../../Interfaces'; + +export const rmmGetAlertsDescription: RmmProperties = [ + { + displayName: 'RMM Alert Id', + name: 'id', + type: 'string', + displayOptions: { + show: { + resource: [ + 'rmm', + ], + operation: [ + 'getAlert', + ], + }, + }, + default: '', + description: 'get specific rmm alert by id', + }, +]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlert/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlert/execute.ts new file mode 100644 index 0000000000000..e7e1c8c7346cd --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlert/execute.ts @@ -0,0 +1,31 @@ +import { + IExecuteFunctions, +} from 'n8n-core'; + +import { + IDataObject, + INodeExecutionData, +} from 'n8n-workflow'; + +import { + apiRequest +} from '../../../transport'; + + +export async function getAlert(this: IExecuteFunctions, index: number): Promise { + const id = this.getNodeParameter('id', index) as string; + const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + + let qs = {} as IDataObject; + const requestMethod = 'GET'; + const endpoint = `rmm_alerts/${id}`; + const body = {} as IDataObject; + + if (additionalFields) { + qs = additionalFields; + } + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + return this.helpers.returnJsonArray(responseData); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlert/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlert/index.ts new file mode 100644 index 0000000000000..9d43df48441ff --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlert/index.ts @@ -0,0 +1,7 @@ +import { getAlert as execute } from './execute'; +import { rmmGetAlertsDescription as description } from './description'; + +export { + description, + execute, +}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/description.ts similarity index 76% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/description.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/description.ts index cb8a59fe2bcaa..1386ad7461cb8 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/description.ts @@ -13,13 +13,33 @@ export const rmmGetAllDescription: RmmProperties = [ 'rmm', ], operation: [ - 'getAlerts', + 'getAll', ], }, }, default: false, description: 'If all results should be returned or only up to a given limit.', }, + { + displayName: 'Limit', + name: 'per_page', + type: 'number', + displayOptions: { + show: { + resource: [ + 'rmm', + ], + operation: [ + 'getAll', + ], + returnAll: [ + false, + ], + }, + }, + default: 25, + description: 'limit the number of rows returned', + }, { displayName: 'Additional Fields', name: 'additionalFields', @@ -31,7 +51,7 @@ export const rmmGetAllDescription: RmmProperties = [ 'rmm', ], operation: [ - 'getAlerts', + 'getAll', ], }, }, @@ -45,13 +65,6 @@ export const rmmGetAllDescription: RmmProperties = [ placeholder: 'all', description: 'Possible values resolved, all, active.', }, - { - displayName: 'Limit', - name: 'per_page', - type: 'number', - default: 25, - description: 'limit the number of rows returned', - }, { displayName: 'Page', name: 'page', diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/execute.ts similarity index 91% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/execute.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/execute.ts index c68f2c32f85e0..215889585d907 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlerts/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/execute.ts @@ -14,6 +14,7 @@ import { export async function getAll(this: IExecuteFunctions, index: number): Promise { const returnAll = this.getNodeParameter('returnAll', index) as boolean; + const perPage = this.getNodeParameter('per_page',index) as string; const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; let qs = {} as IDataObject; @@ -25,6 +26,8 @@ export async function getAll(this: IExecuteFunctions, index: number): Promise { + const id = this.getNodeParameter('id', index) as string; + const mute = this.getNodeParameter('muteFor',index) as string; + + const qs = {} as IDataObject; + const requestMethod = 'POST'; + const endpoint = `rmm_alerts/${id}/mute`; + let body = {} as IDataObject; + + body.id =id; + body.mute_for = mute; + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + return this.helpers.returnJsonArray(responseData); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/muteAlert/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/muteAlert/index.ts new file mode 100644 index 0000000000000..d4f482a7b1a4c --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/muteAlert/index.ts @@ -0,0 +1,7 @@ +import { muteAlert as execute } from './execute'; +import { rmmMuteAlertDescription as description } from './description'; + +export { + description, + execute, +}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/description.ts new file mode 100644 index 0000000000000..d3d2bca550d3b --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/description.ts @@ -0,0 +1,85 @@ +import { + RmmProperties, +} from '../../Interfaces'; + +export const rmmUpdateAlertDescription: RmmProperties = [ + { + displayName: 'RMM Alert Id', + name: 'id', + type: 'string', + displayOptions: { + show: { + resource: [ + 'rmm', + ], + operation: [ + 'updateAlert', + ], + }, + }, + default: '', + }, + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + displayOptions: { + show: { + resource: [ + 'rmm', + ], + operation: [ + 'updateAlert', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'Customer id', + name: 'customer_id', + type: 'string', + default: '', + }, + { + displayName: 'Asset Id', + name: 'asset_id', + type: 'string', + default: '', + }, + { + displayName: 'Description', + name: 'description', + type: 'string', + default: '', + }, + { + displayName: 'Resolved', + name: 'resolved', + type: 'boolean', + default: false, + }, + { + displayName: 'Status', + name: 'status', + type: 'string', + options : [ + { + name: 'Active', + value: 'active', + }, + { + name: 'Resolved', + value: 'resolved', + }, + { + name: 'All', + value: 'all', + }, + ], + default: '', + }, + ], + }, +]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/execute.ts new file mode 100644 index 0000000000000..9a68d94f73957 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/execute.ts @@ -0,0 +1,32 @@ +import { + IExecuteFunctions, +} from 'n8n-core'; + +import { + IDataObject, + INodeExecutionData, +} from 'n8n-workflow'; + +import { + apiRequest, +} from '../../../transport'; + + +export async function updateAlert(this: IExecuteFunctions, index: number): Promise { + const id = this.getNodeParameter('id', index) as IDataObject; + const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + + const qs = {} as IDataObject; + const requestMethod = 'PUT'; + const endpoint = `rmm_alerts/${id}`; + let body = {} as IDataObject; + + if (additionalFields) { + body = additionalFields; + } + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + + return this.helpers.returnJsonArray(responseData); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/index.ts new file mode 100644 index 0000000000000..12d95b01cddea --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/index.ts @@ -0,0 +1,7 @@ +import { updateAlert as execute } from './execute'; +import { rmmUpdateAlertDescription as description } from './description'; + +export { + description, + execute, +}; From 981572361c128eae0e5de449a0958fc0b0697c00 Mon Sep 17 00:00:00 2001 From: bearbobs Date: Fri, 26 Nov 2021 15:47:28 +0530 Subject: [PATCH 37/73] Added options for status field --- .../nodes/SyncroMSP/v1/actions/rmm/addAlert/description.ts | 2 +- .../nodes/SyncroMSP/v1/actions/rmm/updateAlert/description.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/description.ts index acc48ee2657b1..8eafdee657b76 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/description.ts @@ -70,7 +70,7 @@ export const rmmAddAlertDescription: RmmProperties = [ { displayName: 'Status', name: 'status', - type: 'string', + type: 'options', displayOptions: { show: { resource: [ diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/description.ts index d3d2bca550d3b..917ab38b77f5f 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/description.ts @@ -63,7 +63,7 @@ export const rmmUpdateAlertDescription: RmmProperties = [ { displayName: 'Status', name: 'status', - type: 'string', + type: 'options', options : [ { name: 'Active', From d675291c82ca33b70326a8c334cd32c08a24ddbd Mon Sep 17 00:00:00 2001 From: bearbobs Date: Fri, 26 Nov 2021 15:59:52 +0530 Subject: [PATCH 38/73] :bug: fix linting issues --- .../nodes/SyncroMSP/v1/actions/rmm/addAlert/execute.ts | 2 +- .../nodes/SyncroMSP/v1/actions/rmm/muteAlert/execute.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/execute.ts index 517d3292822a4..34c3a5795ac3e 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/execute.ts @@ -22,7 +22,7 @@ export async function addAlert(this: IExecuteFunctions, index: number): Promise< const qs = {} as IDataObject; const requestMethod = 'POST'; const endpoint = 'rmm_alerts'; - let body = {} as IDataObject; + const body = {} as IDataObject; body.customer_id = customerId; body.asset_id = assetId; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/muteAlert/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/muteAlert/execute.ts index 2a0c1c071e9a6..f3a716e9c8712 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/muteAlert/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/muteAlert/execute.ts @@ -19,7 +19,7 @@ export async function muteAlert(this: IExecuteFunctions, index: number): Promise const qs = {} as IDataObject; const requestMethod = 'POST'; const endpoint = `rmm_alerts/${id}/mute`; - let body = {} as IDataObject; + const body = {} as IDataObject; body.id =id; body.mute_for = mute; From bf3927fc638dbc24d08b3ae34f61d275b520c6c5 Mon Sep 17 00:00:00 2001 From: bearbobs Date: Sat, 27 Nov 2021 16:45:21 +0530 Subject: [PATCH 39/73] :ship: Added CRUD for ticket endpoint --- .../nodes/SyncroMSP/v1/actions/Interfaces.ts | 2 +- .../actions/ticket/addTicket/description.ts | 87 +++++++++++++++++++ .../v1/actions/ticket/addTicket/execute.ts | 36 ++++++++ .../v1/actions/ticket/addTicket/index.ts | 7 ++ .../ticket/deleteTicket/description.ts | 23 +++++ .../v1/actions/ticket/deleteTicket/execute.ts | 26 ++++++ .../v1/actions/ticket/deleteTicket/index.ts | 7 ++ .../actions/ticket/getTicket/description.ts | 23 +++++ .../v1/actions/ticket/getTicket/execute.ts | 26 ++++++ .../v1/actions/ticket/getTicket/index.ts | 7 ++ .../SyncroMSP/v1/actions/ticket/index.ts | 32 +++++++ .../ticket/updateTicket/description.ts | 83 ++++++++++++++++++ .../v1/actions/ticket/updateTicket/execute.ts | 32 +++++++ .../v1/actions/ticket/updateTicket/index.ts | 7 ++ 14 files changed, 397 insertions(+), 1 deletion(-) create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/addTicket/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/addTicket/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/addTicket/index.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/deleteTicket/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/deleteTicket/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/deleteTicket/index.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getTicket/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getTicket/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getTicket/index.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/updateTicket/description.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/updateTicket/execute.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/updateTicket/index.ts diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts index af37e820ac644..a9106d3c6c6ed 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts @@ -6,7 +6,7 @@ import { type SyncroMspMap = { customer: 'getAll' | 'addCustomer' | 'deleteCustomer' | 'updateCustomer' | 'getCustomer'; - ticket: 'getAll'; + ticket: 'getAll' | 'addTicket' | 'deleteTicket' | 'updateTicket' | 'getTicket'; contact: 'getAll' | 'addContact' | 'deleteContact' | 'updateContact' | 'getContact'; rmm: 'getAll' | 'getAlert' | 'addAlert' | 'deleteAlert' | 'updateAlert' | 'muteAlert' ; }; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/addTicket/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/addTicket/description.ts new file mode 100644 index 0000000000000..864472898e2e6 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/addTicket/description.ts @@ -0,0 +1,87 @@ +import { + TicketProperties, +} from '../../Interfaces'; + +export const ticketAddTicketDescription: TicketProperties = [ + { + displayName: 'Customer Id', + name: 'customerId', + type: 'string', + displayOptions: { + show: { + resource: [ + 'ticket', + ], + operation: [ + 'addTicket', + ], + }, + }, + default: '', + }, + { + displayName: 'Subject', + name: 'subject', + type: 'string', + displayOptions: { + show: { + resource: [ + 'ticket', + ], + operation: [ + 'addTicket', + ], + }, + }, + default: '', + }, + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + displayOptions: { + show: { + resource: [ + 'ticket', + ], + operation: [ + 'addTicket', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'Due Date', + name: 'due_date', + type: 'dateTime', + default: '', + }, + { + displayName: 'Problem Type', + name: 'problem_type', + type: 'string', + default: '', + }, + { + displayName: 'Status', + name: 'status', + type: 'string', + default: '', + }, + { + displayName: 'Ticket Type', + name: 'ticket_type', + type: 'string', + default: '', + }, + { + displayName: 'Asset Id', + name: 'asset_id', + type: 'string', + default: '', + }, + ], + }, +]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/addTicket/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/addTicket/execute.ts new file mode 100644 index 0000000000000..0e9d8b37a92cc --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/addTicket/execute.ts @@ -0,0 +1,36 @@ +import { + IExecuteFunctions, +} from 'n8n-core'; + +import { + IDataObject, + INodeExecutionData, +} from 'n8n-workflow'; + +import { + apiRequest, +} from '../../../transport'; + + +export async function addTicket(this: IExecuteFunctions, index: number): Promise { + const id = this.getNodeParameter('customerId', index) as IDataObject; + const subject = this.getNodeParameter('subject', index) as IDataObject; + const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + + const qs = {} as IDataObject; + const requestMethod = 'POST'; + const endpoint = 'tickets'; + let body = {} as IDataObject; + + if (additionalFields) { + body = additionalFields; + } + + body.customer_id=id; + body.subject=subject; + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + + return this.helpers.returnJsonArray(responseData.ticket); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/addTicket/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/addTicket/index.ts new file mode 100644 index 0000000000000..a8aa061e2fdea --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/addTicket/index.ts @@ -0,0 +1,7 @@ +import { addTicket as execute } from './execute'; +import { ticketAddTicketDescription as description } from './description'; + +export { + description, + execute, +}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/deleteTicket/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/deleteTicket/description.ts new file mode 100644 index 0000000000000..e04d99c70ea8e --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/deleteTicket/description.ts @@ -0,0 +1,23 @@ +import { + TicketProperties, +} from '../../Interfaces'; + +export const ticketDeleteDescription: TicketProperties = [ + { + displayName: 'Ticket Id', + name: 'id', + type: 'string', + displayOptions: { + show: { + resource: [ + 'ticket', + ], + operation: [ + 'deleteTicket', + ], + }, + }, + default: '', + description: 'Delete a specific customer by id', + }, +]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/deleteTicket/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/deleteTicket/execute.ts new file mode 100644 index 0000000000000..a2f2dfd1d7189 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/deleteTicket/execute.ts @@ -0,0 +1,26 @@ +import { + IExecuteFunctions, +} from 'n8n-core'; + +import { + IDataObject, + INodeExecutionData, +} from 'n8n-workflow'; + +import { + apiRequest +} from '../../../transport'; + + +export async function deleteTicket(this: IExecuteFunctions, index: number): Promise { + const id = this.getNodeParameter('id', index) as string; + + const qs = {} as IDataObject; + const requestMethod = 'DELETE'; + const endpoint = `tickets/${id}`; + const body = {} as IDataObject; + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + return this.helpers.returnJsonArray(responseData); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/deleteTicket/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/deleteTicket/index.ts new file mode 100644 index 0000000000000..b30a627649ef1 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/deleteTicket/index.ts @@ -0,0 +1,7 @@ +import { deleteTicket as execute } from './execute'; +import { ticketDeleteDescription as description } from './description'; + +export { + description, + execute, +}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getTicket/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getTicket/description.ts new file mode 100644 index 0000000000000..346904949a124 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getTicket/description.ts @@ -0,0 +1,23 @@ +import { + TicketProperties, +} from '../../Interfaces'; + +export const ticketGetTicketDescription: TicketProperties = [ + { + displayName: 'Ticket Id', + name: 'id', + type: 'string', + displayOptions: { + show: { + resource: [ + 'ticket', + ], + operation:[ + 'getTicket', + ], + }, + }, + default: '', + description: 'get specific customer by id', + }, +]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getTicket/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getTicket/execute.ts new file mode 100644 index 0000000000000..990e07cbca05c --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getTicket/execute.ts @@ -0,0 +1,26 @@ +import { + IExecuteFunctions, +} from 'n8n-core'; + +import { + IDataObject, + INodeExecutionData, +} from 'n8n-workflow'; + +import { + apiRequest +} from '../../../transport'; + + +export async function getTicket(this: IExecuteFunctions, index: number): Promise { + const id = this.getNodeParameter('id', index) as string; + + const qs = {} as IDataObject; + const requestMethod = 'GET'; + const endpoint = `tickets/${id}`; + const body = {} as IDataObject; + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + return this.helpers.returnJsonArray(responseData.ticket); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getTicket/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getTicket/index.ts new file mode 100644 index 0000000000000..a24e24365cb9d --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getTicket/index.ts @@ -0,0 +1,7 @@ +import { getTicket as execute } from './execute'; +import { ticketGetTicketDescription as description } from './description'; + +export { + description, + execute, +}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/index.ts index 09b3a907ab553..35b472099c869 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/index.ts @@ -1,10 +1,18 @@ import * as getAll from './getAll'; +import * as addTicket from './addTicket'; +import * as getTicket from './getTicket'; +import * as deleteTicket from './deleteTicket'; +import * as updateTicket from './updateTicket'; import { INodeProperties } from 'n8n-workflow'; export { getAll, + addTicket, + getTicket, + deleteTicket, + updateTicket, }; @@ -26,10 +34,34 @@ export const descriptions = [ value: 'getAll', description: 'Retrieve all tickets', }, + { + name: 'Get', + value: 'getTicket', + description: 'Retrieve ticket ', + }, + { + name: 'Create', + value: 'addTicket', + description: 'add new ticket', + }, + { + name: 'Delete', + value: 'deleteTicket', + description: 'delete ticket', + }, + { + name: 'Update', + value: 'updateTicket', + description: 'update ticket', + }, ], default: '', description: 'The operation to perform.', }, ...getAll.description, + ...addTicket.description, + ...getTicket.description, + ...deleteTicket.description, + ...updateTicket.description, ] as INodeProperties[]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/updateTicket/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/updateTicket/description.ts new file mode 100644 index 0000000000000..fff6d0cbe3c70 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/updateTicket/description.ts @@ -0,0 +1,83 @@ +import { + TicketProperties, +} from '../../Interfaces'; + +export const ticketUpdateTicketDescription: TicketProperties = [ + { + displayName: 'Ticket Id', + name: 'id', + type: 'string', + displayOptions: { + show: { + resource: [ + 'ticket', + ], + operation: [ + 'updateTicket', + ], + }, + }, + default: '', + }, + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + displayOptions: { + show: { + resource: [ + 'ticket', + ], + operation: [ + 'updateTicket', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'Customer Id', + name: 'customer_id', + type: 'string', + default: '', + }, + { + displayName: 'Subject', + name: 'subject', + type: 'string', + default: '', + }, + { + displayName: 'Due Date', + name: 'due_date', + type: 'dateTime', + default: '', + }, + { + displayName: 'Problem Type', + name: 'problem_type', + type: 'string', + default: '', + }, + { + displayName: 'Status', + name: 'status', + type: 'string', + default: '', + }, + { + displayName: 'Ticket Type', + name: 'ticket_type', + type: 'string', + default: '', + }, + { + displayName: 'Asset Id', + name: 'asset_id', + type: 'string', + default: '', + }, + ], + }, +]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/updateTicket/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/updateTicket/execute.ts new file mode 100644 index 0000000000000..b694507341083 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/updateTicket/execute.ts @@ -0,0 +1,32 @@ +import { + IExecuteFunctions, +} from 'n8n-core'; + +import { + IDataObject, + INodeExecutionData, +} from 'n8n-workflow'; + +import { + apiRequest, +} from '../../../transport'; + + +export async function updateTicket(this: IExecuteFunctions, index: number): Promise { + const id = this.getNodeParameter('id', index) as IDataObject; + const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + + const qs = {} as IDataObject; + const requestMethod = 'PUT'; + const endpoint = `tickets/${id}`; + let body = {} as IDataObject; + + if (additionalFields) { + body = additionalFields; + } + + let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); + + return this.helpers.returnJsonArray(responseData); +} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/updateTicket/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/updateTicket/index.ts new file mode 100644 index 0000000000000..f0fff46944e1c --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/updateTicket/index.ts @@ -0,0 +1,7 @@ +import { updateTicket as execute } from './execute'; +import { ticketUpdateTicketDescription as description } from './description'; + +export { + description, + execute, +}; From e484341bcf90afbb63bb924dc8dbd1630566f2d3 Mon Sep 17 00:00:00 2001 From: bearbobs Date: Sat, 27 Nov 2021 16:48:06 +0530 Subject: [PATCH 40/73] :tag: update get customer module --- .../customer/getCustomer/description.ts | 34 ------------------- .../actions/customer/getCustomer/execute.ts | 10 ++---- 2 files changed, 2 insertions(+), 42 deletions(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/description.ts index a3f8b89518cc6..280dc4a913d22 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/description.ts @@ -20,38 +20,4 @@ export const customerGetCustomerDescription: CustomerProperties = [ default: '', description: 'get specific customer by id', }, - { - displayName: 'Additional Fields', - name: 'additionalFields', - type: 'collection', - placeholder: 'Add Field', - displayOptions: { - show: { - resource: [ - 'customer', - ], - operation: [ - 'getCustomer', - ], - }, - }, - default: {}, - options: [ - { - displayName: 'Search Query', - name: 'query', - type: 'string', - default: '', - placeholder: 'John Doe', - description: 'Search query, it can be anything related to customer data like name etc.', - }, - { - displayName: 'Page', - name: 'page', - type: 'number', - default: 1, - description: 'Returns provided page of results, each page contains 25 results', - }, - ], - }, ]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/execute.ts index af866382aa2fc..d012355862fce 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/execute.ts @@ -14,18 +14,12 @@ import { export async function getCustomer(this: IExecuteFunctions, index: number): Promise { const id = this.getNodeParameter('id', index) as string; - const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; - let qs = {} as IDataObject; + const qs = {} as IDataObject; const requestMethod = 'GET'; - const endpoint = 'customers'; + const endpoint = `customers/${id}`; const body = {} as IDataObject; - if (additionalFields) { - qs = additionalFields; - } - qs.id=id; - let responseData; responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); return this.helpers.returnJsonArray(responseData.customers); From e564e7abf19cb7b6577152905c2c4bb723527c77 Mon Sep 17 00:00:00 2001 From: bearbobs Date: Sat, 27 Nov 2021 16:55:54 +0530 Subject: [PATCH 41/73] :tag: update get customer module --- .../nodes/SyncroMSP/v1/actions/customer/getCustomer/execute.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/execute.ts index d012355862fce..0d212430690e8 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/execute.ts @@ -22,5 +22,5 @@ export async function getCustomer(this: IExecuteFunctions, index: number): Promi let responseData; responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); - return this.helpers.returnJsonArray(responseData.customers); + return this.helpers.returnJsonArray(responseData.customer); } From baf1041939f4690b170700b198683ef53a8bb0a7 Mon Sep 17 00:00:00 2001 From: bearbobs Date: Mon, 29 Nov 2021 17:03:47 +0530 Subject: [PATCH 42/73] Minor bug fixes --- .../nodes/SyncroMSP/v1/actions/Interfaces.ts | 2 +- .../actions/contact/addContact/description.ts | 2 +- .../v1/actions/contact/getAll/description.ts | 20 ----- .../v1/actions/contact/getAll/execute.ts | 1 + .../v1/actions/contact/getContact/execute.ts | 7 +- .../contact/updateContact/description.ts | 2 +- .../v1/actions/customer/getAll/execute.ts | 3 + .../v1/actions/rmm/getAlert/execute.ts | 9 +- .../nodes/SyncroMSP/v1/actions/rmm/index.ts | 8 -- .../v1/actions/rmm/muteAlert/description.ts | 6 +- .../v1/actions/rmm/updateAlert/description.ts | 85 ------------------- .../v1/actions/rmm/updateAlert/execute.ts | 32 ------- .../v1/actions/rmm/updateAlert/index.ts | 7 -- .../v1/actions/ticket/getAll/description.ts | 20 +++++ .../v1/actions/ticket/getAll/execute.ts | 3 + 15 files changed, 36 insertions(+), 171 deletions(-) delete mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/description.ts delete mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/execute.ts delete mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/index.ts diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts index a9106d3c6c6ed..98256eccf5fe6 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts @@ -8,7 +8,7 @@ type SyncroMspMap = { customer: 'getAll' | 'addCustomer' | 'deleteCustomer' | 'updateCustomer' | 'getCustomer'; ticket: 'getAll' | 'addTicket' | 'deleteTicket' | 'updateTicket' | 'getTicket'; contact: 'getAll' | 'addContact' | 'deleteContact' | 'updateContact' | 'getContact'; - rmm: 'getAll' | 'getAlert' | 'addAlert' | 'deleteAlert' | 'updateAlert' | 'muteAlert' ; + rmm: 'getAll' | 'getAlert' | 'addAlert' | 'deleteAlert' | 'muteAlert' ; }; export type SyncroMsp = AllEntities; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/description.ts index 0ffde0d8c6c9b..ea7cec15f9194 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/description.ts @@ -76,7 +76,7 @@ export const contactAddContactDescription: ContactProperties = [ }, { displayName: 'Address', - name: 'address', + name: 'address1', type: 'string', default: '', }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts index 63d596dfb2752..6bb71c7939465 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts @@ -20,26 +20,6 @@ export const contactGetAllDescription: ContactProperties = [ default: false, description: 'If all results should be returned or only up to a given limit.', }, - { - displayName: 'Limit', - name: 'per_page', - type: 'number', - displayOptions: { - show: { - resource: [ - 'contact', - ], - operation: [ - 'getAll', - ], - returnAll: [ - false, - ], - }, - }, - default: 25, - description: 'limit the number of rows returned', - }, { displayName: 'Additional Fields', name: 'additionalFields', diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/execute.ts index 329982c7276fd..87c3a8b495b1e 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/execute.ts @@ -25,6 +25,7 @@ export async function getAll(this: IExecuteFunctions, index: number): Promise { const id = this.getNodeParameter('id', index) as string; - const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; - let qs = {} as IDataObject; + const qs = {} as IDataObject; const requestMethod = 'GET'; const endpoint = `contacts/${id}`; const body = {} as IDataObject; - if (additionalFields) { - qs = additionalFields; - } - let responseData; responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); return this.helpers.returnJsonArray(responseData); diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/description.ts index c74007216fb4c..240d81d77ca25 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/description.ts @@ -56,7 +56,7 @@ export const contactUpdateContactDescription: ContactProperties = [ }, { displayName: 'Address', - name: 'address', + name: 'address1', type: 'string', default: '', }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts index 58a4f3074bd8d..12ad909eacbee 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts @@ -15,6 +15,7 @@ import { export async function getAll(this: IExecuteFunctions, index: number): Promise { const returnAll = this.getNodeParameter('returnAll', index) as boolean; const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + const perPage = this.getNodeParameter('per_page',index) as string; let qs = {} as IDataObject; const requestMethod = 'GET'; @@ -25,6 +26,8 @@ export async function getAll(this: IExecuteFunctions, index: number): Promise { const id = this.getNodeParameter('id', index) as string; - const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; - let qs = {} as IDataObject; + const qs = {} as IDataObject; const requestMethod = 'GET'; const endpoint = `rmm_alerts/${id}`; const body = {} as IDataObject; - if (additionalFields) { - qs = additionalFields; - } - let responseData; responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); - return this.helpers.returnJsonArray(responseData); + return this.helpers.returnJsonArray(responseData.rmm_alert); } diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/index.ts index 3bda9213a386f..32b4b57e3f79c 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/index.ts @@ -2,7 +2,6 @@ import * as getAlert from './getAlert'; import * as getAll from './getAll'; import * as addAlert from './addAlert'; -import * as updateAlert from './updateAlert'; import * as deleteAlert from './deleteAlert'; import * as muteAlert from './muteAlert'; @@ -14,7 +13,6 @@ export { muteAlert, deleteAlert, addAlert, - updateAlert, }; @@ -51,11 +49,6 @@ export const descriptions = [ value: 'deleteAlert', description: 'delete RMM Alert', }, - { - name: 'Update', - value: 'updateAlert', - description: 'update RMM Alert', - }, { name: 'Mute', value: 'muteAlert', @@ -68,7 +61,6 @@ export const descriptions = [ ...getAll.description, ...getAlert.description, ...addAlert.description, - ...updateAlert.description, ...deleteAlert.description, ...muteAlert.description, ] as INodeProperties[]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/muteAlert/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/muteAlert/description.ts index 34c8db2269414..58c3b4308becc 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/muteAlert/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/muteAlert/description.ts @@ -13,7 +13,7 @@ export const rmmMuteAlertDescription: RmmProperties = [ 'rmm', ], operation: [ - 'deleteAlert', + 'muteAlert', ], }, }, @@ -23,14 +23,14 @@ export const rmmMuteAlertDescription: RmmProperties = [ { displayName: 'Mute Period', name: 'muteFor', - type: 'string', + type: 'options', displayOptions: { show: { resource: [ 'rmm', ], operation: [ - 'deleteAlert', + 'muteAlert', ], }, }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/description.ts deleted file mode 100644 index 917ab38b77f5f..0000000000000 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/description.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { - RmmProperties, -} from '../../Interfaces'; - -export const rmmUpdateAlertDescription: RmmProperties = [ - { - displayName: 'RMM Alert Id', - name: 'id', - type: 'string', - displayOptions: { - show: { - resource: [ - 'rmm', - ], - operation: [ - 'updateAlert', - ], - }, - }, - default: '', - }, - { - displayName: 'Additional Fields', - name: 'additionalFields', - type: 'collection', - placeholder: 'Add Field', - displayOptions: { - show: { - resource: [ - 'rmm', - ], - operation: [ - 'updateAlert', - ], - }, - }, - default: {}, - options: [ - { - displayName: 'Customer id', - name: 'customer_id', - type: 'string', - default: '', - }, - { - displayName: 'Asset Id', - name: 'asset_id', - type: 'string', - default: '', - }, - { - displayName: 'Description', - name: 'description', - type: 'string', - default: '', - }, - { - displayName: 'Resolved', - name: 'resolved', - type: 'boolean', - default: false, - }, - { - displayName: 'Status', - name: 'status', - type: 'options', - options : [ - { - name: 'Active', - value: 'active', - }, - { - name: 'Resolved', - value: 'resolved', - }, - { - name: 'All', - value: 'all', - }, - ], - default: '', - }, - ], - }, -]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/execute.ts deleted file mode 100644 index 9a68d94f73957..0000000000000 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/execute.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { - IExecuteFunctions, -} from 'n8n-core'; - -import { - IDataObject, - INodeExecutionData, -} from 'n8n-workflow'; - -import { - apiRequest, -} from '../../../transport'; - - -export async function updateAlert(this: IExecuteFunctions, index: number): Promise { - const id = this.getNodeParameter('id', index) as IDataObject; - const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; - - const qs = {} as IDataObject; - const requestMethod = 'PUT'; - const endpoint = `rmm_alerts/${id}`; - let body = {} as IDataObject; - - if (additionalFields) { - body = additionalFields; - } - - let responseData; - responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); - - return this.helpers.returnJsonArray(responseData); -} diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/index.ts deleted file mode 100644 index 12d95b01cddea..0000000000000 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/updateAlert/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { updateAlert as execute } from './execute'; -import { rmmUpdateAlertDescription as description } from './description'; - -export { - description, - execute, -}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts index 29c972a668eb4..b6562e71b256b 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts @@ -20,6 +20,26 @@ export const ticketGetAllDescription: TicketProperties = [ default: false, description: 'If all results should be returned or only up to a given limit.', }, + { + displayName: 'Limit', + name: 'per_page', + type: 'number', + displayOptions: { + show: { + resource: [ + 'ticket', + ], + operation: [ + 'getAll', + ], + returnAll: [ + false, + ], + }, + }, + default: 25, + description: 'limit the number of rows returned', + }, { displayName: 'Additional Fields', name: 'additionalFields', diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/execute.ts index f8ad591da990f..6e0c1e6648cae 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/execute.ts @@ -15,6 +15,7 @@ import { export async function getAll(this: IExecuteFunctions, index: number): Promise { const returnAll = this.getNodeParameter('returnAll', index) as boolean; const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + const perPage = this.getNodeParameter('per_page',index) as string; let qs = {} as IDataObject; const requestMethod = 'GET'; @@ -25,6 +26,8 @@ export async function getAll(this: IExecuteFunctions, index: number): Promise Date: Mon, 29 Nov 2021 17:18:51 +0530 Subject: [PATCH 43/73] Changed response for ticket update --- .../nodes/SyncroMSP/v1/actions/ticket/updateTicket/execute.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/updateTicket/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/updateTicket/execute.ts index b694507341083..dc4d17ca54e79 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/updateTicket/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/updateTicket/execute.ts @@ -28,5 +28,5 @@ export async function updateTicket(this: IExecuteFunctions, index: number): Prom let responseData; responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); - return this.helpers.returnJsonArray(responseData); + return this.helpers.returnJsonArray(responseData.ticket); } From e5a27cb1b7c6753ee394c7a927397ff299f98879 Mon Sep 17 00:00:00 2001 From: bearbobs Date: Mon, 29 Nov 2021 17:36:06 +0530 Subject: [PATCH 44/73] :shirt: Fix lint issue --- .../nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts | 2 +- .../nodes/SyncroMSP/v1/actions/ticket/getAll/execute.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts index 12ad909eacbee..949cf278baf31 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts @@ -26,7 +26,7 @@ export async function getAll(this: IExecuteFunctions, index: number): Promise Date: Mon, 29 Nov 2021 22:38:32 +0530 Subject: [PATCH 45/73] Alphabetically ordered all options --- .../nodes/SyncroMSP/v1/actions/Interfaces.ts | 4 +- .../actions/contact/addContact/description.ts | 32 +++++----- .../v1/actions/contact/getAll/description.ts | 14 ++-- .../SyncroMSP/v1/actions/contact/index.ts | 20 +++--- .../contact/updateContact/description.ts | 28 ++++---- .../customer/addCustomer/description.ts | 64 +++++++++---------- .../v1/actions/customer/getAll/description.ts | 40 ++++++------ .../SyncroMSP/v1/actions/customer/index.ts | 20 +++--- .../customer/updateCustomer/description.ts | 64 +++++++++---------- .../v1/actions/rmm/addAlert/description.ts | 16 ++--- .../v1/actions/rmm/getAll/description.ts | 14 ++-- .../nodes/SyncroMSP/v1/actions/rmm/index.ts | 20 +++--- .../v1/actions/rmm/muteAlert/description.ts | 34 +++++----- .../actions/ticket/addTicket/description.ts | 12 ++-- .../v1/actions/ticket/getAll/description.ts | 42 ++++++------ .../SyncroMSP/v1/actions/ticket/index.ts | 20 +++--- .../ticket/updateTicket/description.ts | 16 ++--- .../v1/actions/versionDescription.ts | 18 +++--- 18 files changed, 239 insertions(+), 239 deletions(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts index 98256eccf5fe6..e0527a2eb9207 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts @@ -5,10 +5,10 @@ import { } from 'n8n-workflow'; type SyncroMspMap = { - customer: 'getAll' | 'addCustomer' | 'deleteCustomer' | 'updateCustomer' | 'getCustomer'; - ticket: 'getAll' | 'addTicket' | 'deleteTicket' | 'updateTicket' | 'getTicket'; contact: 'getAll' | 'addContact' | 'deleteContact' | 'updateContact' | 'getContact'; + customer: 'getAll' | 'addCustomer' | 'deleteCustomer' | 'updateCustomer' | 'getCustomer'; rmm: 'getAll' | 'getAlert' | 'addAlert' | 'deleteAlert' | 'muteAlert' ; + ticket: 'getAll' | 'addTicket' | 'deleteTicket' | 'updateTicket' | 'getTicket'; }; export type SyncroMsp = AllEntities; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/description.ts index ea7cec15f9194..c8ffd022bd324 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/description.ts @@ -20,8 +20,8 @@ export const contactAddContactDescription: ContactProperties = [ default: '', }, { - displayName: 'Name', - name: 'name', + displayName: 'Email', + name: 'email', type: 'string', displayOptions: { show: { @@ -36,8 +36,8 @@ export const contactAddContactDescription: ContactProperties = [ default: '', }, { - displayName: 'Email', - name: 'email', + displayName: 'Name', + name: 'name', type: 'string', displayOptions: { show: { @@ -68,12 +68,6 @@ export const contactAddContactDescription: ContactProperties = [ }, default: {}, options: [ - { - displayName: 'Phone', - name: 'phone', - type: 'string', - default: '', - }, { displayName: 'Address', name: 'address1', @@ -87,20 +81,26 @@ export const contactAddContactDescription: ContactProperties = [ default: '', }, { - displayName: 'State', - name: 'state', + displayName: 'Notes', + name: 'notes', type: 'string', default: '', }, { - displayName: 'ZIP', - name: 'zip', + displayName: 'Phone', + name: 'phone', type: 'string', default: '', }, { - displayName: 'Notes', - name: 'notes', + displayName: 'State', + name: 'state', + type: 'string', + default: '', + }, + { + displayName: 'ZIP', + name: 'zip', type: 'string', default: '', }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts index 6bb71c7939465..21458b24b9cf8 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts @@ -37,6 +37,13 @@ export const contactGetAllDescription: ContactProperties = [ }, default: {}, options: [ + { + displayName: 'Page', + name: 'page', + type: 'number', + default: 1, + description: 'Returns provided page of results, each page contains 25 results', + }, { displayName: 'Search Query', name: 'query', @@ -45,13 +52,6 @@ export const contactGetAllDescription: ContactProperties = [ placeholder: 'John Doe', description: 'Search query, it can be anything related to contact data like name etc.', }, - { - displayName: 'Page', - name: 'page', - type: 'number', - default: 1, - description: 'Returns provided page of results, each page contains 25 results', - }, ], }, ]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts index e2d4f99d2756e..c1ba4817ebf63 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts @@ -29,16 +29,6 @@ export const descriptions = [ }, }, options: [ - { - name: 'Get All', - value: 'getAll', - description: 'Retrieve all contacts', - }, - { - name: 'Get', - value: 'getContact', - description: 'Retrieve contact', - }, { name: 'Create', value: 'addContact', @@ -49,6 +39,16 @@ export const descriptions = [ value: 'deleteContact', description: 'delete contact', }, + { + name: 'Get', + value: 'getContact', + description: 'Retrieve contact', + }, + { + name: 'Get All', + value: 'getAll', + description: 'Retrieve all contacts', + }, { name: 'Update', value: 'updateContact', diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/description.ts index 240d81d77ca25..dd3b59c3bed06 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/description.ts @@ -37,8 +37,14 @@ export const contactUpdateContactDescription: ContactProperties = [ default: {}, options: [ { - displayName: 'Name', - name: 'name', + displayName: 'Address', + name: 'address1', + type: 'string', + default: '', + }, + { + displayName: 'City', + name: 'city', type: 'string', default: '', }, @@ -49,20 +55,20 @@ export const contactUpdateContactDescription: ContactProperties = [ default: '', }, { - displayName: 'Phone', - name: 'phone', + displayName: 'Name', + name: 'name', type: 'string', default: '', }, { - displayName: 'Address', - name: 'address1', + displayName: 'Notes', + name: 'notes', type: 'string', default: '', }, { - displayName: 'City', - name: 'city', + displayName: 'Phone', + name: 'phone', type: 'string', default: '', }, @@ -78,12 +84,6 @@ export const contactUpdateContactDescription: ContactProperties = [ type: 'string', default: '', }, - { - displayName: 'Notes', - name: 'notes', - type: 'string', - default: '', - }, ], }, ]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/description.ts index 4fb58149b93dc..d397947f7210c 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/description.ts @@ -4,8 +4,8 @@ import { export const customerAddCustomerDescription: CustomerProperties = [ { - displayName: 'First Name', - name: 'firstname', + displayName: 'Business Name', + name: 'business_name', type: 'string', displayOptions: { show: { @@ -20,8 +20,8 @@ export const customerAddCustomerDescription: CustomerProperties = [ default: '', }, { - displayName: 'Last Name', - name: 'lastname', + displayName: 'Email', + name: 'email', type: 'string', displayOptions: { show: { @@ -36,8 +36,8 @@ export const customerAddCustomerDescription: CustomerProperties = [ default: '', }, { - displayName: 'Business Name', - name: 'business_name', + displayName: 'First Name', + name: 'firstname', type: 'string', displayOptions: { show: { @@ -52,8 +52,8 @@ export const customerAddCustomerDescription: CustomerProperties = [ default: '', }, { - displayName: 'Email', - name: 'email', + displayName: 'Last Name', + name: 'lastname', type: 'string', displayOptions: { show: { @@ -84,12 +84,6 @@ export const customerAddCustomerDescription: CustomerProperties = [ }, default: {}, options: [ - { - displayName: 'Phone', - name: 'phone', - type: 'string', - default: '', - }, { displayName: 'Address', name: 'address', @@ -103,17 +97,23 @@ export const customerAddCustomerDescription: CustomerProperties = [ default: '', }, { - displayName: 'State', - name: 'state', - type: 'string', - default: '', + displayName: 'Get SMS', + name: 'get_sms', + type: 'boolean', + default: true, }, { - displayName: 'ZIP', - name: 'zip', + displayName: 'Invoice Email', + name: 'invoice_cc_email', type: 'string', default: '', }, + { + displayName: 'No Email', + name: 'no_email', + type: 'boolean', + default: false, + }, { displayName: 'Notes', name: 'notes', @@ -121,16 +121,16 @@ export const customerAddCustomerDescription: CustomerProperties = [ default: '', }, { - displayName: 'Get SMS', - name: 'get_sms', - type: 'boolean', - default: true, + displayName: 'Notification Email', + name: 'notification_email', + type: 'string', + default: '', }, { - displayName: 'No Email', - name: 'no_email', - type: 'boolean', - default: false, + displayName: 'Phone', + name: 'phone', + type: 'string', + default: '', }, { displayName: 'Referred By', @@ -139,14 +139,14 @@ export const customerAddCustomerDescription: CustomerProperties = [ default: '', }, { - displayName: 'Notification Email', - name: 'notification_email', + displayName: 'State', + name: 'state', type: 'string', default: '', }, { - displayName: 'Invoice Email', - name: 'invoice_cc_email', + displayName: 'ZIP', + name: 'zip', type: 'string', default: '', }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts index 046fac2ef4b7f..d557f4528f095 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts @@ -4,9 +4,9 @@ import { export const customerGetAllDescription: CustomerProperties = [ { - displayName: 'Return All', - name: 'returnAll', - type: 'boolean', + displayName: 'Limit', + name: 'per_page', + type: 'number', displayOptions: { show: { resource: [ @@ -15,15 +15,18 @@ export const customerGetAllDescription: CustomerProperties = [ operation: [ 'getAll', ], + returnAll: [ + false, + ], }, }, - default: false, - description: 'If all results should be returned or only up to a given limit.', + default: 25, + description: 'limit the number of rows returned', }, { - displayName: 'Limit', - name: 'per_page', - type: 'number', + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', displayOptions: { show: { resource: [ @@ -32,13 +35,10 @@ export const customerGetAllDescription: CustomerProperties = [ operation: [ 'getAll', ], - returnAll: [ - false, - ], }, }, - default: 25, - description: 'limit the number of rows returned', + default: false, + description: 'If all results should be returned or only up to a given limit.', }, { displayName: 'Additional Fields', @@ -57,6 +57,13 @@ export const customerGetAllDescription: CustomerProperties = [ }, default: {}, options: [ + { + displayName: 'Page', + name: 'page', + type: 'number', + default: 1, + description: 'Returns provided page of results, each page contains 25 results', + }, { displayName: 'Search Query', name: 'query', @@ -65,13 +72,6 @@ export const customerGetAllDescription: CustomerProperties = [ placeholder: 'John Doe', description: 'Search query, it can be anything related to customer data like name etc.', }, - { - displayName: 'Page', - name: 'page', - type: 'number', - default: 1, - description: 'Returns provided page of results, each page contains 25 results', - }, ], }, ]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts index 20547e27ff316..01b466199ac37 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts @@ -29,16 +29,6 @@ export const descriptions = [ }, }, options: [ - { - name: 'Get All', - value: 'getAll', - description: 'Retrieve all customers', - }, - { - name: 'Get', - value: 'getCustomer', - description: 'Retrieve customer', - }, { name: 'Create', value: 'addCustomer', @@ -49,6 +39,16 @@ export const descriptions = [ value: 'deleteCustomer', description: 'delete customers', }, + { + name: 'Get', + value: 'getCustomer', + description: 'Retrieve customer', + }, + { + name: 'Get All', + value: 'getAll', + description: 'Retrieve all customers', + }, { name: 'Update', value: 'updateCustomer', diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/updateCustomer/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/updateCustomer/description.ts index 28392236aa2d5..2e00b871f8679 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/updateCustomer/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/updateCustomer/description.ts @@ -37,20 +37,20 @@ export const customerUpdateCustomerDescription: CustomerProperties = [ default: {}, options: [ { - displayName: 'First Name', - name: 'firstname', + displayName: 'Address', + name: 'address', type: 'string', default: '', }, { - displayName: 'Last Name', - name: 'lastname', + displayName: 'Business Name', + name: 'business_name', type: 'string', default: '', }, { - displayName: 'Business Name', - name: 'business_name', + displayName: 'City', + name: 'city', type: 'string', default: '', }, @@ -61,34 +61,34 @@ export const customerUpdateCustomerDescription: CustomerProperties = [ default: '', }, { - displayName: 'Phone', - name: 'phone', + displayName: 'First Name', + name: 'firstname', type: 'string', default: '', }, { - displayName: 'Address', - name: 'address', - type: 'string', - default: '', + displayName: 'Get SMS', + name: 'get_sms', + type: 'boolean', + default: true, }, { - displayName: 'City', - name: 'city', + displayName: 'Invoice Email', + name: 'invoice_cc_email', type: 'string', default: '', }, { - displayName: 'State', - name: 'state', + displayName: 'Last Name', + name: 'lastname', type: 'string', default: '', }, { - displayName: 'ZIP', - name: 'zip', - type: 'string', - default: '', + displayName: 'No Email', + name: 'no_email', + type: 'boolean', + default: false, }, { displayName: 'Notes', @@ -97,16 +97,16 @@ export const customerUpdateCustomerDescription: CustomerProperties = [ default: '', }, { - displayName: 'Get SMS', - name: 'get_sms', - type: 'boolean', - default: true, + displayName: 'Notification Email', + name: 'notification_email', + type: 'string', + default: '', }, { - displayName: 'No Email', - name: 'no_email', - type: 'boolean', - default: false, + displayName: 'Phone', + name: 'phone', + type: 'string', + default: '', }, { displayName: 'Referred By', @@ -115,14 +115,14 @@ export const customerUpdateCustomerDescription: CustomerProperties = [ default: '', }, { - displayName: 'Notification Email', - name: 'notification_email', + displayName: 'State', + name: 'state', type: 'string', default: '', }, { - displayName: 'Invoice Email', - name: 'invoice_cc_email', + displayName: 'ZIP', + name: 'zip', type: 'string', default: '', }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/description.ts index 8eafdee657b76..ff9d3ce31b33d 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/description.ts @@ -4,8 +4,8 @@ import { export const rmmAddAlertDescription: RmmProperties = [ { - displayName: 'Customer Id', - name: 'customerId', + displayName: 'Asset Id', + name: 'assetId', type: 'string', displayOptions: { show: { @@ -20,8 +20,8 @@ export const rmmAddAlertDescription: RmmProperties = [ default: '', }, { - displayName: 'Asset Id', - name: 'assetId', + displayName: 'Customer Id', + name: 'customerId', type: 'string', displayOptions: { show: { @@ -86,14 +86,14 @@ export const rmmAddAlertDescription: RmmProperties = [ name: 'Active', value: 'active', }, - { - name: 'Resolved', - value: 'resolved', - }, { name: 'All', value: 'all', }, + { + name: 'Resolved', + value: 'resolved', + }, ], default: '', }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/description.ts index 1386ad7461cb8..0779437215bcb 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/description.ts @@ -57,6 +57,13 @@ export const rmmGetAllDescription: RmmProperties = [ }, default: {}, options: [ + { + displayName: 'Page', + name: 'page', + type: 'number', + default: 1, + description: 'Returns provided page of results, each page contains 25 results', + }, { displayName: 'Status', name: 'status', @@ -65,13 +72,6 @@ export const rmmGetAllDescription: RmmProperties = [ placeholder: 'all', description: 'Possible values resolved, all, active.', }, - { - displayName: 'Page', - name: 'page', - type: 'number', - default: 1, - description: 'Returns provided page of results, each page contains 25 results', - }, ], }, ]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/index.ts index 32b4b57e3f79c..3acc6692c787c 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/index.ts @@ -29,16 +29,6 @@ export const descriptions = [ }, }, options: [ - { - name: 'Get All', - value: 'getAll', - description: 'Retrieve all RMM Alerts', - }, - { - name: 'Get', - value: 'getAlert', - description: 'Retrieve RMM Alert ', - }, { name: 'Create', value: 'addAlert', @@ -49,6 +39,16 @@ export const descriptions = [ value: 'deleteAlert', description: 'delete RMM Alert', }, + { + name: 'Get', + value: 'getAlert', + description: 'Retrieve RMM Alert ', + }, + { + name: 'Get All', + value: 'getAll', + description: 'Retrieve all RMM Alerts', + }, { name: 'Mute', value: 'muteAlert', diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/muteAlert/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/muteAlert/description.ts index 58c3b4308becc..93cf8c14760a4 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/muteAlert/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/muteAlert/description.ts @@ -3,23 +3,6 @@ import { } from '../../Interfaces'; export const rmmMuteAlertDescription: RmmProperties = [ - { - displayName: 'RMM Alert Id', - name: 'id', - type: 'string', - displayOptions: { - show: { - resource: [ - 'rmm', - ], - operation: [ - 'muteAlert', - ], - }, - }, - default: '', - description: 'Delete alert by id', - }, { displayName: 'Mute Period', name: 'muteFor', @@ -67,4 +50,21 @@ export const rmmMuteAlertDescription: RmmProperties = [ default: '', description: 'Length of time to mute alert for.', }, + { + displayName: 'RMM Alert Id', + name: 'id', + type: 'string', + displayOptions: { + show: { + resource: [ + 'rmm', + ], + operation: [ + 'muteAlert', + ], + }, + }, + default: '', + description: 'Delete alert by id', + }, ]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/addTicket/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/addTicket/description.ts index 864472898e2e6..3116ef4a9e592 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/addTicket/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/addTicket/description.ts @@ -52,6 +52,12 @@ export const ticketAddTicketDescription: TicketProperties = [ }, default: {}, options: [ + { + displayName: 'Asset Id', + name: 'asset_id', + type: 'string', + default: '', + }, { displayName: 'Due Date', name: 'due_date', @@ -76,12 +82,6 @@ export const ticketAddTicketDescription: TicketProperties = [ type: 'string', default: '', }, - { - displayName: 'Asset Id', - name: 'asset_id', - type: 'string', - default: '', - }, ], }, ]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts index b6562e71b256b..af076d88a85a5 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts @@ -4,9 +4,9 @@ import { export const ticketGetAllDescription: TicketProperties = [ { - displayName: 'Return All', - name: 'returnAll', - type: 'boolean', + displayName: 'Limit', + name: 'per_page', + type: 'number', displayOptions: { show: { resource: [ @@ -15,15 +15,18 @@ export const ticketGetAllDescription: TicketProperties = [ operation: [ 'getAll', ], + returnAll: [ + false, + ], }, }, - default: false, - description: 'If all results should be returned or only up to a given limit.', + default: 25, + description: 'limit the number of rows returned', }, { - displayName: 'Limit', - name: 'per_page', - type: 'number', + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', displayOptions: { show: { resource: [ @@ -32,13 +35,10 @@ export const ticketGetAllDescription: TicketProperties = [ operation: [ 'getAll', ], - returnAll: [ - false, - ], }, }, - default: 25, - description: 'limit the number of rows returned', + default: false, + description: 'If all results should be returned or only up to a given limit.', }, { displayName: 'Additional Fields', @@ -57,14 +57,6 @@ export const ticketGetAllDescription: TicketProperties = [ }, default: {}, options: [ - { - displayName: 'Search Query', - name: 'query', - type: 'string', - default: '', - placeholder: 'John Doe', - description: 'Search query, it can be anything related to ticket data like user etc.', - }, { displayName: 'Limit', name: 'per_page', @@ -79,6 +71,14 @@ export const ticketGetAllDescription: TicketProperties = [ default: 1, description: 'Returns provided page of results, each page contains 25 results', }, + { + displayName: 'Search Query', + name: 'query', + type: 'string', + default: '', + placeholder: 'John Doe', + description: 'Search query, it can be anything related to ticket data like user etc.', + }, ], }, ]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/index.ts index 35b472099c869..4c827b0e01d18 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/index.ts @@ -29,16 +29,6 @@ export const descriptions = [ }, }, options: [ - { - name: 'Get All', - value: 'getAll', - description: 'Retrieve all tickets', - }, - { - name: 'Get', - value: 'getTicket', - description: 'Retrieve ticket ', - }, { name: 'Create', value: 'addTicket', @@ -49,6 +39,16 @@ export const descriptions = [ value: 'deleteTicket', description: 'delete ticket', }, + { + name: 'Get', + value: 'getTicket', + description: 'Retrieve ticket ', + }, + { + name: 'Get All', + value: 'getAll', + description: 'Retrieve all tickets', + }, { name: 'Update', value: 'updateTicket', diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/updateTicket/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/updateTicket/description.ts index fff6d0cbe3c70..e23b034fb9160 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/updateTicket/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/updateTicket/description.ts @@ -37,14 +37,14 @@ export const ticketUpdateTicketDescription: TicketProperties = [ default: {}, options: [ { - displayName: 'Customer Id', - name: 'customer_id', + displayName: 'Asset Id', + name: 'asset_id', type: 'string', default: '', }, { - displayName: 'Subject', - name: 'subject', + displayName: 'Customer Id', + name: 'customer_id', type: 'string', default: '', }, @@ -67,14 +67,14 @@ export const ticketUpdateTicketDescription: TicketProperties = [ default: '', }, { - displayName: 'Ticket Type', - name: 'ticket_type', + displayName: 'Subject', + name: 'subject', type: 'string', default: '', }, { - displayName: 'Asset Id', - name: 'asset_id', + displayName: 'Ticket Type', + name: 'ticket_type', type: 'string', default: '', }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts index 4892c0bc127c6..3795174e3fdaa 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts @@ -34,24 +34,24 @@ export const versionDescription: INodeTypeDescription = { name: 'resource', type: 'options', options: [ - { - name: 'Customer', - value: 'customer', - }, - { - name: 'Ticket', - value: 'ticket', - }, { name: 'Contact', value: 'contact', }, + { + name: 'Customer', + value: 'customer', + }, { name: 'RMM', value: 'rmm', }, + { + name: 'Ticket', + value: 'ticket', + }, ], - default: 'customer', + default: 'contact', description: 'The resource to operate on', }, ...customer.descriptions, From 4ac27de9c39445708718574b972561b9855a26b6 Mon Sep 17 00:00:00 2001 From: bearbobs Date: Mon, 29 Nov 2021 22:41:44 +0530 Subject: [PATCH 46/73] :bug: Fixed build issue --- packages/cli/src/Server.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/cli/src/Server.ts b/packages/cli/src/Server.ts index 9cf50c40b1c87..356e4db70d989 100644 --- a/packages/cli/src/Server.ts +++ b/packages/cli/src/Server.ts @@ -1580,10 +1580,12 @@ class App { const findQuery = {} as FindManyOptions; if (req.query.filter) { findQuery.where = JSON.parse(req.query.filter as string); + // @ts-ignore if (findQuery.where.id !== undefined) { // No idea if multiple where parameters make db search // slower but to be sure that that is not the case we // remove all unnecessary fields in case the id is defined. + // @ts-ignore findQuery.where = { id: findQuery.where.id }; } } From ef5c24b59aade6b8ee3b48309c81a36f50244abe Mon Sep 17 00:00:00 2001 From: bearbobs Date: Tue, 30 Nov 2021 15:37:08 +0530 Subject: [PATCH 47/73] :bug: Fixed Server.ts build issue, rebased from master --- packages/cli/src/Server.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/cli/src/Server.ts b/packages/cli/src/Server.ts index 356e4db70d989..6ea877f54e922 100644 --- a/packages/cli/src/Server.ts +++ b/packages/cli/src/Server.ts @@ -1579,13 +1579,11 @@ class App { async (req: express.Request, res: express.Response): Promise => { const findQuery = {} as FindManyOptions; if (req.query.filter) { - findQuery.where = JSON.parse(req.query.filter as string); - // @ts-ignore + findQuery.where = JSON.parse(req.query.filter as string) as IDataObject; if (findQuery.where.id !== undefined) { // No idea if multiple where parameters make db search // slower but to be sure that that is not the case we // remove all unnecessary fields in case the id is defined. - // @ts-ignore findQuery.where = { id: findQuery.where.id }; } } From 0a484d3194e55f2235d7989a0df71b693e6b90c8 Mon Sep 17 00:00:00 2001 From: Jan Oberhauser Date: Tue, 30 Nov 2021 23:58:36 +0100 Subject: [PATCH 48/73] :zap: Fix node issues --- .../nodes/SyncroMSP/SyncroMsp.node.ts | 2 +- .../nodes-base/nodes/SyncroMSP/syncromsp.png | Bin 9746 -> 1274 bytes .../actions/contact/addContact/description.ts | 2 +- .../contact/deleteContact/description.ts | 4 ++-- .../actions/contact/getContact/description.ts | 4 ++-- .../contact/updateContact/description.ts | 2 +- .../customer/addCustomer/description.ts | 2 +- .../actions/customer/addCustomer/execute.ts | 2 +- .../customer/deleteCustomer/description.ts | 4 ++-- .../v1/actions/customer/getAll/description.ts | 6 +++--- .../v1/actions/customer/getAll/execute.ts | 2 +- .../customer/getCustomer/description.ts | 4 ++-- .../customer/updateCustomer/description.ts | 2 +- .../v1/actions/rmm/addAlert/description.ts | 4 ++-- .../v1/actions/rmm/deleteAlert/description.ts | 4 ++-- .../v1/actions/rmm/getAlert/description.ts | 4 ++-- .../v1/actions/rmm/getAll/description.ts | 8 ++++---- .../v1/actions/rmm/getAll/execute.ts | 2 +- .../v1/actions/rmm/muteAlert/description.ts | 6 +++--- .../actions/ticket/addTicket/description.ts | 4 ++-- .../ticket/deleteTicket/description.ts | 4 ++-- .../v1/actions/ticket/getAll/description.ts | 6 +++--- .../v1/actions/ticket/getAll/execute.ts | 2 +- .../actions/ticket/getTicket/description.ts | 4 ++-- .../ticket/updateTicket/description.ts | 6 +++--- .../v1/actions/versionDescription.ts | 2 +- 26 files changed, 46 insertions(+), 46 deletions(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/SyncroMsp.node.ts b/packages/nodes-base/nodes/SyncroMSP/SyncroMsp.node.ts index ff3abff51d9dc..3659a3ee408d6 100644 --- a/packages/nodes-base/nodes/SyncroMSP/SyncroMsp.node.ts +++ b/packages/nodes-base/nodes/SyncroMSP/SyncroMsp.node.ts @@ -11,7 +11,7 @@ export class SyncroMsp extends NodeVersionedType { constructor() { const baseDescription: INodeTypeBaseDescription = { displayName: 'SyncroMSP', - name: 'syncromsp', + name: 'syncroMsp', icon: 'file:syncromsp.png', group: ['output'], subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', diff --git a/packages/nodes-base/nodes/SyncroMSP/syncromsp.png b/packages/nodes-base/nodes/SyncroMSP/syncromsp.png index 8f54b6d4420aa2388ceeaeb3d538e70efb3611bd..a6b3f1bf0a41de2c27aa42d5fcce23c8225d140d 100644 GIT binary patch literal 1274 zcmVzSi{Iozr-T1w($D;-}Lpw>g;#T(I~LD45qG= z*xN+B!8EnI<@NTj;^mFj*>TIzKf1sYsIUp9t+nLmqTS$X$<7X_u=V@=nA+Wj)Yr9{ zf`|YB00(qZPE+xoPbINrh=u06@>XVM0JtoO4A_b|*~wT=je1 zyo;Phcfkyl3WmZOSiHBUSd3d@wm85c+Yynih`tqOnu?dr*hI-Bn*E|@lkMA= zty(RGkh}uciaWe{*$jA~y9n%SgcDKWz;3myyqS5_{-Vux3vb@D>Wl1&HelYW${S(e zJoDaN2`}fqc~`z#d4wx4p^}>%_*N!|`S4Hq@` z#j4jvM2k+hESo#dfLJW+4beqliSK2t*{r4KHlz6Hv7*J1+Vay}59LuEQL3n6(|o#R z9PLfejxgk2obfSOQqJ>Qdyu4gDlE5!E@wzIU`Zc|F%fJfta{E**fcmvLH_C|YS?Vf z6=i8fOyc)aNbEH@);GpmLniOVu>%AL0}O{H4%#)CcKT-Y^r|BN+Ey2dVD_@u93;8L z=$8Tm-$mxO-Z423XSu07CP%gq%_c|~foU+Q&cz~}i&nWj63I6tr@4-4s)S`I6aHdu z<7&7K{b(?V$iEV4%Y_<)gkY?lMdI1T^pv(&>>Gvzj)0rJW`2w~utZ-@tqPx4C7j}! z@AcLmiT&nSaJD=z+>pL4^0|fz(AOuL)#FGTIETM%W7pHg3f-a$g}_*do}n;YkCB(^ zm=!Jr(^Jc5=Mz@D!k2@w^U^^58gJso$R>x*wW5!aS2I6F$9BSl?@tXU zUJ+Z(?Kxb^u+wZQHm63fuD5$JfZN@PV%CU%wYv(byDP z)3fxvK-X5HQ+153pU?X>!*JW8BZ36j8a)5Vd|V62&?HzveUeJlwJpy$dTx zElpvUR|x;vGx(floNxU~5LA5NNJDmC69*DG2{M2S-B7v!NlNeeV|lD)eyCZ0=$i1* k1?8cu(Lmi`~`ivKT_)&T!eHBeCtRMrE zDD@1;eCy|I?joyc`Ez;o^XRyGV|()W^zZde(&BQ&?1FCp57Ca^_P=|JXXjs**J9_F z(wA1h?d}Im&PjH{iqF1=+ubH{iGpNgL+iT!B9@^?U!0}qS|NTUNf}NQb8^iVxHFG%g zJOI#jD#=Re`uslpZRFO^g&nprwJDblpZ8$SU#XjvSPBbcoPF^|AXylzID)=&H~ve+ z@Ixh2IwvF5zHPT9Ib=&NT=$Du;qIP~E4TMU{?Q>(|EH!O1kaCf(L)qXxnwdzj$WoF zWCKQD$eSBaFl>#Fq5{0o?beQJM}JGyYaYcP5*fE<>;G8S@1hop$hdtPqVIXx)c-5t zy7a6`&hz!DvFQa3rR!<%Nn>;jU~+14COMI?D6?Mhc}Z(pOdF@RY2v&Lg3mqFaYbhF zl6uk6wgO{&XMy)#J_|2L9%IjaLYPe_2DQlfEs!;mC;*P(GzG0z*7#Ck2~?K}3rRdHt67t8ova+>j(0a#&bYJlxFp%*Zd_qSsz{ zQidG9Ec~KVBs4oZ0ji(*=EDDSfcUtr4by)R?QP(~g5rtO-lva0ZD*DaT;)F= zz4zS$*=7Jh?8vnNx3^ZAjYQ8mQi>BoClZX|SJ$T~N+MD5Ifn6ska>`gUf#PcMvU+N z%JrZ)xc1S6+qd1ZKO|#oL4ptOqu5Q~n4mFD@dCUW^(|V&0J$(CHm8HA%F7x&%Ox7j zwB3h4TNT`ia7x?OfEREKAowD{{=sXY9(8SJ_GB}9dtqsi%t=D^L4!ll0>aBXp7=D3~gR2olqRdW4O)ZrHOx}<_rxP~+Jr(C~XVpwY1UdLJ zp=N+`hD`Y=mzJSLdq|oV1MMMAa?JcLns|4BU<_g@5;@l`R30=7x6Y(oKAB`BUj%G| zQkjg6CyDK)3W49CZ-uZ`nesd{{0c#oWK0M>=0P#BN44@`7mP4fMhH4eQ2qi4+mvnM z;049jq`#05LfjzW;B^dyJQFu$`PhZ3zd z;-tsAyF7kp5}bLb>^&C`a3FoJw?qqX6c;fRhrW&zLaf9c3Q_yb#SOIr^~9@bFOuJ) zDouw+gH$)%mFbj5f}NE+xwxQ3aDP~pE?B(E$0MlW;M#*Zos;;oMEwm)P%gksdK;DV zibY>;B@P-XKE4ACPB9d}g8Z>ckhZ|sb-=w+GRsmVW6g*j)D?uj{-B;*vrd{wsES5) zhyH7kVdRiolv!*ZtctcScjUWb+(rC;09-G8-V4ZjVdmu#YQUqTLGW?v0DQwfyeW&B z_V=JM-4$@uAZakMEvy=_aNIH2fb&5WCS!Hf2RwaP=(USuFi#6)+V8GDnq&W#(m@y4J^hx*BeC8= zb*+j@H5FN9O!py1uRZTh0*i|osuecGQ{4iMe6c7{0##?OK*tAnJ|3&0uA}DpY45!& z@1P2ObzYU>JcfW!LN5QkE)b2MLO>)^KBXHa1xlqM(+35LL`FV|YlVV|Sb}i(zVr_~ z6S;QOd*$KO`rKQ6e`*kOjU+f#+v3|CoT)-xAtNPx>IBo4$383%a z`hoG@Tmx>WE23P=u7#*Z`NT#Wu<_^Lk!STMq`%>1h7y}5;a2KBkf7*5`YmksDBEJw z>8@Yp9H#22v&I)4v|_LlAa6aUO|iyaT!0QK6CWtPx~Zzml|r>z8Vl2=;3$_HBgTW) z3$*7_ms%hMSW90a!y11M8C%|}j2B^9t*sjymgqM0+lXEP*C4|h=Yu|-a_qXz1jT34 zBf8pNZ+s*!D>v;C#(GSu8Ph+Pn?65mCo!wb`paV}R4HKs&~2A<{XUK@B1g-&1bI6b zx|`T#AiBS+HvW6*t*&2CormtK70LQ}pi|Y*fLdG9^2$>o(ND)Sz#}+n^#d&o2gJ9e z8ZPnik}1jrh@K-t!muSRt~|9;E)Ivh1JU*Dx)^fEFB7SS*IoI#ljQ@|Ke)xI15`v# zvryZFPepNp9Kau~&WLk`kNB<5`+H1okE0|QKy-{a{!GcnrlRPz2AnrHw4c2!cnO?7 z6#gp1rr`jMEibZb8|ICxjG&XltXce#bLWGj6@X~c!&KwIx}m+4ck9H-JlEOSCsBMb zDyXybBJ~xQ^Hfl~Rl~C{#vgN;*kN1yj1}V%h7#&7J(NlNND2R3Bn+J|dw>ybKpiwXTn zJEEaYCRv=|o&HuBHL~*bJwlI9>SX~B)R!#V?Z$%+QD-AguwaV&j3XR`KC{TDG~F<( z5uTA(xXMnIGz$E)bznl@|M;)GUj+eKyYmrXLNCDi5%D24zTBTh^h+p}o5pWV0?DQX z3>#wM;D4_f#wudom(c=t$YdwTb7jwT+XFyT+SzD;HUTs@yy8!R4!!ojcT0|*)c;&1 zsNWT^KuM$A)P#+ea42ZhPhtp_EY+w+_uWB?B}~vaQG{B;W~>-mEf>ZNN)uEpd`he= z;0hsZwo#AHJw5o7k}@}3L#fnh3uIU^9dwaq&sp`rk4!}LrQmecF?ILjIr4BR9TWxr zi7N2r*IBSrvb0xrM1e5f>M+(iKiIreijg($tngi`^xGI2>`!z@ida-hXt$jD|11++ zD-iI}u)C83OOUvbeMYKt1_+J3cXk?D(V!grpxLjdW>$N;S!|d-jZAdWqOt_Dd# z62uI)kT5+`>pF=RJ|O-Fon1yanG8l2B9vRb577w{J+{>Os`|d3f@;()=bohLx%*}1+NKskG?)7l5^VFPgHRu z=<8&89x33-)dyvQZ&3JSP;$$`aBLc+p+6jqOu3t!`xdkYg({k|}Mu)^e zZ=9`vyL5l}_}RtIFChf)r_5!+4!B;$8t~%S%T0;i?G7#2L^I{ZPaVT8a=+$;Uwl=0 z!uv)1*Z_Q~;UQ*HsS9>spX@Qf3Hx$BPWAmsZeTTezcdWLsEub|-56+)UPrn!>h3=I z%d8*rhvgJit5ETG3ZW!zSj!!~=uPtng2!M-`))>Pn-V$%^;a_34N+sh$eX7drT~u6 zL!Kt#1iH3gotHMusIvTJ07Hux=Vw_m9Pj+OGqAp665<~>j-pA986qb84w&*lcJ@-c z+}M9(E5jbY^=^%@E6A7dd8zzU>@$nlf7v+GxIXrvcBP8}*Vnmd;8GoikuQ1cV#`Vn zl?J?IWR*s0F0pV^BfP(VSe~&nHG>W2?H zG|8h~Wd3>%I>+k}{T`$$yfXwyZUs=$?GocN&dR0O_QO)APU=J?VcbtpnKXrP3a@~$ z2n;(OBiKtVb9qbU{Kd>?HeQ+*&2!3`$L8f>Q@Wpr`VAwZvG>QLoAiN$TDCjUlQ$w*LhgRgz;+d*X_Z%$D}N><*<^nWYqq zi}oEDDx(Q3HW3@=sMj=ygnA{3cEYhX7!qcWZ=SzJ!22Y#Ag2oGuI*Q^&)O33e+~Hc z{&OkJa8ILhlNI|87a%JFPpXEmEQ=wb-Py|KiET19QGYi;P;jGD0bGz#0Y83AsrO7U z*$1uVti#cc$rJeq4$5)Xb+Qn!CTd#~Z`TqVqi@w2r0V|ZZjv#D*&~Zp5Nt)o0$e0| zPc`C^seUv?lPZ-Ze48a?=Ih8o2mC~T_T1$J+0je}%X|n4O_#QIV7{N5 zbAWsCVg@mlhh9CgmxIlOW9%OVklhEi|CNCUW|K#f#F&8e~&j??L&0&2v`M|Aq z@?D0lh~VB(K){o7!K!uXP{4Paiy$zzrq*9h_&C?ZYXayOvI^7k*&WYZtA%JZ5640H zf}9PkX*UoYENH0R4=fm(Xm&}`?@P}F945i|m)fz2puVv5T)0#4m#%a>D*YmG;?v)W zrp52QAI{$spAs$-3U{b8$Pjl{wPSq8_NEGZAq~VZoIF75d~;4c@{ZOnS*ioUjPra4 zP<<@`&}vk*HAuqp2^y3yEI3LZJ;k>EQOZC;6QH;=kjaO8*FlQJj$(*p`Igaai&Wv< zlN{+WyB_#0=vPW!=b$im8>bk&Qd~ar>0@Pcw#w`Xl^$NXR+dvRZ=L+%x-I$&_(n~UC zUD=`z^p?P=6*}kyBP#&>s+A|g)-X+}`;83s+`of`=NL9w2NlRx4E2h$F)uhl(37EW z%!@cB&P$j%whL{DkNKpy+wr}n-`|aA4ele!>;1vPO6Lo2y0P!Xp1>u7vfsXy78Yl% zXLZae0ak(d9`jlk(4M3rFst!=Qb{et=seOy9B=G;ZjXhOwqi1i7UI5|$W+In^3~Gt z^K*w^l4~<#uNMzd^o>#{s_sn6#D$(-XgxMDl-|4An&oa@Eg7k7GxtvLu6Z1qM4UX! zmaaVXmq6kkYY;*5sDo{>Cq(Ns6{>|5`{vv>71~h#^fHWr;*J#9vS>&WE1hMUX&)L( ze_mc~=8Xbi7J`UIIEG9FAUnI;o3wE9MT*agmi4uD@Id4wponma6`@34&*K*@m~5X@ z=JyBA@ZhD-FW*yU^Khl?egp;m*nV5q_^(E@!E!~&S)iwYMEf8jRbC{A9vx{5Jo?uI zlSbM(cP^H}5y}q;^2fe*FkcTD@R1p-AQmgvs7I?SkF66b*GR@lITBZ=+I=q$3DoMB z$Mf1hwFo2ohAy!%N#*&x{AotEHDZv3Yc)}mQt&I^u)f(qLTvW-GP;7s zOB2evL>Q9f{^rM`Q!zy757d%Pq?K+zI`4^xMs*7N+v z;1o0wpj)gepSQmNf2&Z<#vfd)Pa}$Pd?RTW(9otFj#TitUwKz{nG{)dmIG!kFL)@@ zWUG49)9)cuF(`PY8Q#j1rx4s7gl%@3ZKT;PzVa;~B|HI4<4pjKC1v zn~HH}^ae&^Xe+g!POGB7pqt?Bx5?6i3wW3tsl=6h`9jWV0-BdgB8v{uB5T8)#EfL| z8)8In)ZE{>Dpw#VFeioS+k{X4YgFZ*+7ES$j zkEN4Bx!k}!e95(ua4Au*9x*BOmteTX;L;sg8T%W^pok4njUrhq&xl{u*?j-W=5u$=nY$%GIW4q0DddR9HFfPOj8l2k zh%JE@z`8zCDa&I*?5g(PIlZ3)Y%iW)k=aZMeR~QX3b>d)MP{IvhesINU;%0F^}`aW z`}lzk&Ja?Qut#P#eR4mXw;ZLwK1Obq8&cI}C$$#D^He_g?;j0huZg$y0vXfc+lL^k z-=*)1MJkl=Re6W%R7$s(P>ZPzMe+j=W!g$EI--C{M@+BnV~6DuprloWGWy2l7rf2I zgd@+fD^gRDN_uaZ!&BlWpM73XoAh3VKzO?LbpvgWv zQj)d)rZS@w*_DT(B{vdqZcqFG{fq)=xurv^%888j(45l9vsSvk!BN09!!bJ{Qnn3h zeHHZPF_vj7ZgAJ!z)80Q)8dPsA~k@;>mSZ z1K6wTcwFvv2xr^vYdX~-z1z?5K~JM429NWuv2oMj-QCSRh4en}xU(AcF|nyDHwy%H_VYoQ67)UAq(Z)5Y(g zT;7xoYe8t1N{yOD&n;fy0^?kie*@ku6BAx(Jcet2EM*uAkFA9nDWJ6Y(xRX;Zs4h;cNIWDC9 zG?-ePQm$MrX^-mI!>l9_41T+(=gdw&p74HknJAdE+9RQpZ3e@7;Cxw#D@oe8 z_um*|ZI}3D00sxtO7SryH;1@NmTRb5l%3Ji(z0y8Ax&FGPaL!708H|pnBHd~HIOjy}(8SNAE z2XZv5x_|!cVvp1X7Orj_n4`_tn@+j zigZRMAO!>?7AO-W(D&Sa%0;gh+VKlJA5hkK=XnSuEfmUeNC&9QXg`;IKgb!2Xws(D zqIm=OZsZ(usW-Lo7%`C(<(6eHXopJqs_WOSh|#o0o^{I>$#MdR6TM~0!TYf{U9#5m z@T&jtb=@$EJwmJbADI;?6=ZN3d_e`~E7rZd&vprF;BDI!@TU>KyQe=4F3sA*VcmU~ zHHlm}=zs{`Y_b(@e!C}}0U_5^2);wDSf4CulHNBAr`<>K_#VX^WJIWSjzVSSTSsvv z{b_XTqe9u9!7{x}|3ArbZ`%b@7jdA3jIKpQz_o1_N6Hd@Ek<8{71vM409mSe4apzf zMwjUF@93M}PU!M;#efQkZw5-#fi}l0M=Zi4fwaJqR`ouMuZeNKX)oXkJ&ffXupAF? zNLye`()(nbNe2hW*X!xzGm|PM=5z!7Tdq-<=$^EFJKQJ6^K0-hQYlJY-k30Qtw8QG^ME9M2wK|lQS9H5Z0(kHVygxf7znpv4|1ibMkaTI6*kj|#mu`RQ2+AC#qEcGH7|$Xghl2PoFqyWO zKTSe5r_rdAJKg^E3VPVgF1U?u6ia+evkfXxBeVl?d>e@76*JXvWJ+3%M8V{5>Sl;| zK=uO~)d`nq1XIa{QkRuXk(PIdH=2OFH;sv%?J4z0&_^VrJrtLEOrg0ObOSE(6rEng zJb@8$MSsphEZ8%VqzbWUwxH0yy{U1aK25n7iPOYUf%|w4`Um1t+Atlmx*=P47qg)(u`TkoYliE-Ltd zUEL|GCKhdPTzi{e8@54G`g<$B2pc#TGDpz;G02@ccq%sP#g=5!jn*R_59WeDHJ}5- z_;#wGm(1#9mDUD*2HeGFjCn>F{@poGp6ECDaR3)*(i|H`k6nKIzv58?63Cp6%zd5E zX6;#JLu^-!A|RNkrURl}UWn#=_+7IR#55DX=QHCb0t)ubsU}fcG0+9W!W_OUA=53B zpbYYImh~dzZ!K1*DE@&CzoV^^Lic`?1WZzAmy61xp3o6Gqhrk!q2r{pjfp(v$VzLt zBdgKvI$S+`RtAWY)M~-hyfQYWh+7+0mLv_v(n&!obf4!&{pSLm{S`eX)|uiN#b~ni zv1@}oz!2I-r6cOWdE#@1v`xw-2{$_<8t1DNaN+M{hgpgcDjrZfYQZjF*kUK=RCoXd z9yYJ|$X{Bb1qo?TyTFUlyvuiwjG~`OqJg>|@d|Tj$Pvg0>*5dWCc&9IR#4~9zsk^U zh8-J!B5pooy*9%fx<+OVq6w|ealrrsC5d?#eLco5IiTm|iLeEzUl?{G9{4oW<{HzZ zZu|{@z3(k%S|v3X4Iwbkved$VitFe1QcyQ}`Gyt)tA$*Mj{sg_77R_Ik2J!`OFr3U~F{`_->NJ$I-%o2;9(*-!VrL1!^u8cTisYF_ z)S%RV-Tsg*-hUliy7b%!U(;*y;0GHlXO+$*kX2KIL5pW_s@ ztgd8zW0oWs*KxMCW`;(;8*(Ks8K5322g~N3pi} zvu@%}>ugYjE~ynn1m;lC00j$-!9FjUHn-_vOV4y5Puy*dAOH&&STugUOPx8)pT6Dy zSD1y@d%+}#7X(j14?rFB6jjGP=D8zYityL0Lvc}T>w>dx7_S9EfUOExv~uX!>bsSX zrIO`^%|FRK&KFt)pk!D0)8xObg%PhW8l&hOs?h}VKdv97>9NkV6ggfj5df}>ZdLKr zx%-)RA<`DcAP@NgGjqyj?QMl_yb!+^$^=3HDlMX5Pd>pvoQ)Hq$neKyd2GZ~K7(KrP}CJ%}sEnE4W(__4@g z8eT{2kr1Ys{!=0sW6zo*&&ls%aupR7@?x1UA2qRXZHs)g>;rTJUj~*$9+a~jJ=kB! zr%t7LGmI8ND~mG?XSVSDLUQK<8r{?Hfrb$BYX7$DwPl02yN2A#XigBEkLE1Z`Q_gO zbT-EWPD~y@%4c}=bt5ga$lV=DN@3$tTG?lHpm_De0D>GwA zUJ2k#h~o(P#^R-dr;OH9%8-i7PXcFabcl~oALEmmJ(<-og%4xh$ncf&XL!_`#bo5g zCktcH1;@`~{^i+R`f7oU)3lj28m#*IoKLX5c_tG|RSJEnpcw84-Gifq4n0s4QGF)q z6ohX|yy3pp@AZwMSCMfeCzGiGuAjpdwvsVMuX;4pZQyoTms zq2!}+b&s)Qw`+IpL{c+#bjpBe`D5hH)b$w6nSJtotnc#nfB$Zj M { const returnAll = this.getNodeParameter('returnAll', index) as boolean; const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; - const perPage = this.getNodeParameter('per_page',index) as string; + const perPage = this.getNodeParameter('perPage',index) as string; let qs = {} as IDataObject; const requestMethod = 'GET'; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/description.ts index 280dc4a913d22..2c7862525c959 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/description.ts @@ -4,7 +4,7 @@ import { export const customerGetCustomerDescription: CustomerProperties = [ { - displayName: 'Cutomer Id', + displayName: 'Cutomer ID', name: 'id', type: 'string', displayOptions: { @@ -18,6 +18,6 @@ export const customerGetCustomerDescription: CustomerProperties = [ }, }, default: '', - description: 'get specific customer by id', + description: 'Get specific customer by ID', }, ]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/updateCustomer/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/updateCustomer/description.ts index 2e00b871f8679..3997b75a76dce 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/updateCustomer/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/updateCustomer/description.ts @@ -4,7 +4,7 @@ import { export const customerUpdateCustomerDescription: CustomerProperties = [ { - displayName: 'Customer Id', + displayName: 'Customer ID', name: 'id', type: 'string', displayOptions: { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/description.ts index ff9d3ce31b33d..5985a8e99dca3 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/addAlert/description.ts @@ -4,7 +4,7 @@ import { export const rmmAddAlertDescription: RmmProperties = [ { - displayName: 'Asset Id', + displayName: 'Asset ID', name: 'assetId', type: 'string', displayOptions: { @@ -20,7 +20,7 @@ export const rmmAddAlertDescription: RmmProperties = [ default: '', }, { - displayName: 'Customer Id', + displayName: 'Customer ID', name: 'customerId', type: 'string', displayOptions: { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/deleteAlert/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/deleteAlert/description.ts index 082a9a3d13bfc..9230add382091 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/deleteAlert/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/deleteAlert/description.ts @@ -4,7 +4,7 @@ import { export const rmmDeleteAlertDescription: RmmProperties = [ { - displayName: 'RMM Alert Id', + displayName: 'RMM Alert ID', name: 'id', type: 'string', displayOptions: { @@ -18,6 +18,6 @@ export const rmmDeleteAlertDescription: RmmProperties = [ }, }, default: '', - description: 'Delete alert by id', + description: 'Delete alert by ID', }, ]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlert/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlert/description.ts index 8a997b1163877..9dd4552b18754 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlert/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAlert/description.ts @@ -4,7 +4,7 @@ import { export const rmmGetAlertsDescription: RmmProperties = [ { - displayName: 'RMM Alert Id', + displayName: 'RMM Alert ID', name: 'id', type: 'string', displayOptions: { @@ -18,6 +18,6 @@ export const rmmGetAlertsDescription: RmmProperties = [ }, }, default: '', - description: 'get specific rmm alert by id', + description: 'Get specific rmm alert by ID', }, ]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/description.ts index 0779437215bcb..1743ff57ae64e 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/description.ts @@ -18,11 +18,11 @@ export const rmmGetAllDescription: RmmProperties = [ }, }, default: false, - description: 'If all results should be returned or only up to a given limit.', + description: 'If all results should be returned or only up to a given limit', }, { displayName: 'Limit', - name: 'per_page', + name: 'perPage', type: 'number', displayOptions: { show: { @@ -38,7 +38,7 @@ export const rmmGetAllDescription: RmmProperties = [ }, }, default: 25, - description: 'limit the number of rows returned', + description: 'Limit the number of rows returned', }, { displayName: 'Additional Fields', @@ -70,7 +70,7 @@ export const rmmGetAllDescription: RmmProperties = [ type: 'string', default: '', placeholder: 'all', - description: 'Possible values resolved, all, active.', + description: 'Possible values resolved, all, active', }, ], }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/execute.ts index 215889585d907..6794d69420b00 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/execute.ts @@ -14,7 +14,7 @@ import { export async function getAll(this: IExecuteFunctions, index: number): Promise { const returnAll = this.getNodeParameter('returnAll', index) as boolean; - const perPage = this.getNodeParameter('per_page',index) as string; + const perPage = this.getNodeParameter('perPage',index) as string; const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; let qs = {} as IDataObject; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/muteAlert/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/muteAlert/description.ts index 93cf8c14760a4..82f558954767d 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/muteAlert/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/muteAlert/description.ts @@ -48,10 +48,10 @@ export const rmmMuteAlertDescription: RmmProperties = [ }, ], default: '', - description: 'Length of time to mute alert for.', + description: 'Length of time to mute alert for', }, { - displayName: 'RMM Alert Id', + displayName: 'RMM Alert ID', name: 'id', type: 'string', displayOptions: { @@ -65,6 +65,6 @@ export const rmmMuteAlertDescription: RmmProperties = [ }, }, default: '', - description: 'Delete alert by id', + description: 'Delete alert by ID', }, ]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/addTicket/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/addTicket/description.ts index 3116ef4a9e592..c7f8a44955b0d 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/addTicket/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/addTicket/description.ts @@ -4,7 +4,7 @@ import { export const ticketAddTicketDescription: TicketProperties = [ { - displayName: 'Customer Id', + displayName: 'Customer ID', name: 'customerId', type: 'string', displayOptions: { @@ -53,7 +53,7 @@ export const ticketAddTicketDescription: TicketProperties = [ default: {}, options: [ { - displayName: 'Asset Id', + displayName: 'Asset ID', name: 'asset_id', type: 'string', default: '', diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/deleteTicket/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/deleteTicket/description.ts index e04d99c70ea8e..fc3fe063645dc 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/deleteTicket/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/deleteTicket/description.ts @@ -4,7 +4,7 @@ import { export const ticketDeleteDescription: TicketProperties = [ { - displayName: 'Ticket Id', + displayName: 'Ticket ID', name: 'id', type: 'string', displayOptions: { @@ -18,6 +18,6 @@ export const ticketDeleteDescription: TicketProperties = [ }, }, default: '', - description: 'Delete a specific customer by id', + description: 'Delete a specific customer by ID', }, ]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts index af076d88a85a5..80a7449918eb4 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts @@ -5,7 +5,7 @@ import { export const ticketGetAllDescription: TicketProperties = [ { displayName: 'Limit', - name: 'per_page', + name: 'perPage', type: 'number', displayOptions: { show: { @@ -21,7 +21,7 @@ export const ticketGetAllDescription: TicketProperties = [ }, }, default: 25, - description: 'limit the number of rows returned', + description: 'Limit the number of rows returned', }, { displayName: 'Return All', @@ -38,7 +38,7 @@ export const ticketGetAllDescription: TicketProperties = [ }, }, default: false, - description: 'If all results should be returned or only up to a given limit.', + description: 'If all results should be returned or only up to a given limit', }, { displayName: 'Additional Fields', diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/execute.ts index c82ebd977986a..f0f6bc9529d82 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/execute.ts @@ -15,7 +15,7 @@ import { export async function getAll(this: IExecuteFunctions, index: number): Promise { const returnAll = this.getNodeParameter('returnAll', index) as boolean; const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; - const perPage = this.getNodeParameter('per_page',index) as string; + const perPage = this.getNodeParameter('perPage',index) as string; let qs = {} as IDataObject; const requestMethod = 'GET'; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getTicket/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getTicket/description.ts index 346904949a124..2cbb98e2509b7 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getTicket/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getTicket/description.ts @@ -4,7 +4,7 @@ import { export const ticketGetTicketDescription: TicketProperties = [ { - displayName: 'Ticket Id', + displayName: 'Ticket ID', name: 'id', type: 'string', displayOptions: { @@ -18,6 +18,6 @@ export const ticketGetTicketDescription: TicketProperties = [ }, }, default: '', - description: 'get specific customer by id', + description: 'Get specific customer by ID', }, ]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/updateTicket/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/updateTicket/description.ts index e23b034fb9160..03993b4734e66 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/updateTicket/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/updateTicket/description.ts @@ -4,7 +4,7 @@ import { export const ticketUpdateTicketDescription: TicketProperties = [ { - displayName: 'Ticket Id', + displayName: 'Ticket ID', name: 'id', type: 'string', displayOptions: { @@ -37,13 +37,13 @@ export const ticketUpdateTicketDescription: TicketProperties = [ default: {}, options: [ { - displayName: 'Asset Id', + displayName: 'Asset ID', name: 'asset_id', type: 'string', default: '', }, { - displayName: 'Customer Id', + displayName: 'Customer ID', name: 'customer_id', type: 'string', default: '', diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts index 3795174e3fdaa..5c37fba0372cb 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts @@ -10,7 +10,7 @@ import * as rmm from './rmm'; export const versionDescription: INodeTypeDescription = { displayName: 'SyncroMSP', - name: 'syncromsp', + name: 'syncroMsp', icon: 'file:syncromsp.png', group: ['output'], version: 1, From 2044ce07d024f059a4716883b529ee15159ae6c0 Mon Sep 17 00:00:00 2001 From: Jan Oberhauser Date: Wed, 1 Dec 2021 00:04:04 +0100 Subject: [PATCH 49/73] :zap: Fix more issues --- .../nodes/SyncroMSP/v1/actions/contact/index.ts | 7 +++---- .../nodes/SyncroMSP/v1/actions/rmm/index.ts | 11 +++++------ .../nodes/SyncroMSP/v1/actions/ticket/index.ts | 9 ++++----- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts index c1ba4817ebf63..81b85a1b6a14d 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts @@ -32,12 +32,12 @@ export const descriptions = [ { name: 'Create', value: 'addContact', - description: 'add new contact', + description: 'Add new contact', }, { name: 'Delete', value: 'deleteContact', - description: 'delete contact', + description: 'Delete contact', }, { name: 'Get', @@ -52,7 +52,7 @@ export const descriptions = [ { name: 'Update', value: 'updateContact', - description: 'update contact', + description: 'Update contact', }, ], default: '', @@ -64,4 +64,3 @@ export const descriptions = [ ...updateContact.description, ...deleteContact.description, ] as INodeProperties[]; - diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/index.ts index 3acc6692c787c..1e578c0ff9c73 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/index.ts @@ -32,27 +32,27 @@ export const descriptions = [ { name: 'Create', value: 'addAlert', - description: 'add new RMM Alert', + description: 'Add new RMM Alert', }, { name: 'Delete', value: 'deleteAlert', - description: 'delete RMM Alert', + description: 'Delete RMM Alert', }, { name: 'Get', value: 'getAlert', - description: 'Retrieve RMM Alert ', + description: 'Retrieve RMM Alert', }, { name: 'Get All', value: 'getAll', - description: 'Retrieve all RMM Alerts', + description: 'Retrieve all RMM Alerts', }, { name: 'Mute', value: 'muteAlert', - description: 'mute RMM Alert', + description: 'Mute RMM Alert', }, ], default: '', @@ -64,4 +64,3 @@ export const descriptions = [ ...deleteAlert.description, ...muteAlert.description, ] as INodeProperties[]; - diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/index.ts index 4c827b0e01d18..8f392a75e7e29 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/index.ts @@ -32,17 +32,17 @@ export const descriptions = [ { name: 'Create', value: 'addTicket', - description: 'add new ticket', + description: 'Add new ticket', }, { name: 'Delete', value: 'deleteTicket', - description: 'delete ticket', + description: 'Delete ticket', }, { name: 'Get', value: 'getTicket', - description: 'Retrieve ticket ', + description: 'Retrieve ticket', }, { name: 'Get All', @@ -52,7 +52,7 @@ export const descriptions = [ { name: 'Update', value: 'updateTicket', - description: 'update ticket', + description: 'Update ticket', }, ], default: '', @@ -64,4 +64,3 @@ export const descriptions = [ ...deleteTicket.description, ...updateTicket.description, ] as INodeProperties[]; - From fe0f03c08fef7cea0d4daf1e5187d624a0cd2225 Mon Sep 17 00:00:00 2001 From: bearbobs Date: Wed, 1 Dec 2021 12:00:54 +0530 Subject: [PATCH 50/73] :zap: Fixed all operations with the standard convention --- .../nodes/SyncroMSP/v1/actions/Interfaces.ts | 8 +-- .../{addContact => add}/description.ts | 10 ++-- .../contact/{addContact => add}/execute.ts | 0 .../contact/{addContact => add}/index.ts | 2 +- .../{deleteContact => del}/description.ts | 2 +- .../contact/{deleteContact => del}/execute.ts | 0 .../contact/{deleteContact => del}/index.ts | 0 .../{getContact => get}/description.ts | 4 +- .../contact/{getContact => get}/execute.ts | 0 .../contact/{getContact => get}/index.ts | 2 +- .../v1/actions/contact/getAll/description.ts | 10 +--- .../SyncroMSP/v1/actions/contact/index.ts | 32 +++++----- .../{updateContact => update}/description.ts | 6 +- .../{updateContact => update}/execute.ts | 0 .../{updateContact => update}/index.ts | 2 +- .../{addCustomer => add}/description.ts | 12 ++-- .../customer/{addCustomer => add}/execute.ts | 0 .../customer/{addCustomer => add}/index.ts | 2 +- .../{deleteCustomer => del}/description.ts | 2 +- .../{deleteCustomer => del}/execute.ts | 2 +- .../customer/{deleteCustomer => del}/index.ts | 0 .../{getCustomer => get}/description.ts | 4 +- .../customer/{getCustomer => get}/execute.ts | 0 .../customer/{getCustomer => get}/index.ts | 2 +- .../v1/actions/customer/getAll/execute.ts | 5 +- .../SyncroMSP/v1/actions/customer/index.ts | 38 ++++++------ .../{updateCustomer => update}/description.ts | 6 +- .../{updateCustomer => update}/execute.ts | 0 .../{updateCustomer => update}/index.ts | 2 +- .../rmm/{addAlert => add}/description.ts | 12 ++-- .../actions/rmm/{addAlert => add}/execute.ts | 2 +- .../v1/actions/rmm/{addAlert => add}/index.ts | 2 +- .../rmm/{deleteAlert => del}/description.ts | 4 +- .../rmm/{deleteAlert => del}/execute.ts | 0 .../actions/rmm/{deleteAlert => del}/index.ts | 2 +- .../rmm/{getAlert => get}/description.ts | 4 +- .../actions/rmm/{getAlert => get}/execute.ts | 0 .../v1/actions/rmm/{getAlert => get}/index.ts | 2 +- .../v1/actions/rmm/getAll/description.ts | 55 +++++++++++++----- .../v1/actions/rmm/getAll/execute.ts | 7 ++- .../nodes/SyncroMSP/v1/actions/rmm/index.ts | 32 +++++----- .../rmm/{muteAlert => mute}/description.ts | 6 +- .../rmm/{muteAlert => mute}/execute.ts | 0 .../actions/rmm/{muteAlert => mute}/index.ts | 2 +- .../nodes/SyncroMSP/v1/actions/syncromsp.png | Bin 9746 -> 1274 bytes .../ticket/{addTicket => add}/description.ts | 8 +-- .../ticket/{addTicket => add}/execute.ts | 0 .../ticket/{addTicket => add}/index.ts | 2 +- .../{deleteTicket => del}/description.ts | 2 +- .../ticket/{deleteTicket => del}/execute.ts | 0 .../ticket/{deleteTicket => del}/index.ts | 0 .../ticket/{getTicket => get}/description.ts | 4 +- .../ticket/{getTicket => get}/execute.ts | 0 .../ticket/{getTicket => get}/index.ts | 2 +- .../v1/actions/ticket/getAll/description.ts | 7 --- .../v1/actions/ticket/getAll/execute.ts | 5 +- .../SyncroMSP/v1/actions/ticket/index.ts | 32 +++++----- .../{updateTicket => update}/description.ts | 6 +- .../{updateTicket => update}/execute.ts | 0 .../ticket/{updateTicket => update}/index.ts | 2 +- .../nodes/SyncroMSP/v1/syncromsp.png | Bin 9746 -> 1274 bytes 61 files changed, 183 insertions(+), 170 deletions(-) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/{addContact => add}/description.ts (91%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/{addContact => add}/execute.ts (100%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/{addContact => add}/index.ts (53%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/{deleteContact => del}/description.ts (94%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/{deleteContact => del}/execute.ts (100%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/{deleteContact => del}/index.ts (100%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/{getContact => get}/description.ts (77%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/{getContact => get}/execute.ts (100%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/{getContact => get}/index.ts (53%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/{updateContact => update}/description.ts (91%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/{updateContact => update}/execute.ts (100%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/{updateContact => update}/index.ts (53%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/{addCustomer => add}/description.ts (92%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/{addCustomer => add}/execute.ts (100%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/{addCustomer => add}/index.ts (52%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/{deleteCustomer => del}/description.ts (94%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/{deleteCustomer => del}/execute.ts (95%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/{deleteCustomer => del}/index.ts (100%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/{getCustomer => get}/description.ts (77%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/{getCustomer => get}/execute.ts (100%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/{getCustomer => get}/index.ts (52%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/{updateCustomer => update}/description.ts (94%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/{updateCustomer => update}/execute.ts (100%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/{updateCustomer => update}/index.ts (52%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/{addAlert => add}/description.ts (89%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/{addAlert => add}/execute.ts (94%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/{addAlert => add}/index.ts (54%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/{deleteAlert => del}/description.ts (78%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/{deleteAlert => del}/execute.ts (100%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/{deleteAlert => del}/index.ts (54%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/{getAlert => get}/description.ts (79%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/{getAlert => get}/execute.ts (100%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/{getAlert => get}/index.ts (54%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/{muteAlert => mute}/description.ts (90%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/{muteAlert => mute}/execute.ts (100%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/{muteAlert => mute}/index.ts (54%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/{addTicket => add}/description.ts (91%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/{addTicket => add}/execute.ts (100%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/{addTicket => add}/index.ts (53%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/{deleteTicket => del}/description.ts (94%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/{deleteTicket => del}/execute.ts (100%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/{deleteTicket => del}/index.ts (100%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/{getTicket => get}/description.ts (78%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/{getTicket => get}/execute.ts (100%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/{getTicket => get}/index.ts (53%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/{updateTicket => update}/description.ts (91%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/{updateTicket => update}/execute.ts (100%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/{updateTicket => update}/index.ts (53%) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts index e0527a2eb9207..2136f08ac5dd9 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts @@ -5,10 +5,10 @@ import { } from 'n8n-workflow'; type SyncroMspMap = { - contact: 'getAll' | 'addContact' | 'deleteContact' | 'updateContact' | 'getContact'; - customer: 'getAll' | 'addCustomer' | 'deleteCustomer' | 'updateCustomer' | 'getCustomer'; - rmm: 'getAll' | 'getAlert' | 'addAlert' | 'deleteAlert' | 'muteAlert' ; - ticket: 'getAll' | 'addTicket' | 'deleteTicket' | 'updateTicket' | 'getTicket'; + contact: 'getAll' | 'add' | 'delete' | 'update' | 'get'; + customer: 'getAll' | 'add' | 'delete' | 'update' | 'get'; + rmm: 'getAll' | 'get' | 'add' | 'delete' | 'mute' ; + ticket: 'getAll' | 'add' | 'delete' | 'update' | 'get'; }; export type SyncroMsp = AllEntities; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/description.ts similarity index 91% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/description.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/description.ts index 6c26d63716c57..84c4b010e020c 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/description.ts @@ -2,7 +2,7 @@ import { ContactProperties, } from '../../Interfaces'; -export const contactAddContactDescription: ContactProperties = [ +export const contactAddDescription: ContactProperties = [ { displayName: 'Customer ID', name: 'customerId', @@ -13,7 +13,7 @@ export const contactAddContactDescription: ContactProperties = [ 'contact', ], operation: [ - 'addContact', + 'add', ], }, }, @@ -29,7 +29,7 @@ export const contactAddContactDescription: ContactProperties = [ 'contact', ], operation: [ - 'addContact', + 'add', ], }, }, @@ -45,7 +45,7 @@ export const contactAddContactDescription: ContactProperties = [ 'contact', ], operation: [ - 'addContact', + 'add', ], }, }, @@ -62,7 +62,7 @@ export const contactAddContactDescription: ContactProperties = [ 'contact', ], operation: [ - 'addContact', + 'add', ], }, }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/execute.ts similarity index 100% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/execute.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/execute.ts diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/index.ts similarity index 53% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/index.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/index.ts index 90f36e59f92b2..4c52c6d5e1529 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/addContact/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/index.ts @@ -1,5 +1,5 @@ import { addContact as execute } from './execute'; -import { contactAddContactDescription as description } from './description'; +import { contactAddDescription as description } from './description'; export { description, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/deleteContact/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/del/description.ts similarity index 94% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/deleteContact/description.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/del/description.ts index 3d52da0e0d884..829a736f382a3 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/deleteContact/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/del/description.ts @@ -13,7 +13,7 @@ export const contactDeleteDescription: ContactProperties = [ 'contact', ], operation: [ - 'deleteContact', + 'delete', ], }, }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/deleteContact/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/del/execute.ts similarity index 100% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/deleteContact/execute.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/del/execute.ts diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/deleteContact/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/del/index.ts similarity index 100% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/deleteContact/index.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/del/index.ts diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getContact/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/get/description.ts similarity index 77% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getContact/description.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/get/description.ts index 9231ab0610ac6..5c2daef3b2af7 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getContact/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/get/description.ts @@ -2,7 +2,7 @@ import { ContactProperties, } from '../../Interfaces'; -export const contactGetContactDescription: ContactProperties = [ +export const contactGetDescription: ContactProperties = [ { displayName: 'Contact ID', name: 'id', @@ -13,7 +13,7 @@ export const contactGetContactDescription: ContactProperties = [ 'contact', ], operation: [ - 'getContact', + 'get', ], }, }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getContact/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/get/execute.ts similarity index 100% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getContact/execute.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/get/execute.ts diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getContact/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/get/index.ts similarity index 53% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getContact/index.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/get/index.ts index 23a19a57c068d..00abd8c1200bc 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getContact/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/get/index.ts @@ -1,5 +1,5 @@ import { getContact as execute } from './execute'; -import { contactGetContactDescription as description } from './description'; +import { contactGetDescription as description } from './description'; export { description, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts index 21458b24b9cf8..e74911ab6f359 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts @@ -18,7 +18,7 @@ export const contactGetAllDescription: ContactProperties = [ }, }, default: false, - description: 'If all results should be returned or only up to a given limit.', + description: 'If all results should be returned or only up to a given limit', }, { displayName: 'Additional Fields', @@ -44,14 +44,6 @@ export const contactGetAllDescription: ContactProperties = [ default: 1, description: 'Returns provided page of results, each page contains 25 results', }, - { - displayName: 'Search Query', - name: 'query', - type: 'string', - default: '', - placeholder: 'John Doe', - description: 'Search query, it can be anything related to contact data like name etc.', - }, ], }, ]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts index 81b85a1b6a14d..a333d43e79c57 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts @@ -1,18 +1,18 @@ import * as getAll from './getAll'; -import * as addContact from './addContact'; -import * as getContact from './getContact'; -import * as updateContact from './updateContact'; -import * as deleteContact from './deleteContact'; +import * as add from './add'; +import * as get from './get'; +import * as update from './update'; +import * as del from './del'; import { INodeProperties } from 'n8n-workflow'; export { getAll, - addContact, - deleteContact, - updateContact, - getContact, + add, + del as delete, + update, + get, }; @@ -31,17 +31,17 @@ export const descriptions = [ options: [ { name: 'Create', - value: 'addContact', + value: 'add', description: 'Add new contact', }, { name: 'Delete', - value: 'deleteContact', + value: 'delete', description: 'Delete contact', }, { name: 'Get', - value: 'getContact', + value: 'get', description: 'Retrieve contact', }, { @@ -51,7 +51,7 @@ export const descriptions = [ }, { name: 'Update', - value: 'updateContact', + value: 'update', description: 'Update contact', }, ], @@ -59,8 +59,8 @@ export const descriptions = [ description: 'The operation to perform.', }, ...getAll.description, - ...addContact.description, - ...getContact.description, - ...updateContact.description, - ...deleteContact.description, + ...add.description, + ...get.description, + ...update.description, + ...del.description, ] as INodeProperties[]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/description.ts similarity index 91% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/description.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/description.ts index 0c0ff637a89b0..79309e91a99c4 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/description.ts @@ -2,7 +2,7 @@ import { ContactProperties, } from '../../Interfaces'; -export const contactUpdateContactDescription: ContactProperties = [ +export const contactUpdateDescription: ContactProperties = [ { displayName: 'Contact ID', name: 'id', @@ -13,7 +13,7 @@ export const contactUpdateContactDescription: ContactProperties = [ 'contact', ], operation: [ - 'updateContact', + 'update', ], }, }, @@ -30,7 +30,7 @@ export const contactUpdateContactDescription: ContactProperties = [ 'contact', ], operation: [ - 'updateContact', + 'update', ], }, }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/execute.ts similarity index 100% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/execute.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/execute.ts diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/index.ts similarity index 53% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/index.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/index.ts index 2497ad1c4d2a3..76e1c8b3f3bbc 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/updateContact/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/index.ts @@ -1,5 +1,5 @@ import { updateContact as execute } from './execute'; -import { contactUpdateContactDescription as description } from './description'; +import { contactUpdateDescription as description } from './description'; export { description, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/description.ts similarity index 92% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/description.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/description.ts index 1ff5ceed1a080..55b232a92cfc3 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/description.ts @@ -2,7 +2,7 @@ import { CustomerProperties, } from '../../Interfaces'; -export const customerAddCustomerDescription: CustomerProperties = [ +export const customerAddDescription: CustomerProperties = [ { displayName: 'Business Name', name: 'businessName', @@ -13,7 +13,7 @@ export const customerAddCustomerDescription: CustomerProperties = [ 'customer', ], operation: [ - 'addCustomer', + 'add', ], }, }, @@ -29,7 +29,7 @@ export const customerAddCustomerDescription: CustomerProperties = [ 'customer', ], operation: [ - 'addCustomer', + 'add', ], }, }, @@ -45,7 +45,7 @@ export const customerAddCustomerDescription: CustomerProperties = [ 'customer', ], operation: [ - 'addCustomer', + 'add', ], }, }, @@ -61,7 +61,7 @@ export const customerAddCustomerDescription: CustomerProperties = [ 'customer', ], operation: [ - 'addCustomer', + 'add', ], }, }, @@ -78,7 +78,7 @@ export const customerAddCustomerDescription: CustomerProperties = [ 'customer', ], operation: [ - 'addCustomer', + 'add', ], }, }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/execute.ts similarity index 100% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/execute.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/execute.ts diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/index.ts similarity index 52% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/index.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/index.ts index 3121c7262cb86..d9e24bc84a4ad 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/addCustomer/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/index.ts @@ -1,5 +1,5 @@ import { addCustomer as execute } from './execute'; -import { customerAddCustomerDescription as description } from './description'; +import { customerAddDescription as description } from './description'; export { description, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/deleteCustomer/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/del/description.ts similarity index 94% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/deleteCustomer/description.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/del/description.ts index 2abe4eaa65a4e..7928c03f666bb 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/deleteCustomer/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/del/description.ts @@ -13,7 +13,7 @@ export const customerDeleteDescription: CustomerProperties = [ 'customer', ], operation: [ - 'deleteCustomer', + 'delete', ], }, }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/deleteCustomer/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/del/execute.ts similarity index 95% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/deleteCustomer/execute.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/del/execute.ts index 5ad4bd31d030e..f8193ac2fdcb2 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/deleteCustomer/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/del/execute.ts @@ -8,7 +8,7 @@ import { } from 'n8n-workflow'; import { - apiRequest, apiRequestAllItems + apiRequest } from '../../../transport'; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/deleteCustomer/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/del/index.ts similarity index 100% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/deleteCustomer/index.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/del/index.ts diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/get/description.ts similarity index 77% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/description.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/get/description.ts index 2c7862525c959..0cb5d74907ab7 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/get/description.ts @@ -2,7 +2,7 @@ import { CustomerProperties, } from '../../Interfaces'; -export const customerGetCustomerDescription: CustomerProperties = [ +export const customerGetDescription: CustomerProperties = [ { displayName: 'Cutomer ID', name: 'id', @@ -13,7 +13,7 @@ export const customerGetCustomerDescription: CustomerProperties = [ 'customer', ], operation: [ - 'getCustomer', + 'get', ], }, }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/get/execute.ts similarity index 100% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/execute.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/get/execute.ts diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/get/index.ts similarity index 52% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/index.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/get/index.ts index d3658b10183d6..5f17c92b2e0d7 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getCustomer/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/get/index.ts @@ -1,5 +1,5 @@ import { getCustomer as execute } from './execute'; -import { customerGetCustomerDescription as description } from './description'; +import { customerGetDescription as description } from './description'; export { description, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts index 1c4fe5847f94d..df6ac9eac2108 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts @@ -15,7 +15,6 @@ import { export async function getAll(this: IExecuteFunctions, index: number): Promise { const returnAll = this.getNodeParameter('returnAll', index) as boolean; const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; - const perPage = this.getNodeParameter('perPage',index) as string; let qs = {} as IDataObject; const requestMethod = 'GET'; @@ -26,7 +25,9 @@ export async function getAll(this: IExecuteFunctions, index: number): Promise { const returnAll = this.getNodeParameter('returnAll', index) as boolean; - const perPage = this.getNodeParameter('perPage',index) as string; const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + const status = this.getNodeParameter('status',index) as string let qs = {} as IDataObject; const requestMethod = 'GET'; @@ -26,7 +26,10 @@ export async function getAll(this: IExecuteFunctions, index: number): PromisezSi{Iozr-T1w($D;-}Lpw>g;#T(I~LD45qG= z*xN+B!8EnI<@NTj;^mFj*>TIzKf1sYsIUp9t+nLmqTS$X$<7X_u=V@=nA+Wj)Yr9{ zf`|YB00(qZPE+xoPbINrh=u06@>XVM0JtoO4A_b|*~wT=je1 zyo;Phcfkyl3WmZOSiHBUSd3d@wm85c+Yynih`tqOnu?dr*hI-Bn*E|@lkMA= zty(RGkh}uciaWe{*$jA~y9n%SgcDKWz;3myyqS5_{-Vux3vb@D>Wl1&HelYW${S(e zJoDaN2`}fqc~`z#d4wx4p^}>%_*N!|`S4Hq@` z#j4jvM2k+hESo#dfLJW+4beqliSK2t*{r4KHlz6Hv7*J1+Vay}59LuEQL3n6(|o#R z9PLfejxgk2obfSOQqJ>Qdyu4gDlE5!E@wzIU`Zc|F%fJfta{E**fcmvLH_C|YS?Vf z6=i8fOyc)aNbEH@);GpmLniOVu>%AL0}O{H4%#)CcKT-Y^r|BN+Ey2dVD_@u93;8L z=$8Tm-$mxO-Z423XSu07CP%gq%_c|~foU+Q&cz~}i&nWj63I6tr@4-4s)S`I6aHdu z<7&7K{b(?V$iEV4%Y_<)gkY?lMdI1T^pv(&>>Gvzj)0rJW`2w~utZ-@tqPx4C7j}! z@AcLmiT&nSaJD=z+>pL4^0|fz(AOuL)#FGTIETM%W7pHg3f-a$g}_*do}n;YkCB(^ zm=!Jr(^Jc5=Mz@D!k2@w^U^^58gJso$R>x*wW5!aS2I6F$9BSl?@tXU zUJ+Z(?Kxb^u+wZQHm63fuD5$JfZN@PV%CU%wYv(byDP z)3fxvK-X5HQ+153pU?X>!*JW8BZ36j8a)5Vd|V62&?HzveUeJlwJpy$dTx zElpvUR|x;vGx(floNxU~5LA5NNJDmC69*DG2{M2S-B7v!NlNeeV|lD)eyCZ0=$i1* k1?8cu(Lmi`~`ivKT_)&T!eHBeCtRMrE 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 M { const returnAll = this.getNodeParameter('returnAll', index) as boolean; const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; - const perPage = this.getNodeParameter('perPage',index) as string; let qs = {} as IDataObject; const requestMethod = 'GET'; @@ -26,7 +25,9 @@ export async function getAll(this: IExecuteFunctions, index: number): PromisezSi{Iozr-T1w($D;-}Lpw>g;#T(I~LD45qG= z*xN+B!8EnI<@NTj;^mFj*>TIzKf1sYsIUp9t+nLmqTS$X$<7X_u=V@=nA+Wj)Yr9{ zf`|YB00(qZPE+xoPbINrh=u06@>XVM0JtoO4A_b|*~wT=je1 zyo;Phcfkyl3WmZOSiHBUSd3d@wm85c+Yynih`tqOnu?dr*hI-Bn*E|@lkMA= zty(RGkh}uciaWe{*$jA~y9n%SgcDKWz;3myyqS5_{-Vux3vb@D>Wl1&HelYW${S(e zJoDaN2`}fqc~`z#d4wx4p^}>%_*N!|`S4Hq@` z#j4jvM2k+hESo#dfLJW+4beqliSK2t*{r4KHlz6Hv7*J1+Vay}59LuEQL3n6(|o#R z9PLfejxgk2obfSOQqJ>Qdyu4gDlE5!E@wzIU`Zc|F%fJfta{E**fcmvLH_C|YS?Vf z6=i8fOyc)aNbEH@);GpmLniOVu>%AL0}O{H4%#)CcKT-Y^r|BN+Ey2dVD_@u93;8L z=$8Tm-$mxO-Z423XSu07CP%gq%_c|~foU+Q&cz~}i&nWj63I6tr@4-4s)S`I6aHdu z<7&7K{b(?V$iEV4%Y_<)gkY?lMdI1T^pv(&>>Gvzj)0rJW`2w~utZ-@tqPx4C7j}! z@AcLmiT&nSaJD=z+>pL4^0|fz(AOuL)#FGTIETM%W7pHg3f-a$g}_*do}n;YkCB(^ zm=!Jr(^Jc5=Mz@D!k2@w^U^^58gJso$R>x*wW5!aS2I6F$9BSl?@tXU zUJ+Z(?Kxb^u+wZQHm63fuD5$JfZN@PV%CU%wYv(byDP z)3fxvK-X5HQ+153pU?X>!*JW8BZ36j8a)5Vd|V62&?HzveUeJlwJpy$dTx zElpvUR|x;vGx(floNxU~5LA5NNJDmC69*DG2{M2S-B7v!NlNeeV|lD)eyCZ0=$i1* k1?8cu(Lmi`~`ivKT_)&T!eHBeCtRMrE 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 M Date: Wed, 1 Dec 2021 12:05:33 +0530 Subject: [PATCH 51/73] :shirt: Fix lint --- .../nodes/SyncroMSP/v1/actions/rmm/getAll/execute.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/execute.ts index 7242a85b3364d..6aa53a304ee20 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/execute.ts @@ -15,7 +15,7 @@ import { export async function getAll(this: IExecuteFunctions, index: number): Promise { const returnAll = this.getNodeParameter('returnAll', index) as boolean; const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; - const status = this.getNodeParameter('status',index) as string + const status = this.getNodeParameter('status',index) as string; let qs = {} as IDataObject; const requestMethod = 'GET'; @@ -29,7 +29,7 @@ export async function getAll(this: IExecuteFunctions, index: number): Promise Date: Wed, 1 Dec 2021 18:54:58 +0530 Subject: [PATCH 52/73] Fix reviewed changes --- .../credentials/SyncroMspApi.credentials.ts | 2 +- .../nodes/SyncroMSP/SyncroMsp.node.ts | 2 +- .../nodes/SyncroMSP/v1/SyncroMspV1.node.ts | 5 ++- .../nodes/SyncroMSP/v1/actions/Interfaces.ts | 8 ++-- .../v1/actions/contact/add/description.ts | 8 +++- .../v1/actions/contact/add/execute.ts | 5 +++ .../SyncroMSP/v1/actions/contact/index.ts | 2 +- .../v1/actions/contact/update/description.ts | 2 +- .../v1/actions/contact/update/execute.ts | 5 +++ .../v1/actions/customer/add/description.ts | 10 ++--- .../v1/actions/customer/add/execute.ts | 19 ++++++++-- .../v1/actions/customer/getAll/description.ts | 9 ++++- .../v1/actions/customer/getAll/execute.ts | 2 +- .../SyncroMSP/v1/actions/customer/index.ts | 2 +- .../v1/actions/customer/update/description.ts | 16 ++++---- .../v1/actions/customer/update/execute.ts | 24 ++++++++++-- .../v1/actions/rmm/add/description.ts | 6 ++- .../v1/actions/rmm/getAll/description.ts | 9 ++++- .../v1/actions/rmm/getAll/execute.ts | 2 +- .../nodes/SyncroMSP/v1/actions/rmm/index.ts | 2 +- .../v1/actions/rmm/mute/description.ts | 12 +++--- .../nodes/SyncroMSP/v1/actions/router.ts | 4 +- .../v1/actions/ticket/add/description.ts | 14 ++++--- .../v1/actions/ticket/add/execute.ts | 13 +++++-- .../v1/actions/ticket/getAll/description.ts | 9 ++++- .../v1/actions/ticket/getAll/execute.ts | 2 +- .../SyncroMSP/v1/actions/ticket/index.ts | 2 +- .../v1/actions/ticket/update/description.ts | 16 +++++--- .../v1/actions/ticket/update/execute.ts | 15 ++++++-- .../nodes/SyncroMSP/v1/methods/index.ts | 1 + .../nodes/SyncroMSP/v1/methods/loadOptions.ts | 38 +++++++++++++++++++ 31 files changed, 197 insertions(+), 69 deletions(-) create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/methods/index.ts create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/methods/loadOptions.ts diff --git a/packages/nodes-base/credentials/SyncroMspApi.credentials.ts b/packages/nodes-base/credentials/SyncroMspApi.credentials.ts index 163d71788f623..83faf9100e832 100644 --- a/packages/nodes-base/credentials/SyncroMspApi.credentials.ts +++ b/packages/nodes-base/credentials/SyncroMspApi.credentials.ts @@ -15,7 +15,7 @@ export class SyncroMspApi implements ICredentialType { default: '', }, { - displayName: 'Sub-Domain', + displayName: 'Subdomain', name: 'subDomain', type: 'string', default: '', diff --git a/packages/nodes-base/nodes/SyncroMSP/SyncroMsp.node.ts b/packages/nodes-base/nodes/SyncroMSP/SyncroMsp.node.ts index 3659a3ee408d6..31745baef69e6 100644 --- a/packages/nodes-base/nodes/SyncroMSP/SyncroMsp.node.ts +++ b/packages/nodes-base/nodes/SyncroMSP/SyncroMsp.node.ts @@ -15,7 +15,7 @@ export class SyncroMsp extends NodeVersionedType { icon: 'file:syncromsp.png', group: ['output'], subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', - description: 'Gets data from SyncroMSP', + description: 'Manage contacts, tickets and more from Syncro MSP', defaultVersion: 1, }; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/SyncroMspV1.node.ts b/packages/nodes-base/nodes/SyncroMSP/v1/SyncroMspV1.node.ts index 234a4d7951bb2..e0b5c27c2897f 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/SyncroMspV1.node.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/SyncroMspV1.node.ts @@ -9,6 +9,7 @@ import { } from 'n8n-workflow'; import { versionDescription } from './actions/versionDescription'; +import { loadOptions } from './methods'; import { router } from './actions/router'; export class SyncroMspV1 implements INodeType { @@ -22,10 +23,12 @@ export class SyncroMspV1 implements INodeType { }; } + methods = { loadOptions }; + async execute(this: IExecuteFunctions) { // Router returns INodeExecutionData[] // We need to output INodeExecutionData[][] // So we wrap in [] - return [await router.call(this)]; + return await router.call(this); } } diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts index 2136f08ac5dd9..fba3f947f5064 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts @@ -5,10 +5,10 @@ import { } from 'n8n-workflow'; type SyncroMspMap = { - contact: 'getAll' | 'add' | 'delete' | 'update' | 'get'; - customer: 'getAll' | 'add' | 'delete' | 'update' | 'get'; - rmm: 'getAll' | 'get' | 'add' | 'delete' | 'mute' ; - ticket: 'getAll' | 'add' | 'delete' | 'update' | 'get'; + contact: 'add'|'delete'|'get'|'getAll'|'update'; + customer: 'add'|'delete'|'get'|'getAll'|'update'; + rmm: 'add'|'delete'|'get'|'getAll'|'mute' ; + ticket: 'add'|'delete'|'get'|'getAll'|'update'; }; export type SyncroMsp = AllEntities; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/description.ts index 84c4b010e020c..ef0fdfd79011f 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/description.ts @@ -6,7 +6,11 @@ export const contactAddDescription: ContactProperties = [ { displayName: 'Customer ID', name: 'customerId', - type: 'string', + type: 'options', + typeOptions: { + loadOptionsMethod: 'getCustomers', + }, + options: [], displayOptions: { show: { resource: [ @@ -70,7 +74,7 @@ export const contactAddDescription: ContactProperties = [ options: [ { displayName: 'Address', - name: 'address1', + name: 'address', type: 'string', default: '', }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/execute.ts index e01180b7ef570..431d58b23d8b2 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/execute.ts @@ -27,6 +27,11 @@ export async function addContact(this: IExecuteFunctions, index: number): Promis body = additionalFields; } + if(body.address){ + body.address1=body.address; + delete body.address; + } + body.name=name; body.email=email; body.customer_id=id; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts index a333d43e79c57..00d23503374f8 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts @@ -55,7 +55,7 @@ export const descriptions = [ description: 'Update contact', }, ], - default: '', + default: 'getAll', description: 'The operation to perform.', }, ...getAll.description, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/description.ts index 79309e91a99c4..417a259cfe4e9 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/description.ts @@ -38,7 +38,7 @@ export const contactUpdateDescription: ContactProperties = [ options: [ { displayName: 'Address', - name: 'address1', + name: 'address', type: 'string', default: '', }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/execute.ts index 88445ca4ced97..6e0b24ede2bc8 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/execute.ts @@ -25,6 +25,11 @@ export async function updateContact(this: IExecuteFunctions, index: number): Pro body = additionalFields; } + if(body.address){ + body.address1=body.address; + delete body.address; + } + let responseData; responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/description.ts index 55b232a92cfc3..85d4752e012c0 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/description.ts @@ -98,19 +98,19 @@ export const customerAddDescription: CustomerProperties = [ }, { displayName: 'Get SMS', - name: 'get_sms', + name: 'getSms', type: 'boolean', default: true, }, { displayName: 'Invoice Email', - name: 'invoice_cc_email', + name: 'invoiceCcEmail', type: 'string', default: '', }, { displayName: 'No Email', - name: 'no_email', + name: 'noEmail', type: 'boolean', default: false, }, @@ -122,7 +122,7 @@ export const customerAddDescription: CustomerProperties = [ }, { displayName: 'Notification Email', - name: 'notification_email', + name: 'notificationEmail', type: 'string', default: '', }, @@ -134,7 +134,7 @@ export const customerAddDescription: CustomerProperties = [ }, { displayName: 'Referred By', - name: 'referred_by', + name: 'referredBy', type: 'string', default: '', }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/execute.ts index 6450946a8e1a1..4495b54ac0e3a 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/execute.ts @@ -17,16 +17,27 @@ export async function addCustomer(this: IExecuteFunctions, index: number): Promi const lastname = this.getNodeParameter('lastname', index) as IDataObject; const email = this.getNodeParameter('email', index) as IDataObject; const businessName = this.getNodeParameter('businessName', index) as IDataObject; - const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + const { address, city, getSms, invoiceCcEmail, noEmail, notes, notificationEmail, phone, referredBy, state, zip} = this.getNodeParameter('additionalFields', index) as IDataObject; const qs = {} as IDataObject; const requestMethod = 'POST'; const endpoint = 'customers'; let body = {} as IDataObject; - if (additionalFields) { - body = additionalFields; - } + body={ + address, + city, + get_sms : getSms, + invoice_cc_email : invoiceCcEmail, + no_email : noEmail, + notes, + notification_email : notificationEmail, + phone, + referred_by : referredBy, + state, + zip, + }; + body.firstname=firstname; body.lastname=lastname; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts index 5f07077e3ea08..de51e08970deb 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts @@ -5,7 +5,7 @@ import { export const customerGetAllDescription: CustomerProperties = [ { displayName: 'Limit', - name: 'perPage', + name: 'limit', type: 'number', displayOptions: { show: { @@ -61,6 +61,13 @@ export const customerGetAllDescription: CustomerProperties = [ displayName: 'Page', name: 'page', type: 'number', + displayOptions: { + show: { + '/returnAll': [ + false, + ], + }, + }, default: 1, description: 'Returns provided page of results, each page contains 25 results', }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts index df6ac9eac2108..0041c590cc2cd 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts @@ -26,7 +26,7 @@ export async function getAll(this: IExecuteFunctions, index: number): Promise { const id = this.getNodeParameter('id', index) as IDataObject; - const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + const { address, businessName, city, email, firstName, getSms, invoiceCcEmail, + lastName, noEmail, notes, notificationEmail, phone, + referredBy, state, zip} = this.getNodeParameter('additionalFields', index) as IDataObject; const qs = {} as IDataObject; const requestMethod = 'PUT'; const endpoint = `customers/${id}`; let body = {} as IDataObject; - if (additionalFields) { - body = additionalFields; - } + body={ + address, + business_name : businessName, + city, + email, + first_name : firstName, + get_sms : getSms, + invoice_cc_email : invoiceCcEmail, + last_name : lastName, + no_email : noEmail, + notes, + notification_email : notificationEmail, + phone, + referred_by : referredBy, + state, + zip, + }; let responseData; responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/add/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/add/description.ts index a353dd4d68136..ad9e43ad59a8d 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/add/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/add/description.ts @@ -22,7 +22,11 @@ export const rmmAddDescription: RmmProperties = [ { displayName: 'Customer ID', name: 'customerId', - type: 'string', + type: 'options', + typeOptions: { + loadOptionsMethod: 'getCustomers', + }, + options: [], displayOptions: { show: { resource: [ diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/description.ts index d0e6c8dc7c0c6..e0e741b3d1de5 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/description.ts @@ -5,7 +5,7 @@ import { export const rmmGetAllDescription: RmmProperties = [ { displayName: 'Limit', - name: 'perPage', + name: 'limit', type: 'number', displayOptions: { show: { @@ -91,6 +91,13 @@ export const rmmGetAllDescription: RmmProperties = [ displayName: 'Page', name: 'page', type: 'number', + displayOptions: { + show: { + '/returnAll': [ + false, + ], + }, + }, default: 1, description: 'Returns provided page of results, each page contains 25 results', }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/execute.ts index 6aa53a304ee20..196f30a615817 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/execute.ts @@ -27,7 +27,7 @@ export async function getAll(this: IExecuteFunctions, index: number): Promise { +export async function router(this: IExecuteFunctions): Promise { const items = this.getInputData(); const operationResult: INodeExecutionData[] = []; @@ -48,5 +48,5 @@ export async function router(this: IExecuteFunctions): Promise { const id = this.getNodeParameter('customerId', index) as IDataObject; const subject = this.getNodeParameter('subject', index) as IDataObject; - const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + const {assetId,dueDate,problemType,status,ticketType} = this.getNodeParameter('additionalFields', index) as IDataObject; const qs = {} as IDataObject; const requestMethod = 'POST'; const endpoint = 'tickets'; let body = {} as IDataObject; - if (additionalFields) { - body = additionalFields; - } + body ={ + asset_id :assetId, + due_date : dueDate, + problem_type : problemType, + status, + ticket_type : ticketType, + }; + body.customer_id=id; body.subject=subject; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts index 8853bb66f39c1..772ee372d5740 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts @@ -5,7 +5,7 @@ import { export const ticketGetAllDescription: TicketProperties = [ { displayName: 'Limit', - name: 'perPage', + name: 'limit', type: 'number', displayOptions: { show: { @@ -61,6 +61,13 @@ export const ticketGetAllDescription: TicketProperties = [ displayName: 'Page', name: 'page', type: 'number', + displayOptions: { + show: { + '/returnAll': [ + false, + ], + }, + }, default: 1, description: 'Returns provided page of results, each page contains 25 results', }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/execute.ts index f0f22e3700467..33cbf77c526cb 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/execute.ts @@ -26,7 +26,7 @@ export async function getAll(this: IExecuteFunctions, index: number): Promise { const id = this.getNodeParameter('id', index) as IDataObject; - const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + const {assetId, customerId, dueDate, problemType, status, subject, ticketType} = this.getNodeParameter('additionalFields', index) as IDataObject; + const qs = {} as IDataObject; const requestMethod = 'PUT'; const endpoint = `tickets/${id}`; let body = {} as IDataObject; - if (additionalFields) { - body = additionalFields; - } + body ={ + asset_id : assetId, + customer_id : customerId, + due_date : dueDate, + problem_type : problemType, + status, + subject, + ticket_type : ticketType, + }; let responseData; responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/methods/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/methods/index.ts new file mode 100644 index 0000000000000..65ff6192a3afd --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/methods/index.ts @@ -0,0 +1 @@ +export * as loadOptions from './loadOptions'; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/methods/loadOptions.ts b/packages/nodes-base/nodes/SyncroMSP/v1/methods/loadOptions.ts new file mode 100644 index 0000000000000..2cc28e2156cea --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/methods/loadOptions.ts @@ -0,0 +1,38 @@ +import { + IDataObject, + ILoadOptionsFunctions, + INodePropertyOptions, + NodeOperationError, +} from 'n8n-workflow'; + +import { + apiRequestAllItems, +} from '../transport'; + +// Get all the available channels + +export async function getCustomers(this: ILoadOptionsFunctions): Promise { + const endpoint = 'customers'; + const responseData = await apiRequestAllItems.call(this, 'GET', endpoint, {}); + + if (responseData === undefined) { + throw new NodeOperationError(this.getNode(), 'No data got returned'); + } + + const returnData: INodePropertyOptions[] = []; + for (const data of responseData) { + returnData.push({ + name: data.fullname as string, + value: data.id as number, + }); + } + + returnData.sort((a, b) => { + if (a.name < b.name) { return -1; } + if (a.name > b.name) { return 1; } + return 0; + }); + + return returnData; +} + From 97acb5b154c2b9834f5912f4066918d1c9cfed97 Mon Sep 17 00:00:00 2001 From: bearbobs Date: Wed, 1 Dec 2021 19:12:03 +0530 Subject: [PATCH 53/73] update border color --- .../nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts index 5c37fba0372cb..9e56fcbaf5d8d 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts @@ -18,7 +18,7 @@ export const versionDescription: INodeTypeDescription = { description: 'Gets data from SyncroMSP', defaults: { name: 'SyncroMSP', - color: '#000000', + color: '#08a4ab', }, inputs: ['main'], outputs: ['main'], From 2299651abc7cc7ff21c6fa6d839e14a9d98827ef Mon Sep 17 00:00:00 2001 From: bearbobs Date: Thu, 2 Dec 2021 10:03:30 +0530 Subject: [PATCH 54/73] :zap: minor fixes --- .../nodes-base/nodes/SyncroMSP/v1/actions/contact/add/execute.ts | 1 - .../nodes/SyncroMSP/v1/actions/contact/update/execute.ts | 1 - 2 files changed, 2 deletions(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/execute.ts index 431d58b23d8b2..02a8f24c89c12 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/execute.ts @@ -29,7 +29,6 @@ export async function addContact(this: IExecuteFunctions, index: number): Promis if(body.address){ body.address1=body.address; - delete body.address; } body.name=name; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/execute.ts index 6e0b24ede2bc8..2235ab1d2b7c0 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/execute.ts @@ -27,7 +27,6 @@ export async function updateContact(this: IExecuteFunctions, index: number): Pro if(body.address){ body.address1=body.address; - delete body.address; } let responseData; From d502baeb02c7a1b8d8792451b1acbee780104857 Mon Sep 17 00:00:00 2001 From: bearbobs Date: Thu, 2 Dec 2021 17:48:11 +0530 Subject: [PATCH 55/73] minor fixes --- .../nodes-base/nodes/SyncroMSP/v1/SyncroMspV1.node.ts | 3 --- .../nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts | 8 ++++---- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/SyncroMspV1.node.ts b/packages/nodes-base/nodes/SyncroMSP/v1/SyncroMspV1.node.ts index e0b5c27c2897f..8453e336effe8 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/SyncroMspV1.node.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/SyncroMspV1.node.ts @@ -26,9 +26,6 @@ export class SyncroMspV1 implements INodeType { methods = { loadOptions }; async execute(this: IExecuteFunctions) { - // Router returns INodeExecutionData[] - // We need to output INodeExecutionData[][] - // So we wrap in [] return await router.call(this); } } diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts index fba3f947f5064..ab341acfd912c 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts @@ -13,15 +13,15 @@ type SyncroMspMap = { export type SyncroMsp = AllEntities; -export type SyncroMspMapCustomer = Entity; -export type SyncroMspMapTicket = Entity; export type SyncroMspMapContact = Entity; +export type SyncroMspMapCustomer = Entity; export type SyncroMspMapRmm = Entity; +export type SyncroMspMapTicket = Entity; -export type CustomerProperties = PropertiesOf; -export type TicketProperties = PropertiesOf; export type ContactProperties = PropertiesOf; +export type CustomerProperties = PropertiesOf; export type RmmProperties = PropertiesOf; +export type TicketProperties = PropertiesOf; export interface IAttachment { fields: { From 1f83d7ae0f07d10da165b681149c01212d7ec685 Mon Sep 17 00:00:00 2001 From: bearbobs Date: Mon, 6 Dec 2021 15:39:26 +0530 Subject: [PATCH 56/73] Added fallback when port in use --- packages/cli/src/Server.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/packages/cli/src/Server.ts b/packages/cli/src/Server.ts index 6ea877f54e922..cbada14f55214 100644 --- a/packages/cli/src/Server.ts +++ b/packages/cli/src/Server.ts @@ -2898,6 +2898,16 @@ export async function start(): Promise { void InternalHooksManager.getInstance().onServerStarted(diagnosticInfo); }); + + // @ts-ignore + server.on('error', (error) => { + if (error.code === 'EADDRINUSE') { + console.log( + `n8n's port ${PORT} is already in use. Do you have another instance of n8n running already?`, + ); + process.exit(0); + } + }); } async function getExecutionsCount( From 0e11aca6aaa0e3e998b319df496291d0a862a23a Mon Sep 17 00:00:00 2001 From: bearbobs Date: Mon, 6 Dec 2021 18:24:57 +0530 Subject: [PATCH 57/73] :zap: Minor Fixes --- packages/cli/src/Server.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/cli/src/Server.ts b/packages/cli/src/Server.ts index cbada14f55214..8310773642097 100644 --- a/packages/cli/src/Server.ts +++ b/packages/cli/src/Server.ts @@ -2899,13 +2899,12 @@ export async function start(): Promise { void InternalHooksManager.getInstance().onServerStarted(diagnosticInfo); }); - // @ts-ignore - server.on('error', (error) => { + server.on('error', (error: Error & { code: string }) => { if (error.code === 'EADDRINUSE') { console.log( `n8n's port ${PORT} is already in use. Do you have another instance of n8n running already?`, ); - process.exit(0); + process.exit(1); } }); } From 30875a1616c313ae97b47328a3067f224d9a3cdd Mon Sep 17 00:00:00 2001 From: bearbobs Date: Mon, 6 Dec 2021 19:29:42 +0530 Subject: [PATCH 58/73] :zap: Hide addtional paramerts when return all is active --- .../nodes/SyncroMSP/v1/actions/contact/getAll/description.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts index e74911ab6f359..6da9d5e970b54 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts @@ -33,6 +33,9 @@ export const contactGetAllDescription: ContactProperties = [ operation: [ 'getAll', ], + returnAll: [ + false, + ], }, }, default: {}, From 485da79a7e8b7380ff2682abf052ad7c8347ae7e Mon Sep 17 00:00:00 2001 From: bearbobs Date: Tue, 14 Dec 2021 13:47:06 +0530 Subject: [PATCH 59/73] :zap: Fix issues with Tickets --- .../v1/actions/ticket/add/description.ts | 70 ++++++++++++---- .../v1/actions/ticket/add/execute.ts | 3 +- .../v1/actions/ticket/getAll/description.ts | 82 ++++++++++++------- .../v1/actions/ticket/getAll/execute.ts | 8 +- .../v1/actions/ticket/update/description.ts | 72 ++++++++++++---- 5 files changed, 170 insertions(+), 65 deletions(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/add/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/add/description.ts index 4a532a0c599c0..f16b64aad4c03 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/add/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/add/description.ts @@ -6,11 +6,7 @@ export const ticketAddDescription: TicketProperties = [ { displayName: 'Customer ID', name: 'customerId', - type: 'options', - typeOptions: { - loadOptionsMethod: 'getCustomers', - }, - options: [], + type: 'string', displayOptions: { show: { resource: [ @@ -71,20 +67,66 @@ export const ticketAddDescription: TicketProperties = [ { displayName: 'Problem Type', name: 'problemType', - type: 'string', + type: 'options', + options : [ + { + name: 'Remote Support', + value: 'Remote Support', + }, + { + name: 'Contract Work', + value: 'Contract Work', + }, + { + name: 'Network Project', + value: 'Network Project', + }, + { + name: 'Regular Maintenance', + value: 'Regular Maintenance', + }, + { + name: 'Other', + value: 'Other', + }, + ], default: '', }, { displayName: 'Status', name: 'status', - type: 'string', - default: '', - }, - { - displayName: 'Ticket Type', - name: 'ticketType', - type: 'string', - default: '', + type: 'options', + options : [ + { + name: 'New', + value: 'New', + }, + { + name: 'In Progress', + value: 'In Progress', + }, + { + name: 'Resolved', + value: 'Resolved', + }, + { + name: 'Waiting for Parts', + value: 'Waiting for Parts', + }, + { + name: 'Waiting on Customer', + value: 'Waiting on Customer', + }, + { + name: 'Scheduled', + value: 'Scheduled', + }, + { + name: 'Customer Reply', + value: 'Customer Reply', + }, + ], + default: 'New', }, ], }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/add/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/add/execute.ts index eccd1f003853e..46c97f8166715 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/add/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/add/execute.ts @@ -15,7 +15,7 @@ import { export async function addTicket(this: IExecuteFunctions, index: number): Promise { const id = this.getNodeParameter('customerId', index) as IDataObject; const subject = this.getNodeParameter('subject', index) as IDataObject; - const {assetId,dueDate,problemType,status,ticketType} = this.getNodeParameter('additionalFields', index) as IDataObject; + const {assetId,dueDate,problemType,status} = this.getNodeParameter('additionalFields', index) as IDataObject; const qs = {} as IDataObject; const requestMethod = 'POST'; @@ -27,7 +27,6 @@ export async function addTicket(this: IExecuteFunctions, index: number): Promise due_date : dueDate, problem_type : problemType, status, - ticket_type : ticketType, }; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts index 772ee372d5740..61ae2e4ef9d3c 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts @@ -4,9 +4,9 @@ import { export const ticketGetAllDescription: TicketProperties = [ { - displayName: 'Limit', - name: 'limit', - type: 'number', + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', displayOptions: { show: { resource: [ @@ -15,18 +15,15 @@ export const ticketGetAllDescription: TicketProperties = [ operation: [ 'getAll', ], - returnAll: [ - false, - ], }, }, - default: 25, - description: 'Limit the number of rows returned', + default: false, + description: 'If all results should be returned or only up to a given limit', }, { - displayName: 'Return All', - name: 'returnAll', - type: 'boolean', + displayName: 'Limit', + name: 'limit', + type: 'number', displayOptions: { show: { resource: [ @@ -35,16 +32,19 @@ export const ticketGetAllDescription: TicketProperties = [ operation: [ 'getAll', ], + returnAll: [ + false, + ], }, }, - default: false, - description: 'If all results should be returned or only up to a given limit', + default: 25, + description: 'Limit the number of rows returned', }, { - displayName: 'Additional Fields', - name: 'additionalFields', + displayName: 'Filters', + name: 'additionalFilters', type: 'collection', - placeholder: 'Add Field', + placeholder: 'Add Filter', displayOptions: { show: { resource: [ @@ -57,20 +57,6 @@ export const ticketGetAllDescription: TicketProperties = [ }, default: {}, options: [ - { - displayName: 'Page', - name: 'page', - type: 'number', - displayOptions: { - show: { - '/returnAll': [ - false, - ], - }, - }, - default: 1, - description: 'Returns provided page of results, each page contains 25 results', - }, { displayName: 'Search Query', name: 'query', @@ -79,6 +65,42 @@ export const ticketGetAllDescription: TicketProperties = [ placeholder: 'John Doe', description: 'Search query, it can be anything related to ticket data like user etc.', }, + { + displayName: 'Status', + name: 'status', + type: 'options', + options : [ + { + name: 'New', + value: 'New', + }, + { + name: 'In Progress', + value: 'In Progress', + }, + { + name: 'Resolved', + value: 'Resolved', + }, + { + name: 'Waiting for Parts', + value: 'Waiting for Parts', + }, + { + name: 'Waiting on Customer', + value: 'Waiting on Customer', + }, + { + name: 'Scheduled', + value: 'Scheduled', + }, + { + name: 'Customer Reply', + value: 'Customer Reply', + }, + ], + default: 'New', + }, ], }, ]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/execute.ts index 33cbf77c526cb..d57e2cea7aa06 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/execute.ts @@ -14,18 +14,18 @@ import { export async function getAll(this: IExecuteFunctions, index: number): Promise { const returnAll = this.getNodeParameter('returnAll', index) as boolean; - const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + const additionalFilters = this.getNodeParameter('additionalFilters', index) as IDataObject; let qs = {} as IDataObject; const requestMethod = 'GET'; const endpoint = 'tickets'; const body = {} as IDataObject; - if (additionalFields) { - qs = additionalFields; + if (additionalFilters) { + qs = additionalFilters; } - if (returnAll === false) { + if (returnAll === false ) { qs.per_page = this.getNodeParameter('limit', index) as number; } diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/description.ts index efb85e1b5ae71..fb7fd4235f966 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/description.ts @@ -20,7 +20,7 @@ export const ticketUpdateDescription: TicketProperties = [ default: '', }, { - displayName: 'Additional Fields', + displayName: 'Update Fields', name: 'additionalFields', type: 'collection', placeholder: 'Add Field', @@ -45,11 +45,7 @@ export const ticketUpdateDescription: TicketProperties = [ { displayName: 'Customer ID', name: 'customerId', - type: 'options', - typeOptions: { - loadOptionsMethod: 'getCustomers', - }, - options: [], + type: 'string', default: '', }, { @@ -61,14 +57,66 @@ export const ticketUpdateDescription: TicketProperties = [ { displayName: 'Problem Type', name: 'problemType', - type: 'string', + type: 'options', + options : [ + { + name: 'Remote Support', + value: 'Remote Support', + }, + { + name: 'Contract Work', + value: 'Contract Work', + }, + { + name: 'Network Project', + value: 'Network Project', + }, + { + name: 'Regular Maintenance', + value: 'Regular Maintenance', + }, + { + name: 'Other', + value: 'Other', + }, + ], default: '', }, { displayName: 'Status', name: 'status', - type: 'string', - default: '', + type: 'options', + options : [ + { + name: 'New', + value: 'New', + }, + { + name: 'In Progress', + value: 'In Progress', + }, + { + name: 'Resolved', + value: 'Resolved', + }, + { + name: 'Waiting for Parts', + value: 'Waiting for Parts', + }, + { + name: 'Waiting on Customer', + value: 'Waiting on Customer', + }, + { + name: 'Scheduled', + value: 'Scheduled', + }, + { + name: 'Customer Reply', + value: 'Customer Reply', + }, + ], + default: 'New', }, { displayName: 'Subject', @@ -76,12 +124,6 @@ export const ticketUpdateDescription: TicketProperties = [ type: 'string', default: '', }, - { - displayName: 'Ticket Type', - name: 'ticketType', - type: 'string', - default: '', - }, ], }, ]; From 6e466bfc857fafc9e514ea823f34ada1f00808b7 Mon Sep 17 00:00:00 2001 From: bearbobs Date: Tue, 14 Dec 2021 14:22:52 +0530 Subject: [PATCH 60/73] :zap: Fix issues with Rmm --- .../v1/actions/rmm/add/description.ts | 63 +++++++-------- .../SyncroMSP/v1/actions/rmm/add/execute.ts | 11 +-- .../v1/actions/rmm/getAll/description.ts | 81 +++++++------------ .../v1/actions/rmm/getAll/execute.ts | 8 +- .../v1/actions/rmm/mute/description.ts | 34 ++++---- 5 files changed, 83 insertions(+), 114 deletions(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/add/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/add/description.ts index ad9e43ad59a8d..7d113d3734356 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/add/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/add/description.ts @@ -22,11 +22,7 @@ export const rmmAddDescription: RmmProperties = [ { displayName: 'Customer ID', name: 'customerId', - type: 'options', - typeOptions: { - loadOptionsMethod: 'getCustomers', - }, - options: [], + type: 'string', displayOptions: { show: { resource: [ @@ -56,25 +52,10 @@ export const rmmAddDescription: RmmProperties = [ default: '', }, { - displayName: 'Resolved', - name: 'resolved', - type: 'boolean', - displayOptions: { - show: { - resource: [ - 'rmm', - ], - operation: [ - 'add', - ], - }, - }, - default: false, - }, - { - displayName: 'Status', - name: 'status', - type: 'options', + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', displayOptions: { show: { resource: [ @@ -85,20 +66,34 @@ export const rmmAddDescription: RmmProperties = [ ], }, }, - options : [ + default: {}, + options: [ { - name: 'Active', - value: 'active', + displayName: 'Resolved', + name: 'resolved', + type: 'boolean', + default: false, }, { - name: 'All', - value: 'all', - }, - { - name: 'Resolved', - value: 'resolved', + displayName: 'Status', + name: 'status', + type: 'options', + options : [ + { + name: 'Active', + value: 'active', + }, + { + name: 'All', + value: 'all', + }, + { + name: 'Resolved', + value: 'resolved', + }, + ], + default: 'active', }, ], - default: '', }, ]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/add/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/add/execute.ts index 6d2fd5d3b30af..cfe7916f5ba23 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/add/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/add/execute.ts @@ -16,19 +16,20 @@ export async function addAlert(this: IExecuteFunctions, index: number): Promise< const customerId = this.getNodeParameter('customerId',index) as IDataObject; const assetId = this.getNodeParameter('assetId',index) as IDataObject; const description = this.getNodeParameter('description', index) as IDataObject; - const resolved = this.getNodeParameter('resolved', index) as IDataObject; - const status = this.getNodeParameter('status', index) as IDataObject; + const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; const qs = {} as IDataObject; const requestMethod = 'POST'; const endpoint = 'rmm_alerts'; - const body = {} as IDataObject; + let body = {} as IDataObject; + + if (additionalFields) { + body = additionalFields; + } body.customer_id = customerId; body.asset_id = assetId; body.description = description; - body.resolved = resolved; - body.status = status; let responseData; responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/description.ts index e0e741b3d1de5..b81a2bd35ac82 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/description.ts @@ -3,26 +3,6 @@ import { } from '../../Interfaces'; export const rmmGetAllDescription: RmmProperties = [ - { - displayName: 'Limit', - name: 'limit', - type: 'number', - displayOptions: { - show: { - resource: [ - 'rmm', - ], - operation: [ - 'getAll', - ], - returnAll: [ - false, - ], - }, - }, - default: 25, - description: 'Limit the number of rows returned', - }, { displayName: 'Return All', name: 'returnAll', @@ -41,9 +21,9 @@ export const rmmGetAllDescription: RmmProperties = [ description: 'If all results should be returned or only up to a given limit', }, { - displayName: 'Status', - name: 'status', - type: 'options', + displayName: 'Limit', + name: 'limit', + type: 'number', displayOptions: { show: { resource: [ @@ -52,29 +32,19 @@ export const rmmGetAllDescription: RmmProperties = [ operation: [ 'getAll', ], + returnAll: [ + false, + ], }, }, - options : [ - { - name: 'Active', - value: 'active', - }, - { - name: 'All', - value: 'all', - }, - { - name: 'Resolved', - value: 'resolved', - }, - ], - default: 'active', + default: 25, + description: 'Limit the number of rows returned', }, { - displayName: 'Additional Fields', - name: 'additionalFields', + displayName: 'Filters', + name: 'additionalFilters', type: 'collection', - placeholder: 'Add Field', + placeholder: 'Add Filter', displayOptions: { show: { resource: [ @@ -88,20 +58,25 @@ export const rmmGetAllDescription: RmmProperties = [ default: {}, options: [ { - displayName: 'Page', - name: 'page', - type: 'number', - displayOptions: { - show: { - '/returnAll': [ - false, - ], + displayName: 'Status', + name: 'status', + type: 'options', + options : [ + { + name: 'Active', + value: 'active', }, - }, - default: 1, - description: 'Returns provided page of results, each page contains 25 results', + { + name: 'All', + value: 'all', + }, + { + name: 'Resolved', + value: 'resolved', + }, + ], + default: 'all', }, - ], }, ]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/execute.ts index 196f30a615817..1f1b653b8f4e0 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/execute.ts @@ -14,22 +14,20 @@ import { export async function getAll(this: IExecuteFunctions, index: number): Promise { const returnAll = this.getNodeParameter('returnAll', index) as boolean; - const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; - const status = this.getNodeParameter('status',index) as string; + const additionalFilters = this.getNodeParameter('additionalFilters', index) as IDataObject; let qs = {} as IDataObject; const requestMethod = 'GET'; const endpoint = 'rmm_alerts'; const body = {} as IDataObject; - if (additionalFields) { - qs = additionalFields; + if (additionalFilters) { + qs = additionalFilters; } if (returnAll === false) { qs.per_page = this.getNodeParameter('limit', index) as number; } - qs.status = status; let responseData; if (returnAll) { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/mute/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/mute/description.ts index 53af98baa774f..eec7cf220dc1d 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/mute/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/mute/description.ts @@ -3,6 +3,23 @@ import { } from '../../Interfaces'; export const rmmMuteDescription: RmmProperties = [ + { + displayName: 'RMM Alert ID', + name: 'id', + type: 'string', + displayOptions: { + show: { + resource: [ + 'rmm', + ], + operation: [ + 'mute', + ], + }, + }, + default: '', + description: 'Delete alert by ID', + }, { displayName: 'Mute Period', name: 'muteFor', @@ -50,21 +67,4 @@ export const rmmMuteDescription: RmmProperties = [ default: '', description: 'Length of time to mute alert for', }, - { - displayName: 'RMM Alert ID', - name: 'id', - type: 'string', - displayOptions: { - show: { - resource: [ - 'rmm', - ], - operation: [ - 'mute', - ], - }, - }, - default: '', - description: 'Delete alert by ID', - }, ]; From aedeb8741a9c3e508f26cbb764c7ba97735a3405 Mon Sep 17 00:00:00 2001 From: bearbobs Date: Tue, 14 Dec 2021 19:38:33 +0530 Subject: [PATCH 61/73] :zap: Fix issues with Customer --- .../v1/actions/customer/add/description.ts | 37 +++------ .../v1/actions/customer/add/execute.ts | 14 ++-- .../v1/actions/customer/getAll/description.ts | 80 ++++++++++++------- .../v1/actions/customer/getAll/execute.ts | 12 ++- .../v1/actions/customer/update/description.ts | 39 ++++----- .../v1/actions/customer/update/execute.ts | 16 ++-- .../SyncroMSP/v1/methods/sharedFields.ts | 49 ++++++++++++ 7 files changed, 155 insertions(+), 92 deletions(-) create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/methods/sharedFields.ts diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/description.ts index 85d4752e012c0..863356cb574ec 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/description.ts @@ -2,6 +2,10 @@ import { CustomerProperties, } from '../../Interfaces'; +import { + addressFixedCollection +} from '../../../methods/sharedFields' + export const customerAddDescription: CustomerProperties = [ { displayName: 'Business Name', @@ -84,18 +88,7 @@ export const customerAddDescription: CustomerProperties = [ }, default: {}, options: [ - { - displayName: 'Address', - name: 'address', - type: 'string', - default: '', - }, - { - displayName: 'City', - name: 'city', - type: 'string', - default: '', - }, + addressFixedCollection, { displayName: 'Get SMS', name: 'getSms', @@ -125,6 +118,13 @@ export const customerAddDescription: CustomerProperties = [ name: 'notificationEmail', type: 'string', default: '', + displayOptions: { + show : { + noEmail : [ + false + ], + } + }, }, { displayName: 'Phone', @@ -137,18 +137,7 @@ export const customerAddDescription: CustomerProperties = [ name: 'referredBy', type: 'string', default: '', - }, - { - displayName: 'State', - name: 'state', - type: 'string', - default: '', - }, - { - displayName: 'ZIP', - name: 'zip', - type: 'string', - default: '', + description: 'Source from which customer is referred to the platform like Linkedin, Google, Customer name etc.', }, ], }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/execute.ts index 4495b54ac0e3a..6890921216017 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/execute.ts @@ -1,3 +1,4 @@ +import { add } from 'lodash'; import { IExecuteFunctions, } from 'n8n-core'; @@ -17,16 +18,21 @@ export async function addCustomer(this: IExecuteFunctions, index: number): Promi const lastname = this.getNodeParameter('lastname', index) as IDataObject; const email = this.getNodeParameter('email', index) as IDataObject; const businessName = this.getNodeParameter('businessName', index) as IDataObject; - const { address, city, getSms, invoiceCcEmail, noEmail, notes, notificationEmail, phone, referredBy, state, zip} = this.getNodeParameter('additionalFields', index) as IDataObject; + const { address , getSms, invoiceCcEmail, noEmail, notes, notificationEmail, phone, referredBy} = this.getNodeParameter('additionalFields', index) as IDataObject; const qs = {} as IDataObject; const requestMethod = 'POST'; const endpoint = 'customers'; let body = {} as IDataObject; + let addressData = address as IDataObject + + if( addressData ){ + addressData = addressData['addressFields'] as IDataObject; + addressData.address_2 = addressData.address2; + }; body={ - address, - city, + ...addressData, get_sms : getSms, invoice_cc_email : invoiceCcEmail, no_email : noEmail, @@ -34,8 +40,6 @@ export async function addCustomer(this: IExecuteFunctions, index: number): Promi notification_email : notificationEmail, phone, referred_by : referredBy, - state, - zip, }; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts index de51e08970deb..b5b1468b4d568 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts @@ -4,9 +4,9 @@ import { export const customerGetAllDescription: CustomerProperties = [ { - displayName: 'Limit', - name: 'limit', - type: 'number', + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', displayOptions: { show: { resource: [ @@ -15,18 +15,15 @@ export const customerGetAllDescription: CustomerProperties = [ operation: [ 'getAll', ], - returnAll: [ - false, - ], }, }, - default: 25, - description: 'Limit the number of rows returned', + default: false, + description: 'If all results should be returned or only up to a given limit', }, { - displayName: 'Return All', - name: 'returnAll', - type: 'boolean', + displayName: 'Limit', + name: 'limit', + type: 'number', displayOptions: { show: { resource: [ @@ -35,16 +32,19 @@ export const customerGetAllDescription: CustomerProperties = [ operation: [ 'getAll', ], + returnAll: [ + false, + ], }, }, - default: false, - description: 'If all results should be returned or only up to a given limit', + default: 25, + description: 'Limit the number of rows returned', }, { - displayName: 'Additional Fields', - name: 'additionalFields', + displayName: 'Filters', + name: 'additionalFilters', type: 'collection', - placeholder: 'Add Field', + placeholder: 'Add Filter', displayOptions: { show: { resource: [ @@ -58,18 +58,34 @@ export const customerGetAllDescription: CustomerProperties = [ default: {}, options: [ { - displayName: 'Page', - name: 'page', - type: 'number', - displayOptions: { - show: { - '/returnAll': [ - false, - ], - }, - }, - default: 1, - description: 'Returns provided page of results, each page contains 25 results', + displayName: 'Business Name', + name: 'businessName', + type: 'string', + default: '', + }, + { + displayName: 'Email', + name: 'email', + type: 'string', + default: '', + }, + { + displayName: 'First Name', + name: 'firstname', + type: 'string', + default: '', + }, + { + displayName: 'Include Disabled', + name: 'includeDisabled', + type: 'boolean', + default: false, + }, + { + displayName: 'Last Name', + name: 'lastname', + type: 'string', + default: '', }, { displayName: 'Search Query', @@ -79,6 +95,14 @@ export const customerGetAllDescription: CustomerProperties = [ placeholder: 'John Doe', description: 'Search query, it can be anything related to customer data like name etc.', }, + { + displayName: 'Sort', + name: 'sort', + type: 'string', + default: '', + placeholder: 'firstname ASC', + description: 'customer field to order by, eg: "firstname ASC", "city DESC" etc.', + }, ], }, ]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts index 0041c590cc2cd..cac9d92d69c50 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts @@ -14,15 +14,21 @@ import { export async function getAll(this: IExecuteFunctions, index: number): Promise { const returnAll = this.getNodeParameter('returnAll', index) as boolean; - const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + const additionalFilters = this.getNodeParameter('additionalFilters', index) as IDataObject; let qs = {} as IDataObject; const requestMethod = 'GET'; const endpoint = 'customers'; const body = {} as IDataObject; - if (additionalFields) { - qs = additionalFields; + if (additionalFilters) { + qs = additionalFilters; + if ( qs.businessName ){ + qs.business_name = qs.businessName + } + if ( qs.includeDisabled ){ + qs.include_disabled = qs.includeDisabled + } } if (returnAll === false) { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/description.ts index e503638cd86a7..b074ae36a078b 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/description.ts @@ -2,6 +2,10 @@ import { CustomerProperties, } from '../../Interfaces'; +import { + addressFixedCollection +} from '../../../methods/sharedFields' + export const customerUpdateDescription: CustomerProperties = [ { displayName: 'Customer ID', @@ -20,7 +24,7 @@ export const customerUpdateDescription: CustomerProperties = [ default: '', }, { - displayName: 'Additional Fields', + displayName: 'Update Fields', name: 'additionalFields', type: 'collection', placeholder: 'Add Field', @@ -36,24 +40,13 @@ export const customerUpdateDescription: CustomerProperties = [ }, default: {}, options: [ - { - displayName: 'Address', - name: 'address', - type: 'string', - default: '', - }, + addressFixedCollection, { displayName: 'Business Name', name: 'businessName', type: 'string', default: '', }, - { - displayName: 'City', - name: 'city', - type: 'string', - default: '', - }, { displayName: 'Email', name: 'email', @@ -101,6 +94,13 @@ export const customerUpdateDescription: CustomerProperties = [ name: 'notificationEmail', type: 'string', default: '', + displayOptions: { + show : { + noEmail : [ + false + ], + } + }, }, { displayName: 'Phone', @@ -113,18 +113,7 @@ export const customerUpdateDescription: CustomerProperties = [ name: 'referredBy', type: 'string', default: '', - }, - { - displayName: 'State', - name: 'state', - type: 'string', - default: '', - }, - { - displayName: 'ZIP', - name: 'zip', - type: 'string', - default: '', + description: 'Source from which customer is referred to the platform like Linkedin, Google, Customer name etc.', }, ], }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/execute.ts index 6e98ec52037f0..1a249ec64213b 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/execute.ts @@ -14,19 +14,23 @@ import { export async function updateCustomer(this: IExecuteFunctions, index: number): Promise { const id = this.getNodeParameter('id', index) as IDataObject; - const { address, businessName, city, email, firstName, getSms, invoiceCcEmail, - lastName, noEmail, notes, notificationEmail, phone, - referredBy, state, zip} = this.getNodeParameter('additionalFields', index) as IDataObject; + const { address, businessName, email, firstName, getSms, invoiceCcEmail, + lastName, noEmail, notes, notificationEmail, phone, referredBy} = this.getNodeParameter('additionalFields', index) as IDataObject; const qs = {} as IDataObject; const requestMethod = 'PUT'; const endpoint = `customers/${id}`; let body = {} as IDataObject; + let addressData = address as IDataObject + + if( addressData ){ + addressData = addressData['addressFields'] as IDataObject; + addressData.address_2 = addressData.address2; + }; body={ - address, + ...addressData, business_name : businessName, - city, email, first_name : firstName, get_sms : getSms, @@ -37,8 +41,6 @@ export async function updateCustomer(this: IExecuteFunctions, index: number): Pr notification_email : notificationEmail, phone, referred_by : referredBy, - state, - zip, }; let responseData; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/methods/sharedFields.ts b/packages/nodes-base/nodes/SyncroMSP/v1/methods/sharedFields.ts new file mode 100644 index 0000000000000..2afea1f6868a9 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/methods/sharedFields.ts @@ -0,0 +1,49 @@ +import { + INodeProperties +} from 'n8n-workflow'; + +export const addressFixedCollection: INodeProperties = { + displayName: 'Address', + name: 'address', + placeholder: 'Add Address Fields', + type: 'fixedCollection', + default: {}, + options: [ + { + displayName: 'Address Fields', + name: 'addressFields', + values: [ + { + displayName: 'Line 1', + name: 'address', + type: 'string', + default: '', + }, + { + displayName: 'Line 2', + name: 'address2', + type: 'string', + default: '', + }, + { + displayName: 'City', + name: 'city', + type: 'string', + default: '', + }, + { + displayName: 'State', + name: 'state', + type: 'string', + default: '', + }, + { + displayName: 'ZIP', + name: 'zip', + type: 'string', + default: '', + }, + ], + }, + ], +}; From e9dc6503a20f0aaecf4795fb43b4e41a19e16dec Mon Sep 17 00:00:00 2001 From: bearbobs Date: Tue, 14 Dec 2021 19:43:15 +0530 Subject: [PATCH 62/73] :shirt: Fix lint --- .../SyncroMSP/v1/actions/customer/add/description.ts | 6 +++--- .../nodes/SyncroMSP/v1/actions/customer/add/execute.ts | 8 ++++---- .../nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts | 8 ++++---- .../SyncroMSP/v1/actions/customer/update/description.ts | 6 +++--- .../nodes/SyncroMSP/v1/actions/customer/update/execute.ts | 8 ++++---- 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/description.ts index 863356cb574ec..c13018efb41d9 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/description.ts @@ -4,7 +4,7 @@ import { import { addressFixedCollection -} from '../../../methods/sharedFields' +} from '../../../methods/sharedFields'; export const customerAddDescription: CustomerProperties = [ { @@ -121,9 +121,9 @@ export const customerAddDescription: CustomerProperties = [ displayOptions: { show : { noEmail : [ - false + false, ], - } + }, }, }, { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/execute.ts index 6890921216017..09e2a7b4302a8 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/execute.ts @@ -24,14 +24,14 @@ export async function addCustomer(this: IExecuteFunctions, index: number): Promi const requestMethod = 'POST'; const endpoint = 'customers'; let body = {} as IDataObject; - let addressData = address as IDataObject + let addressData = address as IDataObject; - if( addressData ){ + if( addressData ) { addressData = addressData['addressFields'] as IDataObject; addressData.address_2 = addressData.address2; - }; + } - body={ + body = { ...addressData, get_sms : getSms, invoice_cc_email : invoiceCcEmail, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts index cac9d92d69c50..e0b33639a2e1d 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts @@ -23,11 +23,11 @@ export async function getAll(this: IExecuteFunctions, index: number): Promise Date: Tue, 14 Dec 2021 20:14:21 +0530 Subject: [PATCH 63/73] :zap: Fix issues with Contact --- .../v1/actions/contact/add/description.ts | 35 ++++--------------- .../v1/actions/contact/add/execute.ts | 23 ++++++------ .../v1/actions/contact/getAll/description.ts | 18 +++------- .../v1/actions/contact/getAll/execute.ts | 11 ++---- .../v1/actions/contact/update/description.ts | 29 +++++---------- .../v1/actions/contact/update/execute.ts | 20 +++++++---- .../v1/actions/customer/add/execute.ts | 10 +++--- 7 files changed, 52 insertions(+), 94 deletions(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/description.ts index ef0fdfd79011f..605692bfc7da6 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/description.ts @@ -2,15 +2,15 @@ import { ContactProperties, } from '../../Interfaces'; +import { + addressFixedCollection +} from '../../../methods/sharedFields'; + export const contactAddDescription: ContactProperties = [ { displayName: 'Customer ID', name: 'customerId', - type: 'options', - typeOptions: { - loadOptionsMethod: 'getCustomers', - }, - options: [], + type: 'string', displayOptions: { show: { resource: [ @@ -72,18 +72,7 @@ export const contactAddDescription: ContactProperties = [ }, default: {}, options: [ - { - displayName: 'Address', - name: 'address', - type: 'string', - default: '', - }, - { - displayName: 'City', - name: 'city', - type: 'string', - default: '', - }, + addressFixedCollection, { displayName: 'Notes', name: 'notes', @@ -96,18 +85,6 @@ export const contactAddDescription: ContactProperties = [ type: 'string', default: '', }, - { - displayName: 'State', - name: 'state', - type: 'string', - default: '', - }, - { - displayName: 'ZIP', - name: 'zip', - type: 'string', - default: '', - }, ], }, ]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/execute.ts index 02a8f24c89c12..67b75767500ad 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/execute.ts @@ -16,24 +16,27 @@ export async function addContact(this: IExecuteFunctions, index: number): Promis const id = this.getNodeParameter('customerId',index) as IDataObject; const name = this.getNodeParameter('name', index) as IDataObject; const email = this.getNodeParameter('email', index) as IDataObject; - const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + const { address, notes, phone } = this.getNodeParameter('additionalFields', index) as IDataObject; const qs = {} as IDataObject; const requestMethod = 'POST'; const endpoint = 'contacts'; let body = {} as IDataObject; + let addressData = address as IDataObject; - if (additionalFields) { - body = additionalFields; + if( addressData ) { + addressData = addressData['addressFields'] as IDataObject; + addressData.address1 = addressData.address; } - if(body.address){ - body.address1=body.address; - } - - body.name=name; - body.email=email; - body.customer_id=id; + body = { + ...addressData, + customer_id : id, + email, + name, + notes, + phone, + }; let responseData; responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts index 6da9d5e970b54..43282ab1b8834 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts @@ -21,10 +21,9 @@ export const contactGetAllDescription: ContactProperties = [ description: 'If all results should be returned or only up to a given limit', }, { - displayName: 'Additional Fields', - name: 'additionalFields', - type: 'collection', - placeholder: 'Add Field', + displayName: 'Limit', + name: 'limit', + type: 'string', displayOptions: { show: { resource: [ @@ -38,15 +37,6 @@ export const contactGetAllDescription: ContactProperties = [ ], }, }, - default: {}, - options: [ - { - displayName: 'Page', - name: 'page', - type: 'number', - default: 1, - description: 'Returns provided page of results, each page contains 25 results', - }, - ], + default: '25', }, ]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/execute.ts index 87c3a8b495b1e..d4b057e125ae5 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/execute.ts @@ -14,24 +14,19 @@ import { export async function getAll(this: IExecuteFunctions, index: number): Promise { const returnAll = this.getNodeParameter('returnAll', index) as boolean; - const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + const limit = this.getNodeParameter('limit', index) as IDataObject; - let qs = {} as IDataObject; + const qs = {} as IDataObject; const requestMethod = 'GET'; const endpoint = 'contacts'; const body = {} as IDataObject; - if (additionalFields) { - qs = additionalFields; - } - - let responseData; if (returnAll) { responseData = await apiRequestAllItems.call(this, requestMethod, endpoint, body, qs); return this.helpers.returnJsonArray(responseData); } else { responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); - return this.helpers.returnJsonArray(responseData.contacts); + return this.helpers.returnJsonArray((responseData.contacts).splice(0,limit)); } } diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/description.ts index 417a259cfe4e9..ea6efd9507c74 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/description.ts @@ -2,6 +2,10 @@ import { ContactProperties, } from '../../Interfaces'; +import { + addressFixedCollection +} from '../../../methods/sharedFields'; + export const contactUpdateDescription: ContactProperties = [ { displayName: 'Contact ID', @@ -20,7 +24,7 @@ export const contactUpdateDescription: ContactProperties = [ default: '', }, { - displayName: 'Additional Fields', + displayName: 'Update Fields', name: 'additionalFields', type: 'collection', placeholder: 'Add Field', @@ -36,15 +40,10 @@ export const contactUpdateDescription: ContactProperties = [ }, default: {}, options: [ + addressFixedCollection, { - displayName: 'Address', - name: 'address', - type: 'string', - default: '', - }, - { - displayName: 'City', - name: 'city', + displayName: 'Customer ID', + name: 'customerId', type: 'string', default: '', }, @@ -72,18 +71,6 @@ export const contactUpdateDescription: ContactProperties = [ type: 'string', default: '', }, - { - displayName: 'State', - name: 'state', - type: 'string', - default: '', - }, - { - displayName: 'ZIP', - name: 'zip', - type: 'string', - default: '', - }, ], }, ]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/execute.ts index 2235ab1d2b7c0..45d550ba5f659 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/execute.ts @@ -14,20 +14,28 @@ import { export async function updateContact(this: IExecuteFunctions, index: number): Promise { const id = this.getNodeParameter('id', index) as IDataObject; - const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; + const { address, customerId, email, name, notes, phone } = this.getNodeParameter('additionalFields', index) as IDataObject; const qs = {} as IDataObject; const requestMethod = 'PUT'; const endpoint = `contacts/${id}`; let body = {} as IDataObject; + let addressData = address as IDataObject; - if (additionalFields) { - body = additionalFields; + if( addressData ) { + addressData = addressData['addressFields'] as IDataObject; + addressData.address1 = addressData.address; } - if(body.address){ - body.address1=body.address; - } + body = { + ...addressData, + contact_id : id, + customer_id : customerId, + email, + name, + notes, + phone, + }; let responseData; responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/execute.ts index 09e2a7b4302a8..cdad2abf7ede3 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/execute.ts @@ -33,8 +33,12 @@ export async function addCustomer(this: IExecuteFunctions, index: number): Promi body = { ...addressData, + business_name : businessName, + email, + firstname, get_sms : getSms, invoice_cc_email : invoiceCcEmail, + lastname, no_email : noEmail, notes, notification_email : notificationEmail, @@ -42,12 +46,6 @@ export async function addCustomer(this: IExecuteFunctions, index: number): Promi referred_by : referredBy, }; - - body.firstname=firstname; - body.lastname=lastname; - body.email=email; - body.business_name=businessName; - let responseData; responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); From ec3dbccebe5c43df87d46ff98e4623f5c220662c Mon Sep 17 00:00:00 2001 From: bearbobs Date: Tue, 14 Dec 2021 21:37:00 +0530 Subject: [PATCH 64/73] :shirt: Fixed formatting issue --- .../v1/actions/contact/add/execute.ts | 6 +++--- .../v1/actions/contact/getAll/execute.ts | 2 +- .../v1/actions/contact/update/execute.ts | 6 +++--- .../v1/actions/customer/add/description.ts | 4 ++-- .../v1/actions/customer/add/execute.ts | 16 +++++++-------- .../v1/actions/customer/getAll/execute.ts | 4 ++-- .../v1/actions/customer/update/description.ts | 4 ++-- .../v1/actions/customer/update/execute.ts | 20 +++++++++---------- .../v1/actions/rmm/add/description.ts | 2 +- .../SyncroMSP/v1/actions/rmm/add/execute.ts | 4 ++-- .../v1/actions/rmm/getAll/description.ts | 2 +- .../SyncroMSP/v1/actions/rmm/mute/execute.ts | 4 ++-- .../v1/actions/ticket/add/description.ts | 4 ++-- .../v1/actions/ticket/add/execute.ts | 14 ++++++------- .../v1/actions/ticket/get/description.ts | 2 +- .../v1/actions/ticket/getAll/description.ts | 2 +- .../v1/actions/ticket/getAll/execute.ts | 2 +- .../v1/actions/ticket/update/description.ts | 4 ++-- .../v1/actions/ticket/update/execute.ts | 14 ++++++------- 19 files changed, 58 insertions(+), 58 deletions(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/execute.ts index 67b75767500ad..95f1446fb3c66 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/execute.ts @@ -13,7 +13,7 @@ import { export async function addContact(this: IExecuteFunctions, index: number): Promise { - const id = this.getNodeParameter('customerId',index) as IDataObject; + const id = this.getNodeParameter('customerId', index) as IDataObject; const name = this.getNodeParameter('name', index) as IDataObject; const email = this.getNodeParameter('email', index) as IDataObject; const { address, notes, phone } = this.getNodeParameter('additionalFields', index) as IDataObject; @@ -24,14 +24,14 @@ export async function addContact(this: IExecuteFunctions, index: number): Promis let body = {} as IDataObject; let addressData = address as IDataObject; - if( addressData ) { + if (addressData) { addressData = addressData['addressFields'] as IDataObject; addressData.address1 = addressData.address; } body = { ...addressData, - customer_id : id, + customer_id: id, email, name, notes, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/execute.ts index d4b057e125ae5..074a3ed7b1d52 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/execute.ts @@ -27,6 +27,6 @@ export async function getAll(this: IExecuteFunctions, index: number): Promise { const id = this.getNodeParameter('id', index) as IDataObject; const { address, businessName, email, firstName, getSms, invoiceCcEmail, - lastName, noEmail, notes, notificationEmail, phone, referredBy} = this.getNodeParameter('additionalFields', index) as IDataObject; + lastName, noEmail, notes, notificationEmail, phone, referredBy } = this.getNodeParameter('additionalFields', index) as IDataObject; const qs = {} as IDataObject; const requestMethod = 'PUT'; @@ -23,24 +23,24 @@ export async function updateCustomer(this: IExecuteFunctions, index: number): Pr let body = {} as IDataObject; let addressData = address as IDataObject; - if ( addressData ) { + if (addressData) { addressData = addressData['addressFields'] as IDataObject; addressData.address_2 = addressData.address2; } body = { ...addressData, - business_name : businessName, + business_name: businessName, email, - first_name : firstName, - get_sms : getSms, - invoice_cc_email : invoiceCcEmail, - last_name : lastName, - no_email : noEmail, + first_name: firstName, + get_sms: getSms, + invoice_cc_email: invoiceCcEmail, + last_name: lastName, + no_email: noEmail, notes, - notification_email : notificationEmail, + notification_email: notificationEmail, phone, - referred_by : referredBy, + referred_by: referredBy, }; let responseData; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/add/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/add/description.ts index 7d113d3734356..2207fef7ba07c 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/add/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/add/description.ts @@ -78,7 +78,7 @@ export const rmmAddDescription: RmmProperties = [ displayName: 'Status', name: 'status', type: 'options', - options : [ + options: [ { name: 'Active', value: 'active', diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/add/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/add/execute.ts index cfe7916f5ba23..56e9f4235d443 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/add/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/add/execute.ts @@ -13,8 +13,8 @@ import { export async function addAlert(this: IExecuteFunctions, index: number): Promise { - const customerId = this.getNodeParameter('customerId',index) as IDataObject; - const assetId = this.getNodeParameter('assetId',index) as IDataObject; + const customerId = this.getNodeParameter('customerId', index) as IDataObject; + const assetId = this.getNodeParameter('assetId', index) as IDataObject; const description = this.getNodeParameter('description', index) as IDataObject; const additionalFields = this.getNodeParameter('additionalFields', index) as IDataObject; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/description.ts index b81a2bd35ac82..68c0f90732420 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/description.ts @@ -61,7 +61,7 @@ export const rmmGetAllDescription: RmmProperties = [ displayName: 'Status', name: 'status', type: 'options', - options : [ + options: [ { name: 'Active', value: 'active', diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/mute/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/mute/execute.ts index f3a716e9c8712..36a58facab222 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/mute/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/mute/execute.ts @@ -14,14 +14,14 @@ import { export async function muteAlert(this: IExecuteFunctions, index: number): Promise { const id = this.getNodeParameter('id', index) as string; - const mute = this.getNodeParameter('muteFor',index) as string; + const mute = this.getNodeParameter('muteFor', index) as string; const qs = {} as IDataObject; const requestMethod = 'POST'; const endpoint = `rmm_alerts/${id}/mute`; const body = {} as IDataObject; - body.id =id; + body.id = id; body.mute_for = mute; let responseData; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/add/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/add/description.ts index f16b64aad4c03..6ced35c79d2ba 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/add/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/add/description.ts @@ -68,7 +68,7 @@ export const ticketAddDescription: TicketProperties = [ displayName: 'Problem Type', name: 'problemType', type: 'options', - options : [ + options: [ { name: 'Remote Support', value: 'Remote Support', @@ -96,7 +96,7 @@ export const ticketAddDescription: TicketProperties = [ displayName: 'Status', name: 'status', type: 'options', - options : [ + options: [ { name: 'New', value: 'New', diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/add/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/add/execute.ts index 46c97f8166715..9d1dfad7941bf 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/add/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/add/execute.ts @@ -15,23 +15,23 @@ import { export async function addTicket(this: IExecuteFunctions, index: number): Promise { const id = this.getNodeParameter('customerId', index) as IDataObject; const subject = this.getNodeParameter('subject', index) as IDataObject; - const {assetId,dueDate,problemType,status} = this.getNodeParameter('additionalFields', index) as IDataObject; + const { assetId, dueDate, problemType, status } = this.getNodeParameter('additionalFields', index) as IDataObject; const qs = {} as IDataObject; const requestMethod = 'POST'; const endpoint = 'tickets'; let body = {} as IDataObject; - body ={ - asset_id :assetId, - due_date : dueDate, - problem_type : problemType, + body = { + asset_id: assetId, + due_date: dueDate, + problem_type: problemType, status, }; - body.customer_id=id; - body.subject=subject; + body.customer_id = id; + body.subject = subject; let responseData; responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/get/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/get/description.ts index 528be42ceebd0..787824b117dde 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/get/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/get/description.ts @@ -12,7 +12,7 @@ export const ticketGetDescription: TicketProperties = [ resource: [ 'ticket', ], - operation:[ + operation: [ 'get', ], }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts index 61ae2e4ef9d3c..11232e0983fd5 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts @@ -69,7 +69,7 @@ export const ticketGetAllDescription: TicketProperties = [ displayName: 'Status', name: 'status', type: 'options', - options : [ + options: [ { name: 'New', value: 'New', diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/execute.ts index d57e2cea7aa06..1e3f3914982d3 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/execute.ts @@ -25,7 +25,7 @@ export async function getAll(this: IExecuteFunctions, index: number): Promise { const id = this.getNodeParameter('id', index) as IDataObject; - const {assetId, customerId, dueDate, problemType, status, subject, ticketType} = this.getNodeParameter('additionalFields', index) as IDataObject; + const { assetId, customerId, dueDate, problemType, status, subject, ticketType } = this.getNodeParameter('additionalFields', index) as IDataObject; const qs = {} as IDataObject; @@ -22,14 +22,14 @@ export async function updateTicket(this: IExecuteFunctions, index: number): Prom const endpoint = `tickets/${id}`; let body = {} as IDataObject; - body ={ - asset_id : assetId, - customer_id : customerId, - due_date : dueDate, - problem_type : problemType, + body = { + asset_id: assetId, + customer_id: customerId, + due_date: dueDate, + problem_type: problemType, status, subject, - ticket_type : ticketType, + ticket_type: ticketType, }; let responseData; From 172ee8b7824d3ab9e43e9be53027249ae256363e Mon Sep 17 00:00:00 2001 From: bearbobs Date: Wed, 15 Dec 2021 11:29:46 +0530 Subject: [PATCH 65/73] :zap: Return 404 in ID not found --- .../nodes/SyncroMSP/v1/actions/customer/update/execute.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/execute.ts index 2a35cd0e849db..090b319ad6566 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/execute.ts @@ -5,6 +5,7 @@ import { import { IDataObject, INodeExecutionData, + NodeApiError, } from 'n8n-workflow'; import { @@ -45,6 +46,8 @@ export async function updateCustomer(this: IExecuteFunctions, index: number): Pr let responseData; responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); - + if (!responseData.customer) { + throw new NodeApiError(this.getNode(), responseData, { httpCode: '404', message: "customer not found" }); + } return this.helpers.returnJsonArray(responseData.customer); } From 32223b4c891593ed9bc246d439b0d1850804abce Mon Sep 17 00:00:00 2001 From: bearbobs Date: Wed, 15 Dec 2021 11:40:58 +0530 Subject: [PATCH 66/73] :shirt: Fixed formatting issue --- .../nodes/SyncroMSP/v1/actions/customer/update/execute.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/execute.ts index 090b319ad6566..0ed8f5bc4ef2d 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/execute.ts @@ -47,7 +47,7 @@ export async function updateCustomer(this: IExecuteFunctions, index: number): Pr let responseData; responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); if (!responseData.customer) { - throw new NodeApiError(this.getNode(), responseData, { httpCode: '404', message: "customer not found" }); + throw new NodeApiError(this.getNode(), responseData, { httpCode: '404', message: 'Customer ID not found' }); } return this.helpers.returnJsonArray(responseData.customer); } From 7b95b5a1a4744e54c227bc61f804eff42cccbd8d Mon Sep 17 00:00:00 2001 From: ricardo Date: Fri, 24 Dec 2021 15:49:38 -0500 Subject: [PATCH 67/73] :zap: Improvements --- .../v1/actions/contact/add/description.ts | 23 ++---- .../v1/actions/contact/add/execute.ts | 3 +- .../v1/actions/contact/del/description.ts | 1 + .../v1/actions/contact/get/description.ts | 1 + .../v1/actions/contact/getAll/description.ts | 1 + .../v1/actions/contact/getAll/execute.ts | 3 +- .../v1/actions/customer/add/description.ts | 75 ++++++------------- .../v1/actions/customer/add/execute.ts | 10 +-- .../v1/actions/customer/del/description.ts | 1 + .../v1/actions/customer/get/description.ts | 1 + .../v1/actions/customer/getAll/description.ts | 1 + .../v1/actions/customer/update/execute.ts | 4 +- .../v1/actions/rmm/del/description.ts | 3 +- .../v1/actions/rmm/get/description.ts | 3 +- .../v1/actions/rmm/getAll/description.ts | 1 + .../v1/actions/rmm/getAll/execute.ts | 4 + .../v1/actions/rmm/mute/description.ts | 3 +- .../nodes/SyncroMSP/v1/actions/router.ts | 4 +- .../v1/actions/ticket/add/description.ts | 19 +++-- .../v1/actions/ticket/add/execute.ts | 8 +- .../v1/actions/ticket/del/description.ts | 1 + .../v1/actions/ticket/getAll/description.ts | 1 + .../v1/actions/ticket/update/description.ts | 5 +- .../v1/actions/ticket/update/execute.ts | 21 ++++-- .../v1/actions/versionDescription.ts | 2 - .../nodes/SyncroMSP/v1/transport/index.ts | 2 +- 26 files changed, 92 insertions(+), 109 deletions(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/description.ts index 605692bfc7da6..dc0cad96d3d9e 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/description.ts @@ -11,6 +11,7 @@ export const contactAddDescription: ContactProperties = [ displayName: 'Customer ID', name: 'customerId', type: 'string', + required: true, displayOptions: { show: { resource: [ @@ -39,22 +40,6 @@ export const contactAddDescription: ContactProperties = [ }, default: '', }, - { - displayName: 'Name', - name: 'name', - type: 'string', - displayOptions: { - show: { - resource: [ - 'contact', - ], - operation: [ - 'add', - ], - }, - }, - default: '', - }, { displayName: 'Additional Fields', name: 'additionalFields', @@ -73,6 +58,12 @@ export const contactAddDescription: ContactProperties = [ default: {}, options: [ addressFixedCollection, + { + displayName: 'Name', + name: 'name', + type: 'string', + default: '', + }, { displayName: 'Notes', name: 'notes', diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/execute.ts index 95f1446fb3c66..7515fd56a1a3a 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/execute.ts @@ -14,9 +14,8 @@ import { export async function addContact(this: IExecuteFunctions, index: number): Promise { const id = this.getNodeParameter('customerId', index) as IDataObject; - const name = this.getNodeParameter('name', index) as IDataObject; const email = this.getNodeParameter('email', index) as IDataObject; - const { address, notes, phone } = this.getNodeParameter('additionalFields', index) as IDataObject; + const { address, notes, phone, name } = this.getNodeParameter('additionalFields', index) as IDataObject; const qs = {} as IDataObject; const requestMethod = 'POST'; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/del/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/del/description.ts index 829a736f382a3..95f8858ce7826 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/del/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/del/description.ts @@ -7,6 +7,7 @@ export const contactDeleteDescription: ContactProperties = [ displayName: 'Contact ID', name: 'id', type: 'string', + required: true, displayOptions: { show: { resource: [ diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/get/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/get/description.ts index 5c2daef3b2af7..370a7f133baa6 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/get/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/get/description.ts @@ -7,6 +7,7 @@ export const contactGetDescription: ContactProperties = [ displayName: 'Contact ID', name: 'id', type: 'string', + required: true, displayOptions: { show: { resource: [ diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts index 43282ab1b8834..58484606412b6 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts @@ -17,6 +17,7 @@ export const contactGetAllDescription: ContactProperties = [ ], }, }, + noDataExpression: true, default: false, description: 'If all results should be returned or only up to a given limit', }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/execute.ts index 074a3ed7b1d52..4b6a8dac4676d 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/execute.ts @@ -11,10 +11,8 @@ import { apiRequest, apiRequestAllItems } from '../../../transport'; - export async function getAll(this: IExecuteFunctions, index: number): Promise { const returnAll = this.getNodeParameter('returnAll', index) as boolean; - const limit = this.getNodeParameter('limit', index) as IDataObject; const qs = {} as IDataObject; const requestMethod = 'GET'; @@ -26,6 +24,7 @@ export async function getAll(this: IExecuteFunctions, index: number): Promise { - const firstname = this.getNodeParameter('firstname', index) as IDataObject; - const lastname = this.getNodeParameter('lastname', index) as IDataObject; const email = this.getNodeParameter('email', index) as IDataObject; - const businessName = this.getNodeParameter('businessName', index) as IDataObject; - const { address, getSms, invoiceCcEmail, noEmail, notes, notificationEmail, phone, referredBy } = this.getNodeParameter('additionalFields', index) as IDataObject; + const { address, getSms, businessName, lastname, firstname, invoiceCcEmails, noEmail, notes, notificationEmail, phone, referredBy } = this.getNodeParameter('additionalFields', index) as IDataObject; const qs = {} as IDataObject; const requestMethod = 'POST'; @@ -31,13 +27,15 @@ export async function addCustomer(this: IExecuteFunctions, index: number): Promi addressData.address_2 = addressData.address2; } + console.log(invoiceCcEmails); + body = { ...addressData, business_name: businessName, email, firstname, get_sms: getSms, - invoice_cc_email: invoiceCcEmail, + invoice_cc_emails: (invoiceCcEmails as string[]).join(','), lastname, no_email: noEmail, notes, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/del/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/del/description.ts index 7928c03f666bb..d1e7fef213cd0 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/del/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/del/description.ts @@ -7,6 +7,7 @@ export const customerDeleteDescription: CustomerProperties = [ displayName: 'Customer ID', name: 'id', type: 'string', + required: true, displayOptions: { show: { resource: [ diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/get/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/get/description.ts index 0cb5d74907ab7..059eff5d84737 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/get/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/get/description.ts @@ -7,6 +7,7 @@ export const customerGetDescription: CustomerProperties = [ displayName: 'Cutomer ID', name: 'id', type: 'string', + required: true, displayOptions: { show: { resource: [ diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts index b5b1468b4d568..ef816bbb7fb63 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts @@ -18,6 +18,7 @@ export const customerGetAllDescription: CustomerProperties = [ }, }, default: false, + noDataExpression: true, description: 'If all results should be returned or only up to a given limit', }, { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/execute.ts index 0ed8f5bc4ef2d..de8364cae1649 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/execute.ts @@ -33,10 +33,10 @@ export async function updateCustomer(this: IExecuteFunctions, index: number): Pr ...addressData, business_name: businessName, email, - first_name: firstName, + firstname: firstName, get_sms: getSms, invoice_cc_email: invoiceCcEmail, - last_name: lastName, + lastname: lastName, no_email: noEmail, notes, notification_email: notificationEmail, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/del/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/del/description.ts index c0d6c2bcc1e86..5387c8967d7f0 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/del/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/del/description.ts @@ -7,6 +7,7 @@ export const rmmDeleteDescription: RmmProperties = [ displayName: 'RMM Alert ID', name: 'id', type: 'string', + required: true, displayOptions: { show: { resource: [ @@ -18,6 +19,6 @@ export const rmmDeleteDescription: RmmProperties = [ }, }, default: '', - description: 'Delete alert by ID', + description: 'Delete the RMM alert by ID', }, ]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/get/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/get/description.ts index ce471c65568ef..d96acc703f646 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/get/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/get/description.ts @@ -7,6 +7,7 @@ export const rmmGetDescription: RmmProperties = [ displayName: 'RMM Alert ID', name: 'id', type: 'string', + required: true, displayOptions: { show: { resource: [ @@ -18,6 +19,6 @@ export const rmmGetDescription: RmmProperties = [ }, }, default: '', - description: 'Get specific rmm alert by ID', + description: 'Get specific RMM alert by ID', }, ]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/description.ts index 68c0f90732420..0b7ead76e4a81 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/description.ts @@ -18,6 +18,7 @@ export const rmmGetAllDescription: RmmProperties = [ }, }, default: false, + noDataExpression: true, description: 'If all results should be returned or only up to a given limit', }, { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/execute.ts index 1f1b653b8f4e0..bd5ef7b94a7bd 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/execute.ts @@ -25,6 +25,10 @@ export async function getAll(this: IExecuteFunctions, index: number): Promise { const id = this.getNodeParameter('customerId', index) as IDataObject; const subject = this.getNodeParameter('subject', index) as IDataObject; - const { assetId, dueDate, problemType, status } = this.getNodeParameter('additionalFields', index) as IDataObject; + const { assetId, dueDate, issueType, status } = this.getNodeParameter('additionalFields', index) as IDataObject; const qs = {} as IDataObject; const requestMethod = 'POST'; @@ -24,16 +24,16 @@ export async function addTicket(this: IExecuteFunctions, index: number): Promise body = { asset_id: assetId, - due_date: dueDate, - problem_type: problemType, + //due_date: dueDate, + problem_type: issueType, status, }; - body.customer_id = id; body.subject = subject; let responseData; + responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); return this.helpers.returnJsonArray(responseData.ticket); diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/del/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/del/description.ts index cc6e58ab967c3..f11aee0ba707c 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/del/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/del/description.ts @@ -6,6 +6,7 @@ export const ticketDeleteDescription: TicketProperties = [ { displayName: 'Ticket ID', name: 'id', + required: true, type: 'string', displayOptions: { show: { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts index 11232e0983fd5..0375703d32aa8 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts @@ -18,6 +18,7 @@ export const ticketGetAllDescription: TicketProperties = [ }, }, default: false, + noDataExpression: true, description: 'If all results should be returned or only up to a given limit', }, { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/description.ts index d83791591b336..1249d8ad878c2 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/description.ts @@ -7,6 +7,7 @@ export const ticketUpdateDescription: TicketProperties = [ displayName: 'Ticket ID', name: 'id', type: 'string', + required: true, displayOptions: { show: { resource: [ @@ -55,8 +56,8 @@ export const ticketUpdateDescription: TicketProperties = [ default: '', }, { - displayName: 'Problem Type', - name: 'problemType', + displayName: 'Issue Type', + name: 'issueType', type: 'options', options: [ { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/execute.ts index 4656a8d503c8c..2be0be7e2b51d 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/execute.ts @@ -5,6 +5,7 @@ import { import { IDataObject, INodeExecutionData, + NodeOperationError, } from 'n8n-workflow'; import { @@ -14,7 +15,7 @@ import { export async function updateTicket(this: IExecuteFunctions, index: number): Promise { const id = this.getNodeParameter('id', index) as IDataObject; - const { assetId, customerId, dueDate, problemType, status, subject, ticketType } = this.getNodeParameter('additionalFields', index) as IDataObject; + const { assetId, customerId, dueDate, issueType, status, subject, ticketType } = this.getNodeParameter('additionalFields', index) as IDataObject; const qs = {} as IDataObject; @@ -23,15 +24,19 @@ export async function updateTicket(this: IExecuteFunctions, index: number): Prom let body = {} as IDataObject; body = { - asset_id: assetId, - customer_id: customerId, - due_date: dueDate, - problem_type: problemType, - status, - subject, - ticket_type: ticketType, + ...(assetId && { asset_id: assetId }), + ...(customerId && { customer_id: customerId }), + ...(dueDate && { due_date: dueDate }), + ...(issueType && { problem_type: issueType }), + ...(status && { status }), + ...(subject && { subject }), + ...(ticketType && { ticket_type: ticketType }), }; + if (!Object.keys(body).length) { + throw new NodeOperationError(this.getNode(), 'At least one update fields has to be defined'); + } + let responseData; responseData = await apiRequest.call(this, requestMethod, endpoint, body, qs); diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts index 9e56fcbaf5d8d..00d5a36042c10 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts @@ -1,5 +1,4 @@ import { - INodeProperties, INodeTypeDescription, } from 'n8n-workflow'; @@ -52,7 +51,6 @@ export const versionDescription: INodeTypeDescription = { }, ], default: 'contact', - description: 'The resource to operate on', }, ...customer.descriptions, ...ticket.descriptions, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/transport/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/transport/index.ts index f52d7170e169e..b57d590a24bc8 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/transport/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/transport/index.ts @@ -28,7 +28,7 @@ export async function apiRequest( throw new NodeOperationError(this.getNode(), 'No credentials returned!'); } - query['api_key']=credentials.apiKey; + query['api_key'] = credentials.apiKey; const options: IHttpRequestOptions = { method, From 2d53184376033c974bb5be16ec801153d481a856 Mon Sep 17 00:00:00 2001 From: ricardo Date: Mon, 27 Dec 2021 20:11:18 -0500 Subject: [PATCH 68/73] :zap: Improvements --- .../nodes/SyncroMSP/v1/actions/ticket/add/description.ts | 7 +++++++ .../nodes/SyncroMSP/v1/actions/ticket/add/execute.ts | 3 ++- .../SyncroMSP/v1/actions/ticket/update/description.ts | 7 +++++++ .../nodes/SyncroMSP/v1/actions/ticket/update/execute.ts | 3 ++- 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/add/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/add/description.ts index f057ed355d1cc..9098c771fe7a3 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/add/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/add/description.ts @@ -60,6 +60,13 @@ export const ticketAddDescription: TicketProperties = [ type: 'string', default: '', }, + { + displayName: 'Assign to Contact', + name: 'contactId', + type: 'string', + default: '', + description: 'The ID of the contact you want to assign the ticket to', + }, // { // displayName: 'Due Date', // name: 'dueDate', diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/add/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/add/execute.ts index a70d953a473cf..c967aafb333cc 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/add/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/add/execute.ts @@ -15,7 +15,7 @@ import { export async function addTicket(this: IExecuteFunctions, index: number): Promise { const id = this.getNodeParameter('customerId', index) as IDataObject; const subject = this.getNodeParameter('subject', index) as IDataObject; - const { assetId, dueDate, issueType, status } = this.getNodeParameter('additionalFields', index) as IDataObject; + const { assetId, dueDate, issueType, status, contactId } = this.getNodeParameter('additionalFields', index) as IDataObject; const qs = {} as IDataObject; const requestMethod = 'POST'; @@ -27,6 +27,7 @@ export async function addTicket(this: IExecuteFunctions, index: number): Promise //due_date: dueDate, problem_type: issueType, status, + contact_id: contactId, }; body.customer_id = id; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/description.ts index 1249d8ad878c2..5fbcbaa257690 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/description.ts @@ -43,6 +43,13 @@ export const ticketUpdateDescription: TicketProperties = [ type: 'string', default: '', }, + { + displayName: 'Assign to Contact', + name: 'contactId', + type: 'string', + default: '', + description: 'The ID of the contact you want to assign the ticket to', + }, { displayName: 'Customer ID', name: 'customerId', diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/execute.ts index 2be0be7e2b51d..05a6fddf5dae7 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/execute.ts @@ -15,7 +15,7 @@ import { export async function updateTicket(this: IExecuteFunctions, index: number): Promise { const id = this.getNodeParameter('id', index) as IDataObject; - const { assetId, customerId, dueDate, issueType, status, subject, ticketType } = this.getNodeParameter('additionalFields', index) as IDataObject; + const { assetId, customerId, dueDate, issueType, status, subject, ticketType, contactId } = this.getNodeParameter('additionalFields', index) as IDataObject; const qs = {} as IDataObject; @@ -31,6 +31,7 @@ export async function updateTicket(this: IExecuteFunctions, index: number): Prom ...(status && { status }), ...(subject && { subject }), ...(ticketType && { ticket_type: ticketType }), + ...(contactId && { contact_id: contactId }), }; if (!Object.keys(body).length) { From 19b9b7cdaab0cae75df01ad4ee2dd9681bd3db17 Mon Sep 17 00:00:00 2001 From: ricardo Date: Wed, 29 Dec 2021 20:00:03 -0500 Subject: [PATCH 69/73] :zap: Improvements --- .../credentials/SyncroMspApi.credentials.ts | 2 +- .../nodes/SyncroMSP/v1/actions/Interfaces.ts | 8 ++--- .../SyncroMSP/v1/actions/contact/add/index.ts | 7 ----- .../contact/{add => create}/description.ts | 12 +++---- .../contact/{add => create}/execute.ts | 4 +-- .../v1/actions/contact/create/index.ts | 7 +++++ .../v1/actions/contact/getAll/description.ts | 4 +-- .../SyncroMSP/v1/actions/contact/index.ts | 12 +++---- .../customer/{add => create}/description.ts | 10 +++--- .../customer/{add => create}/execute.ts | 7 ++--- .../actions/customer/{add => create}/index.ts | 2 +- .../v1/actions/customer/del/description.ts | 2 +- .../v1/actions/customer/del/execute.ts | 2 +- .../v1/actions/customer/get/description.ts | 2 +- .../v1/actions/customer/get/execute.ts | 2 +- .../v1/actions/customer/getAll/description.ts | 4 +-- .../v1/actions/customer/getAll/execute.ts | 6 ++-- .../SyncroMSP/v1/actions/customer/index.ts | 12 +++---- .../v1/actions/customer/update/description.ts | 2 +- .../v1/actions/customer/update/execute.ts | 2 +- .../rmm/{add => create}/description.ts | 12 +++---- .../v1/actions/rmm/{add => create}/execute.ts | 0 .../v1/actions/rmm/{add => create}/index.ts | 2 +- .../v1/actions/rmm/del/description.ts | 2 +- .../SyncroMSP/v1/actions/rmm/del/execute.ts | 2 +- .../v1/actions/rmm/get/description.ts | 2 +- .../SyncroMSP/v1/actions/rmm/get/execute.ts | 2 +- .../v1/actions/rmm/getAll/description.ts | 2 +- .../v1/actions/rmm/getAll/execute.ts | 7 ++--- .../nodes/SyncroMSP/v1/actions/rmm/index.ts | 12 +++---- .../v1/actions/rmm/mute/description.ts | 2 +- .../SyncroMSP/v1/actions/rmm/mute/execute.ts | 2 +- .../SyncroMSP/v1/actions/ticket/add/index.ts | 7 ----- .../ticket/{add => create}/description.ts | 31 ++++++++++--------- .../actions/ticket/{add => create}/execute.ts | 3 +- .../v1/actions/ticket/create/index.ts | 7 +++++ .../v1/actions/ticket/del/description.ts | 2 +- .../v1/actions/ticket/del/execute.ts | 2 +- .../v1/actions/ticket/get/description.ts | 2 +- .../v1/actions/ticket/get/execute.ts | 2 +- .../v1/actions/ticket/getAll/description.ts | 2 +- .../v1/actions/ticket/getAll/execute.ts | 6 ++-- .../SyncroMSP/v1/actions/ticket/index.ts | 13 ++++---- .../v1/actions/ticket/update/description.ts | 2 +- .../v1/actions/ticket/update/execute.ts | 2 +- .../nodes/SyncroMSP/v1/transport/index.ts | 2 +- 46 files changed, 117 insertions(+), 122 deletions(-) delete mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/index.ts rename packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/{add => create}/description.ts (87%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/{add => create}/execute.ts (83%) create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/create/index.ts rename packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/{add => create}/description.ts (92%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/{add => create}/execute.ts (89%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/{add => create}/index.ts (54%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/{add => create}/description.ts (89%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/{add => create}/execute.ts (100%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/{add => create}/index.ts (55%) delete mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/add/index.ts rename packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/{add => create}/description.ts (94%) rename packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/{add => create}/execute.ts (89%) create mode 100644 packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/create/index.ts diff --git a/packages/nodes-base/credentials/SyncroMspApi.credentials.ts b/packages/nodes-base/credentials/SyncroMspApi.credentials.ts index 83faf9100e832..fc4a011db6824 100644 --- a/packages/nodes-base/credentials/SyncroMspApi.credentials.ts +++ b/packages/nodes-base/credentials/SyncroMspApi.credentials.ts @@ -16,7 +16,7 @@ export class SyncroMspApi implements ICredentialType { }, { displayName: 'Subdomain', - name: 'subDomain', + name: 'subdomain', type: 'string', default: '', }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts index ab341acfd912c..027776e50abd2 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/Interfaces.ts @@ -5,10 +5,10 @@ import { } from 'n8n-workflow'; type SyncroMspMap = { - contact: 'add'|'delete'|'get'|'getAll'|'update'; - customer: 'add'|'delete'|'get'|'getAll'|'update'; - rmm: 'add'|'delete'|'get'|'getAll'|'mute' ; - ticket: 'add'|'delete'|'get'|'getAll'|'update'; + contact: 'create'|'delete'|'get'|'getAll'|'update'; + customer: 'create'|'delete'|'get'|'getAll'|'update'; + rmm: 'create'|'delete'|'get'|'getAll'|'mute' ; + ticket: 'create'|'delete'|'get'|'getAll'|'update'; }; export type SyncroMsp = AllEntities; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/index.ts deleted file mode 100644 index 4c52c6d5e1529..0000000000000 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { addContact as execute } from './execute'; -import { contactAddDescription as description } from './description'; - -export { - description, - execute, -}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/create/description.ts similarity index 87% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/description.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/create/description.ts index dc0cad96d3d9e..66632c0e11084 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/create/description.ts @@ -6,10 +6,10 @@ import { addressFixedCollection } from '../../../methods/sharedFields'; -export const contactAddDescription: ContactProperties = [ +export const contactCreateDescription: ContactProperties = [ { displayName: 'Customer ID', - name: 'customerId', + name: 'id', type: 'string', required: true, displayOptions: { @@ -18,7 +18,7 @@ export const contactAddDescription: ContactProperties = [ 'contact', ], operation: [ - 'add', + 'create', ], }, }, @@ -34,7 +34,7 @@ export const contactAddDescription: ContactProperties = [ 'contact', ], operation: [ - 'add', + 'create', ], }, }, @@ -44,14 +44,14 @@ export const contactAddDescription: ContactProperties = [ displayName: 'Additional Fields', name: 'additionalFields', type: 'collection', - placeholder: 'Add Field', + placeholder: 'create Field', displayOptions: { show: { resource: [ 'contact', ], operation: [ - 'add', + 'create', ], }, }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/create/execute.ts similarity index 83% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/execute.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/create/execute.ts index 7515fd56a1a3a..d6c5cadb06f27 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/add/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/create/execute.ts @@ -12,8 +12,8 @@ import { } from '../../../transport'; -export async function addContact(this: IExecuteFunctions, index: number): Promise { - const id = this.getNodeParameter('customerId', index) as IDataObject; +export async function createContact(this: IExecuteFunctions, index: number): Promise { + const id = this.getNodeParameter('id', index) as IDataObject; const email = this.getNodeParameter('email', index) as IDataObject; const { address, notes, phone, name } = this.getNodeParameter('additionalFields', index) as IDataObject; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/create/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/create/index.ts new file mode 100644 index 0000000000000..b2b821f766151 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/create/index.ts @@ -0,0 +1,7 @@ +import { createContact as execute } from './execute'; +import { contactCreateDescription as description } from './description'; + +export { + description, + execute, +}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts index 58484606412b6..e2671d59a1570 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/getAll/description.ts @@ -24,7 +24,7 @@ export const contactGetAllDescription: ContactProperties = [ { displayName: 'Limit', name: 'limit', - type: 'string', + type: 'number', displayOptions: { show: { resource: [ @@ -38,6 +38,6 @@ export const contactGetAllDescription: ContactProperties = [ ], }, }, - default: '25', + default: 25, }, ]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts index 00d23503374f8..7ba19a8beda6c 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/index.ts @@ -1,6 +1,6 @@ import * as getAll from './getAll'; -import * as add from './add'; +import * as create from './create'; import * as get from './get'; import * as update from './update'; import * as del from './del'; @@ -9,7 +9,7 @@ import { INodeProperties } from 'n8n-workflow'; export { getAll, - add, + create, del as delete, update, get, @@ -31,8 +31,8 @@ export const descriptions = [ options: [ { name: 'Create', - value: 'add', - description: 'Add new contact', + value: 'create', + description: 'Create new contact', }, { name: 'Delete', @@ -56,10 +56,10 @@ export const descriptions = [ }, ], default: 'getAll', - description: 'The operation to perform.', + description: '', }, ...getAll.description, - ...add.description, + ...create.description, ...get.description, ...update.description, ...del.description, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/create/description.ts similarity index 92% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/description.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/create/description.ts index 1c0a15f52b2ef..7799df09795b4 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/create/description.ts @@ -6,7 +6,7 @@ import { addressFixedCollection } from '../../../methods/sharedFields'; -export const customerAddDescription: CustomerProperties = [ +export const customerCreateDescription: CustomerProperties = [ { displayName: 'Email', name: 'email', @@ -17,7 +17,7 @@ export const customerAddDescription: CustomerProperties = [ 'customer', ], operation: [ - 'add', + 'create', ], }, }, @@ -27,14 +27,14 @@ export const customerAddDescription: CustomerProperties = [ displayName: 'Additional Fields', name: 'additionalFields', type: 'collection', - placeholder: 'Add Field', + placeholder: 'create Field', displayOptions: { show: { resource: [ 'customer', ], operation: [ - 'add', + 'create', ], }, }, @@ -49,7 +49,7 @@ export const customerAddDescription: CustomerProperties = [ }, { displayName: 'First Name', - name: 'firstname', + name: 'firstName', type: 'string', default: '', }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/create/execute.ts similarity index 89% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/execute.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/create/execute.ts index 83e46b8dd3099..83ff31e6eef52 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/create/execute.ts @@ -1,4 +1,3 @@ -import { add } from 'lodash'; import { IExecuteFunctions, } from 'n8n-core'; @@ -14,7 +13,7 @@ import { export async function addCustomer(this: IExecuteFunctions, index: number): Promise { const email = this.getNodeParameter('email', index) as IDataObject; - const { address, getSms, businessName, lastname, firstname, invoiceCcEmails, noEmail, notes, notificationEmail, phone, referredBy } = this.getNodeParameter('additionalFields', index) as IDataObject; + const { address, getSms, businessName, lastname, firstName, invoiceCcEmails, noEmail, notes, notificationEmail, phone, referredBy } = this.getNodeParameter('additionalFields', index) as IDataObject; const qs = {} as IDataObject; const requestMethod = 'POST'; @@ -27,13 +26,11 @@ export async function addCustomer(this: IExecuteFunctions, index: number): Promi addressData.address_2 = addressData.address2; } - console.log(invoiceCcEmails); - body = { ...addressData, business_name: businessName, email, - firstname, + firstname: firstName, get_sms: getSms, invoice_cc_emails: (invoiceCcEmails as string[]).join(','), lastname, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/create/index.ts similarity index 54% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/index.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/create/index.ts index d9e24bc84a4ad..eb10582aa76c3 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/add/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/create/index.ts @@ -1,5 +1,5 @@ import { addCustomer as execute } from './execute'; -import { customerAddDescription as description } from './description'; +import { customerCreateDescription as description } from './description'; export { description, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/del/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/del/description.ts index d1e7fef213cd0..bcc6c86cd9caa 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/del/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/del/description.ts @@ -5,7 +5,7 @@ import { export const customerDeleteDescription: CustomerProperties = [ { displayName: 'Customer ID', - name: 'id', + name: 'customerId', type: 'string', required: true, displayOptions: { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/del/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/del/execute.ts index f8193ac2fdcb2..9544e90460f5a 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/del/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/del/execute.ts @@ -13,7 +13,7 @@ import { export async function deleteCustomer(this: IExecuteFunctions, index: number): Promise { - const id = this.getNodeParameter('id', index) as string; + const id = this.getNodeParameter('customerId', index) as string; const qs = {} as IDataObject; const requestMethod = 'DELETE'; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/get/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/get/description.ts index 059eff5d84737..97219de6c562b 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/get/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/get/description.ts @@ -5,7 +5,7 @@ import { export const customerGetDescription: CustomerProperties = [ { displayName: 'Cutomer ID', - name: 'id', + name: 'customerId', type: 'string', required: true, displayOptions: { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/get/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/get/execute.ts index 0d212430690e8..ef19b46939772 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/get/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/get/execute.ts @@ -13,7 +13,7 @@ import { export async function getCustomer(this: IExecuteFunctions, index: number): Promise { - const id = this.getNodeParameter('id', index) as string; + const id = this.getNodeParameter('customerId', index) as string; const qs = {} as IDataObject; const requestMethod = 'GET'; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts index ef816bbb7fb63..357454fc791be 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/description.ts @@ -43,7 +43,7 @@ export const customerGetAllDescription: CustomerProperties = [ }, { displayName: 'Filters', - name: 'additionalFilters', + name: 'filters', type: 'collection', placeholder: 'Add Filter', displayOptions: { @@ -72,7 +72,7 @@ export const customerGetAllDescription: CustomerProperties = [ }, { displayName: 'First Name', - name: 'firstname', + name: 'firstName', type: 'string', default: '', }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts index 942a6b329105e..ec2ab1191544c 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/getAll/execute.ts @@ -14,15 +14,15 @@ import { export async function getAll(this: IExecuteFunctions, index: number): Promise { const returnAll = this.getNodeParameter('returnAll', index) as boolean; - const additionalFilters = this.getNodeParameter('additionalFilters', index) as IDataObject; + const filters = this.getNodeParameter('filters', index) as IDataObject; let qs = {} as IDataObject; const requestMethod = 'GET'; const endpoint = 'customers'; const body = {} as IDataObject; - if (additionalFilters) { - qs = additionalFilters; + if (filters) { + qs = filters; if (qs.businessName) { qs.business_name = qs.businessName; } diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts index 25b53d19d2fda..ac57ad014a3fb 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/index.ts @@ -1,6 +1,6 @@ import * as getAll from './getAll'; -import * as add from './add'; +import * as create from './create'; import * as del from './del'; import * as update from './update'; import * as get from './get'; @@ -9,7 +9,7 @@ import { INodeProperties } from 'n8n-workflow'; export { getAll, - add, + create, del as delete, update, get, @@ -31,8 +31,8 @@ export const descriptions = [ options: [ { name: 'Create', - value: 'add', - description: 'Add new customer', + value: 'create', + description: 'Create new customer', }, { name: 'Delete', @@ -56,11 +56,11 @@ export const descriptions = [ }, ], default: 'getAll', - description: 'The operation to perform.', + description: '', }, ...getAll.description, ...get.description, - ...add.description, + ...create.description, ...del.description, ...update.description, ] as INodeProperties[]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/description.ts index ed192290ab6d3..733a2f83ab70e 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/description.ts @@ -9,7 +9,7 @@ import { export const customerUpdateDescription: CustomerProperties = [ { displayName: 'Customer ID', - name: 'id', + name: 'customerId', type: 'string', displayOptions: { show: { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/execute.ts index de8364cae1649..979e1bb2458c6 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/execute.ts @@ -14,7 +14,7 @@ import { export async function updateCustomer(this: IExecuteFunctions, index: number): Promise { - const id = this.getNodeParameter('id', index) as IDataObject; + const id = this.getNodeParameter('customerId', index) as IDataObject; const { address, businessName, email, firstName, getSms, invoiceCcEmail, lastName, noEmail, notes, notificationEmail, phone, referredBy } = this.getNodeParameter('additionalFields', index) as IDataObject; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/add/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/create/description.ts similarity index 89% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/add/description.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/create/description.ts index 2207fef7ba07c..a5b853c3fd1da 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/add/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/create/description.ts @@ -2,7 +2,7 @@ import { RmmProperties, } from '../../Interfaces'; -export const rmmAddDescription: RmmProperties = [ +export const rmmCreateDescription: RmmProperties = [ { displayName: 'Asset ID', name: 'assetId', @@ -13,7 +13,7 @@ export const rmmAddDescription: RmmProperties = [ 'rmm', ], operation: [ - 'add', + 'create', ], }, }, @@ -29,7 +29,7 @@ export const rmmAddDescription: RmmProperties = [ 'rmm', ], operation: [ - 'add', + 'create', ], }, }, @@ -45,7 +45,7 @@ export const rmmAddDescription: RmmProperties = [ 'rmm', ], operation: [ - 'add', + 'create', ], }, }, @@ -55,14 +55,14 @@ export const rmmAddDescription: RmmProperties = [ displayName: 'Additional Fields', name: 'additionalFields', type: 'collection', - placeholder: 'Add Field', + placeholder: 'create Field', displayOptions: { show: { resource: [ 'rmm', ], operation: [ - 'add', + 'create', ], }, }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/add/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/create/execute.ts similarity index 100% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/add/execute.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/create/execute.ts diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/add/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/create/index.ts similarity index 55% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/add/index.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/create/index.ts index ff87ee35d7f10..386e536b3a30c 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/add/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/create/index.ts @@ -1,5 +1,5 @@ import { addAlert as execute } from './execute'; -import { rmmAddDescription as description } from './description'; +import { rmmCreateDescription as description } from './description'; export { description, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/del/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/del/description.ts index 5387c8967d7f0..48a34c8ded021 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/del/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/del/description.ts @@ -5,7 +5,7 @@ import { export const rmmDeleteDescription: RmmProperties = [ { displayName: 'RMM Alert ID', - name: 'id', + name: 'alertId', type: 'string', required: true, displayOptions: { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/del/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/del/execute.ts index e21665866a0cb..787fa91b1928c 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/del/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/del/execute.ts @@ -13,7 +13,7 @@ import { export async function deleteAlert(this: IExecuteFunctions, index: number): Promise { - const id = this.getNodeParameter('id', index) as string; + const id = this.getNodeParameter('alertId', index) as string; const qs = {} as IDataObject; const requestMethod = 'DELETE'; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/get/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/get/description.ts index d96acc703f646..492f77824df0d 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/get/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/get/description.ts @@ -5,7 +5,7 @@ import { export const rmmGetDescription: RmmProperties = [ { displayName: 'RMM Alert ID', - name: 'id', + name: 'alertId', type: 'string', required: true, displayOptions: { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/get/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/get/execute.ts index 250199e2fa62a..8784b2ec9c0f7 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/get/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/get/execute.ts @@ -13,7 +13,7 @@ import { export async function getAlert(this: IExecuteFunctions, index: number): Promise { - const id = this.getNodeParameter('id', index) as string; + const id = this.getNodeParameter('alertId', index) as string; const qs = {} as IDataObject; const requestMethod = 'GET'; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/description.ts index 0b7ead76e4a81..386bb88114a8b 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/description.ts @@ -43,7 +43,7 @@ export const rmmGetAllDescription: RmmProperties = [ }, { displayName: 'Filters', - name: 'additionalFilters', + name: 'filters', type: 'collection', placeholder: 'Add Filter', displayOptions: { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/execute.ts index bd5ef7b94a7bd..7a740b74e8884 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/getAll/execute.ts @@ -11,18 +11,17 @@ import { apiRequest, apiRequestAllItems } from '../../../transport'; - export async function getAll(this: IExecuteFunctions, index: number): Promise { const returnAll = this.getNodeParameter('returnAll', index) as boolean; - const additionalFilters = this.getNodeParameter('additionalFilters', index) as IDataObject; + const filters = this.getNodeParameter('filters', index) as IDataObject; let qs = {} as IDataObject; const requestMethod = 'GET'; const endpoint = 'rmm_alerts'; const body = {} as IDataObject; - if (additionalFilters) { - qs = additionalFilters; + if (filters) { + qs = filters; } if (qs.status === undefined) { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/index.ts index f004fb666ac83..49cbfc2edcf29 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/index.ts @@ -1,7 +1,7 @@ import * as get from './get'; import * as getAll from './getAll'; -import * as add from './add'; +import * as create from './create'; import * as del from './del'; import * as mute from './mute'; @@ -12,7 +12,7 @@ export { get, mute, del as delete, - add, + create, }; @@ -31,8 +31,8 @@ export const descriptions = [ options: [ { name: 'Create', - value: 'add', - description: 'Add new RMM Alert', + value: 'create', + description: 'Create new RMM Alert', }, { name: 'Delete', @@ -56,11 +56,11 @@ export const descriptions = [ }, ], default: 'getAll', - description: 'The operation to perform.', + description: '', }, ...getAll.description, ...get.description, - ...add.description, + ...create.description, ...del.description, ...mute.description, ] as INodeProperties[]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/mute/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/mute/description.ts index 1c72a74bf2791..2550e663599cd 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/mute/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/mute/description.ts @@ -5,7 +5,7 @@ import { export const rmmMuteDescription: RmmProperties = [ { displayName: 'RMM Alert ID', - name: 'id', + name: 'alertId', type: 'string', required: true, displayOptions: { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/mute/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/mute/execute.ts index 36a58facab222..3cc2d5cd76768 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/mute/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/mute/execute.ts @@ -13,7 +13,7 @@ import { export async function muteAlert(this: IExecuteFunctions, index: number): Promise { - const id = this.getNodeParameter('id', index) as string; + const id = this.getNodeParameter('alertId', index) as string; const mute = this.getNodeParameter('muteFor', index) as string; const qs = {} as IDataObject; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/add/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/add/index.ts deleted file mode 100644 index 707cbb816bc05..0000000000000 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/add/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { addTicket as execute } from './execute'; -import { ticketAddDescription as description } from './description'; - -export { - description, - execute, -}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/add/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/create/description.ts similarity index 94% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/add/description.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/create/description.ts index 9098c771fe7a3..772ee5a2c5d3e 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/add/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/create/description.ts @@ -2,7 +2,7 @@ import { TicketProperties, } from '../../Interfaces'; -export const ticketAddDescription: TicketProperties = [ +export const ticketCreateDescription: TicketProperties = [ { displayName: 'Customer ID', name: 'customerId', @@ -14,7 +14,7 @@ export const ticketAddDescription: TicketProperties = [ 'ticket', ], operation: [ - 'add', + 'create', ], }, }, @@ -31,7 +31,7 @@ export const ticketAddDescription: TicketProperties = [ 'ticket', ], operation: [ - 'add', + 'create', ], }, }, @@ -41,14 +41,14 @@ export const ticketAddDescription: TicketProperties = [ displayName: 'Additional Fields', name: 'additionalFields', type: 'collection', - placeholder: 'Add Field', + placeholder: 'create Field', displayOptions: { show: { resource: [ 'ticket', ], operation: [ - 'add', + 'create', ], }, }, @@ -107,17 +107,25 @@ export const ticketAddDescription: TicketProperties = [ type: 'options', options: [ { - name: 'New', - value: 'New', + name: 'Customer Reply', + value: 'Customer Reply', }, { name: 'In Progress', value: 'In Progress', }, + { + name: 'New', + value: 'New', + }, { name: 'Resolved', value: 'Resolved', }, + { + name: 'Scheduled', + value: 'Scheduled', + }, { name: 'Waiting for Parts', value: 'Waiting for Parts', @@ -126,14 +134,7 @@ export const ticketAddDescription: TicketProperties = [ name: 'Waiting on Customer', value: 'Waiting on Customer', }, - { - name: 'Scheduled', - value: 'Scheduled', - }, - { - name: 'Customer Reply', - value: 'Customer Reply', - }, + ], default: 'New', description: 'Filter tickets by status. It cannot be used along with the parameter Search Query', diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/add/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/create/execute.ts similarity index 89% rename from packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/add/execute.ts rename to packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/create/execute.ts index c967aafb333cc..8543ae4fc0d80 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/add/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/create/execute.ts @@ -11,8 +11,7 @@ import { apiRequest, } from '../../../transport'; - -export async function addTicket(this: IExecuteFunctions, index: number): Promise { +export async function createTicket(this: IExecuteFunctions, index: number): Promise { const id = this.getNodeParameter('customerId', index) as IDataObject; const subject = this.getNodeParameter('subject', index) as IDataObject; const { assetId, dueDate, issueType, status, contactId } = this.getNodeParameter('additionalFields', index) as IDataObject; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/create/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/create/index.ts new file mode 100644 index 0000000000000..e0423e0b0d874 --- /dev/null +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/create/index.ts @@ -0,0 +1,7 @@ +import { createTicket as execute } from './execute'; +import { ticketCreateDescription as description } from './description'; + +export { + description, + execute, +}; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/del/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/del/description.ts index f11aee0ba707c..90453c9673456 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/del/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/del/description.ts @@ -5,7 +5,7 @@ import { export const ticketDeleteDescription: TicketProperties = [ { displayName: 'Ticket ID', - name: 'id', + name: 'ticketId', required: true, type: 'string', displayOptions: { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/del/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/del/execute.ts index a2f2dfd1d7189..a646e9f52ae24 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/del/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/del/execute.ts @@ -13,7 +13,7 @@ import { export async function deleteTicket(this: IExecuteFunctions, index: number): Promise { - const id = this.getNodeParameter('id', index) as string; + const id = this.getNodeParameter('ticketId', index) as string; const qs = {} as IDataObject; const requestMethod = 'DELETE'; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/get/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/get/description.ts index 787824b117dde..fa220e6e111df 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/get/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/get/description.ts @@ -5,7 +5,7 @@ import { export const ticketGetDescription: TicketProperties = [ { displayName: 'Ticket ID', - name: 'id', + name: 'ticketId', type: 'string', displayOptions: { show: { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/get/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/get/execute.ts index 990e07cbca05c..b87f461769eca 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/get/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/get/execute.ts @@ -13,7 +13,7 @@ import { export async function getTicket(this: IExecuteFunctions, index: number): Promise { - const id = this.getNodeParameter('id', index) as string; + const id = this.getNodeParameter('ticketId', index) as string; const qs = {} as IDataObject; const requestMethod = 'GET'; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts index 0375703d32aa8..7b8396678e0f3 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts @@ -43,7 +43,7 @@ export const ticketGetAllDescription: TicketProperties = [ }, { displayName: 'Filters', - name: 'additionalFilters', + name: 'filters', type: 'collection', placeholder: 'Add Filter', displayOptions: { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/execute.ts index 1e3f3914982d3..ff29e46e39914 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/execute.ts @@ -14,15 +14,15 @@ import { export async function getAll(this: IExecuteFunctions, index: number): Promise { const returnAll = this.getNodeParameter('returnAll', index) as boolean; - const additionalFilters = this.getNodeParameter('additionalFilters', index) as IDataObject; + const filters = this.getNodeParameter('filters', index) as IDataObject; let qs = {} as IDataObject; const requestMethod = 'GET'; const endpoint = 'tickets'; const body = {} as IDataObject; - if (additionalFilters) { - qs = additionalFilters; + if (filters) { + qs = filters; } if (returnAll === false) { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/index.ts index ff84f13c7317f..afd2d9ea79ae1 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/index.ts @@ -1,6 +1,6 @@ import * as getAll from './getAll'; -import * as add from './add'; +import * as create from './create'; import * as get from './get'; import * as del from './del'; import * as update from './update'; @@ -9,13 +9,12 @@ import { INodeProperties } from 'n8n-workflow'; export { getAll, - add, + create, get, del as delete, update, }; - export const descriptions = [ { displayName: 'Operation', @@ -31,8 +30,8 @@ export const descriptions = [ options: [ { name: 'Create', - value: 'add', - description: 'Add new ticket', + value: 'create', + description: 'Create new ticket', }, { name: 'Delete', @@ -56,10 +55,10 @@ export const descriptions = [ }, ], default: 'getAll', - description: 'The operation to perform.', + description: '', }, ...getAll.description, - ...add.description, + ...create.description, ...get.description, ...del.description, ...update.description, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/description.ts index 5fbcbaa257690..76ebaa21ad02c 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/description.ts @@ -5,7 +5,7 @@ import { export const ticketUpdateDescription: TicketProperties = [ { displayName: 'Ticket ID', - name: 'id', + name: 'ticketId', type: 'string', required: true, displayOptions: { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/execute.ts index 05a6fddf5dae7..76cec8cbbbfd3 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/execute.ts @@ -14,7 +14,7 @@ import { export async function updateTicket(this: IExecuteFunctions, index: number): Promise { - const id = this.getNodeParameter('id', index) as IDataObject; + const id = this.getNodeParameter('ticketId', index) as IDataObject; const { assetId, customerId, dueDate, issueType, status, subject, ticketType, contactId } = this.getNodeParameter('additionalFields', index) as IDataObject; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/transport/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/transport/index.ts index b57d590a24bc8..1dfa6be6d1167 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/transport/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/transport/index.ts @@ -34,7 +34,7 @@ export async function apiRequest( method, body, qs: query, - url: `https://${credentials.subDomain}.syncromsp.com/api/v1/${endpoint}`, + url: `https://${credentials.subdomain}.syncromsp.com/api/v1/${endpoint}`, headers: {}, }; From 2d3e5454191b42b8b2a45ccd40c8775be40d4ed2 Mon Sep 17 00:00:00 2001 From: ricardo Date: Wed, 29 Dec 2021 20:13:29 -0500 Subject: [PATCH 70/73] :zap: Add credentials verification --- .../nodes/SyncroMSP/v1/SyncroMspV1.node.ts | 28 ++++++++++++++++++- .../v1/actions/versionDescription.ts | 1 + .../nodes/SyncroMSP/v1/transport/index.ts | 24 ++++++++++++++++ 3 files changed, 52 insertions(+), 1 deletion(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/SyncroMspV1.node.ts b/packages/nodes-base/nodes/SyncroMSP/v1/SyncroMspV1.node.ts index 8453e336effe8..9255cde1c7ad7 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/SyncroMspV1.node.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/SyncroMspV1.node.ts @@ -3,14 +3,19 @@ import { } from 'n8n-core'; import { + ICredentialDataDecryptedObject, + ICredentialsDecrypted, + ICredentialTestFunctions, INodeType, INodeTypeBaseDescription, INodeTypeDescription, + NodeCredentialTestResult, } from 'n8n-workflow'; import { versionDescription } from './actions/versionDescription'; import { loadOptions } from './methods'; import { router } from './actions/router'; +import { validateCredentials } from './transport'; export class SyncroMspV1 implements INodeType { @@ -23,7 +28,28 @@ export class SyncroMspV1 implements INodeType { }; } - methods = { loadOptions }; + methods = { + loadOptions, + credentialTest: { + async syncroMspApiCredentialTest(this: ICredentialTestFunctions, credential: ICredentialsDecrypted): Promise { + try { + await validateCredentials.call(this, credential.data as ICredentialDataDecryptedObject); + } catch (error) { + if (error.statusCode === 401) { + return { + status: 'Error', + message: 'The API Key included in the request is invalid', + }; + } + } + + return { + status: 'OK', + message: 'Connection successful!', + }; + }, + }, + }; async execute(this: IExecuteFunctions) { return await router.call(this); diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts index 00d5a36042c10..09dee81f00f1f 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/versionDescription.ts @@ -25,6 +25,7 @@ export const versionDescription: INodeTypeDescription = { { name: 'syncroMspApi', required: true, + testedBy: 'SyncroMspApiCredentialTest', }, ], properties: [ diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/transport/index.ts b/packages/nodes-base/nodes/SyncroMSP/v1/transport/index.ts index 1dfa6be6d1167..3fe2bf085e98f 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/transport/index.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/transport/index.ts @@ -6,6 +6,8 @@ import { import { GenericValue, + ICredentialDataDecryptedObject, + ICredentialTestFunctions, IDataObject, IHttpRequestOptions, NodeApiError, @@ -67,3 +69,25 @@ export async function apiRequestAllItems( ); return returnData; } + +export async function validateCredentials(this: ICredentialTestFunctions, decryptedCredentials: ICredentialDataDecryptedObject): Promise { // tslint:disable-line:no-any + const credentials = decryptedCredentials; + + const { + subdomain, + apiKey, + } = credentials as { + subdomain: string, + apiKey: string, + }; + + const options: IHttpRequestOptions = { + method: 'GET', + qs: { + api_key: apiKey, + }, + url: `https://${subdomain}.syncromsp.com/api/v1//me`, + }; + + return await this.helpers.httpRequest(options); +} From 8be934033b1c25f1fd9659dd071ff3f02fc56951 Mon Sep 17 00:00:00 2001 From: ricardo Date: Fri, 31 Dec 2021 09:25:48 -0500 Subject: [PATCH 71/73] :zap: Improvements --- .../v1/actions/contact/create/description.ts | 4 ++-- .../v1/actions/contact/create/execute.ts | 2 +- .../v1/actions/contact/del/description.ts | 2 +- .../v1/actions/contact/del/execute.ts | 2 +- .../v1/actions/contact/get/description.ts | 2 +- .../v1/actions/contact/get/execute.ts | 2 +- .../v1/actions/contact/update/description.ts | 2 +- .../v1/actions/contact/update/execute.ts | 2 +- .../v1/actions/customer/create/description.ts | 3 ++- .../v1/actions/customer/create/execute.ts | 2 +- .../v1/actions/customer/update/description.ts | 8 +++++-- .../v1/actions/customer/update/execute.ts | 4 ++-- .../v1/actions/rmm/create/description.ts | 22 +------------------ .../nodes/SyncroMSP/v1/actions/router.ts | 2 +- .../v1/actions/ticket/create/description.ts | 2 +- .../v1/actions/versionDescription.ts | 2 +- .../nodes/SyncroMSP/v1/transport/index.ts | 2 +- 17 files changed, 25 insertions(+), 40 deletions(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/create/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/create/description.ts index 66632c0e11084..915e35a679d37 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/create/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/create/description.ts @@ -9,7 +9,7 @@ import { export const contactCreateDescription: ContactProperties = [ { displayName: 'Customer ID', - name: 'id', + name: 'customerId', type: 'string', required: true, displayOptions: { @@ -44,7 +44,7 @@ export const contactCreateDescription: ContactProperties = [ displayName: 'Additional Fields', name: 'additionalFields', type: 'collection', - placeholder: 'create Field', + placeholder: 'Add Field', displayOptions: { show: { resource: [ diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/create/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/create/execute.ts index d6c5cadb06f27..9d99aa1b4ed67 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/create/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/create/execute.ts @@ -13,7 +13,7 @@ import { export async function createContact(this: IExecuteFunctions, index: number): Promise { - const id = this.getNodeParameter('id', index) as IDataObject; + const id = this.getNodeParameter('customerId', index) as IDataObject; const email = this.getNodeParameter('email', index) as IDataObject; const { address, notes, phone, name } = this.getNodeParameter('additionalFields', index) as IDataObject; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/del/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/del/description.ts index 95f8858ce7826..fda202b287d67 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/del/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/del/description.ts @@ -5,7 +5,7 @@ import { export const contactDeleteDescription: ContactProperties = [ { displayName: 'Contact ID', - name: 'id', + name: 'contactId', type: 'string', required: true, displayOptions: { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/del/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/del/execute.ts index e285b3c98590a..9809370eac923 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/del/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/del/execute.ts @@ -13,7 +13,7 @@ import { export async function deleteContact(this: IExecuteFunctions, index: number): Promise { - const id = this.getNodeParameter('id', index) as string; + const id = this.getNodeParameter('contactId', index) as string; const qs = {} as IDataObject; const requestMethod = 'DELETE'; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/get/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/get/description.ts index 370a7f133baa6..5dd45d33bcde7 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/get/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/get/description.ts @@ -5,7 +5,7 @@ import { export const contactGetDescription: ContactProperties = [ { displayName: 'Contact ID', - name: 'id', + name: 'contactId', type: 'string', required: true, displayOptions: { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/get/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/get/execute.ts index f415c9cd21774..cc3420e1d2e4b 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/get/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/get/execute.ts @@ -13,7 +13,7 @@ import { export async function getContact(this: IExecuteFunctions, index: number): Promise { - const id = this.getNodeParameter('id', index) as string; + const id = this.getNodeParameter('contactId', index) as string; const qs = {} as IDataObject; const requestMethod = 'GET'; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/description.ts index ea6efd9507c74..590a4b5c9c4b7 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/description.ts @@ -9,7 +9,7 @@ import { export const contactUpdateDescription: ContactProperties = [ { displayName: 'Contact ID', - name: 'id', + name: 'contactId', type: 'string', displayOptions: { show: { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/execute.ts index 572794cfbea06..bc6824b8f9a5e 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/execute.ts @@ -13,7 +13,7 @@ import { export async function updateContact(this: IExecuteFunctions, index: number): Promise { - const id = this.getNodeParameter('id', index) as IDataObject; + const id = this.getNodeParameter('contactId', index) as IDataObject; const { address, customerId, email, name, notes, phone } = this.getNodeParameter('additionalFields', index) as IDataObject; const qs = {} as IDataObject; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/create/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/create/description.ts index 7799df09795b4..5bf3a7068c458 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/create/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/create/description.ts @@ -27,7 +27,7 @@ export const customerCreateDescription: CustomerProperties = [ displayName: 'Additional Fields', name: 'additionalFields', type: 'collection', - placeholder: 'create Field', + placeholder: 'Add Field', displayOptions: { show: { resource: [ @@ -65,6 +65,7 @@ export const customerCreateDescription: CustomerProperties = [ type: 'string', typeOptions: { multipleValues: true, + multipleValueButtonText: 'Add Email', }, default: '', }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/create/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/create/execute.ts index 83ff31e6eef52..51fd1e81b6ad3 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/create/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/create/execute.ts @@ -32,7 +32,7 @@ export async function addCustomer(this: IExecuteFunctions, index: number): Promi email, firstname: firstName, get_sms: getSms, - invoice_cc_emails: (invoiceCcEmails as string[]).join(','), + invoice_cc_emails: (invoiceCcEmails as string[] || []).join(','), lastname, no_email: noEmail, notes, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/description.ts index 733a2f83ab70e..d444aa0352dd4 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/description.ts @@ -66,9 +66,13 @@ export const customerUpdateDescription: CustomerProperties = [ default: true, }, { - displayName: 'Invoice Email', - name: 'invoiceCcEmail', + displayName: 'Invoice Emails', + name: 'invoiceCcEmails', type: 'string', + typeOptions: { + multipleValues: true, + multipleValueButtonText: 'Add Email', + }, default: '', }, { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/execute.ts index 979e1bb2458c6..0d9bfdb754280 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/execute.ts @@ -15,7 +15,7 @@ import { export async function updateCustomer(this: IExecuteFunctions, index: number): Promise { const id = this.getNodeParameter('customerId', index) as IDataObject; - const { address, businessName, email, firstName, getSms, invoiceCcEmail, + const { address, businessName, email, firstName, getSms, invoiceCcEmails, lastName, noEmail, notes, notificationEmail, phone, referredBy } = this.getNodeParameter('additionalFields', index) as IDataObject; const qs = {} as IDataObject; @@ -35,7 +35,7 @@ export async function updateCustomer(this: IExecuteFunctions, index: number): Pr email, firstname: firstName, get_sms: getSms, - invoice_cc_email: invoiceCcEmail, + invoice_cc_emails: (invoiceCcEmails as string[] || []).join(','), lastname: lastName, no_email: noEmail, notes, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/create/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/create/description.ts index a5b853c3fd1da..251f20a057ddd 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/create/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/rmm/create/description.ts @@ -55,7 +55,7 @@ export const rmmCreateDescription: RmmProperties = [ displayName: 'Additional Fields', name: 'additionalFields', type: 'collection', - placeholder: 'create Field', + placeholder: 'Add Field', displayOptions: { show: { resource: [ @@ -74,26 +74,6 @@ export const rmmCreateDescription: RmmProperties = [ type: 'boolean', default: false, }, - { - displayName: 'Status', - name: 'status', - type: 'options', - options: [ - { - name: 'Active', - value: 'active', - }, - { - name: 'All', - value: 'all', - }, - { - name: 'Resolved', - value: 'resolved', - }, - ], - default: 'active', - }, ], }, ]; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts index 6052a47cc8bea..73522cbbc50be 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/router.ts @@ -41,7 +41,7 @@ export async function router(this: IExecuteFunctions): Promise Date: Tue, 4 Jan 2022 13:39:05 -0500 Subject: [PATCH 72/73] :zap: Improvements --- .../v1/actions/ticket/create/description.ts | 14 ++++---- .../v1/actions/ticket/getAll/description.ts | 20 ++++++------ .../v1/actions/ticket/update/description.ts | 32 +++++++++---------- 3 files changed, 33 insertions(+), 33 deletions(-) diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/create/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/create/description.ts index b66ca5eaf27b6..8664ea5988eb8 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/create/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/create/description.ts @@ -78,10 +78,6 @@ export const ticketCreateDescription: TicketProperties = [ name: 'issueType', type: 'options', options: [ - { - name: 'Remote Support', - value: 'Remote Support', - }, { name: 'Contract Work', value: 'Contract Work', @@ -90,13 +86,17 @@ export const ticketCreateDescription: TicketProperties = [ name: 'Network Project', value: 'Network Project', }, + { + name: 'Other', + value: 'Other', + }, { name: 'Regular Maintenance', value: 'Regular Maintenance', }, { - name: 'Other', - value: 'Other', + name: 'Remote Support', + value: 'Remote Support', }, ], default: '', @@ -137,7 +137,7 @@ export const ticketCreateDescription: TicketProperties = [ ], default: 'New', - description: 'Filter tickets by status. It cannot be used along with the parameter Search Query', + description: 'If used along the parameter Search Query, only Search Query will be applied', }, ], }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts index 7b8396678e0f3..d60fbcc7b78dd 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/getAll/description.ts @@ -72,17 +72,25 @@ export const ticketGetAllDescription: TicketProperties = [ type: 'options', options: [ { - name: 'New', - value: 'New', + name: 'Customer Reply', + value: 'Customer Reply', }, { name: 'In Progress', value: 'In Progress', }, + { + name: 'New', + value: 'New', + }, { name: 'Resolved', value: 'Resolved', }, + { + name: 'Scheduled', + value: 'Scheduled', + }, { name: 'Waiting for Parts', value: 'Waiting for Parts', @@ -91,14 +99,6 @@ export const ticketGetAllDescription: TicketProperties = [ name: 'Waiting on Customer', value: 'Waiting on Customer', }, - { - name: 'Scheduled', - value: 'Scheduled', - }, - { - name: 'Customer Reply', - value: 'Customer Reply', - }, ], default: 'New', }, diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/description.ts index 76ebaa21ad02c..f0e6f8b7c58d6 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/description.ts @@ -67,10 +67,6 @@ export const ticketUpdateDescription: TicketProperties = [ name: 'issueType', type: 'options', options: [ - { - name: 'Remote Support', - value: 'Remote Support', - }, { name: 'Contract Work', value: 'Contract Work', @@ -79,13 +75,17 @@ export const ticketUpdateDescription: TicketProperties = [ name: 'Network Project', value: 'Network Project', }, + { + name: 'Other', + value: 'Other', + }, { name: 'Regular Maintenance', value: 'Regular Maintenance', }, { - name: 'Other', - value: 'Other', + name: 'Remote Support', + value: 'Remote Support', }, ], default: '', @@ -96,17 +96,25 @@ export const ticketUpdateDescription: TicketProperties = [ type: 'options', options: [ { - name: 'New', - value: 'New', + name: 'Customer Reply', + value: 'Customer Reply', }, { name: 'In Progress', value: 'In Progress', }, + { + name: 'New', + value: 'New', + }, { name: 'Resolved', value: 'Resolved', }, + { + name: 'Scheduled', + value: 'Scheduled', + }, { name: 'Waiting for Parts', value: 'Waiting for Parts', @@ -115,14 +123,6 @@ export const ticketUpdateDescription: TicketProperties = [ name: 'Waiting on Customer', value: 'Waiting on Customer', }, - { - name: 'Scheduled', - value: 'Scheduled', - }, - { - name: 'Customer Reply', - value: 'Customer Reply', - }, ], default: 'New', }, From 20c1d2602eef6a524d8b7b55db655a0441d6d3fb Mon Sep 17 00:00:00 2001 From: Jan Oberhauser Date: Fri, 7 Jan 2022 18:14:33 +0100 Subject: [PATCH 73/73] :zap: Additional improvements --- packages/cli/src/Server.ts | 9 --------- .../SyncroMSP/v1/actions/contact/update/description.ts | 2 +- .../nodes/SyncroMSP/v1/actions/contact/update/execute.ts | 2 +- .../SyncroMSP/v1/actions/customer/update/description.ts | 2 +- .../SyncroMSP/v1/actions/customer/update/execute.ts | 2 +- .../SyncroMSP/v1/actions/ticket/update/description.ts | 2 +- .../nodes/SyncroMSP/v1/actions/ticket/update/execute.ts | 2 +- 7 files changed, 6 insertions(+), 15 deletions(-) diff --git a/packages/cli/src/Server.ts b/packages/cli/src/Server.ts index 74b2a1eb1aef2..1fb8ecf7ea6cf 100644 --- a/packages/cli/src/Server.ts +++ b/packages/cli/src/Server.ts @@ -3008,15 +3008,6 @@ export async function start(): Promise { process.exit(1); } }); - - server.on('error', (error: Error & { code: string }) => { - if (error.code === 'EADDRINUSE') { - console.log( - `n8n's port ${PORT} is already in use. Do you have another instance of n8n running already?`, - ); - process.exit(1); - } - }); } async function getExecutionsCount( diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/description.ts index 590a4b5c9c4b7..67067a0997149 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/description.ts @@ -25,7 +25,7 @@ export const contactUpdateDescription: ContactProperties = [ }, { displayName: 'Update Fields', - name: 'additionalFields', + name: 'updateFields', type: 'collection', placeholder: 'Add Field', displayOptions: { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/execute.ts index bc6824b8f9a5e..a5aa040273dd4 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/contact/update/execute.ts @@ -14,7 +14,7 @@ import { export async function updateContact(this: IExecuteFunctions, index: number): Promise { const id = this.getNodeParameter('contactId', index) as IDataObject; - const { address, customerId, email, name, notes, phone } = this.getNodeParameter('additionalFields', index) as IDataObject; + const { address, customerId, email, name, notes, phone } = this.getNodeParameter('updateFields', index) as IDataObject; const qs = {} as IDataObject; const requestMethod = 'PUT'; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/description.ts index d444aa0352dd4..5417e1d3b2055 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/description.ts @@ -25,7 +25,7 @@ export const customerUpdateDescription: CustomerProperties = [ }, { displayName: 'Update Fields', - name: 'additionalFields', + name: 'updateFields', type: 'collection', placeholder: 'Add Field', displayOptions: { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/execute.ts index 0d9bfdb754280..b68fddd7e7a6d 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/customer/update/execute.ts @@ -16,7 +16,7 @@ import { export async function updateCustomer(this: IExecuteFunctions, index: number): Promise { const id = this.getNodeParameter('customerId', index) as IDataObject; const { address, businessName, email, firstName, getSms, invoiceCcEmails, - lastName, noEmail, notes, notificationEmail, phone, referredBy } = this.getNodeParameter('additionalFields', index) as IDataObject; + lastName, noEmail, notes, notificationEmail, phone, referredBy } = this.getNodeParameter('updateFields', index) as IDataObject; const qs = {} as IDataObject; const requestMethod = 'PUT'; diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/description.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/description.ts index f0e6f8b7c58d6..72549038bedd6 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/description.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/description.ts @@ -22,7 +22,7 @@ export const ticketUpdateDescription: TicketProperties = [ }, { displayName: 'Update Fields', - name: 'additionalFields', + name: 'updateFields', type: 'collection', placeholder: 'Add Field', displayOptions: { diff --git a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/execute.ts b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/execute.ts index 76cec8cbbbfd3..eb926abecb8d3 100644 --- a/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/execute.ts +++ b/packages/nodes-base/nodes/SyncroMSP/v1/actions/ticket/update/execute.ts @@ -15,7 +15,7 @@ import { export async function updateTicket(this: IExecuteFunctions, index: number): Promise { const id = this.getNodeParameter('ticketId', index) as IDataObject; - const { assetId, customerId, dueDate, issueType, status, subject, ticketType, contactId } = this.getNodeParameter('additionalFields', index) as IDataObject; + const { assetId, customerId, dueDate, issueType, status, subject, ticketType, contactId } = this.getNodeParameter('updateFields', index) as IDataObject; const qs = {} as IDataObject;