n8n-nodes-tanss-api
Version:
Nodes für das Tanss Ticketsystem
217 lines • 11.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.TanssPCs = void 0;
const n8n_workflow_1 = require("n8n-workflow");
class TanssPCs {
constructor() {
this.description = {
displayName: 'TANSS PCs',
name: 'tanssPCs',
icon: 'file:tanss.svg',
group: ['transform'],
version: 1,
description: 'Handles PC operations in TANSS API',
defaults: {
name: 'TANSS PCs',
},
inputs: ['main'],
outputs: ['main'],
credentials: [
{
name: 'tanssApi',
required: true,
},
],
properties: [
{
displayName: 'Operation',
name: 'operation',
type: 'options',
noDataExpression: true,
options: [
{
name: 'Get PC by ID',
value: 'getPcById',
description: 'Fetches a PC or server by a given ID',
action: 'Fetches a PC by ID',
},
{
name: 'Update PC',
value: 'updatePc',
description: 'Updates a PC or server',
action: 'Updates a PC',
},
{
name: 'Create PC',
value: 'createPc',
description: 'Creates a new PC or server',
action: 'Creates a PC',
},
{
name: 'Delete PC',
value: 'deletePc',
description: 'Deletes a PC or server',
action: 'Deletes a PC',
},
],
default: 'getPcById',
},
{
displayName: 'API Token',
name: 'apiToken',
type: 'string',
required: true,
typeOptions: {
password: true,
},
default: '',
description: 'Enter the API token for the TANSS API',
},
{
displayName: 'PC ID',
name: 'pcId',
type: 'number',
displayOptions: {
show: {
operation: ['getPcById', 'updatePc', 'deletePc'],
},
},
default: 0,
description: 'ID of the PC or server',
},
{
displayName: 'PC Data',
name: 'pcData',
type: 'collection',
displayOptions: {
show: {
operation: ['updatePc', 'createPc'],
},
},
default: {},
placeholder: 'Add Field',
options: [
{ displayName: 'Inventory Number', name: 'inventoryNumber', type: 'string', default: '' },
{ displayName: 'Active', name: 'active', type: 'boolean', default: false },
{ displayName: 'Company ID', name: 'companyId', type: 'number', default: 0 },
{ displayName: 'Name', name: 'name', type: 'string', default: '' },
{ displayName: 'Service Technician ID', name: 'serviceTechnicianId', type: 'number', default: 0 },
{ displayName: 'Employee ID', name: 'employeeId', type: 'number', default: 0 },
{ displayName: 'Date', name: 'date', type: 'number', default: 0 },
{ displayName: 'Location', name: 'location', type: 'string', default: '' },
{ displayName: 'Manufacturer ID', name: 'manufacturerId', type: 'number', default: 0 },
{ displayName: 'Model', name: 'model', type: 'string', default: '' },
{ displayName: 'Serial Number', name: 'serialNumber', type: 'string', default: '' },
{ displayName: 'OS ID', name: 'osId', type: 'number', default: 0 },
{ displayName: 'Software', name: 'software', type: 'string', default: '' },
{ displayName: 'Remark', name: 'remark', type: 'string', default: '' },
{ displayName: 'Show Remark', name: 'showRemark', type: 'boolean', default: false },
{ displayName: 'Mainboard Manufacturer ID', name: 'mainboardManufacturerId', type: 'number', default: 0 },
{ displayName: 'Mainboard Manufacturer Revision', name: 'mainboardManufacturerRevision', type: 'string', default: '' },
{ displayName: 'Mainboard Serial Number', name: 'mainboardSerialNumber', type: 'string', default: '' },
{ displayName: 'BIOS', name: 'bios', type: 'string', default: '' },
{ displayName: 'BIOS Release', name: 'biosRelease', type: 'string', default: '' },
{ displayName: 'CPU Manufacturer ID', name: 'cpuManufacturerId', type: 'number', default: 0 },
{ displayName: 'CPU Type ID', name: 'cpuTypeId', type: 'number', default: 0 },
{ displayName: 'CPU Frequency', name: 'cpuFrequency', type: 'number', default: 0 },
{ displayName: 'CPU Number', name: 'cpuNumber', type: 'number', default: 0 },
{ displayName: 'Mouse Serial Number', name: 'mouseSerialNumber', type: 'string', default: '' },
{ displayName: 'Keyboard Serial Number', name: 'keyboardSerialNumber', type: 'string', default: '' },
{ displayName: 'Server', name: 'server', type: 'boolean', default: false },
{ displayName: 'Internal Remark', name: 'internalRemark', type: 'string', default: '' },
{ displayName: 'Billing Number', name: 'billingNumber', type: 'string', default: '' },
{ displayName: 'Article Number', name: 'articleNumber', type: 'string', default: '' },
{ displayName: 'Manufacturer Number', name: 'manufacturerNumber', type: 'string', default: '' },
{ displayName: 'Host ID', name: 'hostId', type: 'number', default: 0 },
{ displayName: 'Purchase Price', name: 'purchasePrice', type: 'number', default: 0 },
{ displayName: 'Selling Price', name: 'sellingPrice', type: 'number', default: 0 },
{
displayName: 'Ownage Type',
name: 'ownageType',
type: 'options',
options: [
{ name: 'Own', value: 'OWN' },
{ name: 'Foreign', value: 'FOREIGN' },
{ name: 'Own Rent', value: 'OWN_RENT' },
{ name: 'Foreign Rent', value: 'FOREIGN_RENT' },
],
default: 'OWN',
},
{ displayName: 'Storage ID', name: 'storageId', type: 'number', default: 0 },
{ displayName: 'TeamViewer ID', name: 'teamviewerId', type: 'string', default: '' },
{ displayName: 'TeamViewer Password', name: 'teamviewerPassword', type: 'string', default: '', typeOptions: { password: true } },
{ displayName: 'AnyDesk ID', name: 'anydeskId', type: 'string', default: '' },
{ displayName: 'AnyDesk Password', name: 'anydeskPassword', type: 'string', default: '', typeOptions: { password: true } },
{ displayName: 'Reserved RAM', name: 'reservedRam', type: 'number', default: 0 },
{ displayName: 'Reserved Hard Disk', name: 'reservedHardDisk', type: 'number', default: 0 },
{ displayName: 'Reserved CPU', name: 'reservedCpu', type: 'number', default: 0 },
{ displayName: 'Description', name: 'description', type: 'string', default: '' },
],
},
],
};
}
async execute() {
const items = this.getInputData();
const returnData = [];
const credentials = await this.getCredentials('tanssApi');
if (!credentials) {
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'No credentials returned!');
}
for (let i = 0; i < items.length; i++) {
const operation = this.getNodeParameter('operation', i);
const apiToken = this.getNodeParameter('apiToken', i, '');
const pcId = this.getNodeParameter('pcId', i, 0);
let pcData = this.getNodeParameter('pcData', i, {});
let url;
let requestOptions = {
method: 'GET',
headers: {
apiToken,
'Content-Type': 'application/json',
},
json: true,
url: '',
};
switch (operation) {
case 'getPcById':
url = `${credentials.baseURL}/backend/api/v1/pcs/${pcId}`;
requestOptions.method = 'GET';
break;
case 'updatePc':
url = `${credentials.baseURL}/backend/api/v1/pcs/${pcId}`;
if (Object.keys(pcData).length === 0) {
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'No data provided for updating the PC.');
}
requestOptions.method = 'PUT';
requestOptions.body = pcData;
break;
case 'createPc':
url = `${credentials.baseURL}/backend/api/v1/pcs`;
if (Object.keys(pcData).length === 0) {
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'No data provided for creating the PC.');
}
requestOptions.method = 'POST';
requestOptions.body = pcData;
break;
case 'deletePc':
url = `${credentials.baseURL}/backend/api/v1/pcs/${pcId}`;
requestOptions.method = 'DELETE';
break;
default:
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `The operation "${operation}" is not recognized.`);
}
requestOptions.url = url;
try {
const responseData = await this.helpers.request(requestOptions);
returnData.push({ json: responseData });
}
catch (error) {
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Failed to execute ${operation}: ${error.message}`);
}
}
return [returnData];
}
}
exports.TanssPCs = TanssPCs;
//# sourceMappingURL=TanssPCs.node.js.map