✨ 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:
@@ -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: '',
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
@@ -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);
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
import { updateTicket as execute } from './execute';
|
||||
import { ticketUpdateDescription as description } from './description';
|
||||
|
||||
export {
|
||||
description,
|
||||
execute,
|
||||
};
|
||||
Reference in New Issue
Block a user