From fd7417d8b0aeff8c48b5752238bf96bd1be42edb Mon Sep 17 00:00:00 2001 From: Don Bowman Date: Mon, 11 Nov 2024 19:41:50 -0500 Subject: [PATCH] feat: add get person by email to Copper Copper 'Person' is more conveniently fetched by email (a unique key) in most workflows. Add a getPersonByEmail via https://developer.copper.com/people/fetch-a-person-by-email.html --- .../nodes-base/nodes/Copper/Copper.node.ts | 17 ++++++++++++++ .../Copper/descriptions/PersonDescription.ts | 23 +++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/packages/nodes-base/nodes/Copper/Copper.node.ts b/packages/nodes-base/nodes/Copper/Copper.node.ts index 05274dd453..70337c1f76 100644 --- a/packages/nodes-base/nodes/Copper/Copper.node.ts +++ b/packages/nodes-base/nodes/Copper/Copper.node.ts @@ -422,6 +422,23 @@ export class Copper implements INodeType { const personId = this.getNodeParameter('personId', i); responseData = await copperApiRequest.call(this, 'GET', `/people/${personId}`); + } else if (operation === 'getByEmail') { + // ---------------------------------------- + // person: getByEmail + // ---------------------------------------- + + // https://developer.copper.com/people/fetch-a-person-by-email.html + + const body: IDataObject = { + email: this.getNodeParameter('personEmail', i), + }; + + responseData = await copperApiRequest.call( + this, + 'POST', + '/people/fetch_by_email', + body, + ); } else if (operation === 'getAll') { // ---------------------------------------- // person: getAll diff --git a/packages/nodes-base/nodes/Copper/descriptions/PersonDescription.ts b/packages/nodes-base/nodes/Copper/descriptions/PersonDescription.ts index 0206666f8d..063ae9a3da 100644 --- a/packages/nodes-base/nodes/Copper/descriptions/PersonDescription.ts +++ b/packages/nodes-base/nodes/Copper/descriptions/PersonDescription.ts @@ -33,6 +33,11 @@ export const personOperations: INodeProperties[] = [ value: 'get', action: 'Get a person', }, + { + name: 'GetByEmail', + value: 'getByEmail', + action: 'Get a person by email', + }, { name: 'Get Many', value: 'getAll', @@ -134,6 +139,24 @@ export const personFields: INodeProperties[] = [ }, }, + // ---------------------------------------- + // person: getByEmail + // ---------------------------------------- + { + displayName: 'Person Email', + name: 'personEmail', + description: 'Email of the person to retrieve', + type: 'string', + required: true, + default: '', + displayOptions: { + show: { + resource: ['person'], + operation: ['getByEmail'], + }, + }, + }, + // ---------------------------------------- // person: getAll // ----------------------------------------