Add Syncromsp node (#2477)

* Init Node

* Added get customer details api for syncomsp-node

* Fixed formatting bug 🐛

* Updated description for query params, and removed redundant condition in router

* Changed default value for page parameter

* 🚢 Added tickets API

* 🚢 Added contacts API

* 🚢 Added RMM Alerts API

* Add customer API

* Updates post code review

* Rename SyncroMspAPI.credentials.ts to SyncroMspApi.credentials.ts

* added create and delete method to customers module

* fix liniting issue

* Added Update method to customer module

* Code Review Changes

* 🚢 Added CRUD for contacts endpoint

* 🚢 Added CRUD for RMM Alert endpoint

* Added options for status field

* 🐛 fix linting issues

* Init Node

* Added get customer details api for syncomsp-node

* Fixed formatting bug 🐛

* Updated description for query params, and removed redundant condition in router

* Changed default value for page parameter

* 🚢 Added tickets API

* 🚢 Added contacts API

* 🚢 Added RMM Alerts API

* Updates post code review

* Add customer API

* added create and delete method to customers module

* fix liniting issue

* Added Update method to customer module

* Rename SyncroMspAPI.credentials.ts to SyncroMspApi.credentials.ts

* Code Review Changes

* 🚢 Added CRUD for contacts endpoint

* 🚢 Added CRUD for RMM Alert endpoint

* Added options for status field

* 🐛 fix linting issues

* 🚢 Added CRUD for ticket endpoint

* :tag: update get customer module

* :tag: update get customer module

* Minor bug fixes

* Changed response for ticket update

* 👕 Fix lint issue

* Alphabetically ordered all options

* 🐛 Fixed build issue

* 🐛 Fixed Server.ts build issue, rebased from master

*  Fix node issues

*  Fix more issues

*  Fixed all operations with the standard convention

* 👕 Fix lint

* Fix reviewed changes

* update border color

*  minor fixes

* minor fixes

* Added fallback when port in use

*  Minor Fixes

*  Hide addtional paramerts when return all is active

*  Fix issues with Tickets

*  Fix issues with Rmm

*  Fix issues with Customer

* 👕 Fix lint

*  Fix issues with Contact

* 👕 Fixed formatting issue

*  Return 404 in ID not found

* 👕 Fixed formatting issue

*  Improvements

*  Improvements

*  Improvements

*  Add credentials verification

*  Improvements

*  Improvements

*  Additional improvements

Co-authored-by: Jan Oberhauser <jan.oberhauser@gmail.com>
Co-authored-by: ricardo <ricardoespinoza105@gmail.com>
This commit is contained in:
Anuj Kapoor
2022-01-07 22:49:24 +05:30
committed by GitHub
parent 57016624b8
commit 214dd5061e
78 changed files with 2915 additions and 0 deletions

View File

@@ -0,0 +1,137 @@
import {
TicketProperties,
} from '../../Interfaces';
export const ticketUpdateDescription: TicketProperties = [
{
displayName: 'Ticket ID',
name: 'ticketId',
type: 'string',
required: true,
displayOptions: {
show: {
resource: [
'ticket',
],
operation: [
'update',
],
},
},
default: '',
},
{
displayName: 'Update Fields',
name: 'updateFields',
type: 'collection',
placeholder: 'Add Field',
displayOptions: {
show: {
resource: [
'ticket',
],
operation: [
'update',
],
},
},
default: {},
options: [
{
displayName: 'Asset ID',
name: 'assetId',
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',
type: 'string',
default: '',
},
{
displayName: 'Due Date',
name: 'dueDate',
type: 'dateTime',
default: '',
},
{
displayName: 'Issue Type',
name: 'issueType',
type: 'options',
options: [
{
name: 'Contract Work',
value: 'Contract Work',
},
{
name: 'Network Project',
value: 'Network Project',
},
{
name: 'Other',
value: 'Other',
},
{
name: 'Regular Maintenance',
value: 'Regular Maintenance',
},
{
name: 'Remote Support',
value: 'Remote Support',
},
],
default: '',
},
{
displayName: 'Status',
name: 'status',
type: 'options',
options: [
{
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',
},
{
name: 'Waiting on Customer',
value: 'Waiting on Customer',
},
],
default: 'New',
},
{
displayName: 'Subject',
name: 'subject',
type: 'string',
default: '',
},
],
},
];

View File

@@ -0,0 +1,45 @@
import {
IExecuteFunctions,
} from 'n8n-core';
import {
IDataObject,
INodeExecutionData,
NodeOperationError,
} from 'n8n-workflow';
import {
apiRequest,
} from '../../../transport';
export async function updateTicket(this: IExecuteFunctions, index: number): Promise<INodeExecutionData[]> {
const id = this.getNodeParameter('ticketId', index) as IDataObject;
const { assetId, customerId, dueDate, issueType, status, subject, ticketType, contactId } = this.getNodeParameter('updateFields', index) as IDataObject;
const qs = {} as IDataObject;
const requestMethod = 'PUT';
const endpoint = `tickets/${id}`;
let body = {} as IDataObject;
body = {
...(assetId && { asset_id: assetId }),
...(customerId && { customer_id: customerId }),
...(dueDate && { due_date: dueDate }),
...(issueType && { problem_type: issueType }),
...(status && { status }),
...(subject && { subject }),
...(ticketType && { ticket_type: ticketType }),
...(contactId && { contact_id: contactId }),
};
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);
return this.helpers.returnJsonArray(responseData.ticket);
}

View File

@@ -0,0 +1,7 @@
import { updateTicket as execute } from './execute';
import { ticketUpdateDescription as description } from './description';
export {
description,
execute,
};