From b4394ec122bcbd47fb4b475f5b797ce8754e96f0 Mon Sep 17 00:00:00 2001 From: trojanh Date: Fri, 31 Jan 2020 18:54:42 +0530 Subject: [PATCH] Add User update API --- .../nodes-base/nodes/Harvest/Harvest.node.ts | 14 ++ .../nodes/Harvest/UserDescription.ts | 157 ++++++++++++++++++ 2 files changed, 171 insertions(+) diff --git a/packages/nodes-base/nodes/Harvest/Harvest.node.ts b/packages/nodes-base/nodes/Harvest/Harvest.node.ts index 2e604ad4b..fc9dc707d 100644 --- a/packages/nodes-base/nodes/Harvest/Harvest.node.ts +++ b/packages/nodes-base/nodes/Harvest/Harvest.node.ts @@ -408,6 +408,20 @@ export class Harvest implements INodeType { const responseData = await harvestApiRequest.call(this, requestMethod, qs, endpoint, body); returnData.push(responseData); + } else if (operation === 'update') { + // ---------------------------------- + // createByDuration + // ---------------------------------- + + requestMethod = 'POST'; + endpoint = resource; + + const additionalFields = this.getNodeParameter('updateFields', i) as IDataObject; + Object.assign(body, additionalFields); + + const responseData = await harvestApiRequest.call(this, requestMethod, qs, endpoint, body); + returnData.push(responseData); + } else if (operation === 'delete') { // ---------------------------------- // delete diff --git a/packages/nodes-base/nodes/Harvest/UserDescription.ts b/packages/nodes-base/nodes/Harvest/UserDescription.ts index d4f445f2d..86728f950 100644 --- a/packages/nodes-base/nodes/Harvest/UserDescription.ts +++ b/packages/nodes-base/nodes/Harvest/UserDescription.ts @@ -33,6 +33,11 @@ export const userOperations = [ value: 'create', description: `Create a user`, }, + { + name: 'Update', + value: 'update', + description: `Update a user`, + }, { name: 'Delete', value: 'delete', @@ -330,4 +335,156 @@ export const userFields = [ ], }, + +/* -------------------------------------------------------------------------- */ +/* user:update */ +/* -------------------------------------------------------------------------- */ +{ + displayName: 'Time Entry Id', + name: 'id', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'update', + ], + resource, + }, + }, + description: 'The ID of the time entry to update.', +}, +{ + displayName: 'Update Fields', + name: 'updateFields', + type: 'collection', + placeholder: 'Add Field', + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'timeEntry', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'First Name', + name: 'first_name', + type: 'string', + default: '', + description: 'The user first name' + }, + { + displayName: 'Last Name', + name: 'last_name', + type: 'string', + default: '', + description: 'The user last name' + }, + { + displayName: 'Email', + name: 'email', + type: 'string', + default: '', + description: 'The user email' + }, + { + displayName: 'Timezone', + name: 'timezone', + type: 'string', + default: '', + description: 'The user’s timezone. Defaults to the company’s timezone. See a list of supported time zones.' + }, + { + displayName: 'Has Access To All Future Projects', + name: 'has_access_to_all_future_projects', + type: 'string', + default: '', + description: 'Whether the user should be automatically added to future projects. Defaults to false.' + }, + { + displayName: 'Is Contractor', + name: 'is_contractor', + type: 'string', + default: '', + description: 'Whether the user is a contractor or an employee. Defaults to false.' + }, + { + displayName: 'Is Admin', + name: 'is_admin', + type: 'string', + default: '', + description: 'Whether the user has Admin permissions. Defaults to false.' + }, + { + displayName: 'Is Project Manager', + name: 'is_project_manager', + type: 'string', + default: '', + description: 'Whether the user has Project Manager permissions. Defaults to false.' + }, + { + displayName: 'Can See Rates', + name: 'can_see_rates', + type: 'string', + default: '', + description: 'Whether the user can see billable rates on projects. Only applicable to Project Managers. Defaults to false.' + }, + { + displayName: 'Can Create Projects', + name: 'can_create_projects', + type: 'string', + default: '', + description: 'Whether the user can create projects. Only applicable to Project Managers. Defaults to false.' + }, + { + displayName: 'Can Create Invoices', + name: 'can_create_invoices', + type: 'string', + default: '', + description: 'Whether the user can create invoices. Only applicable to Project Managers. Defaults to false.' + }, + { + displayName: 'Is Active', + name: 'is_active', + type: 'string', + default: '', + description: 'Whether the user is active or archived. Defaults to true.' + }, + { + displayName: 'Weekly Capacity', + name: 'weekly_capacity', + type: 'string', + default: '', + description: 'The number of hours per week this person is available to work in seconds. Defaults to 126000 seconds (35 hours).' + }, + { + displayName: 'Default Hourly Rate', + name: 'default_hourly_rate', + type: 'string', + default: '', + description: 'The billable rate to use for this user when they are added to a project. Defaults to 0.' + }, + { + displayName: 'Cost Rate', + name: 'cost_rate', + type: 'string', + default: '', + description: 'The cost rate to use for this user when calculating a project’s costs vs billable amount. Defaults to 0.' + }, + { + displayName: 'Roles', + name: 'roles', + type: 'string', + default: '', + description: 'The role names assigned to this person.' + }, + ], +}, + ] as INodeProperties[];