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[];