From a1fed27229a15e00ecd3a133c7a728bd9cc45245 Mon Sep 17 00:00:00 2001 From: quansenB Date: Thu, 24 Oct 2019 20:15:57 +0200 Subject: [PATCH 01/43] add CRUD deal descriptions --- packages/editor-ui/jsnon cop passte | 1 + packages/editor-ui/package.json | 4 +- .../ActiveCampaign/ActiveCampaign.node.ts | 496 +++++++++++++++++- 3 files changed, 498 insertions(+), 3 deletions(-) create mode 100644 packages/editor-ui/jsnon cop passte diff --git a/packages/editor-ui/jsnon cop passte b/packages/editor-ui/jsnon cop passte new file mode 100644 index 0000000000..dbfd27f67f --- /dev/null +++ b/packages/editor-ui/jsnon cop passte @@ -0,0 +1 @@ +//VUE_APP_URL_BASE_API=http://localhost:5678/ \ No newline at end of file diff --git a/packages/editor-ui/package.json b/packages/editor-ui/package.json index 7047295fba..82534d8a87 100644 --- a/packages/editor-ui/package.json +++ b/packages/editor-ui/package.json @@ -17,7 +17,7 @@ "build": "vue-cli-service build", "dev": "npm run serve", "lint": "vue-cli-service lint", - "serve": "VUE_APP_URL_BASE_API=http://localhost:5678/ vue-cli-service serve", + "serve": "vue-cli-service serve", "test": "npm run test:unit", "tslint": "tslint -p tsconfig.json -c tslint.json", "test:e2e": "vue-cli-service test:e2e", @@ -78,4 +78,4 @@ "vue-typed-mixins": "^0.1.0", "vuex": "^3.1.1" } -} +} \ No newline at end of file diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts index e6efe97457..d4fb4edcac 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts @@ -59,6 +59,10 @@ export class ActiveCampaign implements INodeType { } ], properties: [ + + // ---------------------------------- + // resources + // ---------------------------------- { displayName: 'Resource', name: 'resource', @@ -68,6 +72,10 @@ export class ActiveCampaign implements INodeType { name: 'Contact', value: 'contact', }, + { + name: 'Deal', + value: 'deal', + } ], default: 'contact', description: 'The resource to operate on.', @@ -120,6 +128,48 @@ export class ActiveCampaign implements INodeType { description: 'The operation to perform.', }, + { + displayName: 'Operation', + name: 'operation', + type: 'options', + displayOptions: { + show: { + resource: [ + 'deal', + ], + }, + }, + options: [ + { + name: 'Create', + value: 'create', + description: 'Create a deal', + }, + { + name: 'Delete', + value: 'delete', + description: 'Delete a deal', + }, + { + name: 'Get', + value: 'get', + description: 'Get data of a deal', + }, + { + name: 'Get All', + value: 'getAll', + description: 'Get data of all deals', + }, + { + name: 'Update', + value: 'update', + description: 'Update a deal', + }, + ], + default: 'create', + description: 'The operation to perform.', + }, + // ---------------------------------- @@ -261,7 +311,7 @@ export class ActiveCampaign implements INodeType { }, // ---------------------------------- - // person:get + // contact:get // ---------------------------------- { displayName: 'Contact ID', @@ -429,7 +479,451 @@ export class ActiveCampaign implements INodeType { }, ], }, + // ---------------------------------- + // deal + // ---------------------------------- + // ---------------------------------- + // deal:create + // ---------------------------------- + { + displayName: 'Title', + name: 'title', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The title of the deal', + }, + { + displayName: 'Description', + name: 'description', + type: 'string', + default: '', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The description of the deal', + }, + { + displayName: 'Deal ID', + name: 'dealId', + type: 'number', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The ID of the deal', + }, + { + displayName: 'Deal value', + name: 'dealValue', + type: 'number', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The value of the deal in cents', + }, + { + displayName: 'Currency', + name: 'currency', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The currency of the deal in 3-character ISO format', + }, + { + displayName: 'Deal group ID', + name: 'dealGroup', + type: 'string', + default: '', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The group ID of the deal', + }, + { + displayName: 'Deal stage ID', + name: 'dealStage', + type: 'string', + default: '', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The stage ID of the deal', + }, + { + displayName: 'Deal owner ID', + name: 'dealOwner', + type: 'string', + default: '', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The owner ID of the deal', + }, + { + displayName: 'Deal percentage', + name: 'dealPercentage', + type: 'number', + default: '', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The percentage of the deal', + }, + { + displayName: 'Deal status', + name: 'dealStatus', + type: 'number', + default: '', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The status of the deal', + }, + + // ---------------------------------- + // deal:delete + // ---------------------------------- + { + displayName: 'Deal ID', + name: 'dealId', + type: 'number', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'delete', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The ID of the deal', + }, + + // ---------------------------------- + // deal:get + // ---------------------------------- + { + displayName: 'Deal ID', + name: 'dealId', + type: 'number', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'get', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The ID of the deal', + }, + + // ---------------------------------- + // deal:getAll + // ---------------------------------- + { + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', + displayOptions: { + show: { + operation: [ + 'getAll', + ], + resource: [ + 'deal', + ], + }, + }, + default: false, + description: 'If all results should be returned or only up to a given limit.', + }, + { + displayName: 'Limit', + name: 'limit', + type: 'number', + displayOptions: { + show: { + operation: [ + 'getAll', + ], + resource: [ + 'deal', + ], + returnAll: [ + false, + ], + }, + }, + typeOptions: { + minValue: 1, + maxValue: 500, + }, + default: 100, + description: 'How many results to return.', + }, + + // ---------------------------------- + // deal:update + // ---------------------------------- + { + displayName: 'Title', + name: 'title', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The title of the deal', + }, + { + displayName: 'Description', + name: 'description', + type: 'string', + default: '', + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The description of the deal', + }, + { + displayName: 'Deal ID', + name: 'dealId', + type: 'number', + default: '', + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The ID of the deal', + }, + { + displayName: 'Deal value', + name: 'dealValue', + type: 'number', + default: '', + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The value of the deal in cents', + }, + { + displayName: 'Currency', + name: 'currency', + type: 'string', + default: '', + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The currency of the deal in 3-character ISO format', + }, + { + displayName: 'Deal group ID', + name: 'dealGroup', + type: 'string', + default: '', + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The group ID of the deal', + }, + { + displayName: 'Deal stage ID', + name: 'dealStage', + type: 'string', + default: '', + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The stage ID of the deal', + }, + { + displayName: 'Deal owner ID', + name: 'dealOwner', + type: 'string', + default: '', + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The owner ID of the deal', + }, + { + displayName: 'Deal percentage', + name: 'dealPercentage', + type: 'number', + default: '', + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The percentage of the deal', + }, + { + displayName: 'Deal status', + name: 'dealStatus', + type: 'number', + default: '', + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The status of the deal', + }, ], }; From 445384a590d79f0edd1118b462686d14106a6f2f Mon Sep 17 00:00:00 2001 From: quansenB Date: Thu, 24 Oct 2019 20:21:28 +0200 Subject: [PATCH 02/43] deal-note-description --- .../ActiveCampaign/ActiveCampaign.node.ts | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts index d4fb4edcac..433bbc7542 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts @@ -165,6 +165,16 @@ export class ActiveCampaign implements INodeType { value: 'update', description: 'Update a deal', }, + { + name: 'Create Note', + value: 'createNote', + description: 'Create a deal note', + }, + { + name: 'Update deal note', + value: 'updateNote', + description: 'Update a deal note', + }, ], default: 'create', description: 'The operation to perform.', @@ -924,6 +934,85 @@ export class ActiveCampaign implements INodeType { }, description: 'The status of the deal', }, + + // ---------------------------------- + // dealNote:create + // ---------------------------------- + { + displayName: 'Deal ID', + name: 'dealId', + type: 'number', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'createNote', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The ID of the deal note', + }, + { + displayName: 'Deal Note', + name: 'dealNote', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'createNote', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The content of the deal note', + }, + + // ---------------------------------- + // dealNote:update + // ---------------------------------- + { + displayName: 'Deal ID', + name: 'dealId', + type: 'number', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'updateNote', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The ID of the deal note', + }, + { + displayName: 'Deal Note', + name: 'dealNote', + type: 'string', + default: '', + displayOptions: { + show: { + operation: [ + 'updateNote', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The content of the deal note', + }, ], }; From c8bd2d538d3136f3bbbf4d5f03243b3fb2b34d7f Mon Sep 17 00:00:00 2001 From: quansenB Date: Thu, 24 Oct 2019 20:29:45 +0200 Subject: [PATCH 03/43] rename misspelled file --- packages/editor-ui/{jsnon cop passte => package json debug} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename packages/editor-ui/{jsnon cop passte => package json debug} (100%) diff --git a/packages/editor-ui/jsnon cop passte b/packages/editor-ui/package json debug similarity index 100% rename from packages/editor-ui/jsnon cop passte rename to packages/editor-ui/package json debug From cd28bbcbdc0ff472f7547eeb44b40814d318d11f Mon Sep 17 00:00:00 2001 From: quansenB Date: Thu, 24 Oct 2019 20:50:57 +0200 Subject: [PATCH 04/43] rename deal id --- .../nodes/ActiveCampaign/ActiveCampaign.node.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts index 433bbc7542..b4dcbf57df 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts @@ -532,8 +532,8 @@ export class ActiveCampaign implements INodeType { description: 'The description of the deal', }, { - displayName: 'Deal ID', - name: 'dealId', + displayName: 'Deal\'s contact ID', + name: 'contactId', type: 'number', default: '', required: true, @@ -547,7 +547,7 @@ export class ActiveCampaign implements INodeType { ], }, }, - description: 'The ID of the deal', + description: 'The ID of the deal\'s contact', }, { displayName: 'Deal value', @@ -799,8 +799,8 @@ export class ActiveCampaign implements INodeType { description: 'The description of the deal', }, { - displayName: 'Deal ID', - name: 'dealId', + displayName: 'Deal\'s contact ID', + name: 'contactId', type: 'number', default: '', displayOptions: { @@ -813,7 +813,7 @@ export class ActiveCampaign implements INodeType { ], }, }, - description: 'The ID of the deal', + description: 'The ID of the deal\'s contact', }, { displayName: 'Deal value', @@ -974,7 +974,7 @@ export class ActiveCampaign implements INodeType { }, description: 'The content of the deal note', }, - + // ---------------------------------- // dealNote:update // ---------------------------------- From e896c1c319b1b92b7215e0b9d88cef73b8c1fa08 Mon Sep 17 00:00:00 2001 From: quansenB Date: Fri, 25 Oct 2019 02:50:03 +0200 Subject: [PATCH 05/43] rorder resources --- .../ActiveCampaign/ActiveCampaign.node.ts | 361 +++++++++--------- 1 file changed, 182 insertions(+), 179 deletions(-) diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts index b4dcbf57df..4cd415c1f0 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts @@ -297,96 +297,7 @@ export class ActiveCampaign implements INodeType { }, ], }, - - // ---------------------------------- - // contact:delete - // ---------------------------------- - { - displayName: 'Contact ID', - name: 'contactId', - type: 'number', - displayOptions: { - show: { - operation: [ - 'delete', - ], - resource: [ - 'contact', - ], - }, - }, - default: 0, - required: true, - description: 'ID of the contact to delete.', - }, - - // ---------------------------------- - // contact:get - // ---------------------------------- - { - displayName: 'Contact ID', - name: 'contactId', - type: 'number', - displayOptions: { - show: { - operation: [ - 'get', - ], - resource: [ - 'contact', - ], - }, - }, - default: 0, - required: true, - description: 'ID of the contact to get.', - }, - - // ---------------------------------- - // contact:getAll - // ---------------------------------- - { - displayName: 'Return All', - name: 'returnAll', - type: 'boolean', - displayOptions: { - show: { - operation: [ - 'getAll', - ], - resource: [ - 'contact', - ], - }, - }, - default: false, - description: 'If all results should be returned or only up to a given limit.', - }, - { - displayName: 'Limit', - name: 'limit', - type: 'number', - displayOptions: { - show: { - operation: [ - 'getAll', - ], - resource: [ - 'contact', - ], - returnAll: [ - false, - ], - }, - }, - typeOptions: { - minValue: 1, - maxValue: 500, - }, - default: 100, - description: 'How many results to return.', - }, - + // ---------------------------------- // contact:update // ---------------------------------- @@ -489,6 +400,97 @@ export class ActiveCampaign implements INodeType { }, ], }, + + // ---------------------------------- + // contact:delete + // ---------------------------------- + { + displayName: 'Contact ID', + name: 'contactId', + type: 'number', + displayOptions: { + show: { + operation: [ + 'delete', + ], + resource: [ + 'contact', + ], + }, + }, + default: 0, + required: true, + description: 'ID of the contact to delete.', + }, + + // ---------------------------------- + // contact:get + // ---------------------------------- + { + displayName: 'Contact ID', + name: 'contactId', + type: 'number', + displayOptions: { + show: { + operation: [ + 'get', + ], + resource: [ + 'contact', + ], + }, + }, + default: 0, + required: true, + description: 'ID of the contact to get.', + }, + + // ---------------------------------- + // contact:getAll + // ---------------------------------- + { + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', + displayOptions: { + show: { + operation: [ + 'getAll', + ], + resource: [ + 'contact', + ], + }, + }, + default: false, + description: 'If all results should be returned or only up to a given limit.', + }, + { + displayName: 'Limit', + name: 'limit', + type: 'number', + displayOptions: { + show: { + operation: [ + 'getAll', + ], + resource: [ + 'contact', + ], + returnAll: [ + false, + ], + }, + }, + typeOptions: { + minValue: 1, + maxValue: 500, + }, + default: 100, + description: 'How many results to return.', + }, + + // ---------------------------------- // deal // ---------------------------------- @@ -671,95 +673,6 @@ export class ActiveCampaign implements INodeType { description: 'The status of the deal', }, - // ---------------------------------- - // deal:delete - // ---------------------------------- - { - displayName: 'Deal ID', - name: 'dealId', - type: 'number', - default: '', - required: true, - displayOptions: { - show: { - operation: [ - 'delete', - ], - resource: [ - 'deal', - ], - }, - }, - description: 'The ID of the deal', - }, - - // ---------------------------------- - // deal:get - // ---------------------------------- - { - displayName: 'Deal ID', - name: 'dealId', - type: 'number', - default: '', - required: true, - displayOptions: { - show: { - operation: [ - 'get', - ], - resource: [ - 'deal', - ], - }, - }, - description: 'The ID of the deal', - }, - - // ---------------------------------- - // deal:getAll - // ---------------------------------- - { - displayName: 'Return All', - name: 'returnAll', - type: 'boolean', - displayOptions: { - show: { - operation: [ - 'getAll', - ], - resource: [ - 'deal', - ], - }, - }, - default: false, - description: 'If all results should be returned or only up to a given limit.', - }, - { - displayName: 'Limit', - name: 'limit', - type: 'number', - displayOptions: { - show: { - operation: [ - 'getAll', - ], - resource: [ - 'deal', - ], - returnAll: [ - false, - ], - }, - }, - typeOptions: { - minValue: 1, - maxValue: 500, - }, - default: 100, - description: 'How many results to return.', - }, - // ---------------------------------- // deal:update // ---------------------------------- @@ -935,6 +848,96 @@ export class ActiveCampaign implements INodeType { description: 'The status of the deal', }, + + // ---------------------------------- + // deal:delete + // ---------------------------------- + { + displayName: 'Deal ID', + name: 'dealId', + type: 'number', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'delete', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The ID of the deal', + }, + + // ---------------------------------- + // deal:get + // ---------------------------------- + { + displayName: 'Deal ID', + name: 'dealId', + type: 'number', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'get', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The ID of the deal', + }, + + // ---------------------------------- + // deal:getAll + // ---------------------------------- + { + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', + displayOptions: { + show: { + operation: [ + 'getAll', + ], + resource: [ + 'deal', + ], + }, + }, + default: false, + description: 'If all results should be returned or only up to a given limit.', + }, + { + displayName: 'Limit', + name: 'limit', + type: 'number', + displayOptions: { + show: { + operation: [ + 'getAll', + ], + resource: [ + 'deal', + ], + returnAll: [ + false, + ], + }, + }, + typeOptions: { + minValue: 1, + maxValue: 500, + }, + default: 100, + description: 'How many results to return.', + }, + // ---------------------------------- // dealNote:create // ---------------------------------- From 683c889a14e7318866a2e3d0fe7a528902826e7e Mon Sep 17 00:00:00 2001 From: quansenB Date: Fri, 25 Oct 2019 14:24:24 +0200 Subject: [PATCH 06/43] set up functionality layout --- .../ActiveCampaign/ActiveCampaign.node.ts | 107 ++++++++++++++---- 1 file changed, 86 insertions(+), 21 deletions(-) diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts index 4cd415c1f0..475f712beb 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts @@ -297,7 +297,7 @@ export class ActiveCampaign implements INodeType { }, ], }, - + // ---------------------------------- // contact:update // ---------------------------------- @@ -672,7 +672,7 @@ export class ActiveCampaign implements INodeType { }, description: 'The status of the deal', }, - + // ---------------------------------- // deal:update // ---------------------------------- @@ -848,7 +848,7 @@ export class ActiveCampaign implements INodeType { description: 'The status of the deal', }, - + // ---------------------------------- // deal:delete // ---------------------------------- @@ -892,7 +892,7 @@ export class ActiveCampaign implements INodeType { }, description: 'The ID of the deal', }, - + // ---------------------------------- // deal:getAll // ---------------------------------- @@ -1120,24 +1120,89 @@ export class ActiveCampaign implements INodeType { addAdditionalFields(body.contact as IDataObject, updateFields); } - } else { - throw new Error(`The resource "${resource}" is not known!`); + } else if (resource === 'deal') { + if (operation === 'create') { + // ---------------------------------- + // deal:create + // ---------------------------------- + + requestMethod = 'POST'; + + dataKey = 'deal'; + body.deal = { + email: this.getNodeParameter('email', i) as string, + } as IDataObject; + const additionalFields = this.getNodeParameter('additionalFields', i) as IDataObject; + addAdditionalFields(body.deal as IDataObject, additionalFields); + + } else if (operation === 'delete') { + // ---------------------------------- + // deal:delete + // ---------------------------------- + + requestMethod = 'DELETE'; + + const dealId = this.getNodeParameter('dealId', i) as number; + endpoint = `/api/3/deals/${dealId}`; + + } else if (operation === 'get') { + // ---------------------------------- + // deal:get + // ---------------------------------- + + requestMethod = 'GET'; + + const dealId = this.getNodeParameter('dealId', i) as number; + endpoint = `/api/3/deals/${dealId}`; + + } else if (operation === 'getAll') { + // ---------------------------------- + // persons:getAll + // ---------------------------------- + + requestMethod = 'GET'; + + returnAll = this.getNodeParameter('returnAll', i) as boolean; + if (returnAll === false) { + qs.limit = this.getNodeParameter('limit', i) as number; + } + + dataKey = 'deals'; + endpoint = `/api/3/deals`; + + } else if (operation === 'update') { + // ---------------------------------- + // deal:update + // ---------------------------------- + + requestMethod = 'PUT'; + + const dealId = this.getNodeParameter('dealId', i) as number; + endpoint = `/api/3/deals/${dealId}`; + + dataKey = 'deal'; + body.deal = {} as IDataObject; + const updateFields = this.getNodeParameter('updateFields', i) as IDataObject; + addAdditionalFields(body.deal as IDataObject, updateFields); + + } else { + throw new Error(`The resource "${resource}" is not known!`); + } + + let responseData; + if (returnAll === true) { + responseData = await activeCampaignApiRequestAllItems.call(this, requestMethod, endpoint, body, qs, dataKey); + } else { + responseData = await activeCampaignApiRequest.call(this, requestMethod, endpoint, body, qs, dataKey); + } + + if (Array.isArray(responseData)) { + returnData.push.apply(returnData, responseData as IDataObject[]); + } else { + returnData.push(responseData as IDataObject); + } } - let responseData; - if (returnAll === true) { - responseData = await activeCampaignApiRequestAllItems.call(this, requestMethod, endpoint, body, qs, dataKey); - } else { - responseData = await activeCampaignApiRequest.call(this, requestMethod, endpoint, body, qs, dataKey); - } - - if (Array.isArray(responseData)) { - returnData.push.apply(returnData, responseData as IDataObject[]); - } else { - returnData.push(responseData as IDataObject); - } + return [this.helpers.returnJsonArray(returnData)]; } - - return [this.helpers.returnJsonArray(returnData)]; } -} From 16e9c41f2793b5bc2e042a9d668b781d8759806d Mon Sep 17 00:00:00 2001 From: quansenB Date: Fri, 25 Oct 2019 14:50:15 +0200 Subject: [PATCH 07/43] fix some small things in node description --- .../ActiveCampaign/ActiveCampaign.node.ts | 53 ++++++++++++------- 1 file changed, 34 insertions(+), 19 deletions(-) diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts index 475f712beb..39042adad0 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts @@ -12,6 +12,7 @@ import { activeCampaignApiRequest, activeCampaignApiRequestAllItems, } from './GenericFunctions'; +import { type } from 'os'; interface CustomProperty { name: string; @@ -500,7 +501,7 @@ export class ActiveCampaign implements INodeType { // ---------------------------------- { displayName: 'Title', - name: 'title', + name: 'dealTitle', type: 'string', default: '', required: true, @@ -518,7 +519,7 @@ export class ActiveCampaign implements INodeType { }, { displayName: 'Description', - name: 'description', + name: 'dealDescription', type: 'string', default: '', displayOptions: { @@ -535,9 +536,9 @@ export class ActiveCampaign implements INodeType { }, { displayName: 'Deal\'s contact ID', - name: 'contactId', + name: 'dealContactId', type: 'number', - default: '', + default: 0, required: true, displayOptions: { show: { @@ -555,7 +556,7 @@ export class ActiveCampaign implements INodeType { displayName: 'Deal value', name: 'dealValue', type: 'number', - default: '', + default: 0, required: true, displayOptions: { show: { @@ -571,7 +572,7 @@ export class ActiveCampaign implements INodeType { }, { displayName: 'Currency', - name: 'currency', + name: 'dealCurrency', type: 'string', default: '', required: true, @@ -642,7 +643,7 @@ export class ActiveCampaign implements INodeType { displayName: 'Deal percentage', name: 'dealPercentage', type: 'number', - default: '', + default: 0, displayOptions: { show: { operation: [ @@ -659,7 +660,7 @@ export class ActiveCampaign implements INodeType { displayName: 'Deal status', name: 'dealStatus', type: 'number', - default: '', + default: 0, displayOptions: { show: { operation: [ @@ -678,7 +679,7 @@ export class ActiveCampaign implements INodeType { // ---------------------------------- { displayName: 'Title', - name: 'title', + name: 'dealTitle', type: 'string', default: '', required: true, @@ -696,7 +697,7 @@ export class ActiveCampaign implements INodeType { }, { displayName: 'Description', - name: 'description', + name: 'dealDescription', type: 'string', default: '', displayOptions: { @@ -713,9 +714,9 @@ export class ActiveCampaign implements INodeType { }, { displayName: 'Deal\'s contact ID', - name: 'contactId', + name: 'dealContactId', type: 'number', - default: '', + default: 0, displayOptions: { show: { operation: [ @@ -732,7 +733,7 @@ export class ActiveCampaign implements INodeType { displayName: 'Deal value', name: 'dealValue', type: 'number', - default: '', + default: 0, displayOptions: { show: { operation: [ @@ -747,7 +748,7 @@ export class ActiveCampaign implements INodeType { }, { displayName: 'Currency', - name: 'currency', + name: 'dealCurrency', type: 'string', default: '', displayOptions: { @@ -817,7 +818,7 @@ export class ActiveCampaign implements INodeType { displayName: 'Deal percentage', name: 'dealPercentage', type: 'number', - default: '', + default: 0, displayOptions: { show: { operation: [ @@ -834,7 +835,7 @@ export class ActiveCampaign implements INodeType { displayName: 'Deal status', name: 'dealStatus', type: 'number', - default: '', + default: 0, displayOptions: { show: { operation: [ @@ -1129,11 +1130,25 @@ export class ActiveCampaign implements INodeType { requestMethod = 'POST'; dataKey = 'deal'; + + let currency = this.getNodeParameter('dealCurrency', i) as string; + if(currency.length !== 3){ + currency = currency.toLowerCase(); + } + body.deal = { - email: this.getNodeParameter('email', i) as string, + title: this.getNodeParameter('title', i) as string, + contact: this.getNodeParameter('contactId', i) as string, + value: this.getNodeParameter('value', i) as number, + currency, } as IDataObject; - const additionalFields = this.getNodeParameter('additionalFields', i) as IDataObject; - addAdditionalFields(body.deal as IDataObject, additionalFields); + + let dealDescription = this.getNodeParameter('description', i) as string; + let dealGroup = this.getNodeParameter('dealGroup', i) as string; + let dealStage = this.getNodeParameter('dealStage', i) as string; + let dealPercentage = this.getNodeParameter('dealPercentage', i) as number; + let dealStatus = this.getNodeParameter('dealStatus', i) as number; + } else if (operation === 'delete') { // ---------------------------------- From 8b7398bf393893cb2d59dd1ac5f9371c7ff3a2f3 Mon Sep 17 00:00:00 2001 From: quansenB Date: Fri, 25 Oct 2019 14:51:46 +0200 Subject: [PATCH 08/43] add dealId to update decription --- .../ActiveCampaign/ActiveCampaign.node.ts | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts index 39042adad0..2842f23b4f 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts @@ -677,6 +677,24 @@ export class ActiveCampaign implements INodeType { // ---------------------------------- // deal:update // ---------------------------------- + { + displayName: 'Deal ID', + name: 'dealId', + type: 'number', + default: 0, + required: true, + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The ID of the deal', + }, { displayName: 'Title', name: 'dealTitle', @@ -857,7 +875,7 @@ export class ActiveCampaign implements INodeType { displayName: 'Deal ID', name: 'dealId', type: 'number', - default: '', + default: 0, required: true, displayOptions: { show: { @@ -879,7 +897,7 @@ export class ActiveCampaign implements INodeType { displayName: 'Deal ID', name: 'dealId', type: 'number', - default: '', + default: 0, required: true, displayOptions: { show: { From f5c585c7be6721e84080f45813cb083a9879e5ef Mon Sep 17 00:00:00 2001 From: quansenB Date: Fri, 25 Oct 2019 15:47:43 +0200 Subject: [PATCH 09/43] add not required fields to body.deal obj --- .../ActiveCampaign/ActiveCampaign.node.ts | 65 ++++++++++++++----- 1 file changed, 49 insertions(+), 16 deletions(-) diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts index 2842f23b4f..b9d28cf884 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts @@ -38,6 +38,17 @@ function addAdditionalFields(body: IDataObject, additionalFields: IDataObject) { } } +/** + * Add one additional field to the body + * + * @param {IDataObject} body The body object to add the field to + * @param {IDataObject} additionalField The field to add + */ +function addAdditionalField(body: IDataObject, additionalField: string | number) { + body.additionalField = additionalField; +} + + export class ActiveCampaign implements INodeType { description: INodeTypeDescription = { displayName: 'ActiveCampaign', @@ -1148,25 +1159,47 @@ export class ActiveCampaign implements INodeType { requestMethod = 'POST'; dataKey = 'deal'; - - let currency = this.getNodeParameter('dealCurrency', i) as string; - if(currency.length !== 3){ - currency = currency.toLowerCase(); - } - + body.deal = { - title: this.getNodeParameter('title', i) as string, - contact: this.getNodeParameter('contactId', i) as string, - value: this.getNodeParameter('value', i) as number, - currency, + title: this.getNodeParameter('dealTitle', i) as string, + contact: this.getNodeParameter('dealContactId', i) as string, + value: this.getNodeParameter('dealValue', i) as number, + currency: '', } as IDataObject; - let dealDescription = this.getNodeParameter('description', i) as string; - let dealGroup = this.getNodeParameter('dealGroup', i) as string; - let dealStage = this.getNodeParameter('dealStage', i) as string; - let dealPercentage = this.getNodeParameter('dealPercentage', i) as number; - let dealStatus = this.getNodeParameter('dealStatus', i) as number; - + let currency= this.getNodeParameter('dealCurrency', i) as string + if (currency.length === 3) { + currency = currency.toLowerCase(); + addAdditionalField(body.deal as IDataObject, currency) + } else { + throw new Error('Currency must be in 3-character ISO format') + } + + let description = this.getNodeParameter('dealDescription', i) as string; + if (description.length !== 0){ + addAdditionalField(body.deal as IDataObject, description) + } + + let group = this.getNodeParameter('dealGroup', i) as string; + if (group.length !== 0){ + addAdditionalField(body.deal as IDataObject, group) + } + + let stage = this.getNodeParameter('dealStage', i) as string; + if (stage.length !== 0){ + addAdditionalField(body.deal as IDataObject, stage) + } + + let percentage = this.getNodeParameter('dealPercentage', i) as number; + if (percentage !== 0){ + addAdditionalField(body.deal as IDataObject, percentage) + } + + let status = this.getNodeParameter('dealStatus', i) as number; + if (status !== 0){ + addAdditionalField(body.deal as IDataObject, status) + } + } else if (operation === 'delete') { // ---------------------------------- From 0034a17b17d8975b12d3b3511693affdc05ced31 Mon Sep 17 00:00:00 2001 From: quansenB Date: Fri, 25 Oct 2019 16:15:01 +0200 Subject: [PATCH 10/43] revert to addition fields design choice --- .../ActiveCampaign/ActiveCampaign.node.ts | 313 ++++++------------ 1 file changed, 103 insertions(+), 210 deletions(-) diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts index b9d28cf884..0af2409e16 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts @@ -528,23 +528,6 @@ export class ActiveCampaign implements INodeType { }, description: 'The title of the deal', }, - { - displayName: 'Description', - name: 'dealDescription', - type: 'string', - default: '', - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'deal', - ], - }, - }, - description: 'The description of the deal', - }, { displayName: 'Deal\'s contact ID', name: 'dealContactId', @@ -600,10 +583,10 @@ export class ActiveCampaign implements INodeType { description: 'The currency of the deal in 3-character ISO format', }, { - displayName: 'Deal group ID', - name: 'dealGroup', - type: 'string', - default: '', + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', displayOptions: { show: { operation: [ @@ -614,75 +597,51 @@ export class ActiveCampaign implements INodeType { ], }, }, - description: 'The group ID of the deal', - }, - { - displayName: 'Deal stage ID', - name: 'dealStage', - type: 'string', - default: '', - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'deal', - ], + default: {}, + options: [ + { + displayName: 'Description', + name: 'dealDescription', + type: 'string', + default: '', + description: 'The description of the deal', }, - }, - description: 'The stage ID of the deal', - }, - { - displayName: 'Deal owner ID', - name: 'dealOwner', - type: 'string', - default: '', - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'deal', - ], + { + displayName: 'Deal group ID', + name: 'dealGroup', + type: 'string', + default: '', + description: 'The group ID of the deal', }, - }, - description: 'The owner ID of the deal', - }, - { - displayName: 'Deal percentage', - name: 'dealPercentage', - type: 'number', - default: 0, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'deal', - ], + { + displayName: 'Deal stage ID', + name: 'dealStage', + type: 'string', + default: '', + description: 'The stage ID of the deal', }, - }, - description: 'The percentage of the deal', - }, - { - displayName: 'Deal status', - name: 'dealStatus', - type: 'number', - default: 0, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'deal', - ], + { + displayName: 'Deal owner ID', + name: 'dealOwner', + type: 'string', + default: '', + description: 'The owner ID of the deal', }, - }, - description: 'The status of the deal', + { + displayName: 'Deal percentage', + name: 'dealPercentage', + type: 'number', + default: 0, + description: 'The percentage of the deal', + }, + { + displayName: 'Deal status', + name: 'dealStatus', + type: 'number', + default: 0, + description: 'The status of the deal', + }, + ] }, // ---------------------------------- @@ -715,7 +674,7 @@ export class ActiveCampaign implements INodeType { displayOptions: { show: { operation: [ - 'update', + 'create', ], resource: [ 'deal', @@ -724,32 +683,16 @@ export class ActiveCampaign implements INodeType { }, description: 'The title of the deal', }, - { - displayName: 'Description', - name: 'dealDescription', - type: 'string', - default: '', - displayOptions: { - show: { - operation: [ - 'update', - ], - resource: [ - 'deal', - ], - }, - }, - description: 'The description of the deal', - }, { displayName: 'Deal\'s contact ID', name: 'dealContactId', type: 'number', default: 0, + required: true, displayOptions: { show: { operation: [ - 'update', + 'create', ], resource: [ 'deal', @@ -763,10 +706,11 @@ export class ActiveCampaign implements INodeType { name: 'dealValue', type: 'number', default: 0, + required: true, displayOptions: { show: { operation: [ - 'update', + 'create', ], resource: [ 'deal', @@ -780,10 +724,11 @@ export class ActiveCampaign implements INodeType { name: 'dealCurrency', type: 'string', default: '', + required: true, displayOptions: { show: { operation: [ - 'update', + 'create', ], resource: [ 'deal', @@ -793,89 +738,65 @@ export class ActiveCampaign implements INodeType { description: 'The currency of the deal in 3-character ISO format', }, { - displayName: 'Deal group ID', - name: 'dealGroup', - type: 'string', - default: '', + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', displayOptions: { show: { operation: [ - 'update', + 'create', ], resource: [ 'deal', ], }, }, - description: 'The group ID of the deal', - }, - { - displayName: 'Deal stage ID', - name: 'dealStage', - type: 'string', - default: '', - displayOptions: { - show: { - operation: [ - 'update', - ], - resource: [ - 'deal', - ], + default: {}, + options: [ + { + displayName: 'Description', + name: 'dealDescription', + type: 'string', + default: '', + description: 'The description of the deal', }, - }, - description: 'The stage ID of the deal', - }, - { - displayName: 'Deal owner ID', - name: 'dealOwner', - type: 'string', - default: '', - displayOptions: { - show: { - operation: [ - 'update', - ], - resource: [ - 'deal', - ], + { + displayName: 'Deal group ID', + name: 'dealGroup', + type: 'string', + default: '', + description: 'The group ID of the deal', }, - }, - description: 'The owner ID of the deal', - }, - { - displayName: 'Deal percentage', - name: 'dealPercentage', - type: 'number', - default: 0, - displayOptions: { - show: { - operation: [ - 'update', - ], - resource: [ - 'deal', - ], + { + displayName: 'Deal stage ID', + name: 'dealStage', + type: 'string', + default: '', + description: 'The stage ID of the deal', }, - }, - description: 'The percentage of the deal', - }, - { - displayName: 'Deal status', - name: 'dealStatus', - type: 'number', - default: 0, - displayOptions: { - show: { - operation: [ - 'update', - ], - resource: [ - 'deal', - ], + { + displayName: 'Deal owner ID', + name: 'dealOwner', + type: 'string', + default: '', + description: 'The owner ID of the deal', }, - }, - description: 'The status of the deal', + { + displayName: 'Deal percentage', + name: 'dealPercentage', + type: 'number', + default: 0, + description: 'The percentage of the deal', + }, + { + displayName: 'Deal status', + name: 'dealStatus', + type: 'number', + default: 0, + description: 'The status of the deal', + }, + ] }, @@ -1159,46 +1080,18 @@ export class ActiveCampaign implements INodeType { requestMethod = 'POST'; dataKey = 'deal'; - + body.deal = { title: this.getNodeParameter('dealTitle', i) as string, contact: this.getNodeParameter('dealContactId', i) as string, value: this.getNodeParameter('dealValue', i) as number, - currency: '', } as IDataObject; - let currency= this.getNodeParameter('dealCurrency', i) as string - if (currency.length === 3) { - currency = currency.toLowerCase(); - addAdditionalField(body.deal as IDataObject, currency) - } else { - throw new Error('Currency must be in 3-character ISO format') - } + let currency = this.getNodeParameter('dealCurrency', i).toString().toLowerCase() as string + addAdditionalField(body.deal as IDataObject, currency) - let description = this.getNodeParameter('dealDescription', i) as string; - if (description.length !== 0){ - addAdditionalField(body.deal as IDataObject, description) - } - - let group = this.getNodeParameter('dealGroup', i) as string; - if (group.length !== 0){ - addAdditionalField(body.deal as IDataObject, group) - } - - let stage = this.getNodeParameter('dealStage', i) as string; - if (stage.length !== 0){ - addAdditionalField(body.deal as IDataObject, stage) - } - - let percentage = this.getNodeParameter('dealPercentage', i) as number; - if (percentage !== 0){ - addAdditionalField(body.deal as IDataObject, percentage) - } - - let status = this.getNodeParameter('dealStatus', i) as number; - if (status !== 0){ - addAdditionalField(body.deal as IDataObject, status) - } + const additionalFields = this.getNodeParameter('additionalFields', i) as IDataObject; + addAdditionalFields(body.deal as IDataObject, additionalFields); } else if (operation === 'delete') { From 4f1a0961392cd652a64080e2bb5f1c55cd038c51 Mon Sep 17 00:00:00 2001 From: quansenB Date: Fri, 25 Oct 2019 16:25:16 +0200 Subject: [PATCH 11/43] refactor deal update to take add field format --- .../ActiveCampaign/ActiveCampaign.node.ts | 147 +++++++----------- 1 file changed, 52 insertions(+), 95 deletions(-) diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts index 0af2409e16..d7f0fec8af 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts @@ -651,8 +651,6 @@ export class ActiveCampaign implements INodeType { displayName: 'Deal ID', name: 'dealId', type: 'number', - default: 0, - required: true, displayOptions: { show: { operation: [ @@ -663,97 +661,56 @@ export class ActiveCampaign implements INodeType { ], }, }, - description: 'The ID of the deal', - }, - { - displayName: 'Title', - name: 'dealTitle', - type: 'string', - default: '', - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'deal', - ], - }, - }, - description: 'The title of the deal', - }, - { - displayName: 'Deal\'s contact ID', - name: 'dealContactId', - type: 'number', default: 0, required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'deal', - ], - }, - }, - description: 'The ID of the deal\'s contact', + description: 'ID of the deal to update.', }, { - displayName: 'Deal value', - name: 'dealValue', - type: 'number', - default: 0, - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'deal', - ], - }, - }, - description: 'The value of the deal in cents', - }, - { - displayName: 'Currency', - name: 'dealCurrency', - type: 'string', - default: '', - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'deal', - ], - }, - }, - description: 'The currency of the deal in 3-character ISO format', - }, - { - displayName: 'Additional Fields', - name: 'additionalFields', + displayName: 'Update Fields', + name: 'updateFields', type: 'collection', + description: 'The fields to update.', placeholder: 'Add Field', displayOptions: { show: { operation: [ - 'create', + 'update', ], resource: [ - 'deal', + 'contact', ], }, }, default: {}, options: [ + { + displayName: 'Title', + name: 'dealTitle', + type: 'string', + default: '', + description: 'The title of the deal', + }, + { + displayName: 'Deal\'s contact ID', + name: 'dealContactId', + type: 'number', + default: 0, + description: 'The ID of the deal\'s contact', + }, + { + displayName: 'Deal value', + name: 'dealValue', + type: 'number', + default: 0, + description: 'The value of the deal in cents', + }, + { + displayName: 'Currency', + name: 'dealCurrency', + type: 'string', + default: '', + description: 'The currency of the deal in 3-character ISO format', + }, { displayName: 'Description', name: 'dealDescription', @@ -798,8 +755,7 @@ export class ActiveCampaign implements INodeType { }, ] }, - - + // ---------------------------------- // deal:delete // ---------------------------------- @@ -1079,6 +1035,8 @@ export class ActiveCampaign implements INodeType { requestMethod = 'POST'; + endpoint = '/api/3/deals'; + dataKey = 'deal'; body.deal = { @@ -1094,6 +1052,21 @@ export class ActiveCampaign implements INodeType { addAdditionalFields(body.deal as IDataObject, additionalFields); + } else if (operation === 'update') { + // ---------------------------------- + // deal:update + // ---------------------------------- + + requestMethod = 'PUT'; + + const dealId = this.getNodeParameter('dealId', i) as number; + endpoint = `/api/3/deals/${dealId}`; + + dataKey = 'deal'; + body.deal = {} as IDataObject; + const updateFields = this.getNodeParameter('updateFields', i) as IDataObject; + addAdditionalFields(body.deal as IDataObject, updateFields); + } else if (operation === 'delete') { // ---------------------------------- // deal:delete @@ -1128,22 +1101,6 @@ export class ActiveCampaign implements INodeType { dataKey = 'deals'; endpoint = `/api/3/deals`; - - } else if (operation === 'update') { - // ---------------------------------- - // deal:update - // ---------------------------------- - - requestMethod = 'PUT'; - - const dealId = this.getNodeParameter('dealId', i) as number; - endpoint = `/api/3/deals/${dealId}`; - - dataKey = 'deal'; - body.deal = {} as IDataObject; - const updateFields = this.getNodeParameter('updateFields', i) as IDataObject; - addAdditionalFields(body.deal as IDataObject, updateFields); - } else { throw new Error(`The resource "${resource}" is not known!`); } From 819efc50e5da01c9e545ff35a3f0a74a5ff893a5 Mon Sep 17 00:00:00 2001 From: quansenB Date: Fri, 25 Oct 2019 16:30:58 +0200 Subject: [PATCH 12/43] add error handling for unknon operations --- .../ActiveCampaign/ActiveCampaign.node.ts | 37 +++++++++++-------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts index d7f0fec8af..37385bbe67 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts @@ -755,7 +755,7 @@ export class ActiveCampaign implements INodeType { }, ] }, - + // ---------------------------------- // deal:delete // ---------------------------------- @@ -1026,6 +1026,8 @@ export class ActiveCampaign implements INodeType { const updateFields = this.getNodeParameter('updateFields', i) as IDataObject; addAdditionalFields(body.contact as IDataObject, updateFields); + } else { + throw new Error(`The operation ${operation} is not known`); } } else if (resource === 'deal') { if (operation === 'create') { @@ -1102,23 +1104,26 @@ export class ActiveCampaign implements INodeType { dataKey = 'deals'; endpoint = `/api/3/deals`; } else { - throw new Error(`The resource "${resource}" is not known!`); - } - - let responseData; - if (returnAll === true) { - responseData = await activeCampaignApiRequestAllItems.call(this, requestMethod, endpoint, body, qs, dataKey); - } else { - responseData = await activeCampaignApiRequest.call(this, requestMethod, endpoint, body, qs, dataKey); - } - - if (Array.isArray(responseData)) { - returnData.push.apply(returnData, responseData as IDataObject[]); - } else { - returnData.push(responseData as IDataObject); + throw new Error(`The operation ${operation} is not known`); } + } else { + throw new Error(`The resource "${resource}" is not known!`); } - return [this.helpers.returnJsonArray(returnData)]; + let responseData; + if (returnAll === true) { + responseData = await activeCampaignApiRequestAllItems.call(this, requestMethod, endpoint, body, qs, dataKey); + } else { + responseData = await activeCampaignApiRequest.call(this, requestMethod, endpoint, body, qs, dataKey); + } + + if (Array.isArray(responseData)) { + returnData.push.apply(returnData, responseData as IDataObject[]); + } else { + returnData.push(responseData as IDataObject); + } } + + return [this.helpers.returnJsonArray(returnData)]; } +} From 66a335054fa896fc45eceeab1877073f7a92172f Mon Sep 17 00:00:00 2001 From: quansenB Date: Fri, 25 Oct 2019 16:48:53 +0200 Subject: [PATCH 13/43] add dealnote functionality --- .../ActiveCampaign/ActiveCampaign.node.ts | 56 +++++++++++++++++-- 1 file changed, 51 insertions(+), 5 deletions(-) diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts index 37385bbe67..fee5881685 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts @@ -1,5 +1,5 @@ import { - IExecuteFunctions, + IExecuteFunctions, getExecuteSingleFunctions, } from 'n8n-core'; import { IDataObject, @@ -906,6 +906,24 @@ export class ActiveCampaign implements INodeType { }, description: 'The ID of the deal note', }, + { + displayName: 'Deal note ID', + name: 'dealNoteId', + type: 'number', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'updateNote', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The ID of the deal note', + }, { displayName: 'Deal Note', name: 'dealNote', @@ -998,7 +1016,7 @@ export class ActiveCampaign implements INodeType { } else if (operation === 'getAll') { // ---------------------------------- - // persons:getAll + // contacts:getAll // ---------------------------------- requestMethod = 'GET'; @@ -1027,7 +1045,7 @@ export class ActiveCampaign implements INodeType { addAdditionalFields(body.contact as IDataObject, updateFields); } else { - throw new Error(`The operation ${operation} is not known`); + throw new Error(`The operation "${operation}" is not known`); } } else if (resource === 'deal') { if (operation === 'create') { @@ -1091,7 +1109,7 @@ export class ActiveCampaign implements INodeType { } else if (operation === 'getAll') { // ---------------------------------- - // persons:getAll + // deals:getAll // ---------------------------------- requestMethod = 'GET'; @@ -1103,8 +1121,36 @@ export class ActiveCampaign implements INodeType { dataKey = 'deals'; endpoint = `/api/3/deals`; + + } else if (operation === 'createNote') { + // ---------------------------------- + // deal:createNote + // ---------------------------------- + requestMethod = 'POST' + + body.note = { + note: this.getNodeParameter('createNote', i) as string, + } + + const dealId = this.getNodeParameter('dealId', i) as number; + endpoint = `/api/3/deals/${dealId}/notes`; + + } else if (operation === 'updateNote') { + // ---------------------------------- + // deal:updateNote + // ---------------------------------- + requestMethod = 'POST' + + body.note = { + note: this.getNodeParameter('updateNote', i) as string, + } + + const dealId = this.getNodeParameter('dealId', i) as number; + const dealNoteId = this.getNodeParameter('dealNoteId', i) as number; + endpoint = `/api/3/deals/${dealId}/notes/${dealNoteId}`; + } else { - throw new Error(`The operation ${operation} is not known`); + throw new Error(`The operation "${operation}" is not known`); } } else { throw new Error(`The resource "${resource}" is not known!`); From a09d6dfbf665817b189ae34c55856efd494abd0b Mon Sep 17 00:00:00 2001 From: quansenB Date: Fri, 25 Oct 2019 16:56:15 +0200 Subject: [PATCH 14/43] exclude unnecessary import --- packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts index fee5881685..c9490a2505 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts @@ -1,5 +1,5 @@ import { - IExecuteFunctions, getExecuteSingleFunctions, + IExecuteFunctions, } from 'n8n-core'; import { IDataObject, From 12a0592896cfc6156644293d60894c1906cc2df6 Mon Sep 17 00:00:00 2001 From: quansenB Date: Fri, 25 Oct 2019 16:57:26 +0200 Subject: [PATCH 15/43] exclude unnecessary import --- packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts index c9490a2505..b4e0913c8a 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts @@ -12,7 +12,6 @@ import { activeCampaignApiRequest, activeCampaignApiRequestAllItems, } from './GenericFunctions'; -import { type } from 'os'; interface CustomProperty { name: string; From 78997ddeac4304f89ee067a66b508ba912251482 Mon Sep 17 00:00:00 2001 From: quansenB Date: Fri, 25 Oct 2019 17:48:46 +0200 Subject: [PATCH 16/43] rename fields to how they appear in APi to prevent bug --- .../ActiveCampaign/ActiveCampaign.node.ts | 69 +++++++++---------- 1 file changed, 31 insertions(+), 38 deletions(-) diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts index b4e0913c8a..3de65413e7 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts @@ -37,17 +37,6 @@ function addAdditionalFields(body: IDataObject, additionalFields: IDataObject) { } } -/** - * Add one additional field to the body - * - * @param {IDataObject} body The body object to add the field to - * @param {IDataObject} additionalField The field to add - */ -function addAdditionalField(body: IDataObject, additionalField: string | number) { - body.additionalField = additionalField; -} - - export class ActiveCampaign implements INodeType { description: INodeTypeDescription = { displayName: 'ActiveCampaign', @@ -511,7 +500,7 @@ export class ActiveCampaign implements INodeType { // ---------------------------------- { displayName: 'Title', - name: 'dealTitle', + name: 'title', type: 'string', default: '', required: true, @@ -529,7 +518,7 @@ export class ActiveCampaign implements INodeType { }, { displayName: 'Deal\'s contact ID', - name: 'dealContactId', + name: 'contact', type: 'number', default: 0, required: true, @@ -547,7 +536,7 @@ export class ActiveCampaign implements INodeType { }, { displayName: 'Deal value', - name: 'dealValue', + name: 'value', type: 'number', default: 0, required: true, @@ -565,7 +554,7 @@ export class ActiveCampaign implements INodeType { }, { displayName: 'Currency', - name: 'dealCurrency', + name: 'currency', type: 'string', default: '', required: true, @@ -600,42 +589,42 @@ export class ActiveCampaign implements INodeType { options: [ { displayName: 'Description', - name: 'dealDescription', + name: 'description', type: 'string', default: '', description: 'The description of the deal', }, { displayName: 'Deal group ID', - name: 'dealGroup', + name: 'group', type: 'string', default: '', description: 'The group ID of the deal', }, { displayName: 'Deal stage ID', - name: 'dealStage', + name: 'stage', type: 'string', default: '', description: 'The stage ID of the deal', }, { displayName: 'Deal owner ID', - name: 'dealOwner', + name: 'owner', type: 'string', default: '', description: 'The owner ID of the deal', }, { displayName: 'Deal percentage', - name: 'dealPercentage', + name: 'percent', type: 'number', default: 0, description: 'The percentage of the deal', }, { displayName: 'Deal status', - name: 'dealStatus', + name: 'status', type: 'number', default: 0, description: 'The status of the deal', @@ -676,7 +665,7 @@ export class ActiveCampaign implements INodeType { 'update', ], resource: [ - 'contact', + 'deal', ], }, }, @@ -684,70 +673,70 @@ export class ActiveCampaign implements INodeType { options: [ { displayName: 'Title', - name: 'dealTitle', + name: 'title', type: 'string', default: '', description: 'The title of the deal', }, { displayName: 'Deal\'s contact ID', - name: 'dealContactId', + name: 'contact', type: 'number', default: 0, description: 'The ID of the deal\'s contact', }, { displayName: 'Deal value', - name: 'dealValue', + name: 'value', type: 'number', default: 0, description: 'The value of the deal in cents', }, { displayName: 'Currency', - name: 'dealCurrency', + name: 'currency', type: 'string', default: '', description: 'The currency of the deal in 3-character ISO format', }, { displayName: 'Description', - name: 'dealDescription', + name: 'description', type: 'string', default: '', description: 'The description of the deal', }, { displayName: 'Deal group ID', - name: 'dealGroup', + name: 'group', type: 'string', default: '', description: 'The group ID of the deal', }, { displayName: 'Deal stage ID', - name: 'dealStage', + name: 'stage', type: 'string', default: '', description: 'The stage ID of the deal', }, { displayName: 'Deal owner ID', - name: 'dealOwner', + name: 'owner', type: 'string', default: '', description: 'The owner ID of the deal', }, { displayName: 'Deal percentage', - name: 'dealPercentage', + name: 'percent', type: 'number', default: 0, description: 'The percentage of the deal', }, { displayName: 'Deal status', - name: 'dealStatus', + name: 'status', type: 'number', default: 0, description: 'The status of the deal', @@ -1059,13 +1048,13 @@ export class ActiveCampaign implements INodeType { dataKey = 'deal'; body.deal = { - title: this.getNodeParameter('dealTitle', i) as string, - contact: this.getNodeParameter('dealContactId', i) as string, - value: this.getNodeParameter('dealValue', i) as number, + title: this.getNodeParameter('title', i) as string, + contact: this.getNodeParameter('contact', i) as string, + value: this.getNodeParameter('value', i) as number, } as IDataObject; - let currency = this.getNodeParameter('dealCurrency', i).toString().toLowerCase() as string - addAdditionalField(body.deal as IDataObject, currency) + let currency = this.getNodeParameter('currency', i).toString().toLowerCase() as string + addAdditionalFields(body.deal as IDataObject, { currency }) const additionalFields = this.getNodeParameter('additionalFields', i) as IDataObject; addAdditionalFields(body.deal as IDataObject, additionalFields); @@ -1154,7 +1143,11 @@ export class ActiveCampaign implements INodeType { } else { throw new Error(`The resource "${resource}" is not known!`); } - + console.log(requestMethod) + console.log(endpoint) + console.log(body) + console.log(qs) + console.log(dataKey) let responseData; if (returnAll === true) { responseData = await activeCampaignApiRequestAllItems.call(this, requestMethod, endpoint, body, qs, dataKey); From 5b335c1578829155558b3e806cab8cbe14b2c6e2 Mon Sep 17 00:00:00 2001 From: quansenB Date: Fri, 25 Oct 2019 18:18:33 +0200 Subject: [PATCH 17/43] fix dealNote bug --- .../nodes/ActiveCampaign/ActiveCampaign.node.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts index 3de65413e7..d3ea171dfa 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts @@ -1115,10 +1115,12 @@ export class ActiveCampaign implements INodeType { // deal:createNote // ---------------------------------- requestMethod = 'POST' + console.log(operation) + console.log(this.getNodeParameter('dealNote', i) as string) body.note = { - note: this.getNodeParameter('createNote', i) as string, - } + note: this.getNodeParameter('dealNote', i) as string, + } as IDataObject const dealId = this.getNodeParameter('dealId', i) as number; endpoint = `/api/3/deals/${dealId}/notes`; @@ -1130,8 +1132,8 @@ export class ActiveCampaign implements INodeType { requestMethod = 'POST' body.note = { - note: this.getNodeParameter('updateNote', i) as string, - } + note: this.getNodeParameter('dealNote', i) as string, + } as IDataObject const dealId = this.getNodeParameter('dealId', i) as number; const dealNoteId = this.getNodeParameter('dealNoteId', i) as number; From ccfcd6fc688a782fa60564825fb4fad63494c9f3 Mon Sep 17 00:00:00 2001 From: quansenB Date: Fri, 25 Oct 2019 18:23:34 +0200 Subject: [PATCH 18/43] fix deal noe update --- packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts index d3ea171dfa..ec52246f1e 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts @@ -1129,7 +1129,7 @@ export class ActiveCampaign implements INodeType { // ---------------------------------- // deal:updateNote // ---------------------------------- - requestMethod = 'POST' + requestMethod = 'PUT' body.note = { note: this.getNodeParameter('dealNote', i) as string, From 9072f9212eaac2d9e2439d6b7f41aa7cc5674a73 Mon Sep 17 00:00:00 2001 From: quansenB Date: Fri, 25 Oct 2019 18:26:43 +0200 Subject: [PATCH 19/43] remove console.logs --- .../nodes/ActiveCampaign/ActiveCampaign.node.ts | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts index ec52246f1e..b6d3ebd195 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts @@ -1115,8 +1115,6 @@ export class ActiveCampaign implements INodeType { // deal:createNote // ---------------------------------- requestMethod = 'POST' - console.log(operation) - console.log(this.getNodeParameter('dealNote', i) as string) body.note = { note: this.getNodeParameter('dealNote', i) as string, @@ -1145,11 +1143,7 @@ export class ActiveCampaign implements INodeType { } else { throw new Error(`The resource "${resource}" is not known!`); } - console.log(requestMethod) - console.log(endpoint) - console.log(body) - console.log(qs) - console.log(dataKey) + let responseData; if (returnAll === true) { responseData = await activeCampaignApiRequestAllItems.call(this, requestMethod, endpoint, body, qs, dataKey); From 5dcb2a74f2748e881c763717b877e611aa06e3a9 Mon Sep 17 00:00:00 2001 From: quansenB Date: Fri, 25 Oct 2019 18:29:23 +0200 Subject: [PATCH 20/43] add .env to gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 91e093160a..0466b83695 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ package-lock.json yarn.lock google-generated-credentials.json _START_PACKAGE +.env From 6166e3955b512d8bcd1451b3056ad55b53345851 Mon Sep 17 00:00:00 2001 From: quansenB Date: Tue, 29 Oct 2019 00:14:04 +0100 Subject: [PATCH 21/43] add -vscode to gitignore --- .gitignore | 1 + package.json | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 0466b83695..1b2f93c3f3 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ yarn.lock google-generated-credentials.json _START_PACKAGE .env +.vscode diff --git a/package.json b/package.json index b045830f51..b9d1ec33d2 100644 --- a/package.json +++ b/package.json @@ -16,5 +16,9 @@ "lerna": "^3.13.1", "run-script-os": "^1.0.7" }, - "postcss": {} + "postcss": {}, + "dependencies": { + "n8n-node-dev": "^0.5.0", + "typescript": "^3.6.4" + } } From fbe78e4cb61803ee5d170c4ed14338700a14ed70 Mon Sep 17 00:00:00 2001 From: quansenB Date: Tue, 29 Oct 2019 00:15:28 +0100 Subject: [PATCH 22/43] revert package.json chanes in editor ui --- packages/editor-ui/package json debug | 1 - packages/editor-ui/package.json | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) delete mode 100644 packages/editor-ui/package json debug diff --git a/packages/editor-ui/package json debug b/packages/editor-ui/package json debug deleted file mode 100644 index dbfd27f67f..0000000000 --- a/packages/editor-ui/package json debug +++ /dev/null @@ -1 +0,0 @@ -//VUE_APP_URL_BASE_API=http://localhost:5678/ \ No newline at end of file diff --git a/packages/editor-ui/package.json b/packages/editor-ui/package.json index 82534d8a87..4dd2fe0014 100644 --- a/packages/editor-ui/package.json +++ b/packages/editor-ui/package.json @@ -17,7 +17,7 @@ "build": "vue-cli-service build", "dev": "npm run serve", "lint": "vue-cli-service lint", - "serve": "vue-cli-service serve", + "serve": "VUE_APP_URL_BASE_API=http://localhost:5678/ vue-cli-service serve", "test": "npm run test:unit", "tslint": "tslint -p tsconfig.json -c tslint.json", "test:e2e": "vue-cli-service test:e2e", From a8b3f383ef687e8728a384546efdd7f6c3868022 Mon Sep 17 00:00:00 2001 From: quansenB Date: Tue, 29 Oct 2019 00:19:02 +0100 Subject: [PATCH 23/43] revert unneeded changes for PR --- package.json | 6 +----- packages/editor-ui/package.json | 2 +- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index b9d1ec33d2..b045830f51 100644 --- a/package.json +++ b/package.json @@ -16,9 +16,5 @@ "lerna": "^3.13.1", "run-script-os": "^1.0.7" }, - "postcss": {}, - "dependencies": { - "n8n-node-dev": "^0.5.0", - "typescript": "^3.6.4" - } + "postcss": {} } diff --git a/packages/editor-ui/package.json b/packages/editor-ui/package.json index 4dd2fe0014..7047295fba 100644 --- a/packages/editor-ui/package.json +++ b/packages/editor-ui/package.json @@ -78,4 +78,4 @@ "vue-typed-mixins": "^0.1.0", "vuex": "^3.1.1" } -} \ No newline at end of file +} From 3d42a0f0e6bbb13462650c51103c3682beccfba2 Mon Sep 17 00:00:00 2001 From: quansenB Date: Tue, 29 Oct 2019 19:51:09 +0100 Subject: [PATCH 24/43] add currency dropdown --- .../ActiveCampaign/ActiveCampaign.node.ts | 12 +- .../nodes/ActiveCampaign/currencies.ts | 175 ++++++++++++++++++ 2 files changed, 184 insertions(+), 3 deletions(-) create mode 100644 packages/nodes-base/nodes/ActiveCampaign/currencies.ts diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts index b6d3ebd195..2cd6c27f9d 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts @@ -1,11 +1,13 @@ import { IExecuteFunctions, } from 'n8n-core'; + import { IDataObject, INodeTypeDescription, INodeExecutionData, INodeType, + INodePropertyOptions, } from 'n8n-workflow'; import { @@ -13,6 +15,8 @@ import { activeCampaignApiRequestAllItems, } from './GenericFunctions'; +import { returnAllCurrencyOptions } from './currencies' + interface CustomProperty { name: string; value: string; @@ -555,8 +559,8 @@ export class ActiveCampaign implements INodeType { { displayName: 'Currency', name: 'currency', - type: 'string', - default: '', + type: 'options', + default: 'eur', required: true, displayOptions: { show: { @@ -568,6 +572,7 @@ export class ActiveCampaign implements INodeType { ], }, }, + options: returnAllCurrencyOptions(), description: 'The currency of the deal in 3-character ISO format', }, { @@ -695,7 +700,8 @@ export class ActiveCampaign implements INodeType { { displayName: 'Currency', name: 'currency', - type: 'string', + type: 'options', + options: returnAllCurrencyOptions(), default: '', description: 'The currency of the deal in 3-character ISO format', }, diff --git a/packages/nodes-base/nodes/ActiveCampaign/currencies.ts b/packages/nodes-base/nodes/ActiveCampaign/currencies.ts new file mode 100644 index 0000000000..007f95fa93 --- /dev/null +++ b/packages/nodes-base/nodes/ActiveCampaign/currencies.ts @@ -0,0 +1,175 @@ +export function returnAllCurrencyOptions() { + return [ + { name: 'United States Dollar', value: 'usd' }, + { name: 'Euro', value: 'eur' }, + { name: 'Renminbi', value: 'cny' }, + { name: '--------', value: '' }, + { name: 'United Arab Emirates Dirham', value: 'aed' }, + { name: 'Afghan Afghani', value: 'afn' }, + { name: 'Albanian Lek', value: 'all' }, + { name: 'Armenian Dram', value: 'amd' }, + { name: 'Netherlands Antillean Guilder', value: 'ang' }, + { name: 'Angolan Kwanza', value: 'aoa' }, + { name: 'Argentine Peso', value: 'ars' }, + { name: 'Australian Dollar', value: 'aud' }, + { name: 'Aruban Florin', value: 'awg' }, + { name: 'Azerbaijani Manat', value: 'azn' }, + { name: 'Bosnia-Herzegovina Convertible Mark', value: 'bam' }, + { name: 'Barbadian Dollar', value: 'bbd' }, + { name: 'Bangladeshi Taka', value: 'bdt' }, + { name: 'Bulgarian Lev', value: 'bgn' }, + { name: 'Bahraini Dinar', value: 'bhd' }, + { name: 'Burundian Franc', value: 'bif' }, + { name: 'Bermudan Dollar', value: 'bmd' }, + { name: 'Brunei Dollar', value: 'bnd' }, + { name: 'Bolivian Boliviano', value: 'bob' }, + { name: 'Brazilian Real', value: 'brl' }, + { name: 'Bahamian Dollar', value: 'bsd' }, + { name: 'Bitcoin', value: 'btc' }, + { name: 'Bhutanese Ngultrum', value: 'btn' }, + { name: 'Botswanan Pula', value: 'bwp' }, + { name: 'Belarusian Ruble', value: 'byn' }, + { name: 'Belize Dollar', value: 'bzd' }, + { name: 'Canadian Dollar', value: 'cad' }, + { name: 'Congolese Franc', value: 'cdf' }, + { name: 'Swiss Franc', value: 'chf' }, + { name: 'Chilean Unit of Account (UF)', value: 'clf' }, + { name: 'Chilean Peso', value: 'clp' }, + { name: 'Chinese Yuan (Offshore)', value: 'cnh' }, + { name: 'Colombian Peso', value: 'cop' }, + { name: 'Costa Rican Colón', value: 'crc' }, + { name: 'Cuban Convertible Peso', value: 'cuc' }, + { name: 'Cuban Peso', value: 'cup' }, + { name: 'Cape Verdean Escudo', value: 'cve' }, + { name: 'Czech Republic Koruna', value: 'czk' }, + { name: 'Djiboutian Franc', value: 'djf' }, + { name: 'Danish Krone', value: 'dkk' }, + { name: 'Dominican Peso', value: 'dop' }, + { name: 'Algerian Dinar', value: 'dzd' }, + { name: 'Egyptian Pound', value: 'egp' }, + { name: 'Eritrean Nakfa', value: 'ern' }, + { name: 'Ethiopian Birr', value: 'etb' }, + { name: 'Fijian Dollar', value: 'fjd' }, + { name: 'Falkland Islands Pound', value: 'fkp' }, + { name: 'British Pound Sterling', value: 'gbp' }, + { name: 'Georgian Lari', value: 'gel' }, + { name: 'Guernsey Pound', value: 'ggp' }, + { name: 'Ghanaian Cedi', value: 'ghs' }, + { name: 'Gibraltar Pound', value: 'gip' }, + { name: 'Gambian Dalasi', value: 'gmd' }, + { name: 'Guinean Franc', value: 'gnf' }, + { name: 'Guatemalan Quetzal', value: 'gtq' }, + { name: 'Guyanaese Dollar', value: 'gyd' }, + { name: 'Hong Kong Dollar', value: 'hkd' }, + { name: 'Honduran Lempira', value: 'hnl' }, + { name: 'Croatian Kuna', value: 'hrk' }, + { name: 'Haitian Gourde', value: 'htg' }, + { name: 'Hungarian Forint', value: 'huf' }, + { name: 'Indonesian Rupiah', value: 'idr' }, + { name: 'Israeli New Sheqel', value: 'ils' }, + { name: 'Manx pound', value: 'imp' }, + { name: 'Indian Rupee', value: 'inr' }, + { name: 'Iraqi Dinar', value: 'iqd' }, + { name: 'Iranian Rial', value: 'irr' }, + { name: 'Icelandic Króna', value: 'isk' }, + { name: 'Jersey Pound', value: 'jep' }, + { name: 'Jamaican Dollar', value: 'jmd' }, + { name: 'Jordanian Dinar', value: 'jod' }, + { name: 'Japanese Yen', value: 'jpy' }, + { name: 'Kenyan Shilling', value: 'kes' }, + { name: 'Kyrgystani Som', value: 'kgs' }, + { name: 'Cambodian Riel', value: 'khr' }, + { name: 'Comorian Franc', value: 'kmf' }, + { name: 'North Korean Won', value: 'kpw' }, + { name: 'South Korean Won', value: 'krw' }, + { name: 'Kuwaiti Dinar', value: 'kwd' }, + { name: 'Cayman Islands Dollar', value: 'kyd' }, + { name: 'Kazakhstani Tenge', value: 'kzt' }, + { name: 'Laotian Kip', value: 'lak' }, + { name: 'Lebanese Pound', value: 'lbp' }, + { name: 'Sri Lankan Rupee', value: 'lkr' }, + { name: 'Liberian Dollar', value: 'lrd' }, + { name: 'Lesotho Loti', value: 'lsl' }, + { name: 'Libyan Dinar', value: 'lyd' }, + { name: 'Moroccan Dirham', value: 'mad' }, + { name: 'Moldovan Leu', value: 'mdl' }, + { name: 'Malagasy Ariary', value: 'mga' }, + { name: 'Macedonian Denar', value: 'mkd' }, + { name: 'Myanma Kyat', value: 'mmk' }, + { name: 'Mongolian Tugrik', value: 'mnt' }, + { name: 'Macanese Pataca', value: 'mop' }, + { name: 'Mauritanian Ouguiya (pre-2018)', value: 'mro' }, + { name: 'Mauritanian Ouguiya', value: 'mru' }, + { name: 'Mauritian Rupee', value: 'mur' }, + { name: 'Maldivian Rufiyaa', value: 'mvr' }, + { name: 'Malawian Kwacha', value: 'mwk' }, + { name: 'Mexican Peso', value: 'mxn' }, + { name: 'Malaysian Ringgit', value: 'myr' }, + { name: 'Mozambican Metical', value: 'mzn' }, + { name: 'Namibian Dollar', value: 'nad' }, + { name: 'Nigerian Naira', value: 'ngn' }, + { name: 'Nicaraguan Córdoba', value: 'nio' }, + { name: 'Norwegian Krone', value: 'nok' }, + { name: 'Nepalese Rupee', value: 'npr' }, + { name: 'New Zealand Dollar', value: 'nzd' }, + { name: 'Omani Rial', value: 'omr' }, + { name: 'Panamanian Balboa', value: 'pab' }, + { name: 'Peruvian Nuevo Sol', value: 'pen' }, + { name: 'Papua New Guinean Kina', value: 'pgk' }, + { name: 'Philippine Peso', value: 'php' }, + { name: 'Pakistani Rupee', value: 'pkr' }, + { name: 'Polish Zloty', value: 'pln' }, + { name: 'Paraguayan Guarani', value: 'pyg' }, + { name: 'Qatari Rial', value: 'qar' }, + { name: 'Romanian Leu', value: 'ron' }, + { name: 'Serbian Dinar', value: 'rsd' }, + { name: 'Russian Ruble', value: 'rub' }, + { name: 'Rwandan Franc', value: 'rwf' }, + { name: 'Saudi Riyal', value: 'sar' }, + { name: 'Solomon Islands Dollar', value: 'sbd' }, + { name: 'Seychellois Rupee', value: 'scr' }, + { name: 'Sudanese Pound', value: 'sdg' }, + { name: 'Swedish Krona', value: 'sek' }, + { name: 'Singapore Dollar', value: 'sgd' }, + { name: 'Saint Helena Pound', value: 'shp' }, + { name: 'Sierra Leonean Leone', value: 'sll' }, + { name: 'Somali Shilling', value: 'sos' }, + { name: 'Surinamese Dollar', value: 'srd' }, + { name: 'South Sudanese Pound', value: 'ssp' }, + { name: 'São Tomé and Príncipe Dobra (pre-2018)', value: 'std' }, + { name: 'São Tomé and Príncipe Dobra', value: 'stn' }, + { name: 'Salvadoran Colón', value: 'svc' }, + { name: 'Syrian Pound', value: 'syp' }, + { name: 'Swazi Lilangeni', value: 'szl' }, + { name: 'Thai Baht', value: 'thb' }, + { name: 'Tajikistani Somoni', value: 'tjs' }, + { name: 'Turkmenistani Manat', value: 'tmt' }, + { name: 'Tunisian Dinar', value: 'tnd' }, + { name: "Tongan Pa'anga", value: 'top' }, + { name: 'Turkish Lira', value: 'try' }, + { name: 'Trinidad and Tobago Dollar', value: 'ttd' }, + { name: 'New Taiwan Dollar', value: 'twd' }, + { name: 'Tanzanian Shilling', value: 'tzs' }, + { name: 'Ukrainian Hryvnia', value: 'uah' }, + { name: 'Ugandan Shilling', value: 'ugx' }, + { name: 'Uruguayan Peso', value: 'uyu' }, + { name: 'Uzbekistan Som', value: 'uzs' }, + { name: 'Venezuelan Bolívar Fuerte', value: 'vef' }, + { name: 'Vietnamese Dong', value: 'vnd' }, + { name: 'Vanuatu Vatu', value: 'vuv' }, + { name: 'Samoan Tala', value: 'wst' }, + { name: 'CFA Franc BEAC', value: 'xaf' }, + { name: 'Silver Ounce', value: 'xag' }, + { name: 'Gold Ounce', value: 'xau' }, + { name: 'East Caribbean Dollar', value: 'xcd' }, + { name: 'Special Drawing Rights', value: 'xdr' }, + { name: 'CFA Franc BCEAO', value: 'xof' }, + { name: 'Palladium Ounce', value: 'xpd' }, + { name: 'CFP Franc', value: 'xpf' }, + { name: 'Platinum Ounce', value: 'xpt' }, + { name: 'Yemeni Rial', value: 'yer' }, + { name: 'South African Rand', value: 'zar' }, + { name: 'Zambian Kwacha', value: 'zmw' }, + { name: 'Zimbabwean Dollar', value: 'zwl' } + ] +} \ No newline at end of file From 4cbbdda8c1a80a53e273fb04de8e41da01762afc Mon Sep 17 00:00:00 2001 From: quansenB Date: Tue, 29 Oct 2019 19:53:02 +0100 Subject: [PATCH 25/43] add eur as default at update deal --- packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts index 2cd6c27f9d..7aeb933cb2 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts @@ -702,7 +702,7 @@ export class ActiveCampaign implements INodeType { name: 'currency', type: 'options', options: returnAllCurrencyOptions(), - default: '', + default: 'eur', description: 'The currency of the deal in 3-character ISO format', }, { From 51a6b47985296d55e8d4eafaad56546ab9e7f8fa Mon Sep 17 00:00:00 2001 From: quansenB Date: Tue, 29 Oct 2019 20:08:23 +0100 Subject: [PATCH 26/43] display pipeline, owner and stage as default in create deal --- .../ActiveCampaign/ActiveCampaign.node.ts | 97 ++++++++++++++----- 1 file changed, 71 insertions(+), 26 deletions(-) diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts index 7aeb933cb2..6835a752a0 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts @@ -575,6 +575,57 @@ export class ActiveCampaign implements INodeType { options: returnAllCurrencyOptions(), description: 'The currency of the deal in 3-character ISO format', }, + { + displayName: 'Deal pipeline ID', + name: 'pipeline', + type: 'string', + default: '', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The pipeline ID of the deal', + }, + { + displayName: 'Deal stage ID', + name: 'stage', + type: 'string', + default: '', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The stage ID of the deal', + }, + { + displayName: 'Deal owner ID', + name: 'owner', + type: 'string', + default: '', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The owner ID of the deal', + }, { displayName: 'Additional Fields', name: 'additionalFields', @@ -599,27 +650,7 @@ export class ActiveCampaign implements INodeType { default: '', description: 'The description of the deal', }, - { - displayName: 'Deal group ID', - name: 'group', - type: 'string', - default: '', - description: 'The group ID of the deal', - }, - { - displayName: 'Deal stage ID', - name: 'stage', - type: 'string', - default: '', - description: 'The stage ID of the deal', - }, - { - displayName: 'Deal owner ID', - name: 'owner', - type: 'string', - default: '', - description: 'The owner ID of the deal', - }, + { displayName: 'Deal percentage', name: 'percent', @@ -713,11 +744,11 @@ export class ActiveCampaign implements INodeType { description: 'The description of the deal', }, { - displayName: 'Deal group ID', - name: 'group', + displayName: 'Deal pipeline ID', + name: 'pipeline', type: 'string', default: '', - description: 'The group ID of the deal', + description: 'The pipeline ID of the deal', }, { displayName: 'Deal stage ID', @@ -1059,13 +1090,27 @@ export class ActiveCampaign implements INodeType { value: this.getNodeParameter('value', i) as number, } as IDataObject; - let currency = this.getNodeParameter('currency', i).toString().toLowerCase() as string + const group = this.getNodeParameter('pipeline', i) as string + if(group !== ''){ + addAdditionalFields(body.deal as IDataObject, { group }) + } + + const owner = this.getNodeParameter('owner', i) as string + if(owner !== ''){ + addAdditionalFields(body.deal as IDataObject, { owner }) + } + + const stage = this.getNodeParameter('stage', i) as string + if(stage !== ''){ + addAdditionalFields(body.deal as IDataObject, { stage }) + } + + const currency = this.getNodeParameter('currency', i) as string addAdditionalFields(body.deal as IDataObject, { currency }) const additionalFields = this.getNodeParameter('additionalFields', i) as IDataObject; addAdditionalFields(body.deal as IDataObject, additionalFields); - } else if (operation === 'update') { // ---------------------------------- // deal:update From 2e56730fade0647d39dfe4b160dc4702e1c17f1f Mon Sep 17 00:00:00 2001 From: quansenB Date: Tue, 29 Oct 2019 23:45:20 +0100 Subject: [PATCH 27/43] delete left over deleteNote code and change defdault currencies --- .../ActiveCampaign/ActiveCampaign.node.ts | 18 +++++++++++------- .../nodes/ActiveCampaign/currencies.ts | 8 ++++---- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts index 6835a752a0..787f6767c1 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts @@ -577,7 +577,7 @@ export class ActiveCampaign implements INodeType { }, { displayName: 'Deal pipeline ID', - name: 'pipeline', + name: 'owner', type: 'string', default: '', displayOptions: { @@ -650,7 +650,7 @@ export class ActiveCampaign implements INodeType { default: '', description: 'The description of the deal', }, - + { displayName: 'Deal percentage', name: 'percent', @@ -745,7 +745,7 @@ export class ActiveCampaign implements INodeType { }, { displayName: 'Deal pipeline ID', - name: 'pipeline', + name: 'owner', type: 'string', default: '', description: 'The pipeline ID of the deal', @@ -966,6 +966,7 @@ export class ActiveCampaign implements INodeType { }, description: 'The content of the deal note', }, + ], }; @@ -1090,18 +1091,18 @@ export class ActiveCampaign implements INodeType { value: this.getNodeParameter('value', i) as number, } as IDataObject; - const group = this.getNodeParameter('pipeline', i) as string - if(group !== ''){ + const group = this.getNodeParameter('owner', i) as string + if (group !== '') { addAdditionalFields(body.deal as IDataObject, { group }) } const owner = this.getNodeParameter('owner', i) as string - if(owner !== ''){ + if (owner !== '') { addAdditionalFields(body.deal as IDataObject, { owner }) } const stage = this.getNodeParameter('stage', i) as string - if(stage !== ''){ + if (stage !== '') { addAdditionalFields(body.deal as IDataObject, { stage }) } @@ -1188,9 +1189,11 @@ export class ActiveCampaign implements INodeType { const dealNoteId = this.getNodeParameter('dealNoteId', i) as number; endpoint = `/api/3/deals/${dealId}/notes/${dealNoteId}`; + } else { throw new Error(`The operation "${operation}" is not known`); } + } else { throw new Error(`The resource "${resource}" is not known!`); } @@ -1212,3 +1215,4 @@ export class ActiveCampaign implements INodeType { return [this.helpers.returnJsonArray(returnData)]; } } + diff --git a/packages/nodes-base/nodes/ActiveCampaign/currencies.ts b/packages/nodes-base/nodes/ActiveCampaign/currencies.ts index 007f95fa93..8ff4d48adc 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/currencies.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/currencies.ts @@ -1,7 +1,9 @@ export function returnAllCurrencyOptions() { - return [ - { name: 'United States Dollar', value: 'usd' }, + return [ { name: 'Euro', value: 'eur' }, + { name: 'United States Dollar', value: 'usd' }, + { name: 'British Pound Sterling', value: 'gbp' }, + { name: 'Swiss Franc', value: 'chf' }, { name: 'Renminbi', value: 'cny' }, { name: '--------', value: '' }, { name: 'United Arab Emirates Dirham', value: 'aed' }, @@ -32,7 +34,6 @@ export function returnAllCurrencyOptions() { { name: 'Belize Dollar', value: 'bzd' }, { name: 'Canadian Dollar', value: 'cad' }, { name: 'Congolese Franc', value: 'cdf' }, - { name: 'Swiss Franc', value: 'chf' }, { name: 'Chilean Unit of Account (UF)', value: 'clf' }, { name: 'Chilean Peso', value: 'clp' }, { name: 'Chinese Yuan (Offshore)', value: 'cnh' }, @@ -51,7 +52,6 @@ export function returnAllCurrencyOptions() { { name: 'Ethiopian Birr', value: 'etb' }, { name: 'Fijian Dollar', value: 'fjd' }, { name: 'Falkland Islands Pound', value: 'fkp' }, - { name: 'British Pound Sterling', value: 'gbp' }, { name: 'Georgian Lari', value: 'gel' }, { name: 'Guernsey Pound', value: 'ggp' }, { name: 'Ghanaian Cedi', value: 'ghs' }, From 46c737dcf259430bda5a9d820d0eb9df34737240 Mon Sep 17 00:00:00 2001 From: quansenB Date: Sat, 2 Nov 2019 18:29:01 +0100 Subject: [PATCH 28/43] add all currencies --- .../nodes-base/nodes/utils/allCurrencies.ts | 173 ++++++++++++++++++ 1 file changed, 173 insertions(+) create mode 100644 packages/nodes-base/nodes/utils/allCurrencies.ts diff --git a/packages/nodes-base/nodes/utils/allCurrencies.ts b/packages/nodes-base/nodes/utils/allCurrencies.ts new file mode 100644 index 0000000000..3fd41695d4 --- /dev/null +++ b/packages/nodes-base/nodes/utils/allCurrencies.ts @@ -0,0 +1,173 @@ +[ + { name: 'Euro', value: 'eur' }, + { name: 'United States Dollar', value: 'usd' }, + { name: 'British Pound Sterling', value: 'gbp' }, + { name: 'Swiss Franc', value: 'chf' }, + { name: 'Renminbi', value: 'cny' }, + { name: '--------', value: '' }, + { name: 'United Arab Emirates Dirham', value: 'aed' }, + { name: 'Afghan Afghani', value: 'afn' }, + { name: 'Albanian Lek', value: 'all' }, + { name: 'Armenian Dram', value: 'amd' }, + { name: 'Netherlands Antillean Guilder', value: 'ang' }, + { name: 'Angolan Kwanza', value: 'aoa' }, + { name: 'Argentine Peso', value: 'ars' }, + { name: 'Australian Dollar', value: 'aud' }, + { name: 'Aruban Florin', value: 'awg' }, + { name: 'Azerbaijani Manat', value: 'azn' }, + { name: 'Bosnia-Herzegovina Convertible Mark', value: 'bam' }, + { name: 'Barbadian Dollar', value: 'bbd' }, + { name: 'Bangladeshi Taka', value: 'bdt' }, + { name: 'Bulgarian Lev', value: 'bgn' }, + { name: 'Bahraini Dinar', value: 'bhd' }, + { name: 'Burundian Franc', value: 'bif' }, + { name: 'Bermudan Dollar', value: 'bmd' }, + { name: 'Brunei Dollar', value: 'bnd' }, + { name: 'Bolivian Boliviano', value: 'bob' }, + { name: 'Brazilian Real', value: 'brl' }, + { name: 'Bahamian Dollar', value: 'bsd' }, + { name: 'Bitcoin', value: 'btc' }, + { name: 'Bhutanese Ngultrum', value: 'btn' }, + { name: 'Botswanan Pula', value: 'bwp' }, + { name: 'Belarusian Ruble', value: 'byn' }, + { name: 'Belize Dollar', value: 'bzd' }, + { name: 'Canadian Dollar', value: 'cad' }, + { name: 'Congolese Franc', value: 'cdf' }, + { name: 'Chilean Unit of Account (UF)', value: 'clf' }, + { name: 'Chilean Peso', value: 'clp' }, + { name: 'Chinese Yuan (Offshore)', value: 'cnh' }, + { name: 'Colombian Peso', value: 'cop' }, + { name: 'Costa Rican Colón', value: 'crc' }, + { name: 'Cuban Convertible Peso', value: 'cuc' }, + { name: 'Cuban Peso', value: 'cup' }, + { name: 'Cape Verdean Escudo', value: 'cve' }, + { name: 'Czech Republic Koruna', value: 'czk' }, + { name: 'Djiboutian Franc', value: 'djf' }, + { name: 'Danish Krone', value: 'dkk' }, + { name: 'Dominican Peso', value: 'dop' }, + { name: 'Algerian Dinar', value: 'dzd' }, + { name: 'Egyptian Pound', value: 'egp' }, + { name: 'Eritrean Nakfa', value: 'ern' }, + { name: 'Ethiopian Birr', value: 'etb' }, + { name: 'Fijian Dollar', value: 'fjd' }, + { name: 'Falkland Islands Pound', value: 'fkp' }, + { name: 'Georgian Lari', value: 'gel' }, + { name: 'Guernsey Pound', value: 'ggp' }, + { name: 'Ghanaian Cedi', value: 'ghs' }, + { name: 'Gibraltar Pound', value: 'gip' }, + { name: 'Gambian Dalasi', value: 'gmd' }, + { name: 'Guinean Franc', value: 'gnf' }, + { name: 'Guatemalan Quetzal', value: 'gtq' }, + { name: 'Guyanaese Dollar', value: 'gyd' }, + { name: 'Hong Kong Dollar', value: 'hkd' }, + { name: 'Honduran Lempira', value: 'hnl' }, + { name: 'Croatian Kuna', value: 'hrk' }, + { name: 'Haitian Gourde', value: 'htg' }, + { name: 'Hungarian Forint', value: 'huf' }, + { name: 'Indonesian Rupiah', value: 'idr' }, + { name: 'Israeli New Sheqel', value: 'ils' }, + { name: 'Manx pound', value: 'imp' }, + { name: 'Indian Rupee', value: 'inr' }, + { name: 'Iraqi Dinar', value: 'iqd' }, + { name: 'Iranian Rial', value: 'irr' }, + { name: 'Icelandic Króna', value: 'isk' }, + { name: 'Jersey Pound', value: 'jep' }, + { name: 'Jamaican Dollar', value: 'jmd' }, + { name: 'Jordanian Dinar', value: 'jod' }, + { name: 'Japanese Yen', value: 'jpy' }, + { name: 'Kenyan Shilling', value: 'kes' }, + { name: 'Kyrgystani Som', value: 'kgs' }, + { name: 'Cambodian Riel', value: 'khr' }, + { name: 'Comorian Franc', value: 'kmf' }, + { name: 'North Korean Won', value: 'kpw' }, + { name: 'South Korean Won', value: 'krw' }, + { name: 'Kuwaiti Dinar', value: 'kwd' }, + { name: 'Cayman Islands Dollar', value: 'kyd' }, + { name: 'Kazakhstani Tenge', value: 'kzt' }, + { name: 'Laotian Kip', value: 'lak' }, + { name: 'Lebanese Pound', value: 'lbp' }, + { name: 'Sri Lankan Rupee', value: 'lkr' }, + { name: 'Liberian Dollar', value: 'lrd' }, + { name: 'Lesotho Loti', value: 'lsl' }, + { name: 'Libyan Dinar', value: 'lyd' }, + { name: 'Moroccan Dirham', value: 'mad' }, + { name: 'Moldovan Leu', value: 'mdl' }, + { name: 'Malagasy Ariary', value: 'mga' }, + { name: 'Macedonian Denar', value: 'mkd' }, + { name: 'Myanma Kyat', value: 'mmk' }, + { name: 'Mongolian Tugrik', value: 'mnt' }, + { name: 'Macanese Pataca', value: 'mop' }, + { name: 'Mauritanian Ouguiya (pre-2018)', value: 'mro' }, + { name: 'Mauritanian Ouguiya', value: 'mru' }, + { name: 'Mauritian Rupee', value: 'mur' }, + { name: 'Maldivian Rufiyaa', value: 'mvr' }, + { name: 'Malawian Kwacha', value: 'mwk' }, + { name: 'Mexican Peso', value: 'mxn' }, + { name: 'Malaysian Ringgit', value: 'myr' }, + { name: 'Mozambican Metical', value: 'mzn' }, + { name: 'Namibian Dollar', value: 'nad' }, + { name: 'Nigerian Naira', value: 'ngn' }, + { name: 'Nicaraguan Córdoba', value: 'nio' }, + { name: 'Norwegian Krone', value: 'nok' }, + { name: 'Nepalese Rupee', value: 'npr' }, + { name: 'New Zealand Dollar', value: 'nzd' }, + { name: 'Omani Rial', value: 'omr' }, + { name: 'Panamanian Balboa', value: 'pab' }, + { name: 'Peruvian Nuevo Sol', value: 'pen' }, + { name: 'Papua New Guinean Kina', value: 'pgk' }, + { name: 'Philippine Peso', value: 'php' }, + { name: 'Pakistani Rupee', value: 'pkr' }, + { name: 'Polish Zloty', value: 'pln' }, + { name: 'Paraguayan Guarani', value: 'pyg' }, + { name: 'Qatari Rial', value: 'qar' }, + { name: 'Romanian Leu', value: 'ron' }, + { name: 'Serbian Dinar', value: 'rsd' }, + { name: 'Russian Ruble', value: 'rub' }, + { name: 'Rwandan Franc', value: 'rwf' }, + { name: 'Saudi Riyal', value: 'sar' }, + { name: 'Solomon Islands Dollar', value: 'sbd' }, + { name: 'Seychellois Rupee', value: 'scr' }, + { name: 'Sudanese Pound', value: 'sdg' }, + { name: 'Swedish Krona', value: 'sek' }, + { name: 'Singapore Dollar', value: 'sgd' }, + { name: 'Saint Helena Pound', value: 'shp' }, + { name: 'Sierra Leonean Leone', value: 'sll' }, + { name: 'Somali Shilling', value: 'sos' }, + { name: 'Surinamese Dollar', value: 'srd' }, + { name: 'South Sudanese Pound', value: 'ssp' }, + { name: 'São Tomé and Príncipe Dobra (pre-2018)', value: 'std' }, + { name: 'São Tomé and Príncipe Dobra', value: 'stn' }, + { name: 'Salvadoran Colón', value: 'svc' }, + { name: 'Syrian Pound', value: 'syp' }, + { name: 'Swazi Lilangeni', value: 'szl' }, + { name: 'Thai Baht', value: 'thb' }, + { name: 'Tajikistani Somoni', value: 'tjs' }, + { name: 'Turkmenistani Manat', value: 'tmt' }, + { name: 'Tunisian Dinar', value: 'tnd' }, + { name: "Tongan Pa'anga", value: 'top' }, + { name: 'Turkish Lira', value: 'try' }, + { name: 'Trinidad and Tobago Dollar', value: 'ttd' }, + { name: 'New Taiwan Dollar', value: 'twd' }, + { name: 'Tanzanian Shilling', value: 'tzs' }, + { name: 'Ukrainian Hryvnia', value: 'uah' }, + { name: 'Ugandan Shilling', value: 'ugx' }, + { name: 'Uruguayan Peso', value: 'uyu' }, + { name: 'Uzbekistan Som', value: 'uzs' }, + { name: 'Venezuelan Bolívar Fuerte', value: 'vef' }, + { name: 'Vietnamese Dong', value: 'vnd' }, + { name: 'Vanuatu Vatu', value: 'vuv' }, + { name: 'Samoan Tala', value: 'wst' }, + { name: 'CFA Franc BEAC', value: 'xaf' }, + { name: 'Silver Ounce', value: 'xag' }, + { name: 'Gold Ounce', value: 'xau' }, + { name: 'East Caribbean Dollar', value: 'xcd' }, + { name: 'Special Drawing Rights', value: 'xdr' }, + { name: 'CFA Franc BCEAO', value: 'xof' }, + { name: 'Palladium Ounce', value: 'xpd' }, + { name: 'CFP Franc', value: 'xpf' }, + { name: 'Platinum Ounce', value: 'xpt' }, + { name: 'Yemeni Rial', value: 'yer' }, + { name: 'South African Rand', value: 'zar' }, + { name: 'Zambian Kwacha', value: 'zmw' }, + { name: 'Zimbabwean Dollar', value: 'zwl' } +] \ No newline at end of file From 925586e54311df77e30673e82dc0ef76ba674784 Mon Sep 17 00:00:00 2001 From: quansenB Date: Sat, 2 Nov 2019 19:48:29 +0100 Subject: [PATCH 29/43] add create ecommerce node description --- .../ActiveCampaign/ActiveCampaign.node.ts | 604 +++++++++++++++++- 1 file changed, 603 insertions(+), 1 deletion(-) diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts index 787f6767c1..622d343d45 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts @@ -79,6 +79,10 @@ export class ActiveCampaign implements INodeType { { name: 'Deal', value: 'deal', + }, + { + name: "E-commerce order", + value: "ecommerceOrder" } ], default: 'contact', @@ -184,6 +188,48 @@ export class ActiveCampaign implements INodeType { description: 'The operation to perform.', }, + { + displayName: 'Operation', + name: 'operation', + type: 'options', + displayOptions: { + show: { + resource: [ + 'ecommerceOrder', + ], + }, + }, + options: [ + { + name: 'Create', + value: 'create', + description: 'Create a order', + }, + { + name: 'Delete', + value: 'delete', + description: 'Delete a order', + }, + { + name: 'Get', + value: 'get', + description: 'Get data of a order', + }, + { + name: 'Get All', + value: 'getAll', + description: 'Get data of all orders', + }, + { + name: 'Update', + value: 'update', + description: 'Update a order', + }, + ], + default: 'create', + description: 'The operation to perform.', + }, + // ---------------------------------- @@ -966,7 +1012,563 @@ export class ActiveCampaign implements INodeType { }, description: 'The content of the deal note', }, + + // ---------------------------------- + // ecommerceOrder + // ---------------------------------- + + // ---------------------------------- + // ecommerceOrder:create + // ---------------------------------- + { + displayName: 'External ID', + name: 'externalid', + type: 'string', + default: '', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The id of the order in the external service. ONLY REQUIRED IF EXTERNALCHECKOUTID NOT INCLUDED', + }, + { + displayName: 'External checkout ID', + name: 'externalcheckoutid', + type: 'string', + default: '', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The id of the cart in the external service. ONLY REQUIRED IF EXTERNALID IS NOT INCLUDED.', + }, + { + displayName: 'Order source', + name: 'source', + type: 'number', + default: 0, + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The order source code (0 - will not trigger automations, 1 - will trigger automations).', + }, + { + displayName: 'Customer Email', + name: 'email', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The email address of the customer who placed the order.', + }, + { + displayName: 'Total price', + name: 'totalPrice', + type: 'number', + default: 0, + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The total price of the order in cents, including tax and shipping charges. (i.e. $456.78 => 45678). Must be greater than or equal to zero.', + }, + { + displayName: 'Order currency', + name: 'currency', + type: 'options', + default: 'eur', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + options: returnAllCurrencyOptions(), + description: 'The currency of the order (3-digit ISO code, e.g., "USD").', + }, + { + displayName: 'Connection ID', + name: 'connectionid', + type: 'number', + default: 0, + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The id of the connection from which this order originated.', + }, + { + displayName: 'Customer ID', + name: 'customerid', + type: 'number', + default: 0, + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The id of the customer associated with this order.', + }, + { + displayName: 'Creation Date', + name: 'externalCreatedDate', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The date the order was placed.', + }, + { + displayName: 'Abandoning Date', + name: 'externalCreatedDate', + type: 'string', + default: '', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The date the cart was abandoned. REQUIRED ONLY IF INCLUDING EXTERNALCHECKOUTID.', + }, + { + displayName: 'Products', + name: 'orderProducts', + type: 'collection', + typeOptions: { + multipleValues: true, + multipleValueButtonText: 'Add product', + }, + displayOptions: { + show: { + operation: [ + 'create' + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + default: {}, + description: 'All ordered products', + placeholder: 'Add product', + options: [ + { + displayName: 'Name', + name: 'name', + type: 'string', + typeOptions: { + alwaysOpenEditWindow: true, + }, + default: '', + description: 'The name of the product', + }, + { + displayName: 'Price', + name: 'price', + type: 'number', + typeOptions: { + alwaysOpenEditWindow: true, + }, + default: 0, + description: 'The price of the product, in cents. (i.e. $456.78 => 45678). Must be greater than or equal to zero.', + }, + { + displayName: 'Product Quantity', + name: 'quantity', + type: 'number', + typeOptions: { + alwaysOpenEditWindow: true, + }, + default: 0, + description: 'The quantity ordered.', + }, + { + displayName: 'Product external ID', + name: 'externalid', + type: 'string', + typeOptions: { + alwaysOpenEditWindow: true, + }, + default: '', + description: 'The id of the product in the external service.', + }, + { + displayName: 'Product Category', + name: 'category', + type: 'string', + default: '', + description: 'The category of the product.', + }, + { + displayName: 'SKU', + name: 'sku', + type: 'string', + default: '', + description: 'The SKU for the product.', + }, + { + displayName: 'Description', + name: 'description', + type: 'string', + default: '', + description: 'The description of the product.', + }, + { + displayName: 'Image URL', + name: 'imageUrl', + type: 'string', + default: '', + description: 'An Image URL that displays an image of the product.', + }, + { + displayName: 'Product URL', + name: 'productUrl', + type: 'string', + default: '', + description: 'A URL linking to the product in your store.', + }, + ], + }, + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'Shipping Amount', + name: 'shippingAmount', + type: 'number', + default: 0, + description: 'The total shipping amount for the order in cents .', + }, + + { + displayName: 'Tax Amount', + name: 'taxAmount', + type: 'number', + default: 0, + description: 'The total tax amount for the order in cents.', + }, + { + displayName: 'Discount Amount', + name: 'discountAmount', + type: 'number', + default: 0, + description: 'The total discount amount for the order in cents.', + }, + { + displayName: 'Order URL', + name: 'orderUrl', + type: 'string', + default: '', + description: 'The URL for the order in the external service.', + }, + { + displayName: 'External updated date', + name: 'externalUpdatedDate', + type: 'string', + default: '', + description: 'The date the order was updated.', + }, + { + displayName: 'Shipping Method', + name: 'shippingMethod', + type: 'string', + default: '', + description: 'The shipping method of the order.', + }, + { + displayName: 'Order Number', + name: 'orderNumber', + type: 'string', + default: '', + description: 'The order number. This can be different than the externalid.', + }, + + ] + }, + // ---------------------------------- + // ecommerceOrder:update + // ---------------------------------- + { + displayName: 'ecommerceOrder ID', + name: 'ecommerceOrderId', + type: 'number', + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + default: 0, + required: true, + description: 'ID of the ecommerceOrder to update.', + }, + { + displayName: 'Update Fields', + name: 'updateFields', + type: 'collection', + description: 'The fields to update.', + placeholder: 'Add Field', + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'Title', + name: 'title', + type: 'string', + default: '', + description: 'The title of the ecommerceOrder', + }, + { + displayName: 'ecommerceOrder\'s contact ID', + name: 'contact', + type: 'number', + default: 0, + description: 'The ID of the ecommerceOrder\'s contact', + }, + { + displayName: 'ecommerceOrder value', + name: 'value', + type: 'number', + default: 0, + description: 'The value of the ecommerceOrder in cents', + }, + { + displayName: 'Currency', + name: 'currency', + type: 'options', + options: returnAllCurrencyOptions(), + default: 'eur', + description: 'The currency of the ecommerceOrder in 3-character ISO format', + }, + { + displayName: 'Description', + name: 'description', + type: 'string', + default: '', + description: 'The description of the ecommerceOrder', + }, + { + displayName: 'ecommerceOrder pipeline ID', + name: 'owner', + type: 'string', + default: '', + description: 'The pipeline ID of the ecommerceOrder', + }, + { + displayName: 'ecommerceOrder stage ID', + name: 'stage', + type: 'string', + default: '', + description: 'The stage ID of the ecommerceOrder', + }, + { + displayName: 'ecommerceOrder owner ID', + name: 'owner', + type: 'string', + default: '', + description: 'The owner ID of the ecommerceOrder', + }, + { + displayName: 'ecommerceOrder percentage', + name: 'percent', + type: 'number', + default: 0, + description: 'The percentage of the ecommerceOrder', + }, + { + displayName: 'ecommerceOrder status', + name: 'status', + type: 'number', + default: 0, + description: 'The status of the ecommerceOrder', + }, + ] + }, + + // ---------------------------------- + // ecommerceOrder:delete + // ---------------------------------- + { + displayName: 'ecommerceOrder ID', + name: 'ecommerceOrderId', + type: 'number', + default: 0, + required: true, + displayOptions: { + show: { + operation: [ + 'delete', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The ID of the ecommerceOrder', + }, + + // ---------------------------------- + // ecommerceOrder:get + // ---------------------------------- + { + displayName: 'ecommerceOrder ID', + name: 'ecommerceOrderId', + type: 'number', + default: 0, + required: true, + displayOptions: { + show: { + operation: [ + 'get', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The ID of the ecommerceOrder', + }, + + // ---------------------------------- + // ecommerceOrder:getAll + // ---------------------------------- + { + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', + displayOptions: { + show: { + operation: [ + 'getAll', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + default: false, + description: 'If all results should be returned or only up to a given limit.', + }, + { + displayName: 'Limit', + name: 'limit', + type: 'number', + displayOptions: { + show: { + operation: [ + 'getAll', + ], + resource: [ + 'ecommerceOrder', + ], + returnAll: [ + false, + ], + }, + }, + typeOptions: { + minValue: 1, + maxValue: 500, + }, + default: 100, + description: 'How many results to return.', + }, ], }; @@ -1193,7 +1795,7 @@ export class ActiveCampaign implements INodeType { } else { throw new Error(`The operation "${operation}" is not known`); } - + } else { throw new Error(`The resource "${resource}" is not known!`); } From a69426d6ba3aab2e0a10ef2c93ca10b40f0af4c3 Mon Sep 17 00:00:00 2001 From: quansenB Date: Sat, 2 Nov 2019 21:49:45 +0100 Subject: [PATCH 30/43] add rest of ecommerce description --- .../ActiveCampaign/ActiveCampaign.node.ts | 272 +++++++++++++----- 1 file changed, 193 insertions(+), 79 deletions(-) diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts index 622d343d45..ffb5435665 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts @@ -1166,7 +1166,7 @@ export class ActiveCampaign implements INodeType { { displayName: 'Creation Date', name: 'externalCreatedDate', - type: 'string', + type: 'dateTime', default: '', required: true, displayOptions: { @@ -1183,8 +1183,8 @@ export class ActiveCampaign implements INodeType { }, { displayName: 'Abandoning Date', - name: 'externalCreatedDate', - type: 'string', + name: 'abandonedDate', + type: 'dateTime', default: '', displayOptions: { show: { @@ -1218,15 +1218,12 @@ export class ActiveCampaign implements INodeType { }, default: {}, description: 'All ordered products', - placeholder: 'Add product', + placeholder: 'Add product field', options: [ { displayName: 'Name', name: 'name', type: 'string', - typeOptions: { - alwaysOpenEditWindow: true, - }, default: '', description: 'The name of the product', }, @@ -1234,9 +1231,6 @@ export class ActiveCampaign implements INodeType { displayName: 'Price', name: 'price', type: 'number', - typeOptions: { - alwaysOpenEditWindow: true, - }, default: 0, description: 'The price of the product, in cents. (i.e. $456.78 => 45678). Must be greater than or equal to zero.', }, @@ -1244,9 +1238,6 @@ export class ActiveCampaign implements INodeType { displayName: 'Product Quantity', name: 'quantity', type: 'number', - typeOptions: { - alwaysOpenEditWindow: true, - }, default: 0, description: 'The quantity ordered.', }, @@ -1254,9 +1245,6 @@ export class ActiveCampaign implements INodeType { displayName: 'Product external ID', name: 'externalid', type: 'string', - typeOptions: { - alwaysOpenEditWindow: true, - }, default: '', description: 'The id of the product in the external service.', }, @@ -1346,7 +1334,7 @@ export class ActiveCampaign implements INodeType { { displayName: 'External updated date', name: 'externalUpdatedDate', - type: 'string', + type: 'dateTime', default: '', description: 'The date the order was updated.', }, @@ -1372,9 +1360,10 @@ export class ActiveCampaign implements INodeType { // ecommerceOrder:update // ---------------------------------- { - displayName: 'ecommerceOrder ID', - name: 'ecommerceOrderId', + displayName: 'Order ID', + name: 'orderId', type: 'number', + default: 0, displayOptions: { show: { operation: [ @@ -1385,15 +1374,13 @@ export class ActiveCampaign implements INodeType { ], }, }, - default: 0, - required: true, - description: 'ID of the ecommerceOrder to update.', + description: 'The id of the e-commerce order.', }, + { - displayName: 'Update Fields', - name: 'updateFields', + displayName: 'Add Field', + name: 'additionalFields', type: 'collection', - description: 'The fields to update.', placeholder: 'Add Field', displayOptions: { show: { @@ -1408,76 +1395,205 @@ export class ActiveCampaign implements INodeType { default: {}, options: [ { - displayName: 'Title', - name: 'title', + displayName: 'External ID', + name: 'externalid', type: 'string', default: '', - description: 'The title of the ecommerceOrder', + description: 'The id of the order in the external service. ONLY REQUIRED IF EXTERNALCHECKOUTID NOT INCLUDED', }, { - displayName: 'ecommerceOrder\'s contact ID', - name: 'contact', + displayName: 'External checkout ID', + name: 'externalcheckoutid', + type: 'string', + default: '', + description: 'The id of the cart in the external service. ONLY REQUIRED IF EXTERNALID IS NOT INCLUDED.', + }, + { + displayName: 'Order source', + name: 'source', type: 'number', default: 0, - description: 'The ID of the ecommerceOrder\'s contact', + description: 'The order source code (0 - will not trigger automations, 1 - will trigger automations).', }, { - displayName: 'ecommerceOrder value', - name: 'value', + displayName: 'Customer Email', + name: 'email', + type: 'string', + default: '', + description: 'The email address of the customer who placed the order.', + }, + { + displayName: 'Total price', + name: 'totalPrice', type: 'number', default: 0, - description: 'The value of the ecommerceOrder in cents', + description: 'The total price of the order in cents, including tax and shipping charges. (i.e. $456.78 => 45678). Must be greater than or equal to zero.', }, { - displayName: 'Currency', + displayName: 'Order currency', name: 'currency', type: 'options', - options: returnAllCurrencyOptions(), default: 'eur', - description: 'The currency of the ecommerceOrder in 3-character ISO format', + options: returnAllCurrencyOptions(), + description: 'The currency of the order (3-digit ISO code, e.g., "USD").', }, { - displayName: 'Description', - name: 'description', - type: 'string', - default: '', - description: 'The description of the ecommerceOrder', - }, - { - displayName: 'ecommerceOrder pipeline ID', - name: 'owner', - type: 'string', - default: '', - description: 'The pipeline ID of the ecommerceOrder', - }, - { - displayName: 'ecommerceOrder stage ID', - name: 'stage', - type: 'string', - default: '', - description: 'The stage ID of the ecommerceOrder', - }, - { - displayName: 'ecommerceOrder owner ID', - name: 'owner', - type: 'string', - default: '', - description: 'The owner ID of the ecommerceOrder', - }, - { - displayName: 'ecommerceOrder percentage', - name: 'percent', + displayName: 'Connection ID', + name: 'connectionid', type: 'number', default: 0, - description: 'The percentage of the ecommerceOrder', + description: 'The id of the connection from which this order originated.', }, { - displayName: 'ecommerceOrder status', - name: 'status', + displayName: 'Customer ID', + name: 'customerid', type: 'number', default: 0, - description: 'The status of the ecommerceOrder', + description: 'The id of the customer associated with this order.', }, + { + displayName: 'Creation Date', + name: 'externalupdatedDate', + type: 'dateTime', + default: '', + description: 'The date the order was placed.', + }, + { + displayName: 'Abandoning Date', + name: 'abandonedDate', + type: 'dateTime', + default: '', + description: 'The date the cart was abandoned. REQUIRED ONLY IF INCLUDING EXTERNALCHECKOUTID.', + }, + { + displayName: 'Shipping Amount', + name: 'shippingAmount', + type: 'number', + default: 0, + description: 'The total shipping amount for the order in cents .', + }, + + { + displayName: 'Tax Amount', + name: 'taxAmount', + type: 'number', + default: 0, + description: 'The total tax amount for the order in cents.', + }, + { + displayName: 'Discount Amount', + name: 'discountAmount', + type: 'number', + default: 0, + description: 'The total discount amount for the order in cents.', + }, + { + displayName: 'Order URL', + name: 'orderUrl', + type: 'string', + default: '', + description: 'The URL for the order in the external service.', + }, + { + displayName: 'External updated date', + name: 'externalUpdatedDate', + type: 'dateTime', + default: '', + description: 'The date the order was updated.', + }, + { + displayName: 'Shipping Method', + name: 'shippingMethod', + type: 'string', + default: '', + description: 'The shipping method of the order.', + }, + { + displayName: 'Order Number', + name: 'orderNumber', + type: 'string', + default: '', + description: 'The order number. This can be different than the externalid.', + }, + + { + displayName: 'Products', + name: 'orderProducts', + type: 'collection', + typeOptions: { + multipleValues: true, + multipleValueButtonText: 'Add product', + }, + default: {}, + description: 'All ordered products', + placeholder: 'Add product field', + options: [ + { + displayName: 'Name', + name: 'name', + type: 'string', + default: '', + description: 'The name of the product', + }, + { + displayName: 'Price', + name: 'price', + type: 'number', + default: 0, + description: 'The price of the product, in cents. (i.e. $456.78 => 45678). Must be greater than or equal to zero.', + }, + { + displayName: 'Product Quantity', + name: 'quantity', + type: 'number', + default: 0, + description: 'The quantity ordered.', + }, + { + displayName: 'Product external ID', + name: 'externalid', + type: 'string', + default: '', + description: 'The id of the product in the external service.', + }, + { + displayName: 'Product Category', + name: 'category', + type: 'string', + default: '', + description: 'The category of the product.', + }, + { + displayName: 'SKU', + name: 'sku', + type: 'string', + default: '', + description: 'The SKU for the product.', + }, + { + displayName: 'Description', + name: 'description', + type: 'string', + default: '', + description: 'The description of the product.', + }, + { + displayName: 'Image URL', + name: 'imageUrl', + type: 'string', + default: '', + description: 'An Image URL that displays an image of the product.', + }, + { + displayName: 'Product URL', + name: 'productUrl', + type: 'string', + default: '', + description: 'A URL linking to the product in your store.', + }, + ], + }, + ] }, @@ -1485,11 +1601,10 @@ export class ActiveCampaign implements INodeType { // ecommerceOrder:delete // ---------------------------------- { - displayName: 'ecommerceOrder ID', - name: 'ecommerceOrderId', + displayName: 'Order ID', + name: 'orderId', type: 'number', default: 0, - required: true, displayOptions: { show: { operation: [ @@ -1500,18 +1615,17 @@ export class ActiveCampaign implements INodeType { ], }, }, - description: 'The ID of the ecommerceOrder', + description: 'The id of the e-commerce order.', }, // ---------------------------------- // ecommerceOrder:get // ---------------------------------- { - displayName: 'ecommerceOrder ID', - name: 'ecommerceOrderId', + displayName: 'Order ID', + name: 'orderId', type: 'number', default: 0, - required: true, displayOptions: { show: { operation: [ @@ -1522,7 +1636,7 @@ export class ActiveCampaign implements INodeType { ], }, }, - description: 'The ID of the ecommerceOrder', + description: 'The id of the e-commerce order.', }, // ---------------------------------- From 6bd391a35e0f85a130262b7c90bbccc4e776ea16 Mon Sep 17 00:00:00 2001 From: quansenB Date: Sat, 2 Nov 2019 23:11:55 +0100 Subject: [PATCH 31/43] finish ecom order endpoints --- .../ActiveCampaign/ActiveCampaign.node.ts | 119 ++++++++++++++++-- .../nodes/ActiveCampaign/GenericFunctions.ts | 6 + 2 files changed, 113 insertions(+), 12 deletions(-) diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts index ffb5435665..55fc88617f 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts @@ -7,12 +7,12 @@ import { INodeTypeDescription, INodeExecutionData, INodeType, - INodePropertyOptions, } from 'n8n-workflow'; import { activeCampaignApiRequest, activeCampaignApiRequestAllItems, + IProduct, } from './GenericFunctions'; import { returnAllCurrencyOptions } from './currencies' @@ -623,7 +623,7 @@ export class ActiveCampaign implements INodeType { }, { displayName: 'Deal pipeline ID', - name: 'owner', + name: 'group', type: 'string', default: '', displayOptions: { @@ -791,7 +791,7 @@ export class ActiveCampaign implements INodeType { }, { displayName: 'Deal pipeline ID', - name: 'owner', + name: 'group', type: 'string', default: '', description: 'The pipeline ID of the deal', @@ -1355,7 +1355,7 @@ export class ActiveCampaign implements INodeType { ] }, - + // ---------------------------------- // ecommerceOrder:update // ---------------------------------- @@ -1376,10 +1376,10 @@ export class ActiveCampaign implements INodeType { }, description: 'The id of the e-commerce order.', }, - + { displayName: 'Add Field', - name: 'additionalFields', + name: 'updateFields', type: 'collection', placeholder: 'Add Field', displayOptions: { @@ -1515,7 +1515,7 @@ export class ActiveCampaign implements INodeType { default: '', description: 'The order number. This can be different than the externalid.', }, - + { displayName: 'Products', name: 'orderProducts', @@ -1682,7 +1682,7 @@ export class ActiveCampaign implements INodeType { }, default: 100, description: 'How many results to return.', - }, + }, ], }; @@ -1805,9 +1805,10 @@ export class ActiveCampaign implements INodeType { title: this.getNodeParameter('title', i) as string, contact: this.getNodeParameter('contact', i) as string, value: this.getNodeParameter('value', i) as number, + currency: this.getNodeParameter('currency', i) as string } as IDataObject; - const group = this.getNodeParameter('owner', i) as string + const group = this.getNodeParameter('group', i) as string if (group !== '') { addAdditionalFields(body.deal as IDataObject, { group }) } @@ -1822,9 +1823,6 @@ export class ActiveCampaign implements INodeType { addAdditionalFields(body.deal as IDataObject, { stage }) } - const currency = this.getNodeParameter('currency', i) as string - addAdditionalFields(body.deal as IDataObject, { currency }) - const additionalFields = this.getNodeParameter('additionalFields', i) as IDataObject; addAdditionalFields(body.deal as IDataObject, additionalFields); @@ -1906,6 +1904,103 @@ export class ActiveCampaign implements INodeType { endpoint = `/api/3/deals/${dealId}/notes/${dealNoteId}`; + } else { + throw new Error(`The operation "${operation}" is not known`); + } + } else if (resource === 'ecommerceOrder') { + if (operation === 'create') { + // ---------------------------------- + // ecommerceOrder:create + // ---------------------------------- + + requestMethod = 'POST'; + + endpoint = '/api/3/ecomOrders'; + + dataKey = 'ecommerceOrder'; + + body.ecomOrder = { + source: this.getNodeParameter('source', i) as string, + email: this.getNodeParameter('email', i) as string, + totalPrice: this.getNodeParameter('totalPrice', i) as number, + currency: this.getNodeParameter('currency', i).toString().toUpperCase() as string, + externalCreatedDate: this.getNodeParameter('externalCreatedDate', i) as string, + connectionid: this.getNodeParameter('connectionid', i) as number, + customerid: this.getNodeParameter('customerid', i) as number, + } as IDataObject; + + const externalid = this.getNodeParameter('externalid', i) as string; + if (externalid !== '') { + addAdditionalFields(body.ecomOrder as IDataObject, { externalid }); + } + + const externalcheckoutid = this.getNodeParameter('externalcheckoutid', i) as string; + if (externalcheckoutid !== '') { + addAdditionalFields(body.ecomOrder as IDataObject, { externalcheckoutid }); + } + + const abandonedDate = this.getNodeParameter('abandonedDate', i) as string; + if (abandonedDate !== '') { + addAdditionalFields(body.ecomOrder as IDataObject, { abandonedDate }); + } + + const orderProducts = this.getNodeParameter('orderProducts', i) as unknown as IProduct[]; + addAdditionalFields(body.ecomOrder as IDataObject, { orderProducts }); + + const additionalFields = this.getNodeParameter('additionalFields', i) as IDataObject; + addAdditionalFields(body.ecomOrder as IDataObject, additionalFields); + + } else if (operation === 'update') { + // ---------------------------------- + // ecommerceOrder:update + // ---------------------------------- + + requestMethod = 'PUT'; + + const orderId = this.getNodeParameter('orderId', i) as number; + endpoint = `/api/3/ecomOrders/${orderId}`; + + dataKey = 'ecommerceOrder'; + body.ecomOrder = {} as IDataObject; + + const updateFields = this.getNodeParameter('updateFields', i) as IDataObject; + addAdditionalFields(body.ecomOrder as IDataObject, updateFields); + + } else if (operation === 'delete') { + // ---------------------------------- + // ecommerceOrder:delete + // ---------------------------------- + + requestMethod = 'DELETE'; + + const orderId = this.getNodeParameter('orderId', i) as number; + endpoint = `/api/3/ecomOrders/${orderId}`; + + } else if (operation === 'get') { + // ---------------------------------- + // ecommerceOrder:get + // ---------------------------------- + + requestMethod = 'GET'; + + const orderId = this.getNodeParameter('orderId', i) as number; + endpoint = `/api/3/ecomOrders/${orderId}`; + + } else if (operation === 'getAll') { + // ---------------------------------- + // ecommerceOrders:getAll + // ---------------------------------- + + requestMethod = 'GET'; + + returnAll = this.getNodeParameter('returnAll', i) as boolean; + if (returnAll === false) { + qs.limit = this.getNodeParameter('limit', i) as number; + } + + dataKey = 'ecommerceOrders'; + endpoint = `/api/3/ecomOrders`; + } else { throw new Error(`The operation "${operation}" is not known`); } diff --git a/packages/nodes-base/nodes/ActiveCampaign/GenericFunctions.ts b/packages/nodes-base/nodes/ActiveCampaign/GenericFunctions.ts index 169c9f1146..932f73e2c1 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/GenericFunctions.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/GenericFunctions.ts @@ -9,6 +9,12 @@ import { import { OptionsWithUri } from 'request'; +export interface IProduct { + fields: { + item?: object[]; + }; +} + /** * Make an API request to ActiveCampaign From 09d00fc0d709a898e569003b14aabe0579c34727 Mon Sep 17 00:00:00 2001 From: quansenB Date: Sun, 3 Nov 2019 12:47:36 +0100 Subject: [PATCH 32/43] refactor node description --- .../ActiveCampaign/ActiveCampaign.node.ts | 1600 +---------------- .../ActiveCampaign/ContactDescription.ts | 351 ++++ .../nodes/ActiveCampaign/DealDescription.ts | 529 ++++++ .../ActiveCampaign/EcomOrderDescription.ts | 719 ++++++++ .../nodes/ActiveCampaign/currencies.ts | 348 ++-- 5 files changed, 1792 insertions(+), 1755 deletions(-) create mode 100644 packages/nodes-base/nodes/ActiveCampaign/ContactDescription.ts create mode 100644 packages/nodes-base/nodes/ActiveCampaign/DealDescription.ts create mode 100644 packages/nodes-base/nodes/ActiveCampaign/EcomOrderDescription.ts diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts index 55fc88617f..127d06c459 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts @@ -15,7 +15,20 @@ import { IProduct, } from './GenericFunctions'; -import { returnAllCurrencyOptions } from './currencies' +import { + contactOperations, + contactFields +} from './ContactDescription'; + +import { + dealOperations, + dealFields +} from './DealDescription'; + +import { + ecomOrderOperations, + ecomOrderFields +} from './EcomOrderDescription'; interface CustomProperty { name: string; @@ -63,7 +76,6 @@ export class ActiveCampaign implements INodeType { } ], properties: [ - // ---------------------------------- // resources // ---------------------------------- @@ -89,1600 +101,28 @@ export class ActiveCampaign implements INodeType { description: 'The resource to operate on.', }, - - // ---------------------------------- // operations // ---------------------------------- - { - displayName: 'Operation', - name: 'operation', - type: 'options', - displayOptions: { - show: { - resource: [ - 'contact', - ], - }, - }, - options: [ - { - name: 'Create', - value: 'create', - description: 'Create a contact', - }, - { - name: 'Delete', - value: 'delete', - description: 'Delete a contact', - }, - { - name: 'Get', - value: 'get', - description: 'Get data of a contact', - }, - { - name: 'Get All', - value: 'getAll', - description: 'Get data of all contact', - }, - { - name: 'Update', - value: 'update', - description: 'Update a contact', - }, - ], - default: 'create', - description: 'The operation to perform.', - }, - - { - displayName: 'Operation', - name: 'operation', - type: 'options', - displayOptions: { - show: { - resource: [ - 'deal', - ], - }, - }, - options: [ - { - name: 'Create', - value: 'create', - description: 'Create a deal', - }, - { - name: 'Delete', - value: 'delete', - description: 'Delete a deal', - }, - { - name: 'Get', - value: 'get', - description: 'Get data of a deal', - }, - { - name: 'Get All', - value: 'getAll', - description: 'Get data of all deals', - }, - { - name: 'Update', - value: 'update', - description: 'Update a deal', - }, - { - name: 'Create Note', - value: 'createNote', - description: 'Create a deal note', - }, - { - name: 'Update deal note', - value: 'updateNote', - description: 'Update a deal note', - }, - ], - default: 'create', - description: 'The operation to perform.', - }, - - { - displayName: 'Operation', - name: 'operation', - type: 'options', - displayOptions: { - show: { - resource: [ - 'ecommerceOrder', - ], - }, - }, - options: [ - { - name: 'Create', - value: 'create', - description: 'Create a order', - }, - { - name: 'Delete', - value: 'delete', - description: 'Delete a order', - }, - { - name: 'Get', - value: 'get', - description: 'Get data of a order', - }, - { - name: 'Get All', - value: 'getAll', - description: 'Get data of all orders', - }, - { - name: 'Update', - value: 'update', - description: 'Update a order', - }, - ], - default: 'create', - description: 'The operation to perform.', - }, - - + ...contactOperations, + ...dealOperations, + ...ecomOrderOperations, // ---------------------------------- // contact // ---------------------------------- - - // ---------------------------------- - // contact:create - // ---------------------------------- - { - displayName: 'Email', - name: 'email', - type: 'string', - default: '', - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'contact', - ], - }, - }, - description: 'The email of the contact to create', - }, - { - displayName: 'Update if exists', - name: 'updateIfExists', - type: 'boolean', - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'contact', - ], - }, - }, - default: false, - description: 'Update user if it exists already. If not set and user exists it will error instead.', - }, - { - displayName: 'Additional Fields', - name: 'additionalFields', - type: 'collection', - placeholder: 'Add Field', - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'contact', - ], - }, - }, - default: {}, - options: [ - { - displayName: 'First Name', - name: 'firstName', - type: 'string', - default: '', - description: 'The first name of the contact to create', - }, - { - displayName: 'Last Name', - name: 'lastName', - type: 'string', - default: '', - description: 'The last name of the contact to create', - }, - { - displayName: 'Phone', - name: 'phone', - type: 'string', - default: '', - description: 'Phone number of the contact.', - }, - { - displayName: 'Custom Properties', - name: 'customProperties', - placeholder: 'Add Custom Property', - description: 'Adds a custom property to set also values which have not been predefined.', - type: 'fixedCollection', - typeOptions: { - multipleValues: true, - }, - default: {}, - options: [ - { - name: 'property', - displayName: 'Property', - values: [ - { - displayName: 'Property Name', - name: 'name', - type: 'string', - default: '', - description: 'Name of the property to set.', - }, - { - displayName: 'Property Value', - name: 'value', - type: 'string', - default: '', - description: 'Value of the property to set.', - }, - ] - }, - ], - }, - ], - }, - - // ---------------------------------- - // contact:update - // ---------------------------------- - { - displayName: 'Contact ID', - name: 'contactId', - type: 'number', - displayOptions: { - show: { - operation: [ - 'update', - ], - resource: [ - 'contact', - ], - }, - }, - default: 0, - required: true, - description: 'ID of the contact to update.', - }, - { - displayName: 'Update Fields', - name: 'updateFields', - type: 'collection', - description: 'The fields to update.', - placeholder: 'Add Field', - displayOptions: { - show: { - operation: [ - 'update', - ], - resource: [ - 'contact', - ], - }, - }, - default: {}, - options: [ - { - displayName: 'Email', - name: 'email', - type: 'string', - default: '', - description: 'Email of the contact.', - }, - { - displayName: 'First Name', - name: 'firstName', - type: 'string', - default: '', - description: 'First name of the contact', - }, - { - displayName: 'Last Name', - name: 'lastName', - type: 'string', - default: '', - description: 'Last name of the contact', - }, - { - displayName: 'Phone', - name: 'phone', - type: 'string', - default: '', - description: 'Phone number of the contact.', - }, - { - displayName: 'Custom Properties', - name: 'customProperties', - placeholder: 'Add Custom Property', - description: 'Adds a custom property to set also values which have not been predefined.', - type: 'fixedCollection', - typeOptions: { - multipleValues: true, - }, - default: {}, - options: [ - { - name: 'property', - displayName: 'Property', - values: [ - { - displayName: 'Property Name', - name: 'name', - type: 'string', - default: '', - description: 'Name of the property to set.', - }, - { - displayName: 'Property Value', - name: 'value', - type: 'string', - default: '', - description: 'Value of the property to set.', - }, - ] - }, - ], - }, - ], - }, - - // ---------------------------------- - // contact:delete - // ---------------------------------- - { - displayName: 'Contact ID', - name: 'contactId', - type: 'number', - displayOptions: { - show: { - operation: [ - 'delete', - ], - resource: [ - 'contact', - ], - }, - }, - default: 0, - required: true, - description: 'ID of the contact to delete.', - }, - - // ---------------------------------- - // contact:get - // ---------------------------------- - { - displayName: 'Contact ID', - name: 'contactId', - type: 'number', - displayOptions: { - show: { - operation: [ - 'get', - ], - resource: [ - 'contact', - ], - }, - }, - default: 0, - required: true, - description: 'ID of the contact to get.', - }, - - // ---------------------------------- - // contact:getAll - // ---------------------------------- - { - displayName: 'Return All', - name: 'returnAll', - type: 'boolean', - displayOptions: { - show: { - operation: [ - 'getAll', - ], - resource: [ - 'contact', - ], - }, - }, - default: false, - description: 'If all results should be returned or only up to a given limit.', - }, - { - displayName: 'Limit', - name: 'limit', - type: 'number', - displayOptions: { - show: { - operation: [ - 'getAll', - ], - resource: [ - 'contact', - ], - returnAll: [ - false, - ], - }, - }, - typeOptions: { - minValue: 1, - maxValue: 500, - }, - default: 100, - description: 'How many results to return.', - }, - + ...contactFields, // ---------------------------------- // deal // ---------------------------------- - - // ---------------------------------- - // deal:create - // ---------------------------------- - { - displayName: 'Title', - name: 'title', - type: 'string', - default: '', - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'deal', - ], - }, - }, - description: 'The title of the deal', - }, - { - displayName: 'Deal\'s contact ID', - name: 'contact', - type: 'number', - default: 0, - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'deal', - ], - }, - }, - description: 'The ID of the deal\'s contact', - }, - { - displayName: 'Deal value', - name: 'value', - type: 'number', - default: 0, - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'deal', - ], - }, - }, - description: 'The value of the deal in cents', - }, - { - displayName: 'Currency', - name: 'currency', - type: 'options', - default: 'eur', - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'deal', - ], - }, - }, - options: returnAllCurrencyOptions(), - description: 'The currency of the deal in 3-character ISO format', - }, - { - displayName: 'Deal pipeline ID', - name: 'group', - type: 'string', - default: '', - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'deal', - ], - }, - }, - description: 'The pipeline ID of the deal', - }, - { - displayName: 'Deal stage ID', - name: 'stage', - type: 'string', - default: '', - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'deal', - ], - }, - }, - description: 'The stage ID of the deal', - }, - { - displayName: 'Deal owner ID', - name: 'owner', - type: 'string', - default: '', - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'deal', - ], - }, - }, - description: 'The owner ID of the deal', - }, - { - displayName: 'Additional Fields', - name: 'additionalFields', - type: 'collection', - placeholder: 'Add Field', - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'deal', - ], - }, - }, - default: {}, - options: [ - { - displayName: 'Description', - name: 'description', - type: 'string', - default: '', - description: 'The description of the deal', - }, - - { - displayName: 'Deal percentage', - name: 'percent', - type: 'number', - default: 0, - description: 'The percentage of the deal', - }, - { - displayName: 'Deal status', - name: 'status', - type: 'number', - default: 0, - description: 'The status of the deal', - }, - ] - }, - - // ---------------------------------- - // deal:update - // ---------------------------------- - { - displayName: 'Deal ID', - name: 'dealId', - type: 'number', - displayOptions: { - show: { - operation: [ - 'update', - ], - resource: [ - 'deal', - ], - }, - }, - default: 0, - required: true, - description: 'ID of the deal to update.', - }, - { - displayName: 'Update Fields', - name: 'updateFields', - type: 'collection', - description: 'The fields to update.', - placeholder: 'Add Field', - displayOptions: { - show: { - operation: [ - 'update', - ], - resource: [ - 'deal', - ], - }, - }, - default: {}, - options: [ - { - displayName: 'Title', - name: 'title', - type: 'string', - default: '', - description: 'The title of the deal', - }, - { - displayName: 'Deal\'s contact ID', - name: 'contact', - type: 'number', - default: 0, - description: 'The ID of the deal\'s contact', - }, - { - displayName: 'Deal value', - name: 'value', - type: 'number', - default: 0, - description: 'The value of the deal in cents', - }, - { - displayName: 'Currency', - name: 'currency', - type: 'options', - options: returnAllCurrencyOptions(), - default: 'eur', - description: 'The currency of the deal in 3-character ISO format', - }, - { - displayName: 'Description', - name: 'description', - type: 'string', - default: '', - description: 'The description of the deal', - }, - { - displayName: 'Deal pipeline ID', - name: 'group', - type: 'string', - default: '', - description: 'The pipeline ID of the deal', - }, - { - displayName: 'Deal stage ID', - name: 'stage', - type: 'string', - default: '', - description: 'The stage ID of the deal', - }, - { - displayName: 'Deal owner ID', - name: 'owner', - type: 'string', - default: '', - description: 'The owner ID of the deal', - }, - { - displayName: 'Deal percentage', - name: 'percent', - type: 'number', - default: 0, - description: 'The percentage of the deal', - }, - { - displayName: 'Deal status', - name: 'status', - type: 'number', - default: 0, - description: 'The status of the deal', - }, - ] - }, - - // ---------------------------------- - // deal:delete - // ---------------------------------- - { - displayName: 'Deal ID', - name: 'dealId', - type: 'number', - default: 0, - required: true, - displayOptions: { - show: { - operation: [ - 'delete', - ], - resource: [ - 'deal', - ], - }, - }, - description: 'The ID of the deal', - }, - - // ---------------------------------- - // deal:get - // ---------------------------------- - { - displayName: 'Deal ID', - name: 'dealId', - type: 'number', - default: 0, - required: true, - displayOptions: { - show: { - operation: [ - 'get', - ], - resource: [ - 'deal', - ], - }, - }, - description: 'The ID of the deal', - }, - - // ---------------------------------- - // deal:getAll - // ---------------------------------- - { - displayName: 'Return All', - name: 'returnAll', - type: 'boolean', - displayOptions: { - show: { - operation: [ - 'getAll', - ], - resource: [ - 'deal', - ], - }, - }, - default: false, - description: 'If all results should be returned or only up to a given limit.', - }, - { - displayName: 'Limit', - name: 'limit', - type: 'number', - displayOptions: { - show: { - operation: [ - 'getAll', - ], - resource: [ - 'deal', - ], - returnAll: [ - false, - ], - }, - }, - typeOptions: { - minValue: 1, - maxValue: 500, - }, - default: 100, - description: 'How many results to return.', - }, - - // ---------------------------------- - // dealNote:create - // ---------------------------------- - { - displayName: 'Deal ID', - name: 'dealId', - type: 'number', - default: '', - required: true, - displayOptions: { - show: { - operation: [ - 'createNote', - ], - resource: [ - 'deal', - ], - }, - }, - description: 'The ID of the deal note', - }, - { - displayName: 'Deal Note', - name: 'dealNote', - type: 'string', - default: '', - required: true, - displayOptions: { - show: { - operation: [ - 'createNote', - ], - resource: [ - 'deal', - ], - }, - }, - description: 'The content of the deal note', - }, - - // ---------------------------------- - // dealNote:update - // ---------------------------------- - { - displayName: 'Deal ID', - name: 'dealId', - type: 'number', - default: '', - required: true, - displayOptions: { - show: { - operation: [ - 'updateNote', - ], - resource: [ - 'deal', - ], - }, - }, - description: 'The ID of the deal note', - }, - { - displayName: 'Deal note ID', - name: 'dealNoteId', - type: 'number', - default: '', - required: true, - displayOptions: { - show: { - operation: [ - 'updateNote', - ], - resource: [ - 'deal', - ], - }, - }, - description: 'The ID of the deal note', - }, - { - displayName: 'Deal Note', - name: 'dealNote', - type: 'string', - default: '', - displayOptions: { - show: { - operation: [ - 'updateNote', - ], - resource: [ - 'deal', - ], - }, - }, - description: 'The content of the deal note', - }, + ...dealFields, // ---------------------------------- // ecommerceOrder // ---------------------------------- + ...ecomOrderFields, - // ---------------------------------- - // ecommerceOrder:create - // ---------------------------------- - { - displayName: 'External ID', - name: 'externalid', - type: 'string', - default: '', - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The id of the order in the external service. ONLY REQUIRED IF EXTERNALCHECKOUTID NOT INCLUDED', - }, - { - displayName: 'External checkout ID', - name: 'externalcheckoutid', - type: 'string', - default: '', - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The id of the cart in the external service. ONLY REQUIRED IF EXTERNALID IS NOT INCLUDED.', - }, - { - displayName: 'Order source', - name: 'source', - type: 'number', - default: 0, - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The order source code (0 - will not trigger automations, 1 - will trigger automations).', - }, - { - displayName: 'Customer Email', - name: 'email', - type: 'string', - default: '', - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The email address of the customer who placed the order.', - }, - { - displayName: 'Total price', - name: 'totalPrice', - type: 'number', - default: 0, - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The total price of the order in cents, including tax and shipping charges. (i.e. $456.78 => 45678). Must be greater than or equal to zero.', - }, - { - displayName: 'Order currency', - name: 'currency', - type: 'options', - default: 'eur', - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - options: returnAllCurrencyOptions(), - description: 'The currency of the order (3-digit ISO code, e.g., "USD").', - }, - { - displayName: 'Connection ID', - name: 'connectionid', - type: 'number', - default: 0, - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The id of the connection from which this order originated.', - }, - { - displayName: 'Customer ID', - name: 'customerid', - type: 'number', - default: 0, - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The id of the customer associated with this order.', - }, - { - displayName: 'Creation Date', - name: 'externalCreatedDate', - type: 'dateTime', - default: '', - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The date the order was placed.', - }, - { - displayName: 'Abandoning Date', - name: 'abandonedDate', - type: 'dateTime', - default: '', - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The date the cart was abandoned. REQUIRED ONLY IF INCLUDING EXTERNALCHECKOUTID.', - }, - { - displayName: 'Products', - name: 'orderProducts', - type: 'collection', - typeOptions: { - multipleValues: true, - multipleValueButtonText: 'Add product', - }, - displayOptions: { - show: { - operation: [ - 'create' - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - default: {}, - description: 'All ordered products', - placeholder: 'Add product field', - options: [ - { - displayName: 'Name', - name: 'name', - type: 'string', - default: '', - description: 'The name of the product', - }, - { - displayName: 'Price', - name: 'price', - type: 'number', - default: 0, - description: 'The price of the product, in cents. (i.e. $456.78 => 45678). Must be greater than or equal to zero.', - }, - { - displayName: 'Product Quantity', - name: 'quantity', - type: 'number', - default: 0, - description: 'The quantity ordered.', - }, - { - displayName: 'Product external ID', - name: 'externalid', - type: 'string', - default: '', - description: 'The id of the product in the external service.', - }, - { - displayName: 'Product Category', - name: 'category', - type: 'string', - default: '', - description: 'The category of the product.', - }, - { - displayName: 'SKU', - name: 'sku', - type: 'string', - default: '', - description: 'The SKU for the product.', - }, - { - displayName: 'Description', - name: 'description', - type: 'string', - default: '', - description: 'The description of the product.', - }, - { - displayName: 'Image URL', - name: 'imageUrl', - type: 'string', - default: '', - description: 'An Image URL that displays an image of the product.', - }, - { - displayName: 'Product URL', - name: 'productUrl', - type: 'string', - default: '', - description: 'A URL linking to the product in your store.', - }, - ], - }, - { - displayName: 'Additional Fields', - name: 'additionalFields', - type: 'collection', - placeholder: 'Add Field', - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - default: {}, - options: [ - { - displayName: 'Shipping Amount', - name: 'shippingAmount', - type: 'number', - default: 0, - description: 'The total shipping amount for the order in cents .', - }, - - { - displayName: 'Tax Amount', - name: 'taxAmount', - type: 'number', - default: 0, - description: 'The total tax amount for the order in cents.', - }, - { - displayName: 'Discount Amount', - name: 'discountAmount', - type: 'number', - default: 0, - description: 'The total discount amount for the order in cents.', - }, - { - displayName: 'Order URL', - name: 'orderUrl', - type: 'string', - default: '', - description: 'The URL for the order in the external service.', - }, - { - displayName: 'External updated date', - name: 'externalUpdatedDate', - type: 'dateTime', - default: '', - description: 'The date the order was updated.', - }, - { - displayName: 'Shipping Method', - name: 'shippingMethod', - type: 'string', - default: '', - description: 'The shipping method of the order.', - }, - { - displayName: 'Order Number', - name: 'orderNumber', - type: 'string', - default: '', - description: 'The order number. This can be different than the externalid.', - }, - - ] - }, - - // ---------------------------------- - // ecommerceOrder:update - // ---------------------------------- - { - displayName: 'Order ID', - name: 'orderId', - type: 'number', - default: 0, - displayOptions: { - show: { - operation: [ - 'update', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The id of the e-commerce order.', - }, - - { - displayName: 'Add Field', - name: 'updateFields', - type: 'collection', - placeholder: 'Add Field', - displayOptions: { - show: { - operation: [ - 'update', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - default: {}, - options: [ - { - displayName: 'External ID', - name: 'externalid', - type: 'string', - default: '', - description: 'The id of the order in the external service. ONLY REQUIRED IF EXTERNALCHECKOUTID NOT INCLUDED', - }, - { - displayName: 'External checkout ID', - name: 'externalcheckoutid', - type: 'string', - default: '', - description: 'The id of the cart in the external service. ONLY REQUIRED IF EXTERNALID IS NOT INCLUDED.', - }, - { - displayName: 'Order source', - name: 'source', - type: 'number', - default: 0, - description: 'The order source code (0 - will not trigger automations, 1 - will trigger automations).', - }, - { - displayName: 'Customer Email', - name: 'email', - type: 'string', - default: '', - description: 'The email address of the customer who placed the order.', - }, - { - displayName: 'Total price', - name: 'totalPrice', - type: 'number', - default: 0, - description: 'The total price of the order in cents, including tax and shipping charges. (i.e. $456.78 => 45678). Must be greater than or equal to zero.', - }, - { - displayName: 'Order currency', - name: 'currency', - type: 'options', - default: 'eur', - options: returnAllCurrencyOptions(), - description: 'The currency of the order (3-digit ISO code, e.g., "USD").', - }, - { - displayName: 'Connection ID', - name: 'connectionid', - type: 'number', - default: 0, - description: 'The id of the connection from which this order originated.', - }, - { - displayName: 'Customer ID', - name: 'customerid', - type: 'number', - default: 0, - description: 'The id of the customer associated with this order.', - }, - { - displayName: 'Creation Date', - name: 'externalupdatedDate', - type: 'dateTime', - default: '', - description: 'The date the order was placed.', - }, - { - displayName: 'Abandoning Date', - name: 'abandonedDate', - type: 'dateTime', - default: '', - description: 'The date the cart was abandoned. REQUIRED ONLY IF INCLUDING EXTERNALCHECKOUTID.', - }, - { - displayName: 'Shipping Amount', - name: 'shippingAmount', - type: 'number', - default: 0, - description: 'The total shipping amount for the order in cents .', - }, - - { - displayName: 'Tax Amount', - name: 'taxAmount', - type: 'number', - default: 0, - description: 'The total tax amount for the order in cents.', - }, - { - displayName: 'Discount Amount', - name: 'discountAmount', - type: 'number', - default: 0, - description: 'The total discount amount for the order in cents.', - }, - { - displayName: 'Order URL', - name: 'orderUrl', - type: 'string', - default: '', - description: 'The URL for the order in the external service.', - }, - { - displayName: 'External updated date', - name: 'externalUpdatedDate', - type: 'dateTime', - default: '', - description: 'The date the order was updated.', - }, - { - displayName: 'Shipping Method', - name: 'shippingMethod', - type: 'string', - default: '', - description: 'The shipping method of the order.', - }, - { - displayName: 'Order Number', - name: 'orderNumber', - type: 'string', - default: '', - description: 'The order number. This can be different than the externalid.', - }, - - { - displayName: 'Products', - name: 'orderProducts', - type: 'collection', - typeOptions: { - multipleValues: true, - multipleValueButtonText: 'Add product', - }, - default: {}, - description: 'All ordered products', - placeholder: 'Add product field', - options: [ - { - displayName: 'Name', - name: 'name', - type: 'string', - default: '', - description: 'The name of the product', - }, - { - displayName: 'Price', - name: 'price', - type: 'number', - default: 0, - description: 'The price of the product, in cents. (i.e. $456.78 => 45678). Must be greater than or equal to zero.', - }, - { - displayName: 'Product Quantity', - name: 'quantity', - type: 'number', - default: 0, - description: 'The quantity ordered.', - }, - { - displayName: 'Product external ID', - name: 'externalid', - type: 'string', - default: '', - description: 'The id of the product in the external service.', - }, - { - displayName: 'Product Category', - name: 'category', - type: 'string', - default: '', - description: 'The category of the product.', - }, - { - displayName: 'SKU', - name: 'sku', - type: 'string', - default: '', - description: 'The SKU for the product.', - }, - { - displayName: 'Description', - name: 'description', - type: 'string', - default: '', - description: 'The description of the product.', - }, - { - displayName: 'Image URL', - name: 'imageUrl', - type: 'string', - default: '', - description: 'An Image URL that displays an image of the product.', - }, - { - displayName: 'Product URL', - name: 'productUrl', - type: 'string', - default: '', - description: 'A URL linking to the product in your store.', - }, - ], - }, - - ] - }, - - // ---------------------------------- - // ecommerceOrder:delete - // ---------------------------------- - { - displayName: 'Order ID', - name: 'orderId', - type: 'number', - default: 0, - displayOptions: { - show: { - operation: [ - 'delete', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The id of the e-commerce order.', - }, - - // ---------------------------------- - // ecommerceOrder:get - // ---------------------------------- - { - displayName: 'Order ID', - name: 'orderId', - type: 'number', - default: 0, - displayOptions: { - show: { - operation: [ - 'get', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The id of the e-commerce order.', - }, - - // ---------------------------------- - // ecommerceOrder:getAll - // ---------------------------------- - { - displayName: 'Return All', - name: 'returnAll', - type: 'boolean', - displayOptions: { - show: { - operation: [ - 'getAll', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - default: false, - description: 'If all results should be returned or only up to a given limit.', - }, - { - displayName: 'Limit', - name: 'limit', - type: 'number', - displayOptions: { - show: { - operation: [ - 'getAll', - ], - resource: [ - 'ecommerceOrder', - ], - returnAll: [ - false, - ], - }, - }, - typeOptions: { - minValue: 1, - maxValue: 500, - }, - default: 100, - description: 'How many results to return.', - }, ], }; diff --git a/packages/nodes-base/nodes/ActiveCampaign/ContactDescription.ts b/packages/nodes-base/nodes/ActiveCampaign/ContactDescription.ts new file mode 100644 index 0000000000..b444824505 --- /dev/null +++ b/packages/nodes-base/nodes/ActiveCampaign/ContactDescription.ts @@ -0,0 +1,351 @@ +import { INodeProperties } from "n8n-workflow"; + +export const contactOperations = [ + { + displayName: 'Operation', + name: 'operation', + type: 'options', + displayOptions: { + show: { + resource: [ + 'contact', + ], + }, + }, + options: [ + { + name: 'Create', + value: 'create', + description: 'Create a contact', + }, + { + name: 'Delete', + value: 'delete', + description: 'Delete a contact', + }, + { + name: 'Get', + value: 'get', + description: 'Get data of a contact', + }, + { + name: 'Get All', + value: 'getAll', + description: 'Get data of all contact', + }, + { + name: 'Update', + value: 'update', + description: 'Update a contact', + }, + ], + default: 'create', + description: 'The operation to perform.', + }, +] as INodeProperties[] + +export const contactFields = [ + // ---------------------------------- + // contact:create + // ---------------------------------- + { + displayName: 'Email', + name: 'email', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'contact', + ], + }, + }, + description: 'The email of the contact to create', + }, + { + displayName: 'Update if exists', + name: 'updateIfExists', + type: 'boolean', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'contact', + ], + }, + }, + default: false, + description: 'Update user if it exists already. If not set and user exists it will error instead.', + }, + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'contact', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'First Name', + name: 'firstName', + type: 'string', + default: '', + description: 'The first name of the contact to create', + }, + { + displayName: 'Last Name', + name: 'lastName', + type: 'string', + default: '', + description: 'The last name of the contact to create', + }, + { + displayName: 'Phone', + name: 'phone', + type: 'string', + default: '', + description: 'Phone number of the contact.', + }, + { + displayName: 'Custom Properties', + name: 'customProperties', + placeholder: 'Add Custom Property', + description: 'Adds a custom property to set also values which have not been predefined.', + type: 'fixedCollection', + typeOptions: { + multipleValues: true, + }, + default: {}, + options: [ + { + name: 'property', + displayName: 'Property', + values: [ + { + displayName: 'Property Name', + name: 'name', + type: 'string', + default: '', + description: 'Name of the property to set.', + }, + { + displayName: 'Property Value', + name: 'value', + type: 'string', + default: '', + description: 'Value of the property to set.', + }, + ] + }, + ], + }, + ], + }, + + // ---------------------------------- + // contact:update + // ---------------------------------- + { + displayName: 'Contact ID', + name: 'contactId', + type: 'number', + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'contact', + ], + }, + }, + default: 0, + required: true, + description: 'ID of the contact to update.', + }, + { + displayName: 'Update Fields', + name: 'updateFields', + type: 'collection', + description: 'The fields to update.', + placeholder: 'Add Field', + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'contact', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'Email', + name: 'email', + type: 'string', + default: '', + description: 'Email of the contact.', + }, + { + displayName: 'First Name', + name: 'firstName', + type: 'string', + default: '', + description: 'First name of the contact', + }, + { + displayName: 'Last Name', + name: 'lastName', + type: 'string', + default: '', + description: 'Last name of the contact', + }, + { + displayName: 'Phone', + name: 'phone', + type: 'string', + default: '', + description: 'Phone number of the contact.', + }, + { + displayName: 'Custom Properties', + name: 'customProperties', + placeholder: 'Add Custom Property', + description: 'Adds a custom property to set also values which have not been predefined.', + type: 'fixedCollection', + typeOptions: { + multipleValues: true, + }, + default: {}, + options: [ + { + name: 'property', + displayName: 'Property', + values: [ + { + displayName: 'Property Name', + name: 'name', + type: 'string', + default: '', + description: 'Name of the property to set.', + }, + { + displayName: 'Property Value', + name: 'value', + type: 'string', + default: '', + description: 'Value of the property to set.', + }, + ] + }, + ], + }, + ], + }, + + // ---------------------------------- + // contact:delete + // ---------------------------------- + { + displayName: 'Contact ID', + name: 'contactId', + type: 'number', + displayOptions: { + show: { + operation: [ + 'delete', + ], + resource: [ + 'contact', + ], + }, + }, + default: 0, + required: true, + description: 'ID of the contact to delete.', + }, + + // ---------------------------------- + // contact:get + // ---------------------------------- + { + displayName: 'Contact ID', + name: 'contactId', + type: 'number', + displayOptions: { + show: { + operation: [ + 'get', + ], + resource: [ + 'contact', + ], + }, + }, + default: 0, + required: true, + description: 'ID of the contact to get.', + }, + + // ---------------------------------- + // contact:getAll + // ---------------------------------- + { + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', + displayOptions: { + show: { + operation: [ + 'getAll', + ], + resource: [ + 'contact', + ], + }, + }, + default: false, + description: 'If all results should be returned or only up to a given limit.', + }, + { + displayName: 'Limit', + name: 'limit', + type: 'number', + displayOptions: { + show: { + operation: [ + 'getAll', + ], + resource: [ + 'contact', + ], + returnAll: [ + false, + ], + }, + }, + typeOptions: { + minValue: 1, + maxValue: 500, + }, + default: 100, + description: 'How many results to return.', + }, +] as INodeProperties[] diff --git a/packages/nodes-base/nodes/ActiveCampaign/DealDescription.ts b/packages/nodes-base/nodes/ActiveCampaign/DealDescription.ts new file mode 100644 index 0000000000..03ffc386df --- /dev/null +++ b/packages/nodes-base/nodes/ActiveCampaign/DealDescription.ts @@ -0,0 +1,529 @@ +import { INodeProperties } from "n8n-workflow"; + +import { allCurrencies } from './currencies'; + +export const dealOperations = [ + { + displayName: 'Operation', + name: 'operation', + type: 'options', + displayOptions: { + show: { + resource: [ + 'deal', + ], + }, + }, + options: [ + { + name: 'Create', + value: 'create', + description: 'Create a deal', + }, + { + name: 'Delete', + value: 'delete', + description: 'Delete a deal', + }, + { + name: 'Get', + value: 'get', + description: 'Get data of a deal', + }, + { + name: 'Get All', + value: 'getAll', + description: 'Get data of all deals', + }, + { + name: 'Update', + value: 'update', + description: 'Update a deal', + }, + { + name: 'Create Note', + value: 'createNote', + description: 'Create a deal note', + }, + { + name: 'Update deal note', + value: 'updateNote', + description: 'Update a deal note', + }, + ], + default: 'create', + description: 'The operation to perform.', + }, + +] as INodeProperties[] + +export const dealFields = [ + // ---------------------------------- + // deal:create + // ---------------------------------- + { + displayName: 'Title', + name: 'title', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The title of the deal', + }, + { + displayName: 'Deal\'s contact ID', + name: 'contact', + type: 'number', + default: 0, + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The ID of the deal\'s contact', + }, + { + displayName: 'Deal value', + name: 'value', + type: 'number', + default: 0, + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The value of the deal in cents', + }, + { + displayName: 'Currency', + name: 'currency', + type: 'options', + default: 'eur', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'deal', + ], + }, + }, + options: allCurrencies, + description: 'The currency of the deal in 3-character ISO format', + }, + { + displayName: 'Deal pipeline ID', + name: 'group', + type: 'string', + default: '', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The pipeline ID of the deal', + }, + { + displayName: 'Deal stage ID', + name: 'stage', + type: 'string', + default: '', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The stage ID of the deal', + }, + { + displayName: 'Deal owner ID', + name: 'owner', + type: 'string', + default: '', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The owner ID of the deal', + }, + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'deal', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'Description', + name: 'description', + type: 'string', + default: '', + description: 'The description of the deal', + }, + + { + displayName: 'Deal percentage', + name: 'percent', + type: 'number', + default: 0, + description: 'The percentage of the deal', + }, + { + displayName: 'Deal status', + name: 'status', + type: 'number', + default: 0, + description: 'The status of the deal', + }, + ] + }, + + // ---------------------------------- + // deal:update + // ---------------------------------- + { + displayName: 'Deal ID', + name: 'dealId', + type: 'number', + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'deal', + ], + }, + }, + default: 0, + required: true, + description: 'ID of the deal to update.', + }, + { + displayName: 'Update Fields', + name: 'updateFields', + type: 'collection', + description: 'The fields to update.', + placeholder: 'Add Field', + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'deal', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'Title', + name: 'title', + type: 'string', + default: '', + description: 'The title of the deal', + }, + { + displayName: 'Deal\'s contact ID', + name: 'contact', + type: 'number', + default: 0, + description: 'The ID of the deal\'s contact', + }, + { + displayName: 'Deal value', + name: 'value', + type: 'number', + default: 0, + description: 'The value of the deal in cents', + }, + { + displayName: 'Currency', + name: 'currency', + type: 'options', + options: allCurrencies, + default: 'eur', + description: 'The currency of the deal in 3-character ISO format', + }, + { + displayName: 'Description', + name: 'description', + type: 'string', + default: '', + description: 'The description of the deal', + }, + { + displayName: 'Deal pipeline ID', + name: 'group', + type: 'string', + default: '', + description: 'The pipeline ID of the deal', + }, + { + displayName: 'Deal stage ID', + name: 'stage', + type: 'string', + default: '', + description: 'The stage ID of the deal', + }, + { + displayName: 'Deal owner ID', + name: 'owner', + type: 'string', + default: '', + description: 'The owner ID of the deal', + }, + { + displayName: 'Deal percentage', + name: 'percent', + type: 'number', + default: 0, + description: 'The percentage of the deal', + }, + { + displayName: 'Deal status', + name: 'status', + type: 'number', + default: 0, + description: 'The status of the deal', + }, + ] + }, + + // ---------------------------------- + // deal:delete + // ---------------------------------- + { + displayName: 'Deal ID', + name: 'dealId', + type: 'number', + default: 0, + required: true, + displayOptions: { + show: { + operation: [ + 'delete', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The ID of the deal', + }, + + // ---------------------------------- + // deal:get + // ---------------------------------- + { + displayName: 'Deal ID', + name: 'dealId', + type: 'number', + default: 0, + required: true, + displayOptions: { + show: { + operation: [ + 'get', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The ID of the deal', + }, + + // ---------------------------------- + // deal:getAll + // ---------------------------------- + { + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', + displayOptions: { + show: { + operation: [ + 'getAll', + ], + resource: [ + 'deal', + ], + }, + }, + default: false, + description: 'If all results should be returned or only up to a given limit.', + }, + { + displayName: 'Limit', + name: 'limit', + type: 'number', + displayOptions: { + show: { + operation: [ + 'getAll', + ], + resource: [ + 'deal', + ], + returnAll: [ + false, + ], + }, + }, + typeOptions: { + minValue: 1, + maxValue: 500, + }, + default: 100, + description: 'How many results to return.', + }, + + // ---------------------------------- + // dealNote:create + // ---------------------------------- + { + displayName: 'Deal ID', + name: 'dealId', + type: 'number', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'createNote', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The ID of the deal note', + }, + { + displayName: 'Deal Note', + name: 'dealNote', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'createNote', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The content of the deal note', + }, + + // ---------------------------------- + // dealNote:update + // ---------------------------------- + { + displayName: 'Deal ID', + name: 'dealId', + type: 'number', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'updateNote', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The ID of the deal note', + }, + { + displayName: 'Deal note ID', + name: 'dealNoteId', + type: 'number', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'updateNote', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The ID of the deal note', + }, + { + displayName: 'Deal Note', + name: 'dealNote', + type: 'string', + default: '', + displayOptions: { + show: { + operation: [ + 'updateNote', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The content of the deal note', + }, + +] as INodeProperties[] \ No newline at end of file diff --git a/packages/nodes-base/nodes/ActiveCampaign/EcomOrderDescription.ts b/packages/nodes-base/nodes/ActiveCampaign/EcomOrderDescription.ts new file mode 100644 index 0000000000..846c5cd355 --- /dev/null +++ b/packages/nodes-base/nodes/ActiveCampaign/EcomOrderDescription.ts @@ -0,0 +1,719 @@ +import { INodeProperties } from "n8n-workflow"; + +import { allCurrencies } from './currencies'; + +export const ecomOrderOperations = [ + + + { + displayName: 'Operation', + name: 'operation', + type: 'options', + displayOptions: { + show: { + resource: [ + 'ecommerceOrder', + ], + }, + }, + options: [ + { + name: 'Create', + value: 'create', + description: 'Create a order', + }, + { + name: 'Delete', + value: 'delete', + description: 'Delete a order', + }, + { + name: 'Get', + value: 'get', + description: 'Get data of a order', + }, + { + name: 'Get All', + value: 'getAll', + description: 'Get data of all orders', + }, + { + name: 'Update', + value: 'update', + description: 'Update a order', + }, + ], + default: 'create', + description: 'The operation to perform.', + }, +] as INodeProperties[] + +export const ecomOrderFields = [ + + // ---------------------------------- + // ecommerceOrder:create + // ---------------------------------- + { + displayName: 'External ID', + name: 'externalid', + type: 'string', + default: '', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The id of the order in the external service. ONLY REQUIRED IF EXTERNALCHECKOUTID NOT INCLUDED', + }, + { + displayName: 'External checkout ID', + name: 'externalcheckoutid', + type: 'string', + default: '', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The id of the cart in the external service. ONLY REQUIRED IF EXTERNALID IS NOT INCLUDED.', + }, + { + displayName: 'Order source', + name: 'source', + type: 'number', + default: 0, + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The order source code (0 - will not trigger automations, 1 - will trigger automations).', + }, + { + displayName: 'Customer Email', + name: 'email', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The email address of the customer who placed the order.', + }, + { + displayName: 'Total price', + name: 'totalPrice', + type: 'number', + default: 0, + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The total price of the order in cents, including tax and shipping charges. (i.e. $456.78 => 45678). Must be greater than or equal to zero.', + }, + { + displayName: 'Order currency', + name: 'currency', + type: 'options', + default: 'eur', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + options: allCurrencies, + description: 'The currency of the order (3-digit ISO code, e.g., "USD").', + }, + { + displayName: 'Connection ID', + name: 'connectionid', + type: 'number', + default: 0, + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The id of the connection from which this order originated.', + }, + { + displayName: 'Customer ID', + name: 'customerid', + type: 'number', + default: 0, + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The id of the customer associated with this order.', + }, + { + displayName: 'Creation Date', + name: 'externalCreatedDate', + type: 'dateTime', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The date the order was placed.', + }, + { + displayName: 'Abandoning Date', + name: 'abandonedDate', + type: 'dateTime', + default: '', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The date the cart was abandoned. REQUIRED ONLY IF INCLUDING EXTERNALCHECKOUTID.', + }, + { + displayName: 'Products', + name: 'orderProducts', + type: 'collection', + typeOptions: { + multipleValues: true, + multipleValueButtonText: 'Add product', + }, + displayOptions: { + show: { + operation: [ + 'create' + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + default: {}, + description: 'All ordered products', + placeholder: 'Add product field', + options: [ + { + displayName: 'Name', + name: 'name', + type: 'string', + default: '', + description: 'The name of the product', + }, + { + displayName: 'Price', + name: 'price', + type: 'number', + default: 0, + description: 'The price of the product, in cents. (i.e. $456.78 => 45678). Must be greater than or equal to zero.', + }, + { + displayName: 'Product Quantity', + name: 'quantity', + type: 'number', + default: 0, + description: 'The quantity ordered.', + }, + { + displayName: 'Product external ID', + name: 'externalid', + type: 'string', + default: '', + description: 'The id of the product in the external service.', + }, + { + displayName: 'Product Category', + name: 'category', + type: 'string', + default: '', + description: 'The category of the product.', + }, + { + displayName: 'SKU', + name: 'sku', + type: 'string', + default: '', + description: 'The SKU for the product.', + }, + { + displayName: 'Description', + name: 'description', + type: 'string', + default: '', + description: 'The description of the product.', + }, + { + displayName: 'Image URL', + name: 'imageUrl', + type: 'string', + default: '', + description: 'An Image URL that displays an image of the product.', + }, + { + displayName: 'Product URL', + name: 'productUrl', + type: 'string', + default: '', + description: 'A URL linking to the product in your store.', + }, + ], + }, + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'Shipping Amount', + name: 'shippingAmount', + type: 'number', + default: 0, + description: 'The total shipping amount for the order in cents .', + }, + + { + displayName: 'Tax Amount', + name: 'taxAmount', + type: 'number', + default: 0, + description: 'The total tax amount for the order in cents.', + }, + { + displayName: 'Discount Amount', + name: 'discountAmount', + type: 'number', + default: 0, + description: 'The total discount amount for the order in cents.', + }, + { + displayName: 'Order URL', + name: 'orderUrl', + type: 'string', + default: '', + description: 'The URL for the order in the external service.', + }, + { + displayName: 'External updated date', + name: 'externalUpdatedDate', + type: 'dateTime', + default: '', + description: 'The date the order was updated.', + }, + { + displayName: 'Shipping Method', + name: 'shippingMethod', + type: 'string', + default: '', + description: 'The shipping method of the order.', + }, + { + displayName: 'Order Number', + name: 'orderNumber', + type: 'string', + default: '', + description: 'The order number. This can be different than the externalid.', + }, + + ] + }, + + // ---------------------------------- + // ecommerceOrder:update + // ---------------------------------- + { + displayName: 'Order ID', + name: 'orderId', + type: 'number', + default: 0, + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The id of the e-commerce order.', + }, + + { + displayName: 'Add Field', + name: 'updateFields', + type: 'collection', + placeholder: 'Add Field', + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'External ID', + name: 'externalid', + type: 'string', + default: '', + description: 'The id of the order in the external service. ONLY REQUIRED IF EXTERNALCHECKOUTID NOT INCLUDED', + }, + { + displayName: 'External checkout ID', + name: 'externalcheckoutid', + type: 'string', + default: '', + description: 'The id of the cart in the external service. ONLY REQUIRED IF EXTERNALID IS NOT INCLUDED.', + }, + { + displayName: 'Order source', + name: 'source', + type: 'number', + default: 0, + description: 'The order source code (0 - will not trigger automations, 1 - will trigger automations).', + }, + { + displayName: 'Customer Email', + name: 'email', + type: 'string', + default: '', + description: 'The email address of the customer who placed the order.', + }, + { + displayName: 'Total price', + name: 'totalPrice', + type: 'number', + default: 0, + description: 'The total price of the order in cents, including tax and shipping charges. (i.e. $456.78 => 45678). Must be greater than or equal to zero.', + }, + { + displayName: 'Order currency', + name: 'currency', + type: 'options', + default: 'eur', + options: allCurrencies, + description: 'The currency of the order (3-digit ISO code, e.g., "USD").', + }, + { + displayName: 'Connection ID', + name: 'connectionid', + type: 'number', + default: 0, + description: 'The id of the connection from which this order originated.', + }, + { + displayName: 'Customer ID', + name: 'customerid', + type: 'number', + default: 0, + description: 'The id of the customer associated with this order.', + }, + { + displayName: 'Creation Date', + name: 'externalupdatedDate', + type: 'dateTime', + default: '', + description: 'The date the order was placed.', + }, + { + displayName: 'Abandoning Date', + name: 'abandonedDate', + type: 'dateTime', + default: '', + description: 'The date the cart was abandoned. REQUIRED ONLY IF INCLUDING EXTERNALCHECKOUTID.', + }, + { + displayName: 'Shipping Amount', + name: 'shippingAmount', + type: 'number', + default: 0, + description: 'The total shipping amount for the order in cents .', + }, + + { + displayName: 'Tax Amount', + name: 'taxAmount', + type: 'number', + default: 0, + description: 'The total tax amount for the order in cents.', + }, + { + displayName: 'Discount Amount', + name: 'discountAmount', + type: 'number', + default: 0, + description: 'The total discount amount for the order in cents.', + }, + { + displayName: 'Order URL', + name: 'orderUrl', + type: 'string', + default: '', + description: 'The URL for the order in the external service.', + }, + { + displayName: 'External updated date', + name: 'externalUpdatedDate', + type: 'dateTime', + default: '', + description: 'The date the order was updated.', + }, + { + displayName: 'Shipping Method', + name: 'shippingMethod', + type: 'string', + default: '', + description: 'The shipping method of the order.', + }, + { + displayName: 'Order Number', + name: 'orderNumber', + type: 'string', + default: '', + description: 'The order number. This can be different than the externalid.', + }, + + { + displayName: 'Products', + name: 'orderProducts', + type: 'collection', + typeOptions: { + multipleValues: true, + multipleValueButtonText: 'Add product', + }, + default: {}, + description: 'All ordered products', + placeholder: 'Add product field', + options: [ + { + displayName: 'Name', + name: 'name', + type: 'string', + default: '', + description: 'The name of the product', + }, + { + displayName: 'Price', + name: 'price', + type: 'number', + default: 0, + description: 'The price of the product, in cents. (i.e. $456.78 => 45678). Must be greater than or equal to zero.', + }, + { + displayName: 'Product Quantity', + name: 'quantity', + type: 'number', + default: 0, + description: 'The quantity ordered.', + }, + { + displayName: 'Product external ID', + name: 'externalid', + type: 'string', + default: '', + description: 'The id of the product in the external service.', + }, + { + displayName: 'Product Category', + name: 'category', + type: 'string', + default: '', + description: 'The category of the product.', + }, + { + displayName: 'SKU', + name: 'sku', + type: 'string', + default: '', + description: 'The SKU for the product.', + }, + { + displayName: 'Description', + name: 'description', + type: 'string', + default: '', + description: 'The description of the product.', + }, + { + displayName: 'Image URL', + name: 'imageUrl', + type: 'string', + default: '', + description: 'An Image URL that displays an image of the product.', + }, + { + displayName: 'Product URL', + name: 'productUrl', + type: 'string', + default: '', + description: 'A URL linking to the product in your store.', + }, + ], + }, + + ] + }, + + // ---------------------------------- + // ecommerceOrder:delete + // ---------------------------------- + { + displayName: 'Order ID', + name: 'orderId', + type: 'number', + default: 0, + displayOptions: { + show: { + operation: [ + 'delete', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The id of the e-commerce order.', + }, + + // ---------------------------------- + // ecommerceOrder:get + // ---------------------------------- + { + displayName: 'Order ID', + name: 'orderId', + type: 'number', + default: 0, + displayOptions: { + show: { + operation: [ + 'get', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The id of the e-commerce order.', + }, + + // ---------------------------------- + // ecommerceOrder:getAll + // ---------------------------------- + { + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', + displayOptions: { + show: { + operation: [ + 'getAll', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + default: false, + description: 'If all results should be returned or only up to a given limit.', + }, + { + displayName: 'Limit', + name: 'limit', + type: 'number', + displayOptions: { + show: { + operation: [ + 'getAll', + ], + resource: [ + 'ecommerceOrder', + ], + returnAll: [ + false, + ], + }, + }, + typeOptions: { + minValue: 1, + maxValue: 500, + }, + default: 100, + description: 'How many results to return.', + }, +] as INodeProperties[] \ No newline at end of file diff --git a/packages/nodes-base/nodes/ActiveCampaign/currencies.ts b/packages/nodes-base/nodes/ActiveCampaign/currencies.ts index 8ff4d48adc..194864f72c 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/currencies.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/currencies.ts @@ -1,175 +1,173 @@ -export function returnAllCurrencyOptions() { - return [ - { name: 'Euro', value: 'eur' }, - { name: 'United States Dollar', value: 'usd' }, - { name: 'British Pound Sterling', value: 'gbp' }, - { name: 'Swiss Franc', value: 'chf' }, - { name: 'Renminbi', value: 'cny' }, - { name: '--------', value: '' }, - { name: 'United Arab Emirates Dirham', value: 'aed' }, - { name: 'Afghan Afghani', value: 'afn' }, - { name: 'Albanian Lek', value: 'all' }, - { name: 'Armenian Dram', value: 'amd' }, - { name: 'Netherlands Antillean Guilder', value: 'ang' }, - { name: 'Angolan Kwanza', value: 'aoa' }, - { name: 'Argentine Peso', value: 'ars' }, - { name: 'Australian Dollar', value: 'aud' }, - { name: 'Aruban Florin', value: 'awg' }, - { name: 'Azerbaijani Manat', value: 'azn' }, - { name: 'Bosnia-Herzegovina Convertible Mark', value: 'bam' }, - { name: 'Barbadian Dollar', value: 'bbd' }, - { name: 'Bangladeshi Taka', value: 'bdt' }, - { name: 'Bulgarian Lev', value: 'bgn' }, - { name: 'Bahraini Dinar', value: 'bhd' }, - { name: 'Burundian Franc', value: 'bif' }, - { name: 'Bermudan Dollar', value: 'bmd' }, - { name: 'Brunei Dollar', value: 'bnd' }, - { name: 'Bolivian Boliviano', value: 'bob' }, - { name: 'Brazilian Real', value: 'brl' }, - { name: 'Bahamian Dollar', value: 'bsd' }, - { name: 'Bitcoin', value: 'btc' }, - { name: 'Bhutanese Ngultrum', value: 'btn' }, - { name: 'Botswanan Pula', value: 'bwp' }, - { name: 'Belarusian Ruble', value: 'byn' }, - { name: 'Belize Dollar', value: 'bzd' }, - { name: 'Canadian Dollar', value: 'cad' }, - { name: 'Congolese Franc', value: 'cdf' }, - { name: 'Chilean Unit of Account (UF)', value: 'clf' }, - { name: 'Chilean Peso', value: 'clp' }, - { name: 'Chinese Yuan (Offshore)', value: 'cnh' }, - { name: 'Colombian Peso', value: 'cop' }, - { name: 'Costa Rican Colón', value: 'crc' }, - { name: 'Cuban Convertible Peso', value: 'cuc' }, - { name: 'Cuban Peso', value: 'cup' }, - { name: 'Cape Verdean Escudo', value: 'cve' }, - { name: 'Czech Republic Koruna', value: 'czk' }, - { name: 'Djiboutian Franc', value: 'djf' }, - { name: 'Danish Krone', value: 'dkk' }, - { name: 'Dominican Peso', value: 'dop' }, - { name: 'Algerian Dinar', value: 'dzd' }, - { name: 'Egyptian Pound', value: 'egp' }, - { name: 'Eritrean Nakfa', value: 'ern' }, - { name: 'Ethiopian Birr', value: 'etb' }, - { name: 'Fijian Dollar', value: 'fjd' }, - { name: 'Falkland Islands Pound', value: 'fkp' }, - { name: 'Georgian Lari', value: 'gel' }, - { name: 'Guernsey Pound', value: 'ggp' }, - { name: 'Ghanaian Cedi', value: 'ghs' }, - { name: 'Gibraltar Pound', value: 'gip' }, - { name: 'Gambian Dalasi', value: 'gmd' }, - { name: 'Guinean Franc', value: 'gnf' }, - { name: 'Guatemalan Quetzal', value: 'gtq' }, - { name: 'Guyanaese Dollar', value: 'gyd' }, - { name: 'Hong Kong Dollar', value: 'hkd' }, - { name: 'Honduran Lempira', value: 'hnl' }, - { name: 'Croatian Kuna', value: 'hrk' }, - { name: 'Haitian Gourde', value: 'htg' }, - { name: 'Hungarian Forint', value: 'huf' }, - { name: 'Indonesian Rupiah', value: 'idr' }, - { name: 'Israeli New Sheqel', value: 'ils' }, - { name: 'Manx pound', value: 'imp' }, - { name: 'Indian Rupee', value: 'inr' }, - { name: 'Iraqi Dinar', value: 'iqd' }, - { name: 'Iranian Rial', value: 'irr' }, - { name: 'Icelandic Króna', value: 'isk' }, - { name: 'Jersey Pound', value: 'jep' }, - { name: 'Jamaican Dollar', value: 'jmd' }, - { name: 'Jordanian Dinar', value: 'jod' }, - { name: 'Japanese Yen', value: 'jpy' }, - { name: 'Kenyan Shilling', value: 'kes' }, - { name: 'Kyrgystani Som', value: 'kgs' }, - { name: 'Cambodian Riel', value: 'khr' }, - { name: 'Comorian Franc', value: 'kmf' }, - { name: 'North Korean Won', value: 'kpw' }, - { name: 'South Korean Won', value: 'krw' }, - { name: 'Kuwaiti Dinar', value: 'kwd' }, - { name: 'Cayman Islands Dollar', value: 'kyd' }, - { name: 'Kazakhstani Tenge', value: 'kzt' }, - { name: 'Laotian Kip', value: 'lak' }, - { name: 'Lebanese Pound', value: 'lbp' }, - { name: 'Sri Lankan Rupee', value: 'lkr' }, - { name: 'Liberian Dollar', value: 'lrd' }, - { name: 'Lesotho Loti', value: 'lsl' }, - { name: 'Libyan Dinar', value: 'lyd' }, - { name: 'Moroccan Dirham', value: 'mad' }, - { name: 'Moldovan Leu', value: 'mdl' }, - { name: 'Malagasy Ariary', value: 'mga' }, - { name: 'Macedonian Denar', value: 'mkd' }, - { name: 'Myanma Kyat', value: 'mmk' }, - { name: 'Mongolian Tugrik', value: 'mnt' }, - { name: 'Macanese Pataca', value: 'mop' }, - { name: 'Mauritanian Ouguiya (pre-2018)', value: 'mro' }, - { name: 'Mauritanian Ouguiya', value: 'mru' }, - { name: 'Mauritian Rupee', value: 'mur' }, - { name: 'Maldivian Rufiyaa', value: 'mvr' }, - { name: 'Malawian Kwacha', value: 'mwk' }, - { name: 'Mexican Peso', value: 'mxn' }, - { name: 'Malaysian Ringgit', value: 'myr' }, - { name: 'Mozambican Metical', value: 'mzn' }, - { name: 'Namibian Dollar', value: 'nad' }, - { name: 'Nigerian Naira', value: 'ngn' }, - { name: 'Nicaraguan Córdoba', value: 'nio' }, - { name: 'Norwegian Krone', value: 'nok' }, - { name: 'Nepalese Rupee', value: 'npr' }, - { name: 'New Zealand Dollar', value: 'nzd' }, - { name: 'Omani Rial', value: 'omr' }, - { name: 'Panamanian Balboa', value: 'pab' }, - { name: 'Peruvian Nuevo Sol', value: 'pen' }, - { name: 'Papua New Guinean Kina', value: 'pgk' }, - { name: 'Philippine Peso', value: 'php' }, - { name: 'Pakistani Rupee', value: 'pkr' }, - { name: 'Polish Zloty', value: 'pln' }, - { name: 'Paraguayan Guarani', value: 'pyg' }, - { name: 'Qatari Rial', value: 'qar' }, - { name: 'Romanian Leu', value: 'ron' }, - { name: 'Serbian Dinar', value: 'rsd' }, - { name: 'Russian Ruble', value: 'rub' }, - { name: 'Rwandan Franc', value: 'rwf' }, - { name: 'Saudi Riyal', value: 'sar' }, - { name: 'Solomon Islands Dollar', value: 'sbd' }, - { name: 'Seychellois Rupee', value: 'scr' }, - { name: 'Sudanese Pound', value: 'sdg' }, - { name: 'Swedish Krona', value: 'sek' }, - { name: 'Singapore Dollar', value: 'sgd' }, - { name: 'Saint Helena Pound', value: 'shp' }, - { name: 'Sierra Leonean Leone', value: 'sll' }, - { name: 'Somali Shilling', value: 'sos' }, - { name: 'Surinamese Dollar', value: 'srd' }, - { name: 'South Sudanese Pound', value: 'ssp' }, - { name: 'São Tomé and Príncipe Dobra (pre-2018)', value: 'std' }, - { name: 'São Tomé and Príncipe Dobra', value: 'stn' }, - { name: 'Salvadoran Colón', value: 'svc' }, - { name: 'Syrian Pound', value: 'syp' }, - { name: 'Swazi Lilangeni', value: 'szl' }, - { name: 'Thai Baht', value: 'thb' }, - { name: 'Tajikistani Somoni', value: 'tjs' }, - { name: 'Turkmenistani Manat', value: 'tmt' }, - { name: 'Tunisian Dinar', value: 'tnd' }, - { name: "Tongan Pa'anga", value: 'top' }, - { name: 'Turkish Lira', value: 'try' }, - { name: 'Trinidad and Tobago Dollar', value: 'ttd' }, - { name: 'New Taiwan Dollar', value: 'twd' }, - { name: 'Tanzanian Shilling', value: 'tzs' }, - { name: 'Ukrainian Hryvnia', value: 'uah' }, - { name: 'Ugandan Shilling', value: 'ugx' }, - { name: 'Uruguayan Peso', value: 'uyu' }, - { name: 'Uzbekistan Som', value: 'uzs' }, - { name: 'Venezuelan Bolívar Fuerte', value: 'vef' }, - { name: 'Vietnamese Dong', value: 'vnd' }, - { name: 'Vanuatu Vatu', value: 'vuv' }, - { name: 'Samoan Tala', value: 'wst' }, - { name: 'CFA Franc BEAC', value: 'xaf' }, - { name: 'Silver Ounce', value: 'xag' }, - { name: 'Gold Ounce', value: 'xau' }, - { name: 'East Caribbean Dollar', value: 'xcd' }, - { name: 'Special Drawing Rights', value: 'xdr' }, - { name: 'CFA Franc BCEAO', value: 'xof' }, - { name: 'Palladium Ounce', value: 'xpd' }, - { name: 'CFP Franc', value: 'xpf' }, - { name: 'Platinum Ounce', value: 'xpt' }, - { name: 'Yemeni Rial', value: 'yer' }, - { name: 'South African Rand', value: 'zar' }, - { name: 'Zambian Kwacha', value: 'zmw' }, - { name: 'Zimbabwean Dollar', value: 'zwl' } - ] -} \ No newline at end of file +export const allCurrencies = [ + { name: 'Euro', value: 'eur' }, + { name: 'United States Dollar', value: 'usd' }, + { name: 'British Pound Sterling', value: 'gbp' }, + { name: 'Swiss Franc', value: 'chf' }, + { name: 'Renminbi', value: 'cny' }, + { name: '--------', value: '' }, + { name: 'United Arab Emirates Dirham', value: 'aed' }, + { name: 'Afghan Afghani', value: 'afn' }, + { name: 'Albanian Lek', value: 'all' }, + { name: 'Armenian Dram', value: 'amd' }, + { name: 'Netherlands Antillean Guilder', value: 'ang' }, + { name: 'Angolan Kwanza', value: 'aoa' }, + { name: 'Argentine Peso', value: 'ars' }, + { name: 'Australian Dollar', value: 'aud' }, + { name: 'Aruban Florin', value: 'awg' }, + { name: 'Azerbaijani Manat', value: 'azn' }, + { name: 'Bosnia-Herzegovina Convertible Mark', value: 'bam' }, + { name: 'Barbadian Dollar', value: 'bbd' }, + { name: 'Bangladeshi Taka', value: 'bdt' }, + { name: 'Bulgarian Lev', value: 'bgn' }, + { name: 'Bahraini Dinar', value: 'bhd' }, + { name: 'Burundian Franc', value: 'bif' }, + { name: 'Bermudan Dollar', value: 'bmd' }, + { name: 'Brunei Dollar', value: 'bnd' }, + { name: 'Bolivian Boliviano', value: 'bob' }, + { name: 'Brazilian Real', value: 'brl' }, + { name: 'Bahamian Dollar', value: 'bsd' }, + { name: 'Bitcoin', value: 'btc' }, + { name: 'Bhutanese Ngultrum', value: 'btn' }, + { name: 'Botswanan Pula', value: 'bwp' }, + { name: 'Belarusian Ruble', value: 'byn' }, + { name: 'Belize Dollar', value: 'bzd' }, + { name: 'Canadian Dollar', value: 'cad' }, + { name: 'Congolese Franc', value: 'cdf' }, + { name: 'Chilean Unit of Account (UF)', value: 'clf' }, + { name: 'Chilean Peso', value: 'clp' }, + { name: 'Chinese Yuan (Offshore)', value: 'cnh' }, + { name: 'Colombian Peso', value: 'cop' }, + { name: 'Costa Rican Colón', value: 'crc' }, + { name: 'Cuban Convertible Peso', value: 'cuc' }, + { name: 'Cuban Peso', value: 'cup' }, + { name: 'Cape Verdean Escudo', value: 'cve' }, + { name: 'Czech Republic Koruna', value: 'czk' }, + { name: 'Djiboutian Franc', value: 'djf' }, + { name: 'Danish Krone', value: 'dkk' }, + { name: 'Dominican Peso', value: 'dop' }, + { name: 'Algerian Dinar', value: 'dzd' }, + { name: 'Egyptian Pound', value: 'egp' }, + { name: 'Eritrean Nakfa', value: 'ern' }, + { name: 'Ethiopian Birr', value: 'etb' }, + { name: 'Fijian Dollar', value: 'fjd' }, + { name: 'Falkland Islands Pound', value: 'fkp' }, + { name: 'Georgian Lari', value: 'gel' }, + { name: 'Guernsey Pound', value: 'ggp' }, + { name: 'Ghanaian Cedi', value: 'ghs' }, + { name: 'Gibraltar Pound', value: 'gip' }, + { name: 'Gambian Dalasi', value: 'gmd' }, + { name: 'Guinean Franc', value: 'gnf' }, + { name: 'Guatemalan Quetzal', value: 'gtq' }, + { name: 'Guyanaese Dollar', value: 'gyd' }, + { name: 'Hong Kong Dollar', value: 'hkd' }, + { name: 'Honduran Lempira', value: 'hnl' }, + { name: 'Croatian Kuna', value: 'hrk' }, + { name: 'Haitian Gourde', value: 'htg' }, + { name: 'Hungarian Forint', value: 'huf' }, + { name: 'Indonesian Rupiah', value: 'idr' }, + { name: 'Israeli New Sheqel', value: 'ils' }, + { name: 'Manx pound', value: 'imp' }, + { name: 'Indian Rupee', value: 'inr' }, + { name: 'Iraqi Dinar', value: 'iqd' }, + { name: 'Iranian Rial', value: 'irr' }, + { name: 'Icelandic Króna', value: 'isk' }, + { name: 'Jersey Pound', value: 'jep' }, + { name: 'Jamaican Dollar', value: 'jmd' }, + { name: 'Jordanian Dinar', value: 'jod' }, + { name: 'Japanese Yen', value: 'jpy' }, + { name: 'Kenyan Shilling', value: 'kes' }, + { name: 'Kyrgystani Som', value: 'kgs' }, + { name: 'Cambodian Riel', value: 'khr' }, + { name: 'Comorian Franc', value: 'kmf' }, + { name: 'North Korean Won', value: 'kpw' }, + { name: 'South Korean Won', value: 'krw' }, + { name: 'Kuwaiti Dinar', value: 'kwd' }, + { name: 'Cayman Islands Dollar', value: 'kyd' }, + { name: 'Kazakhstani Tenge', value: 'kzt' }, + { name: 'Laotian Kip', value: 'lak' }, + { name: 'Lebanese Pound', value: 'lbp' }, + { name: 'Sri Lankan Rupee', value: 'lkr' }, + { name: 'Liberian Dollar', value: 'lrd' }, + { name: 'Lesotho Loti', value: 'lsl' }, + { name: 'Libyan Dinar', value: 'lyd' }, + { name: 'Moroccan Dirham', value: 'mad' }, + { name: 'Moldovan Leu', value: 'mdl' }, + { name: 'Malagasy Ariary', value: 'mga' }, + { name: 'Macedonian Denar', value: 'mkd' }, + { name: 'Myanma Kyat', value: 'mmk' }, + { name: 'Mongolian Tugrik', value: 'mnt' }, + { name: 'Macanese Pataca', value: 'mop' }, + { name: 'Mauritanian Ouguiya (pre-2018)', value: 'mro' }, + { name: 'Mauritanian Ouguiya', value: 'mru' }, + { name: 'Mauritian Rupee', value: 'mur' }, + { name: 'Maldivian Rufiyaa', value: 'mvr' }, + { name: 'Malawian Kwacha', value: 'mwk' }, + { name: 'Mexican Peso', value: 'mxn' }, + { name: 'Malaysian Ringgit', value: 'myr' }, + { name: 'Mozambican Metical', value: 'mzn' }, + { name: 'Namibian Dollar', value: 'nad' }, + { name: 'Nigerian Naira', value: 'ngn' }, + { name: 'Nicaraguan Córdoba', value: 'nio' }, + { name: 'Norwegian Krone', value: 'nok' }, + { name: 'Nepalese Rupee', value: 'npr' }, + { name: 'New Zealand Dollar', value: 'nzd' }, + { name: 'Omani Rial', value: 'omr' }, + { name: 'Panamanian Balboa', value: 'pab' }, + { name: 'Peruvian Nuevo Sol', value: 'pen' }, + { name: 'Papua New Guinean Kina', value: 'pgk' }, + { name: 'Philippine Peso', value: 'php' }, + { name: 'Pakistani Rupee', value: 'pkr' }, + { name: 'Polish Zloty', value: 'pln' }, + { name: 'Paraguayan Guarani', value: 'pyg' }, + { name: 'Qatari Rial', value: 'qar' }, + { name: 'Romanian Leu', value: 'ron' }, + { name: 'Serbian Dinar', value: 'rsd' }, + { name: 'Russian Ruble', value: 'rub' }, + { name: 'Rwandan Franc', value: 'rwf' }, + { name: 'Saudi Riyal', value: 'sar' }, + { name: 'Solomon Islands Dollar', value: 'sbd' }, + { name: 'Seychellois Rupee', value: 'scr' }, + { name: 'Sudanese Pound', value: 'sdg' }, + { name: 'Swedish Krona', value: 'sek' }, + { name: 'Singapore Dollar', value: 'sgd' }, + { name: 'Saint Helena Pound', value: 'shp' }, + { name: 'Sierra Leonean Leone', value: 'sll' }, + { name: 'Somali Shilling', value: 'sos' }, + { name: 'Surinamese Dollar', value: 'srd' }, + { name: 'South Sudanese Pound', value: 'ssp' }, + { name: 'São Tomé and Príncipe Dobra (pre-2018)', value: 'std' }, + { name: 'São Tomé and Príncipe Dobra', value: 'stn' }, + { name: 'Salvadoran Colón', value: 'svc' }, + { name: 'Syrian Pound', value: 'syp' }, + { name: 'Swazi Lilangeni', value: 'szl' }, + { name: 'Thai Baht', value: 'thb' }, + { name: 'Tajikistani Somoni', value: 'tjs' }, + { name: 'Turkmenistani Manat', value: 'tmt' }, + { name: 'Tunisian Dinar', value: 'tnd' }, + { name: "Tongan Pa'anga", value: 'top' }, + { name: 'Turkish Lira', value: 'try' }, + { name: 'Trinidad and Tobago Dollar', value: 'ttd' }, + { name: 'New Taiwan Dollar', value: 'twd' }, + { name: 'Tanzanian Shilling', value: 'tzs' }, + { name: 'Ukrainian Hryvnia', value: 'uah' }, + { name: 'Ugandan Shilling', value: 'ugx' }, + { name: 'Uruguayan Peso', value: 'uyu' }, + { name: 'Uzbekistan Som', value: 'uzs' }, + { name: 'Venezuelan Bolívar Fuerte', value: 'vef' }, + { name: 'Vietnamese Dong', value: 'vnd' }, + { name: 'Vanuatu Vatu', value: 'vuv' }, + { name: 'Samoan Tala', value: 'wst' }, + { name: 'CFA Franc BEAC', value: 'xaf' }, + { name: 'Silver Ounce', value: 'xag' }, + { name: 'Gold Ounce', value: 'xau' }, + { name: 'East Caribbean Dollar', value: 'xcd' }, + { name: 'Special Drawing Rights', value: 'xdr' }, + { name: 'CFA Franc BCEAO', value: 'xof' }, + { name: 'Palladium Ounce', value: 'xpd' }, + { name: 'CFP Franc', value: 'xpf' }, + { name: 'Platinum Ounce', value: 'xpt' }, + { name: 'Yemeni Rial', value: 'yer' }, + { name: 'South African Rand', value: 'zar' }, + { name: 'Zambian Kwacha', value: 'zmw' }, + { name: 'Zimbabwean Dollar', value: 'zwl' } +] From 2c4702d75c152b27b193bab0f4de44f4112b4ea4 Mon Sep 17 00:00:00 2001 From: quansenB Date: Sun, 3 Nov 2019 12:49:03 +0100 Subject: [PATCH 33/43] format changes --- .../ActiveCampaign/EcomOrderDescription.ts | 1315 ++++++++--------- 1 file changed, 656 insertions(+), 659 deletions(-) diff --git a/packages/nodes-base/nodes/ActiveCampaign/EcomOrderDescription.ts b/packages/nodes-base/nodes/ActiveCampaign/EcomOrderDescription.ts index 846c5cd355..968898e219 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/EcomOrderDescription.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/EcomOrderDescription.ts @@ -3,8 +3,6 @@ import { INodeProperties } from "n8n-workflow"; import { allCurrencies } from './currencies'; export const ecomOrderOperations = [ - - { displayName: 'Operation', name: 'operation', @@ -49,671 +47,670 @@ export const ecomOrderOperations = [ ] as INodeProperties[] export const ecomOrderFields = [ + // ---------------------------------- + // ecommerceOrder:create + // ---------------------------------- + { + displayName: 'External ID', + name: 'externalid', + type: 'string', + default: '', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The id of the order in the external service. ONLY REQUIRED IF EXTERNALCHECKOUTID NOT INCLUDED', + }, + { + displayName: 'External checkout ID', + name: 'externalcheckoutid', + type: 'string', + default: '', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The id of the cart in the external service. ONLY REQUIRED IF EXTERNALID IS NOT INCLUDED.', + }, + { + displayName: 'Order source', + name: 'source', + type: 'number', + default: 0, + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The order source code (0 - will not trigger automations, 1 - will trigger automations).', + }, + { + displayName: 'Customer Email', + name: 'email', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The email address of the customer who placed the order.', + }, + { + displayName: 'Total price', + name: 'totalPrice', + type: 'number', + default: 0, + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The total price of the order in cents, including tax and shipping charges. (i.e. $456.78 => 45678). Must be greater than or equal to zero.', + }, + { + displayName: 'Order currency', + name: 'currency', + type: 'options', + default: 'eur', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + options: allCurrencies, + description: 'The currency of the order (3-digit ISO code, e.g., "USD").', + }, + { + displayName: 'Connection ID', + name: 'connectionid', + type: 'number', + default: 0, + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The id of the connection from which this order originated.', + }, + { + displayName: 'Customer ID', + name: 'customerid', + type: 'number', + default: 0, + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The id of the customer associated with this order.', + }, + { + displayName: 'Creation Date', + name: 'externalCreatedDate', + type: 'dateTime', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The date the order was placed.', + }, + { + displayName: 'Abandoning Date', + name: 'abandonedDate', + type: 'dateTime', + default: '', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The date the cart was abandoned. REQUIRED ONLY IF INCLUDING EXTERNALCHECKOUTID.', + }, + { + displayName: 'Products', + name: 'orderProducts', + type: 'collection', + typeOptions: { + multipleValues: true, + multipleValueButtonText: 'Add product', + }, + displayOptions: { + show: { + operation: [ + 'create' + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + default: {}, + description: 'All ordered products', + placeholder: 'Add product field', + options: [ + { + displayName: 'Name', + name: 'name', + type: 'string', + default: '', + description: 'The name of the product', + }, + { + displayName: 'Price', + name: 'price', + type: 'number', + default: 0, + description: 'The price of the product, in cents. (i.e. $456.78 => 45678). Must be greater than or equal to zero.', + }, + { + displayName: 'Product Quantity', + name: 'quantity', + type: 'number', + default: 0, + description: 'The quantity ordered.', + }, + { + displayName: 'Product external ID', + name: 'externalid', + type: 'string', + default: '', + description: 'The id of the product in the external service.', + }, + { + displayName: 'Product Category', + name: 'category', + type: 'string', + default: '', + description: 'The category of the product.', + }, + { + displayName: 'SKU', + name: 'sku', + type: 'string', + default: '', + description: 'The SKU for the product.', + }, + { + displayName: 'Description', + name: 'description', + type: 'string', + default: '', + description: 'The description of the product.', + }, + { + displayName: 'Image URL', + name: 'imageUrl', + type: 'string', + default: '', + description: 'An Image URL that displays an image of the product.', + }, + { + displayName: 'Product URL', + name: 'productUrl', + type: 'string', + default: '', + description: 'A URL linking to the product in your store.', + }, + ], + }, + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'Shipping Amount', + name: 'shippingAmount', + type: 'number', + default: 0, + description: 'The total shipping amount for the order in cents .', + }, - // ---------------------------------- - // ecommerceOrder:create - // ---------------------------------- - { - displayName: 'External ID', - name: 'externalid', - type: 'string', - default: '', - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The id of the order in the external service. ONLY REQUIRED IF EXTERNALCHECKOUTID NOT INCLUDED', - }, - { - displayName: 'External checkout ID', - name: 'externalcheckoutid', - type: 'string', - default: '', - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The id of the cart in the external service. ONLY REQUIRED IF EXTERNALID IS NOT INCLUDED.', - }, - { - displayName: 'Order source', - name: 'source', - type: 'number', - default: 0, - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The order source code (0 - will not trigger automations, 1 - will trigger automations).', - }, - { - displayName: 'Customer Email', - name: 'email', - type: 'string', - default: '', - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The email address of the customer who placed the order.', - }, - { - displayName: 'Total price', - name: 'totalPrice', - type: 'number', - default: 0, - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The total price of the order in cents, including tax and shipping charges. (i.e. $456.78 => 45678). Must be greater than or equal to zero.', - }, - { - displayName: 'Order currency', - name: 'currency', - type: 'options', - default: 'eur', - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - options: allCurrencies, - description: 'The currency of the order (3-digit ISO code, e.g., "USD").', - }, - { - displayName: 'Connection ID', - name: 'connectionid', - type: 'number', - default: 0, - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The id of the connection from which this order originated.', - }, - { - displayName: 'Customer ID', - name: 'customerid', - type: 'number', - default: 0, - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The id of the customer associated with this order.', - }, - { - displayName: 'Creation Date', - name: 'externalCreatedDate', - type: 'dateTime', - default: '', - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The date the order was placed.', - }, - { - displayName: 'Abandoning Date', - name: 'abandonedDate', - type: 'dateTime', - default: '', - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The date the cart was abandoned. REQUIRED ONLY IF INCLUDING EXTERNALCHECKOUTID.', - }, - { - displayName: 'Products', - name: 'orderProducts', - type: 'collection', - typeOptions: { - multipleValues: true, - multipleValueButtonText: 'Add product', - }, - displayOptions: { - show: { - operation: [ - 'create' - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - default: {}, - description: 'All ordered products', - placeholder: 'Add product field', - options: [ - { - displayName: 'Name', - name: 'name', - type: 'string', - default: '', - description: 'The name of the product', - }, - { - displayName: 'Price', - name: 'price', - type: 'number', - default: 0, - description: 'The price of the product, in cents. (i.e. $456.78 => 45678). Must be greater than or equal to zero.', - }, - { - displayName: 'Product Quantity', - name: 'quantity', - type: 'number', - default: 0, - description: 'The quantity ordered.', - }, - { - displayName: 'Product external ID', - name: 'externalid', - type: 'string', - default: '', - description: 'The id of the product in the external service.', - }, - { - displayName: 'Product Category', - name: 'category', - type: 'string', - default: '', - description: 'The category of the product.', - }, - { - displayName: 'SKU', - name: 'sku', - type: 'string', - default: '', - description: 'The SKU for the product.', - }, - { - displayName: 'Description', - name: 'description', - type: 'string', - default: '', - description: 'The description of the product.', - }, - { - displayName: 'Image URL', - name: 'imageUrl', - type: 'string', - default: '', - description: 'An Image URL that displays an image of the product.', - }, - { - displayName: 'Product URL', - name: 'productUrl', - type: 'string', - default: '', - description: 'A URL linking to the product in your store.', - }, - ], - }, - { - displayName: 'Additional Fields', - name: 'additionalFields', - type: 'collection', - placeholder: 'Add Field', - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - default: {}, - options: [ - { - displayName: 'Shipping Amount', - name: 'shippingAmount', - type: 'number', - default: 0, - description: 'The total shipping amount for the order in cents .', - }, + { + displayName: 'Tax Amount', + name: 'taxAmount', + type: 'number', + default: 0, + description: 'The total tax amount for the order in cents.', + }, + { + displayName: 'Discount Amount', + name: 'discountAmount', + type: 'number', + default: 0, + description: 'The total discount amount for the order in cents.', + }, + { + displayName: 'Order URL', + name: 'orderUrl', + type: 'string', + default: '', + description: 'The URL for the order in the external service.', + }, + { + displayName: 'External updated date', + name: 'externalUpdatedDate', + type: 'dateTime', + default: '', + description: 'The date the order was updated.', + }, + { + displayName: 'Shipping Method', + name: 'shippingMethod', + type: 'string', + default: '', + description: 'The shipping method of the order.', + }, + { + displayName: 'Order Number', + name: 'orderNumber', + type: 'string', + default: '', + description: 'The order number. This can be different than the externalid.', + }, - { - displayName: 'Tax Amount', - name: 'taxAmount', - type: 'number', - default: 0, - description: 'The total tax amount for the order in cents.', - }, - { - displayName: 'Discount Amount', - name: 'discountAmount', - type: 'number', - default: 0, - description: 'The total discount amount for the order in cents.', - }, - { - displayName: 'Order URL', - name: 'orderUrl', - type: 'string', - default: '', - description: 'The URL for the order in the external service.', - }, - { - displayName: 'External updated date', - name: 'externalUpdatedDate', - type: 'dateTime', - default: '', - description: 'The date the order was updated.', - }, - { - displayName: 'Shipping Method', - name: 'shippingMethod', - type: 'string', - default: '', - description: 'The shipping method of the order.', - }, - { - displayName: 'Order Number', - name: 'orderNumber', - type: 'string', - default: '', - description: 'The order number. This can be different than the externalid.', - }, + ] + }, - ] - }, + // ---------------------------------- + // ecommerceOrder:update + // ---------------------------------- + { + displayName: 'Order ID', + name: 'orderId', + type: 'number', + default: 0, + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The id of the e-commerce order.', + }, - // ---------------------------------- - // ecommerceOrder:update - // ---------------------------------- - { - displayName: 'Order ID', - name: 'orderId', - type: 'number', - default: 0, - displayOptions: { - show: { - operation: [ - 'update', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The id of the e-commerce order.', - }, + { + displayName: 'Add Field', + name: 'updateFields', + type: 'collection', + placeholder: 'Add Field', + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'External ID', + name: 'externalid', + type: 'string', + default: '', + description: 'The id of the order in the external service. ONLY REQUIRED IF EXTERNALCHECKOUTID NOT INCLUDED', + }, + { + displayName: 'External checkout ID', + name: 'externalcheckoutid', + type: 'string', + default: '', + description: 'The id of the cart in the external service. ONLY REQUIRED IF EXTERNALID IS NOT INCLUDED.', + }, + { + displayName: 'Order source', + name: 'source', + type: 'number', + default: 0, + description: 'The order source code (0 - will not trigger automations, 1 - will trigger automations).', + }, + { + displayName: 'Customer Email', + name: 'email', + type: 'string', + default: '', + description: 'The email address of the customer who placed the order.', + }, + { + displayName: 'Total price', + name: 'totalPrice', + type: 'number', + default: 0, + description: 'The total price of the order in cents, including tax and shipping charges. (i.e. $456.78 => 45678). Must be greater than or equal to zero.', + }, + { + displayName: 'Order currency', + name: 'currency', + type: 'options', + default: 'eur', + options: allCurrencies, + description: 'The currency of the order (3-digit ISO code, e.g., "USD").', + }, + { + displayName: 'Connection ID', + name: 'connectionid', + type: 'number', + default: 0, + description: 'The id of the connection from which this order originated.', + }, + { + displayName: 'Customer ID', + name: 'customerid', + type: 'number', + default: 0, + description: 'The id of the customer associated with this order.', + }, + { + displayName: 'Creation Date', + name: 'externalupdatedDate', + type: 'dateTime', + default: '', + description: 'The date the order was placed.', + }, + { + displayName: 'Abandoning Date', + name: 'abandonedDate', + type: 'dateTime', + default: '', + description: 'The date the cart was abandoned. REQUIRED ONLY IF INCLUDING EXTERNALCHECKOUTID.', + }, + { + displayName: 'Shipping Amount', + name: 'shippingAmount', + type: 'number', + default: 0, + description: 'The total shipping amount for the order in cents .', + }, - { - displayName: 'Add Field', - name: 'updateFields', - type: 'collection', - placeholder: 'Add Field', - displayOptions: { - show: { - operation: [ - 'update', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - default: {}, - options: [ - { - displayName: 'External ID', - name: 'externalid', - type: 'string', - default: '', - description: 'The id of the order in the external service. ONLY REQUIRED IF EXTERNALCHECKOUTID NOT INCLUDED', - }, - { - displayName: 'External checkout ID', - name: 'externalcheckoutid', - type: 'string', - default: '', - description: 'The id of the cart in the external service. ONLY REQUIRED IF EXTERNALID IS NOT INCLUDED.', - }, - { - displayName: 'Order source', - name: 'source', - type: 'number', - default: 0, - description: 'The order source code (0 - will not trigger automations, 1 - will trigger automations).', - }, - { - displayName: 'Customer Email', - name: 'email', - type: 'string', - default: '', - description: 'The email address of the customer who placed the order.', - }, - { - displayName: 'Total price', - name: 'totalPrice', - type: 'number', - default: 0, - description: 'The total price of the order in cents, including tax and shipping charges. (i.e. $456.78 => 45678). Must be greater than or equal to zero.', - }, - { - displayName: 'Order currency', - name: 'currency', - type: 'options', - default: 'eur', - options: allCurrencies, - description: 'The currency of the order (3-digit ISO code, e.g., "USD").', - }, - { - displayName: 'Connection ID', - name: 'connectionid', - type: 'number', - default: 0, - description: 'The id of the connection from which this order originated.', - }, - { - displayName: 'Customer ID', - name: 'customerid', - type: 'number', - default: 0, - description: 'The id of the customer associated with this order.', - }, - { - displayName: 'Creation Date', - name: 'externalupdatedDate', - type: 'dateTime', - default: '', - description: 'The date the order was placed.', - }, - { - displayName: 'Abandoning Date', - name: 'abandonedDate', - type: 'dateTime', - default: '', - description: 'The date the cart was abandoned. REQUIRED ONLY IF INCLUDING EXTERNALCHECKOUTID.', - }, - { - displayName: 'Shipping Amount', - name: 'shippingAmount', - type: 'number', - default: 0, - description: 'The total shipping amount for the order in cents .', - }, + { + displayName: 'Tax Amount', + name: 'taxAmount', + type: 'number', + default: 0, + description: 'The total tax amount for the order in cents.', + }, + { + displayName: 'Discount Amount', + name: 'discountAmount', + type: 'number', + default: 0, + description: 'The total discount amount for the order in cents.', + }, + { + displayName: 'Order URL', + name: 'orderUrl', + type: 'string', + default: '', + description: 'The URL for the order in the external service.', + }, + { + displayName: 'External updated date', + name: 'externalUpdatedDate', + type: 'dateTime', + default: '', + description: 'The date the order was updated.', + }, + { + displayName: 'Shipping Method', + name: 'shippingMethod', + type: 'string', + default: '', + description: 'The shipping method of the order.', + }, + { + displayName: 'Order Number', + name: 'orderNumber', + type: 'string', + default: '', + description: 'The order number. This can be different than the externalid.', + }, - { - displayName: 'Tax Amount', - name: 'taxAmount', - type: 'number', - default: 0, - description: 'The total tax amount for the order in cents.', - }, - { - displayName: 'Discount Amount', - name: 'discountAmount', - type: 'number', - default: 0, - description: 'The total discount amount for the order in cents.', - }, - { - displayName: 'Order URL', - name: 'orderUrl', - type: 'string', - default: '', - description: 'The URL for the order in the external service.', - }, - { - displayName: 'External updated date', - name: 'externalUpdatedDate', - type: 'dateTime', - default: '', - description: 'The date the order was updated.', - }, - { - displayName: 'Shipping Method', - name: 'shippingMethod', - type: 'string', - default: '', - description: 'The shipping method of the order.', - }, - { - displayName: 'Order Number', - name: 'orderNumber', - type: 'string', - default: '', - description: 'The order number. This can be different than the externalid.', - }, + { + displayName: 'Products', + name: 'orderProducts', + type: 'collection', + typeOptions: { + multipleValues: true, + multipleValueButtonText: 'Add product', + }, + default: {}, + description: 'All ordered products', + placeholder: 'Add product field', + options: [ + { + displayName: 'Name', + name: 'name', + type: 'string', + default: '', + description: 'The name of the product', + }, + { + displayName: 'Price', + name: 'price', + type: 'number', + default: 0, + description: 'The price of the product, in cents. (i.e. $456.78 => 45678). Must be greater than or equal to zero.', + }, + { + displayName: 'Product Quantity', + name: 'quantity', + type: 'number', + default: 0, + description: 'The quantity ordered.', + }, + { + displayName: 'Product external ID', + name: 'externalid', + type: 'string', + default: '', + description: 'The id of the product in the external service.', + }, + { + displayName: 'Product Category', + name: 'category', + type: 'string', + default: '', + description: 'The category of the product.', + }, + { + displayName: 'SKU', + name: 'sku', + type: 'string', + default: '', + description: 'The SKU for the product.', + }, + { + displayName: 'Description', + name: 'description', + type: 'string', + default: '', + description: 'The description of the product.', + }, + { + displayName: 'Image URL', + name: 'imageUrl', + type: 'string', + default: '', + description: 'An Image URL that displays an image of the product.', + }, + { + displayName: 'Product URL', + name: 'productUrl', + type: 'string', + default: '', + description: 'A URL linking to the product in your store.', + }, + ], + }, - { - displayName: 'Products', - name: 'orderProducts', - type: 'collection', - typeOptions: { - multipleValues: true, - multipleValueButtonText: 'Add product', - }, - default: {}, - description: 'All ordered products', - placeholder: 'Add product field', - options: [ - { - displayName: 'Name', - name: 'name', - type: 'string', - default: '', - description: 'The name of the product', - }, - { - displayName: 'Price', - name: 'price', - type: 'number', - default: 0, - description: 'The price of the product, in cents. (i.e. $456.78 => 45678). Must be greater than or equal to zero.', - }, - { - displayName: 'Product Quantity', - name: 'quantity', - type: 'number', - default: 0, - description: 'The quantity ordered.', - }, - { - displayName: 'Product external ID', - name: 'externalid', - type: 'string', - default: '', - description: 'The id of the product in the external service.', - }, - { - displayName: 'Product Category', - name: 'category', - type: 'string', - default: '', - description: 'The category of the product.', - }, - { - displayName: 'SKU', - name: 'sku', - type: 'string', - default: '', - description: 'The SKU for the product.', - }, - { - displayName: 'Description', - name: 'description', - type: 'string', - default: '', - description: 'The description of the product.', - }, - { - displayName: 'Image URL', - name: 'imageUrl', - type: 'string', - default: '', - description: 'An Image URL that displays an image of the product.', - }, - { - displayName: 'Product URL', - name: 'productUrl', - type: 'string', - default: '', - description: 'A URL linking to the product in your store.', - }, - ], - }, + ] + }, - ] - }, + // ---------------------------------- + // ecommerceOrder:delete + // ---------------------------------- + { + displayName: 'Order ID', + name: 'orderId', + type: 'number', + default: 0, + displayOptions: { + show: { + operation: [ + 'delete', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The id of the e-commerce order.', + }, - // ---------------------------------- - // ecommerceOrder:delete - // ---------------------------------- - { - displayName: 'Order ID', - name: 'orderId', - type: 'number', - default: 0, - displayOptions: { - show: { - operation: [ - 'delete', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The id of the e-commerce order.', - }, + // ---------------------------------- + // ecommerceOrder:get + // ---------------------------------- + { + displayName: 'Order ID', + name: 'orderId', + type: 'number', + default: 0, + displayOptions: { + show: { + operation: [ + 'get', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The id of the e-commerce order.', + }, - // ---------------------------------- - // ecommerceOrder:get - // ---------------------------------- - { - displayName: 'Order ID', - name: 'orderId', - type: 'number', - default: 0, - displayOptions: { - show: { - operation: [ - 'get', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The id of the e-commerce order.', - }, - - // ---------------------------------- - // ecommerceOrder:getAll - // ---------------------------------- - { - displayName: 'Return All', - name: 'returnAll', - type: 'boolean', - displayOptions: { - show: { - operation: [ - 'getAll', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - default: false, - description: 'If all results should be returned or only up to a given limit.', - }, - { - displayName: 'Limit', - name: 'limit', - type: 'number', - displayOptions: { - show: { - operation: [ - 'getAll', - ], - resource: [ - 'ecommerceOrder', - ], - returnAll: [ - false, - ], - }, - }, - typeOptions: { - minValue: 1, - maxValue: 500, - }, - default: 100, - description: 'How many results to return.', - }, + // ---------------------------------- + // ecommerceOrder:getAll + // ---------------------------------- + { + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', + displayOptions: { + show: { + operation: [ + 'getAll', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + default: false, + description: 'If all results should be returned or only up to a given limit.', + }, + { + displayName: 'Limit', + name: 'limit', + type: 'number', + displayOptions: { + show: { + operation: [ + 'getAll', + ], + resource: [ + 'ecommerceOrder', + ], + returnAll: [ + false, + ], + }, + }, + typeOptions: { + minValue: 1, + maxValue: 500, + }, + default: 100, + description: 'How many results to return.', + }, ] as INodeProperties[] \ No newline at end of file From 0da9c035874f0d1a160cec50cf4a3e0890b3dda5 Mon Sep 17 00:00:00 2001 From: quansenB Date: Sun, 3 Nov 2019 16:42:18 +0100 Subject: [PATCH 34/43] add ecom customer functionality --- .../ActiveCampaign/ActiveCampaign.node.ts | 112 ++++++- .../ActiveCampaign/EcomCustomerDescription.ts | 290 ++++++++++++++++++ 2 files changed, 399 insertions(+), 3 deletions(-) create mode 100644 packages/nodes-base/nodes/ActiveCampaign/EcomCustomerDescription.ts diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts index 127d06c459..ae163d7482 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts @@ -30,6 +30,11 @@ import { ecomOrderFields } from './EcomOrderDescription'; +import { + ecomCustomerOperations, + ecomCustomerFields +} from './EcomCustomerDescription'; + interface CustomProperty { name: string; value: string; @@ -93,9 +98,13 @@ export class ActiveCampaign implements INodeType { value: 'deal', }, { - name: "E-commerce order", - value: "ecommerceOrder" - } + name: "E-commerce Order", + value: "ecommerceOrder", + }, + { + name: "E-Commerce Customer", + value: "ecommerceCustomer", + }, ], default: 'contact', description: 'The resource to operate on.', @@ -107,6 +116,7 @@ export class ActiveCampaign implements INodeType { ...contactOperations, ...dealOperations, ...ecomOrderOperations, + ...ecomCustomerOperations, // ---------------------------------- // contact @@ -123,6 +133,11 @@ export class ActiveCampaign implements INodeType { // ---------------------------------- ...ecomOrderFields, + // ---------------------------------- + // ecommerceCustomer + // ---------------------------------- + ...ecomCustomerFields, + ], }; @@ -444,6 +459,95 @@ export class ActiveCampaign implements INodeType { } else { throw new Error(`The operation "${operation}" is not known`); } + } else if (resource === 'ecommerceCustomer') { + if (operation === 'create') { + // ---------------------------------- + // ecommerceCustomer:create + // ---------------------------------- + + requestMethod = 'POST'; + + endpoint = '/api/3/ecomCustomers'; + + dataKey = 'ecommerceCustomer'; + + body.ecomCustomer = { + connectionid: this.getNodeParameter('connectionid', i) as string, + externalid: this.getNodeParameter('externalid', i) as string, + email: this.getNodeParameter('email', i) as string, + } as IDataObject; + + const additionalFields = this.getNodeParameter('additionalFields', i) as IDataObject; + if (additionalFields.acceptsMarketing) { + if (additionalFields.acceptsMarketing == true) { + additionalFields.acceptsMarketing = '1'; + } else { + additionalFields.acceptsMarketing = '0'; + } + } + addAdditionalFields(body.ecomOrder as IDataObject, additionalFields); + + } else if (operation === 'update') { + // ---------------------------------- + // ecommerceCustomer:update + // ---------------------------------- + + requestMethod = 'PUT'; + + const ecommerceCustomerId = this.getNodeParameter('ecommerceCustomerId', i) as number; + endpoint = `/api/3/ecomCustomers/${ecommerceCustomerId}`; + + dataKey = 'ecommerceCustomer'; + body.ecomCustomer = {} as IDataObject; + + const updateFields = this.getNodeParameter('updateFields', i) as IDataObject; + if (updateFields.acceptsMarketing) { + if (updateFields.acceptsMarketing == true) { + updateFields.acceptsMarketing = '1'; + } else { + updateFields.acceptsMarketing = '0'; + } + } + addAdditionalFields(body.ecomCustomer as IDataObject, updateFields); + + } else if (operation === 'delete') { + // ---------------------------------- + // ecommerceCustomer:delete + // ---------------------------------- + + requestMethod = 'DELETE'; + + const ecommerceCustomerId = this.getNodeParameter('ecommerceCustomerId', i) as number; + endpoint = `/api/3/ecomCustomers/${ecommerceCustomerId}`; + + } else if (operation === 'get') { + // ---------------------------------- + // ecommerceCustomer:get + // ---------------------------------- + + requestMethod = 'GET'; + + const ecommerceCustomerId = this.getNodeParameter('ecommerceCustomerId', i) as number; + endpoint = `/api/3/ecomCustomers/${ecommerceCustomerId}`; + + } else if (operation === 'getAll') { + // ---------------------------------- + // ecommerceCustomers:getAll + // ---------------------------------- + + requestMethod = 'GET'; + + returnAll = this.getNodeParameter('returnAll', i) as boolean; + if (returnAll === false) { + qs.limit = this.getNodeParameter('limit', i) as number; + } + + dataKey = 'ecommerceCustomers'; + endpoint = `/api/3/ecomCustomers`; + + } else { + throw new Error(`The operation "${operation}" is not known`); + } } else { throw new Error(`The resource "${resource}" is not known!`); @@ -463,6 +567,8 @@ export class ActiveCampaign implements INodeType { } } + console.log(body) + return [this.helpers.returnJsonArray(returnData)]; } } diff --git a/packages/nodes-base/nodes/ActiveCampaign/EcomCustomerDescription.ts b/packages/nodes-base/nodes/ActiveCampaign/EcomCustomerDescription.ts new file mode 100644 index 0000000000..4399ca3fa0 --- /dev/null +++ b/packages/nodes-base/nodes/ActiveCampaign/EcomCustomerDescription.ts @@ -0,0 +1,290 @@ +import { INodeProperties } from "n8n-workflow"; + +export const ecomCustomerOperations = [ + { + displayName: 'Operation', + name: 'operation', + type: 'options', + displayOptions: { + show: { + resource: [ + 'ecommerceCustomer', + ], + }, + }, + options: [ + { + name: 'Create', + value: 'create', + description: 'Create a ecommerceCustomer', + }, + { + name: 'Delete', + value: 'delete', + description: 'Delete a ecommerceCustomer', + }, + { + name: 'Get', + value: 'get', + description: 'Get data of a ecommerceCustomer', + }, + { + name: 'Get All', + value: 'getAll', + description: 'Get data of all ecommerceCustomer', + }, + { + name: 'Update', + value: 'update', + description: 'Update a ecommerceCustomer', + }, + ], + default: 'create', + description: 'The operation to perform.', + }, +] as INodeProperties[] + +export const ecomCustomerFields = [ + // ---------------------------------- + // ecommerceCustomer:create + // ---------------------------------- + { + displayName: 'Service ID', + name: 'connectionid', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceCustomer', + ], + }, + }, + description: 'The id of the connection object for the service where the customer originates.', + }, + { + displayName: 'Customer ID', + name: 'externalid', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceCustomer', + ], + }, + }, + description: 'The id of the customer in the external service.', + }, + { + displayName: 'Customer Email', + name: 'email', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceCustomer', + ], + }, + }, + description: 'The email address of the customer.', + }, + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceCustomer', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'Accepts Marketing', + name: 'acceptsMarketing', + type: 'boolean', + default: false, + description: 'Indication of whether customer has opt-ed in to marketing communications.', + }, + ], + }, + + // ---------------------------------- + // ecommerceCustomer:update + // ---------------------------------- + { + displayName: 'Customer ID', + name: 'ecommerceCustomerId', + type: 'number', + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'ecommerceCustomer', + ], + }, + }, + default: 0, + required: true, + description: 'ID of the ecommerceCustomer to update.', + }, + { + displayName: 'Update Fields', + name: 'updateFields', + type: 'collection', + description: 'The fields to update.', + placeholder: 'Add Field', + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'ecommerceCustomer', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'Service ID', + name: 'connectionid', + type: 'string', + default: '', + description: 'The id of the connection object for the service where the customer originates.', + }, + { + displayName: 'Customer ID', + name: 'externalid', + type: 'string', + default: '', + description: 'The id of the customer in the external service.', + }, + { + displayName: 'Customer Email', + name: 'email', + type: 'string', + default: '', + description: 'The email address of the customer.', + }, + { + displayName: 'Accepts Marketing', + name: 'acceptsMarketing', + type: 'boolean', + default: false, + description: 'Indication of whether customer has opt-ed in to marketing communications.', + }, + ], + }, + + // ---------------------------------- + // ecommerceCustomer:delete + // ---------------------------------- + { + displayName: 'Customer ID', + name: 'ecommerceCustomerId', + type: 'number', + displayOptions: { + show: { + operation: [ + 'delete', + ], + resource: [ + 'ecommerceCustomer', + ], + }, + }, + default: 0, + required: true, + description: 'ID of the ecommerceCustomer to update.', + }, + + // ---------------------------------- + // ecommerceCustomer:get + // ---------------------------------- + { + displayName: 'Customer ID', + name: 'ecommerceCustomerId', + type: 'number', + displayOptions: { + show: { + operation: [ + 'get', + ], + resource: [ + 'ecommerceCustomer', + ], + }, + }, + default: 0, + required: true, + description: 'ID of the ecommerceCustomer to update.', + }, + + // ---------------------------------- + // ecommerceCustomer:getAll + // ---------------------------------- + { + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', + displayOptions: { + show: { + operation: [ + 'getAll', + ], + resource: [ + 'ecommerceCustomer', + ], + }, + }, + default: false, + description: 'If all results should be returned or only up to a given limit.', + }, + { + displayName: 'Limit', + name: 'limit', + type: 'number', + displayOptions: { + show: { + operation: [ + 'getAll', + ], + resource: [ + 'ecommerceCustomer', + ], + returnAll: [ + false, + ], + }, + }, + typeOptions: { + minValue: 1, + maxValue: 500, + }, + default: 100, + description: 'How many results to return.', + }, +] as INodeProperties[] From 9a3a0d150b2572ad29e10fd2dbd0ded42c6cc53d Mon Sep 17 00:00:00 2001 From: quansenB Date: Sun, 3 Nov 2019 17:58:46 +0100 Subject: [PATCH 35/43] add ecom order products option decrisption --- .../ActiveCampaign/ActiveCampaign.node.ts | 39 ++---- .../ActiveCampaign/EcomCustomerDescription.ts | 10 +- .../EcomOrderProductsDescription.ts | 127 ++++++++++++++++++ .../nodes/ActiveCampaign/GenericFunctions.ts | 8 +- 4 files changed, 152 insertions(+), 32 deletions(-) create mode 100644 packages/nodes-base/nodes/ActiveCampaign/EcomOrderProductsDescription.ts diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts index ae163d7482..67153c18aa 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts @@ -98,13 +98,17 @@ export class ActiveCampaign implements INodeType { value: 'deal', }, { - name: "E-commerce Order", - value: "ecommerceOrder", + name: 'E-commerce Order', + value: 'ecommerceOrder', }, { - name: "E-Commerce Customer", - value: "ecommerceCustomer", + name: 'E-Commerce Customer', + value: 'ecommerceCustomer', }, + { + name: 'E-commerce Order Products', + value: 'ecomerceOrderProducts' + } ], default: 'contact', description: 'The resource to operate on.', @@ -254,8 +258,6 @@ export class ActiveCampaign implements INodeType { endpoint = '/api/3/deals'; - dataKey = 'deal'; - body.deal = { title: this.getNodeParameter('title', i) as string, contact: this.getNodeParameter('contact', i) as string, @@ -291,8 +293,8 @@ export class ActiveCampaign implements INodeType { const dealId = this.getNodeParameter('dealId', i) as number; endpoint = `/api/3/deals/${dealId}`; - dataKey = 'deal'; body.deal = {} as IDataObject; + const updateFields = this.getNodeParameter('updateFields', i) as IDataObject; addAdditionalFields(body.deal as IDataObject, updateFields); @@ -328,7 +330,6 @@ export class ActiveCampaign implements INodeType { qs.limit = this.getNodeParameter('limit', i) as number; } - dataKey = 'deals'; endpoint = `/api/3/deals`; } else if (operation === 'createNote') { @@ -358,7 +359,6 @@ export class ActiveCampaign implements INodeType { const dealNoteId = this.getNodeParameter('dealNoteId', i) as number; endpoint = `/api/3/deals/${dealId}/notes/${dealNoteId}`; - } else { throw new Error(`The operation "${operation}" is not known`); } @@ -372,8 +372,6 @@ export class ActiveCampaign implements INodeType { endpoint = '/api/3/ecomOrders'; - dataKey = 'ecommerceOrder'; - body.ecomOrder = { source: this.getNodeParameter('source', i) as string, email: this.getNodeParameter('email', i) as string, @@ -415,7 +413,6 @@ export class ActiveCampaign implements INodeType { const orderId = this.getNodeParameter('orderId', i) as number; endpoint = `/api/3/ecomOrders/${orderId}`; - dataKey = 'ecommerceOrder'; body.ecomOrder = {} as IDataObject; const updateFields = this.getNodeParameter('updateFields', i) as IDataObject; @@ -453,7 +450,6 @@ export class ActiveCampaign implements INodeType { qs.limit = this.getNodeParameter('limit', i) as number; } - dataKey = 'ecommerceOrders'; endpoint = `/api/3/ecomOrders`; } else { @@ -469,8 +465,6 @@ export class ActiveCampaign implements INodeType { endpoint = '/api/3/ecomCustomers'; - dataKey = 'ecommerceCustomer'; - body.ecomCustomer = { connectionid: this.getNodeParameter('connectionid', i) as string, externalid: this.getNodeParameter('externalid', i) as string, @@ -478,14 +472,14 @@ export class ActiveCampaign implements INodeType { } as IDataObject; const additionalFields = this.getNodeParameter('additionalFields', i) as IDataObject; - if (additionalFields.acceptsMarketing) { + if (additionalFields.acceptsMarketing !== undefined) { if (additionalFields.acceptsMarketing == true) { additionalFields.acceptsMarketing = '1'; } else { additionalFields.acceptsMarketing = '0'; } - } - addAdditionalFields(body.ecomOrder as IDataObject, additionalFields); + } + addAdditionalFields(body.ecomCustomer as IDataObject, additionalFields); } else if (operation === 'update') { // ---------------------------------- @@ -497,11 +491,10 @@ export class ActiveCampaign implements INodeType { const ecommerceCustomerId = this.getNodeParameter('ecommerceCustomerId', i) as number; endpoint = `/api/3/ecomCustomers/${ecommerceCustomerId}`; - dataKey = 'ecommerceCustomer'; body.ecomCustomer = {} as IDataObject; const updateFields = this.getNodeParameter('updateFields', i) as IDataObject; - if (updateFields.acceptsMarketing) { + if (updateFields.acceptsMarketing != undefined) { if (updateFields.acceptsMarketing == true) { updateFields.acceptsMarketing = '1'; } else { @@ -542,7 +535,6 @@ export class ActiveCampaign implements INodeType { qs.limit = this.getNodeParameter('limit', i) as number; } - dataKey = 'ecommerceCustomers'; endpoint = `/api/3/ecomCustomers`; } else { @@ -567,9 +559,6 @@ export class ActiveCampaign implements INodeType { } } - console.log(body) - return [this.helpers.returnJsonArray(returnData)]; } -} - +} \ No newline at end of file diff --git a/packages/nodes-base/nodes/ActiveCampaign/EcomCustomerDescription.ts b/packages/nodes-base/nodes/ActiveCampaign/EcomCustomerDescription.ts index 4399ca3fa0..53842df995 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/EcomCustomerDescription.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/EcomCustomerDescription.ts @@ -16,27 +16,27 @@ export const ecomCustomerOperations = [ { name: 'Create', value: 'create', - description: 'Create a ecommerceCustomer', + description: 'Create a E-commerce Customer', }, { name: 'Delete', value: 'delete', - description: 'Delete a ecommerceCustomer', + description: 'Delete a E-commerce Customer', }, { name: 'Get', value: 'get', - description: 'Get data of a ecommerceCustomer', + description: 'Get data of a E-commerce Customer', }, { name: 'Get All', value: 'getAll', - description: 'Get data of all ecommerceCustomer', + description: 'Get data of all E-commerce Customer', }, { name: 'Update', value: 'update', - description: 'Update a ecommerceCustomer', + description: 'Update a E-commerce Customer', }, ], default: 'create', diff --git a/packages/nodes-base/nodes/ActiveCampaign/EcomOrderProductsDescription.ts b/packages/nodes-base/nodes/ActiveCampaign/EcomOrderProductsDescription.ts new file mode 100644 index 0000000000..ec28fafe8a --- /dev/null +++ b/packages/nodes-base/nodes/ActiveCampaign/EcomOrderProductsDescription.ts @@ -0,0 +1,127 @@ +import { INodeProperties } from "n8n-workflow"; + +import { allCurrencies } from './currencies'; + +export const ecomOrderProductsOperations = [ + { + displayName: 'Operation', + name: 'operation', + type: 'options', + displayOptions: { + show: { + resource: [ + 'ecommerceOrderProducts', + ], + }, + }, + options: [ + { + name: 'Get All', + value: 'getAll', + description: 'Get data of all orders', + }, + { + name: 'Get by Product ID', + value: 'getByProductId', + description: 'Get data of a order', + }, + { + name: 'Get by Order ID', + value: 'getByOrderId', + description: 'Get data of a order', + }, + + ], + default: 'create', + description: 'The operation to perform.', + }, +] as INodeProperties[] + +export const ecomOrderProductsFields = [ + // ---------------------------------- + // ecommerceOrderProducts:getByOrderId + // ---------------------------------- + { + displayName: 'Order ID', + name: 'orderId', + type: 'number', + default: 0, + displayOptions: { + show: { + operation: [ + 'getByOrderId', + ], + resource: [ + 'ecommerceOrderProducts', + ], + }, + }, + description: 'The id of the e-commerce order.', + }, + + // ---------------------------------- + // ecommerceOrderProducts:getByProductId + // ---------------------------------- + { + displayName: 'Product ID', + name: 'procuctId', + type: 'number', + default: 0, + displayOptions: { + show: { + operation: [ + 'getByProductId', + ], + resource: [ + 'ecommerceOrderProducts', + ], + }, + }, + description: 'The id of the e-commerce order.', + }, + + // ---------------------------------- + // ecommerceOrderProducts:getAll + // ---------------------------------- + { + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', + displayOptions: { + show: { + operation: [ + 'getAll', + ], + resource: [ + 'ecommerceOrderProducts', + ], + }, + }, + default: false, + description: 'If all results should be returned or only up to a given limit.', + }, + { + displayName: 'Limit', + name: 'limit', + type: 'number', + displayOptions: { + show: { + operation: [ + 'getAll', + ], + resource: [ + 'ecommerceOrderProducts', + ], + returnAll: [ + false, + ], + }, + }, + typeOptions: { + minValue: 1, + maxValue: 500, + }, + default: 100, + description: 'How many results to return.', + }, +] as INodeProperties[] \ No newline at end of file diff --git a/packages/nodes-base/nodes/ActiveCampaign/GenericFunctions.ts b/packages/nodes-base/nodes/ActiveCampaign/GenericFunctions.ts index 932f73e2c1..769effe9ef 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/GenericFunctions.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/GenericFunctions.ts @@ -105,10 +105,14 @@ export async function activeCampaignApiRequestAllItems(this: IHookFunctions | IE if (dataKey === undefined) { returnData.push.apply(returnData, responseData); - itemsReceived += returnData.length; + if (returnData != undefined) { + itemsReceived += returnData.length; + } } else { returnData.push.apply(returnData, responseData[dataKey]); - itemsReceived += responseData[dataKey].length; + if (responseData[dataKey] != undefined) { + itemsReceived += responseData[dataKey].length; + } } query.offset = itemsReceived; From e764748aa11c4502b1a2b4bc8afea0da43686d47 Mon Sep 17 00:00:00 2001 From: quansenB Date: Sun, 3 Nov 2019 21:18:58 +0100 Subject: [PATCH 36/43] add ecommerce order products functionality --- .../ActiveCampaign/ActiveCampaign.node.ts | 53 ++++++++++++++++++- .../EcomOrderProductsDescription.ts | 15 +++--- 2 files changed, 57 insertions(+), 11 deletions(-) diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts index 67153c18aa..2c2f03a2a7 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts @@ -34,6 +34,7 @@ import { ecomCustomerOperations, ecomCustomerFields } from './EcomCustomerDescription'; +import { ecomOrderProductsOperations, ecomOrderProductsFields } from './EcomOrderProductsDescription'; interface CustomProperty { name: string; @@ -107,7 +108,7 @@ export class ActiveCampaign implements INodeType { }, { name: 'E-commerce Order Products', - value: 'ecomerceOrderProducts' + value: 'ecommerceOrderProducts' } ], default: 'contact', @@ -121,6 +122,7 @@ export class ActiveCampaign implements INodeType { ...dealOperations, ...ecomOrderOperations, ...ecomCustomerOperations, + ...ecomOrderProductsOperations, // ---------------------------------- // contact @@ -142,6 +144,11 @@ export class ActiveCampaign implements INodeType { // ---------------------------------- ...ecomCustomerFields, + // ---------------------------------- + // ecommerceOrderProducts + // ---------------------------------- + ...ecomOrderProductsFields, + ], }; @@ -478,7 +485,7 @@ export class ActiveCampaign implements INodeType { } else { additionalFields.acceptsMarketing = '0'; } - } + } addAdditionalFields(body.ecomCustomer as IDataObject, additionalFields); } else if (operation === 'update') { @@ -540,6 +547,48 @@ export class ActiveCampaign implements INodeType { } else { throw new Error(`The operation "${operation}" is not known`); } + } else if (resource === 'ecommerceOrderProducts') { + if (operation === 'getByProductId') { + // ---------------------------------- + // ecommerceOrderProducts:getByProductId + // ---------------------------------- + + requestMethod = 'GET'; + + const procuctId = this.getNodeParameter('procuctId', i) as number; + endpoint = `/api/3/ecomOrderProducts/${procuctId}`; + + + } else if (operation === 'getByOrderId') { + // ---------------------------------- + // ecommerceOrderProducts:getByOrderId + // ---------------------------------- + + requestMethod = 'GET'; + + const orderId = this.getNodeParameter('orderId', i) as number; + endpoint = `/api/3/ecomOrders/${orderId}/orderProducts`; + + } else if (operation === 'getAll') { + // ---------------------------------- + // ecommerceOrderProductss:getAll + // ---------------------------------- + + requestMethod = 'GET'; + + returnAll = this.getNodeParameter('returnAll', i) as boolean; + if (returnAll === false) { + qs.limit = this.getNodeParameter('limit', i) as number; + } + + endpoint = `/api/3/ecomOrderProducts`; + + } else { + throw new Error(`The operation "${operation}" is not known`); + } + + console.log(endpoint); + console.log(body) } else { throw new Error(`The resource "${resource}" is not known!`); diff --git a/packages/nodes-base/nodes/ActiveCampaign/EcomOrderProductsDescription.ts b/packages/nodes-base/nodes/ActiveCampaign/EcomOrderProductsDescription.ts index ec28fafe8a..fbff8787d9 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/EcomOrderProductsDescription.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/EcomOrderProductsDescription.ts @@ -1,7 +1,5 @@ import { INodeProperties } from "n8n-workflow"; -import { allCurrencies } from './currencies'; - export const ecomOrderProductsOperations = [ { displayName: 'Operation', @@ -18,21 +16,20 @@ export const ecomOrderProductsOperations = [ { name: 'Get All', value: 'getAll', - description: 'Get data of all orders', + description: 'Get data of all order products', }, { name: 'Get by Product ID', value: 'getByProductId', - description: 'Get data of a order', + description: 'Get data of a ordered product', }, { name: 'Get by Order ID', value: 'getByOrderId', - description: 'Get data of a order', + description: 'Get data of an order\'s products', }, - ], - default: 'create', + default: 'getAll', description: 'The operation to perform.', }, ] as INodeProperties[] @@ -56,7 +53,7 @@ export const ecomOrderProductsFields = [ ], }, }, - description: 'The id of the e-commerce order.', + description: 'The ID of the order whose products you\'d like returned.', }, // ---------------------------------- @@ -77,7 +74,7 @@ export const ecomOrderProductsFields = [ ], }, }, - description: 'The id of the e-commerce order.', + description: 'The ID of the product you\'d like returned.', }, // ---------------------------------- From bc6acaff7292065df723e1210b2a043cc6a235f9 Mon Sep 17 00:00:00 2001 From: quansenB Date: Sun, 3 Nov 2019 21:47:23 +0100 Subject: [PATCH 37/43] tslint changes --- .../ActiveCampaign/ActiveCampaign.node.ts | 33 +++++++++---------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts index 2c2f03a2a7..0b63c45a02 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts @@ -196,9 +196,11 @@ export class ActiveCampaign implements INodeType { } dataKey = 'contact'; + body.contact = { email: this.getNodeParameter('email', i) as string, } as IDataObject; + const additionalFields = this.getNodeParameter('additionalFields', i) as IDataObject; addAdditionalFields(body.contact as IDataObject, additionalFields); @@ -269,22 +271,22 @@ export class ActiveCampaign implements INodeType { title: this.getNodeParameter('title', i) as string, contact: this.getNodeParameter('contact', i) as string, value: this.getNodeParameter('value', i) as number, - currency: this.getNodeParameter('currency', i) as string + currency: this.getNodeParameter('currency', i) as string, } as IDataObject; - const group = this.getNodeParameter('group', i) as string + const group = this.getNodeParameter('group', i) as string; if (group !== '') { - addAdditionalFields(body.deal as IDataObject, { group }) + addAdditionalFields(body.deal as IDataObject, { group }); } - const owner = this.getNodeParameter('owner', i) as string + const owner = this.getNodeParameter('owner', i) as string; if (owner !== '') { - addAdditionalFields(body.deal as IDataObject, { owner }) + addAdditionalFields(body.deal as IDataObject, { owner }); } - const stage = this.getNodeParameter('stage', i) as string + const stage = this.getNodeParameter('stage', i) as string; if (stage !== '') { - addAdditionalFields(body.deal as IDataObject, { stage }) + addAdditionalFields(body.deal as IDataObject, { stage }); } const additionalFields = this.getNodeParameter('additionalFields', i) as IDataObject; @@ -343,11 +345,11 @@ export class ActiveCampaign implements INodeType { // ---------------------------------- // deal:createNote // ---------------------------------- - requestMethod = 'POST' + requestMethod = 'POST'; body.note = { note: this.getNodeParameter('dealNote', i) as string, - } as IDataObject + } as IDataObject; const dealId = this.getNodeParameter('dealId', i) as number; endpoint = `/api/3/deals/${dealId}/notes`; @@ -356,11 +358,11 @@ export class ActiveCampaign implements INodeType { // ---------------------------------- // deal:updateNote // ---------------------------------- - requestMethod = 'PUT' + requestMethod = 'PUT'; body.note = { note: this.getNodeParameter('dealNote', i) as string, - } as IDataObject + } as IDataObject; const dealId = this.getNodeParameter('dealId', i) as number; const dealNoteId = this.getNodeParameter('dealNoteId', i) as number; @@ -480,7 +482,7 @@ export class ActiveCampaign implements INodeType { const additionalFields = this.getNodeParameter('additionalFields', i) as IDataObject; if (additionalFields.acceptsMarketing !== undefined) { - if (additionalFields.acceptsMarketing == true) { + if (additionalFields.acceptsMarketing === true) { additionalFields.acceptsMarketing = '1'; } else { additionalFields.acceptsMarketing = '0'; @@ -501,8 +503,8 @@ export class ActiveCampaign implements INodeType { body.ecomCustomer = {} as IDataObject; const updateFields = this.getNodeParameter('updateFields', i) as IDataObject; - if (updateFields.acceptsMarketing != undefined) { - if (updateFields.acceptsMarketing == true) { + if (updateFields.acceptsMarketing !== undefined) { + if (updateFields.acceptsMarketing === true) { updateFields.acceptsMarketing = '1'; } else { updateFields.acceptsMarketing = '0'; @@ -587,9 +589,6 @@ export class ActiveCampaign implements INodeType { throw new Error(`The operation "${operation}" is not known`); } - console.log(endpoint); - console.log(body) - } else { throw new Error(`The resource "${resource}" is not known!`); } From 7da53ad943a4692905889fe8c119f34795f28ea0 Mon Sep 17 00:00:00 2001 From: quansenB Date: Sun, 3 Nov 2019 21:49:49 +0100 Subject: [PATCH 38/43] more tslint changes --- .../nodes-base/nodes/ActiveCampaign/ContactDescription.ts | 4 ++-- packages/nodes-base/nodes/ActiveCampaign/DealDescription.ts | 4 ++-- .../nodes/ActiveCampaign/EcomCustomerDescription.ts | 4 ++-- .../nodes-base/nodes/ActiveCampaign/EcomOrderDescription.ts | 4 ++-- .../nodes/ActiveCampaign/EcomOrderProductsDescription.ts | 4 ++-- packages/nodes-base/nodes/ActiveCampaign/GenericFunctions.ts | 4 ++-- packages/nodes-base/nodes/ActiveCampaign/currencies.ts | 2 +- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/packages/nodes-base/nodes/ActiveCampaign/ContactDescription.ts b/packages/nodes-base/nodes/ActiveCampaign/ContactDescription.ts index b444824505..02c699e4b0 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ContactDescription.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ContactDescription.ts @@ -42,7 +42,7 @@ export const contactOperations = [ default: 'create', description: 'The operation to perform.', }, -] as INodeProperties[] +] as INodeProperties[]; export const contactFields = [ // ---------------------------------- @@ -348,4 +348,4 @@ export const contactFields = [ default: 100, description: 'How many results to return.', }, -] as INodeProperties[] +] as INodeProperties[]; diff --git a/packages/nodes-base/nodes/ActiveCampaign/DealDescription.ts b/packages/nodes-base/nodes/ActiveCampaign/DealDescription.ts index 03ffc386df..dac1b0aa3d 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/DealDescription.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/DealDescription.ts @@ -55,7 +55,7 @@ export const dealOperations = [ description: 'The operation to perform.', }, -] as INodeProperties[] +] as INodeProperties[]; export const dealFields = [ // ---------------------------------- @@ -526,4 +526,4 @@ export const dealFields = [ description: 'The content of the deal note', }, -] as INodeProperties[] \ No newline at end of file +] as INodeProperties[]; \ No newline at end of file diff --git a/packages/nodes-base/nodes/ActiveCampaign/EcomCustomerDescription.ts b/packages/nodes-base/nodes/ActiveCampaign/EcomCustomerDescription.ts index 53842df995..78c09afad8 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/EcomCustomerDescription.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/EcomCustomerDescription.ts @@ -42,7 +42,7 @@ export const ecomCustomerOperations = [ default: 'create', description: 'The operation to perform.', }, -] as INodeProperties[] +] as INodeProperties[]; export const ecomCustomerFields = [ // ---------------------------------- @@ -287,4 +287,4 @@ export const ecomCustomerFields = [ default: 100, description: 'How many results to return.', }, -] as INodeProperties[] +] as INodeProperties[]; diff --git a/packages/nodes-base/nodes/ActiveCampaign/EcomOrderDescription.ts b/packages/nodes-base/nodes/ActiveCampaign/EcomOrderDescription.ts index 968898e219..a1c0993dfe 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/EcomOrderDescription.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/EcomOrderDescription.ts @@ -44,7 +44,7 @@ export const ecomOrderOperations = [ default: 'create', description: 'The operation to perform.', }, -] as INodeProperties[] +] as INodeProperties[]; export const ecomOrderFields = [ // ---------------------------------- @@ -713,4 +713,4 @@ export const ecomOrderFields = [ default: 100, description: 'How many results to return.', }, -] as INodeProperties[] \ No newline at end of file +] as INodeProperties[]; \ No newline at end of file diff --git a/packages/nodes-base/nodes/ActiveCampaign/EcomOrderProductsDescription.ts b/packages/nodes-base/nodes/ActiveCampaign/EcomOrderProductsDescription.ts index fbff8787d9..29869a7435 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/EcomOrderProductsDescription.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/EcomOrderProductsDescription.ts @@ -32,7 +32,7 @@ export const ecomOrderProductsOperations = [ default: 'getAll', description: 'The operation to perform.', }, -] as INodeProperties[] +] as INodeProperties[]; export const ecomOrderProductsFields = [ // ---------------------------------- @@ -121,4 +121,4 @@ export const ecomOrderProductsFields = [ default: 100, description: 'How many results to return.', }, -] as INodeProperties[] \ No newline at end of file +] as INodeProperties[]; \ No newline at end of file diff --git a/packages/nodes-base/nodes/ActiveCampaign/GenericFunctions.ts b/packages/nodes-base/nodes/ActiveCampaign/GenericFunctions.ts index 769effe9ef..fe607b80b9 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/GenericFunctions.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/GenericFunctions.ts @@ -105,12 +105,12 @@ export async function activeCampaignApiRequestAllItems(this: IHookFunctions | IE if (dataKey === undefined) { returnData.push.apply(returnData, responseData); - if (returnData != undefined) { + if (returnData !== undefined) { itemsReceived += returnData.length; } } else { returnData.push.apply(returnData, responseData[dataKey]); - if (responseData[dataKey] != undefined) { + if (responseData[dataKey] !== undefined) { itemsReceived += responseData[dataKey].length; } } diff --git a/packages/nodes-base/nodes/ActiveCampaign/currencies.ts b/packages/nodes-base/nodes/ActiveCampaign/currencies.ts index 194864f72c..e979999eef 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/currencies.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/currencies.ts @@ -170,4 +170,4 @@ export const allCurrencies = [ { name: 'South African Rand', value: 'zar' }, { name: 'Zambian Kwacha', value: 'zmw' }, { name: 'Zimbabwean Dollar', value: 'zwl' } -] +]; From e02946817103007145617e9df3625c45d81db266 Mon Sep 17 00:00:00 2001 From: quansenB Date: Sun, 3 Nov 2019 22:17:43 +0100 Subject: [PATCH 39/43] add connection description --- .../ActiveCampaign/ActiveCampaign.node.ts | 101 +++++- .../ActiveCampaign/ConnectionDescription.ts | 324 ++++++++++++++++++ .../ActiveCampaign/ContactDescription.ts | 10 +- .../nodes/ActiveCampaign/DealDescription.ts | 4 +- .../ActiveCampaign/EcomCustomerDescription.ts | 6 +- 5 files changed, 434 insertions(+), 11 deletions(-) create mode 100644 packages/nodes-base/nodes/ActiveCampaign/ConnectionDescription.ts diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts index 0b63c45a02..1ae440fd0c 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts @@ -34,7 +34,16 @@ import { ecomCustomerOperations, ecomCustomerFields } from './EcomCustomerDescription'; -import { ecomOrderProductsOperations, ecomOrderProductsFields } from './EcomOrderProductsDescription'; + +import { + ecomOrderProductsOperations, + ecomOrderProductsFields +} from './EcomOrderProductsDescription'; + +import { + connectionOperations, + connectionFields +} from './ConnectionDescription'; interface CustomProperty { name: string; @@ -98,6 +107,10 @@ export class ActiveCampaign implements INodeType { name: 'Deal', value: 'deal', }, + { + name: 'Connection', + value: 'connection' + } { name: 'E-commerce Order', value: 'ecommerceOrder', @@ -120,10 +133,14 @@ export class ActiveCampaign implements INodeType { // ---------------------------------- ...contactOperations, ...dealOperations, + ...connectionOperations, ...ecomOrderOperations, ...ecomCustomerOperations, ...ecomOrderProductsOperations, + // ---------------------------------- + // fields + // ---------------------------------- // ---------------------------------- // contact // ---------------------------------- @@ -134,6 +151,11 @@ export class ActiveCampaign implements INodeType { // ---------------------------------- ...dealFields, + // ---------------------------------- + // connection + // ---------------------------------- + ...connectionFields, + // ---------------------------------- // ecommerceOrder // ---------------------------------- @@ -368,6 +390,83 @@ export class ActiveCampaign implements INodeType { const dealNoteId = this.getNodeParameter('dealNoteId', i) as number; endpoint = `/api/3/deals/${dealId}/notes/${dealNoteId}`; + } else { + throw new Error(`The operation "${operation}" is not known`); + } + } else if (resource === 'connection') { + if (operation === 'create') { + // ---------------------------------- + // connection:create + // ---------------------------------- + + requestMethod = 'POST'; + + const updateIfExists = this.getNodeParameter('updateIfExists', i) as boolean; + if (updateIfExists === true) { + endpoint = '/api/3/connection/sync'; + } else { + endpoint = '/api/3/connections'; + } + + dataKey = 'connection'; + + body.connection = { + email: this.getNodeParameter('email', i) as string, + } as IDataObject; + + const additionalFields = this.getNodeParameter('additionalFields', i) as IDataObject; + addAdditionalFields(body.connection as IDataObject, additionalFields); + + } else if (operation === 'delete') { + // ---------------------------------- + // connection:delete + // ---------------------------------- + + requestMethod = 'DELETE'; + + const connectionId = this.getNodeParameter('connectionId', i) as number; + endpoint = `/api/3/connections/${connectionId}`; + + } else if (operation === 'get') { + // ---------------------------------- + // connection:get + // ---------------------------------- + + requestMethod = 'GET'; + + const connectionId = this.getNodeParameter('connectionId', i) as number; + endpoint = `/api/3/connections/${connectionId}`; + + } else if (operation === 'getAll') { + // ---------------------------------- + // connections:getAll + // ---------------------------------- + + requestMethod = 'GET'; + + returnAll = this.getNodeParameter('returnAll', i) as boolean; + if (returnAll === false) { + qs.limit = this.getNodeParameter('limit', i) as number; + } + + dataKey = 'connections'; + endpoint = `/api/3/connections`; + + } else if (operation === 'update') { + // ---------------------------------- + // connection:update + // ---------------------------------- + + requestMethod = 'PUT'; + + const connectionId = this.getNodeParameter('connectionId', i) as number; + endpoint = `/api/3/connections/${connectionId}`; + + dataKey = 'connection'; + body.connection = {} as IDataObject; + const updateFields = this.getNodeParameter('updateFields', i) as IDataObject; + addAdditionalFields(body.connection as IDataObject, updateFields); + } else { throw new Error(`The operation "${operation}" is not known`); } diff --git a/packages/nodes-base/nodes/ActiveCampaign/ConnectionDescription.ts b/packages/nodes-base/nodes/ActiveCampaign/ConnectionDescription.ts new file mode 100644 index 0000000000..f8c7d1ede4 --- /dev/null +++ b/packages/nodes-base/nodes/ActiveCampaign/ConnectionDescription.ts @@ -0,0 +1,324 @@ +import { INodeProperties } from "n8n-workflow"; + +import { allCurrencies } from './currencies'; + +export const connectionOperations = [ + { + displayName: 'Operation', + name: 'operation', + type: 'options', + displayOptions: { + show: { + resource: [ + 'connection', + ], + }, + }, + options: [ + { + name: 'Create', + value: 'create', + description: 'Create a connection', + }, + { + name: 'Delete', + value: 'delete', + description: 'Delete a connection', + }, + { + name: 'Get', + value: 'get', + description: 'Get data of a connection', + }, + { + name: 'Get All', + value: 'getAll', + description: 'Get data of all connections', + }, + { + name: 'Update', + value: 'update', + description: 'Update a connection', + }, + ], + default: 'create', + description: 'The operation to perform.', + }, + +] as INodeProperties[]; + +export const connectionFields = [ + // ---------------------------------- + // connection:create + // ---------------------------------- + { + displayName: 'Service', + name: 'service', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'connection', + ], + }, + }, + description: 'The name of the service.', + }, + { + displayName: 'External accout ID', + name: 'externalid', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'connection', + ], + }, + }, + description: 'The id of the account in the external service.', + }, + { + displayName: 'Account Name', + name: 'name', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'connection', + ], + }, + }, + description: 'The name associated with the account in the external service. Often this will be a company name (e.g., "My Toystore, Inc.").', + }, + { + displayName: 'Logo URL', + name: 'logoUrl', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'connection', + ], + }, + }, + description: 'The URL to a logo image for the external service.', + }, + { + displayName: 'Link URL', + name: 'linkUrl', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'connection', + ], + }, + }, + description: 'The URL to a page where the integration with the external service can be managed in the third-party\'s website.', + }, + + // ---------------------------------- + // connection:update + // ---------------------------------- + { + displayName: 'Connection ID', + name: 'connectionId', + type: 'number', + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'connection', + ], + }, + }, + default: 0, + required: true, + description: 'ID of the connection to update.', + }, + { + displayName: 'Update Fields', + name: 'updateFields', + type: 'collection', + description: 'The fields to update.', + placeholder: 'Add Field', + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'connection', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'Service', + name: 'service', + type: 'string', + default: '', + description: 'The name of the service.', + }, + { + displayName: 'External accout ID', + name: 'externalid', + type: 'string', + default: '', + description: 'The id of the account in the external service.', + }, + { + displayName: 'Account Name', + name: 'name', + type: 'string', + default: '', + description: 'The name associated with the account in the external service. Often this will be a company name (e.g., "My Toystore, Inc.").', + }, + { + displayName: 'Logo URL', + name: 'logoUrl', + type: 'string', + default: '', + description: 'The URL to a logo image for the external service.', + }, + { + displayName: 'Link URL', + name: 'linkUrl', + type: 'string', + default: '', + description: 'The URL to a page where the integration with the external service can be managed in the third-party\'s website.', + }, + { + displayName: 'Status', + name: 'status', + type: 'number', + default: 1, + description: 'The status of the connection (0 = error; 1 = connected)', + }, + { + displayName: 'Syncronisation Status', + name: 'syncStatus', + type: 'number', + default: 1, + description: 'The status of a sync triggered on the connection (0 = sync stopped; 1 = sync running).', + }, + ] + }, + + // ---------------------------------- + // connection:delete + // ---------------------------------- + { + displayName: 'Connection ID', + name: 'connectionId', + type: 'number', + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'connection', + ], + }, + }, + default: 0, + required: true, + description: 'ID of the connection to delete.', + }, + + // ---------------------------------- + // connection:get + // ---------------------------------- + { + displayName: 'Connection ID', + name: 'connectionId', + type: 'number', + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'connection', + ], + }, + }, + default: 0, + required: true, + description: 'ID of the connection to get.', + }, + + // ---------------------------------- + // connection:getAll + // ---------------------------------- + { + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', + displayOptions: { + show: { + operation: [ + 'getAll', + ], + resource: [ + 'connection', + ], + }, + }, + default: false, + description: 'If all results should be returned or only up to a given limit.', + }, + { + displayName: 'Limit', + name: 'limit', + type: 'number', + displayOptions: { + show: { + operation: [ + 'getAll', + ], + resource: [ + 'connection', + ], + returnAll: [ + false, + ], + }, + }, + typeOptions: { + minValue: 1, + maxValue: 500, + }, + default: 100, + description: 'How many results to return.', + }, +] as INodeProperties[]; \ No newline at end of file diff --git a/packages/nodes-base/nodes/ActiveCampaign/ContactDescription.ts b/packages/nodes-base/nodes/ActiveCampaign/ContactDescription.ts index 02c699e4b0..8b7a264c09 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ContactDescription.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ContactDescription.ts @@ -64,7 +64,7 @@ export const contactFields = [ ], }, }, - description: 'The email of the contact to create', + description: 'The email of the contact to create.', }, { displayName: 'Update if exists', @@ -105,14 +105,14 @@ export const contactFields = [ name: 'firstName', type: 'string', default: '', - description: 'The first name of the contact to create', + description: 'The first name of the contact to create.', }, { displayName: 'Last Name', name: 'lastName', type: 'string', default: '', - description: 'The last name of the contact to create', + description: 'The last name of the contact to create.', }, { displayName: 'Phone', @@ -208,14 +208,14 @@ export const contactFields = [ name: 'firstName', type: 'string', default: '', - description: 'First name of the contact', + description: 'First name of the contact.', }, { displayName: 'Last Name', name: 'lastName', type: 'string', default: '', - description: 'Last name of the contact', + description: 'Last name of the contact.', }, { displayName: 'Phone', diff --git a/packages/nodes-base/nodes/ActiveCampaign/DealDescription.ts b/packages/nodes-base/nodes/ActiveCampaign/DealDescription.ts index dac1b0aa3d..e5219177d7 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/DealDescription.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/DealDescription.ts @@ -359,7 +359,7 @@ export const dealFields = [ ], }, }, - description: 'The ID of the deal', + description: 'The ID of the deal to delete.', }, // ---------------------------------- @@ -381,7 +381,7 @@ export const dealFields = [ ], }, }, - description: 'The ID of the deal', + description: 'The ID of the deal to get.', }, // ---------------------------------- diff --git a/packages/nodes-base/nodes/ActiveCampaign/EcomCustomerDescription.ts b/packages/nodes-base/nodes/ActiveCampaign/EcomCustomerDescription.ts index 78c09afad8..f7f75e3fbb 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/EcomCustomerDescription.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/EcomCustomerDescription.ts @@ -148,7 +148,7 @@ export const ecomCustomerFields = [ }, default: 0, required: true, - description: 'ID of the ecommerceCustomer to update.', + description: 'ID of the E-commerce customer to update.', }, { displayName: 'Update Fields', @@ -218,7 +218,7 @@ export const ecomCustomerFields = [ }, default: 0, required: true, - description: 'ID of the ecommerceCustomer to update.', + description: 'ID of the E-commerce customer to delete.', }, // ---------------------------------- @@ -240,7 +240,7 @@ export const ecomCustomerFields = [ }, default: 0, required: true, - description: 'ID of the ecommerceCustomer to update.', + description: 'ID of the E-commerce customer to get.', }, // ---------------------------------- From 5ca63830482931ec81ab3ff5e824eb026ac2282d Mon Sep 17 00:00:00 2001 From: quansenB Date: Sun, 3 Nov 2019 22:25:45 +0100 Subject: [PATCH 40/43] add deepdata integration connection support --- .../ActiveCampaign/ActiveCampaign.node.ts | 51 +++++++++---------- 1 file changed, 23 insertions(+), 28 deletions(-) diff --git a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts index 1ae440fd0c..a7b47f6e20 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ActiveCampaign.node.ts @@ -110,7 +110,7 @@ export class ActiveCampaign implements INodeType { { name: 'Connection', value: 'connection' - } + }, { name: 'E-commerce Order', value: 'ecommerceOrder', @@ -272,7 +272,9 @@ export class ActiveCampaign implements INodeType { endpoint = `/api/3/contacts/${contactId}`; dataKey = 'contact'; + body.contact = {} as IDataObject; + const updateFields = this.getNodeParameter('updateFields', i) as IDataObject; addAdditionalFields(body.contact as IDataObject, updateFields); @@ -401,21 +403,30 @@ export class ActiveCampaign implements INodeType { requestMethod = 'POST'; - const updateIfExists = this.getNodeParameter('updateIfExists', i) as boolean; - if (updateIfExists === true) { - endpoint = '/api/3/connection/sync'; - } else { - endpoint = '/api/3/connections'; - } - - dataKey = 'connection'; + endpoint = '/api/3/connections'; body.connection = { - email: this.getNodeParameter('email', i) as string, + service: this.getNodeParameter('service', i) as string, + externalid: this.getNodeParameter('externalid', i) as string, + name: this.getNodeParameter('name', i) as string, + logoUrl: this.getNodeParameter('logoUrl', i) as string, + linkUrl: this.getNodeParameter('linkUrl', i) as string, } as IDataObject; - const additionalFields = this.getNodeParameter('additionalFields', i) as IDataObject; - addAdditionalFields(body.connection as IDataObject, additionalFields); + } else if (operation === 'update') { + // ---------------------------------- + // connection:update + // ---------------------------------- + + requestMethod = 'PUT'; + + const connectionId = this.getNodeParameter('connectionId', i) as number; + endpoint = `/api/3/connections/${connectionId}`; + + body.connection = {} as IDataObject; + + const updateFields = this.getNodeParameter('updateFields', i) as IDataObject; + addAdditionalFields(body.connection as IDataObject, updateFields); } else if (operation === 'delete') { // ---------------------------------- @@ -449,24 +460,8 @@ export class ActiveCampaign implements INodeType { qs.limit = this.getNodeParameter('limit', i) as number; } - dataKey = 'connections'; endpoint = `/api/3/connections`; - } else if (operation === 'update') { - // ---------------------------------- - // connection:update - // ---------------------------------- - - requestMethod = 'PUT'; - - const connectionId = this.getNodeParameter('connectionId', i) as number; - endpoint = `/api/3/connections/${connectionId}`; - - dataKey = 'connection'; - body.connection = {} as IDataObject; - const updateFields = this.getNodeParameter('updateFields', i) as IDataObject; - addAdditionalFields(body.connection as IDataObject, updateFields); - } else { throw new Error(`The operation "${operation}" is not known`); } From baf46f4d89ebb41ae1227dbde4422e0ed91a6d5a Mon Sep 17 00:00:00 2001 From: quansenB Date: Mon, 4 Nov 2019 00:00:59 +0100 Subject: [PATCH 41/43] finish connections work --- .../nodes-base/nodes/ActiveCampaign/ConnectionDescription.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/nodes-base/nodes/ActiveCampaign/ConnectionDescription.ts b/packages/nodes-base/nodes/ActiveCampaign/ConnectionDescription.ts index f8c7d1ede4..a3844fb118 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ConnectionDescription.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ConnectionDescription.ts @@ -243,7 +243,7 @@ export const connectionFields = [ displayOptions: { show: { operation: [ - 'update', + 'delete', ], resource: [ 'connection', @@ -265,7 +265,7 @@ export const connectionFields = [ displayOptions: { show: { operation: [ - 'update', + 'get', ], resource: [ 'connection', From 6c1d1ade1458a6516b77030dc481ef873d7aae52 Mon Sep 17 00:00:00 2001 From: quansenB Date: Mon, 4 Nov 2019 00:21:57 +0100 Subject: [PATCH 42/43] tslint proof allcureencies file --- packages/nodes-base/nodes/utils/allCurrencies.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/nodes-base/nodes/utils/allCurrencies.ts b/packages/nodes-base/nodes/utils/allCurrencies.ts index 3fd41695d4..2924edc323 100644 --- a/packages/nodes-base/nodes/utils/allCurrencies.ts +++ b/packages/nodes-base/nodes/utils/allCurrencies.ts @@ -1,4 +1,4 @@ -[ +const allCurrencies = [ { name: 'Euro', value: 'eur' }, { name: 'United States Dollar', value: 'usd' }, { name: 'British Pound Sterling', value: 'gbp' }, @@ -170,4 +170,5 @@ { name: 'South African Rand', value: 'zar' }, { name: 'Zambian Kwacha', value: 'zmw' }, { name: 'Zimbabwean Dollar', value: 'zwl' } +// tslint:disable-next-line: semicolon ] \ No newline at end of file From 74d1f249810fc6596c7b49b133ec22d203e63567 Mon Sep 17 00:00:00 2001 From: quansenB Date: Thu, 7 Nov 2019 10:50:02 +0100 Subject: [PATCH 43/43] change spaces to tabs --- .../ActiveCampaign/ConnectionDescription.ts | 620 ++++---- .../ActiveCampaign/ContactDescription.ts | 680 ++++---- .../nodes/ActiveCampaign/DealDescription.ts | 1022 ++++++------ .../ActiveCampaign/EcomCustomerDescription.ts | 558 +++---- .../ActiveCampaign/EcomOrderDescription.ts | 1394 ++++++++--------- .../EcomOrderProductsDescription.ts | 230 +-- 6 files changed, 2252 insertions(+), 2252 deletions(-) diff --git a/packages/nodes-base/nodes/ActiveCampaign/ConnectionDescription.ts b/packages/nodes-base/nodes/ActiveCampaign/ConnectionDescription.ts index a3844fb118..2b82d6bebb 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ConnectionDescription.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ConnectionDescription.ts @@ -3,322 +3,322 @@ import { INodeProperties } from "n8n-workflow"; import { allCurrencies } from './currencies'; export const connectionOperations = [ - { - displayName: 'Operation', - name: 'operation', - type: 'options', - displayOptions: { - show: { - resource: [ - 'connection', - ], - }, - }, - options: [ - { - name: 'Create', - value: 'create', - description: 'Create a connection', - }, - { - name: 'Delete', - value: 'delete', - description: 'Delete a connection', - }, - { - name: 'Get', - value: 'get', - description: 'Get data of a connection', - }, - { - name: 'Get All', - value: 'getAll', - description: 'Get data of all connections', - }, - { - name: 'Update', - value: 'update', - description: 'Update a connection', - }, - ], - default: 'create', - description: 'The operation to perform.', - }, + { + displayName: 'Operation', + name: 'operation', + type: 'options', + displayOptions: { + show: { + resource: [ + 'connection', + ], + }, + }, + options: [ + { + name: 'Create', + value: 'create', + description: 'Create a connection', + }, + { + name: 'Delete', + value: 'delete', + description: 'Delete a connection', + }, + { + name: 'Get', + value: 'get', + description: 'Get data of a connection', + }, + { + name: 'Get All', + value: 'getAll', + description: 'Get data of all connections', + }, + { + name: 'Update', + value: 'update', + description: 'Update a connection', + }, + ], + default: 'create', + description: 'The operation to perform.', + }, ] as INodeProperties[]; export const connectionFields = [ - // ---------------------------------- - // connection:create - // ---------------------------------- - { - displayName: 'Service', - name: 'service', - type: 'string', - default: '', - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'connection', - ], - }, - }, - description: 'The name of the service.', - }, - { - displayName: 'External accout ID', - name: 'externalid', - type: 'string', - default: '', - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'connection', - ], - }, - }, - description: 'The id of the account in the external service.', - }, - { - displayName: 'Account Name', - name: 'name', - type: 'string', - default: '', - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'connection', - ], - }, - }, - description: 'The name associated with the account in the external service. Often this will be a company name (e.g., "My Toystore, Inc.").', - }, - { - displayName: 'Logo URL', - name: 'logoUrl', - type: 'string', - default: '', - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'connection', - ], - }, - }, - description: 'The URL to a logo image for the external service.', - }, - { - displayName: 'Link URL', - name: 'linkUrl', - type: 'string', - default: '', - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'connection', - ], - }, - }, - description: 'The URL to a page where the integration with the external service can be managed in the third-party\'s website.', - }, + // ---------------------------------- + // connection:create + // ---------------------------------- + { + displayName: 'Service', + name: 'service', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'connection', + ], + }, + }, + description: 'The name of the service.', + }, + { + displayName: 'External accout ID', + name: 'externalid', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'connection', + ], + }, + }, + description: 'The id of the account in the external service.', + }, + { + displayName: 'Account Name', + name: 'name', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'connection', + ], + }, + }, + description: 'The name associated with the account in the external service. Often this will be a company name (e.g., "My Toystore, Inc.").', + }, + { + displayName: 'Logo URL', + name: 'logoUrl', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'connection', + ], + }, + }, + description: 'The URL to a logo image for the external service.', + }, + { + displayName: 'Link URL', + name: 'linkUrl', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'connection', + ], + }, + }, + description: 'The URL to a page where the integration with the external service can be managed in the third-party\'s website.', + }, - // ---------------------------------- - // connection:update - // ---------------------------------- - { - displayName: 'Connection ID', - name: 'connectionId', - type: 'number', - displayOptions: { - show: { - operation: [ - 'update', - ], - resource: [ - 'connection', - ], - }, - }, - default: 0, - required: true, - description: 'ID of the connection to update.', - }, - { - displayName: 'Update Fields', - name: 'updateFields', - type: 'collection', - description: 'The fields to update.', - placeholder: 'Add Field', - displayOptions: { - show: { - operation: [ - 'update', - ], - resource: [ - 'connection', - ], - }, - }, - default: {}, - options: [ - { - displayName: 'Service', - name: 'service', - type: 'string', - default: '', - description: 'The name of the service.', - }, - { - displayName: 'External accout ID', - name: 'externalid', - type: 'string', - default: '', - description: 'The id of the account in the external service.', - }, - { - displayName: 'Account Name', - name: 'name', - type: 'string', - default: '', - description: 'The name associated with the account in the external service. Often this will be a company name (e.g., "My Toystore, Inc.").', - }, - { - displayName: 'Logo URL', - name: 'logoUrl', - type: 'string', - default: '', - description: 'The URL to a logo image for the external service.', - }, - { - displayName: 'Link URL', - name: 'linkUrl', - type: 'string', - default: '', - description: 'The URL to a page where the integration with the external service can be managed in the third-party\'s website.', - }, - { - displayName: 'Status', - name: 'status', - type: 'number', - default: 1, - description: 'The status of the connection (0 = error; 1 = connected)', - }, - { - displayName: 'Syncronisation Status', - name: 'syncStatus', - type: 'number', - default: 1, - description: 'The status of a sync triggered on the connection (0 = sync stopped; 1 = sync running).', - }, - ] - }, + // ---------------------------------- + // connection:update + // ---------------------------------- + { + displayName: 'Connection ID', + name: 'connectionId', + type: 'number', + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'connection', + ], + }, + }, + default: 0, + required: true, + description: 'ID of the connection to update.', + }, + { + displayName: 'Update Fields', + name: 'updateFields', + type: 'collection', + description: 'The fields to update.', + placeholder: 'Add Field', + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'connection', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'Service', + name: 'service', + type: 'string', + default: '', + description: 'The name of the service.', + }, + { + displayName: 'External accout ID', + name: 'externalid', + type: 'string', + default: '', + description: 'The id of the account in the external service.', + }, + { + displayName: 'Account Name', + name: 'name', + type: 'string', + default: '', + description: 'The name associated with the account in the external service. Often this will be a company name (e.g., "My Toystore, Inc.").', + }, + { + displayName: 'Logo URL', + name: 'logoUrl', + type: 'string', + default: '', + description: 'The URL to a logo image for the external service.', + }, + { + displayName: 'Link URL', + name: 'linkUrl', + type: 'string', + default: '', + description: 'The URL to a page where the integration with the external service can be managed in the third-party\'s website.', + }, + { + displayName: 'Status', + name: 'status', + type: 'number', + default: 1, + description: 'The status of the connection (0 = error; 1 = connected)', + }, + { + displayName: 'Syncronisation Status', + name: 'syncStatus', + type: 'number', + default: 1, + description: 'The status of a sync triggered on the connection (0 = sync stopped; 1 = sync running).', + }, + ] + }, - // ---------------------------------- - // connection:delete - // ---------------------------------- - { - displayName: 'Connection ID', - name: 'connectionId', - type: 'number', - displayOptions: { - show: { - operation: [ - 'delete', - ], - resource: [ - 'connection', - ], - }, - }, - default: 0, - required: true, - description: 'ID of the connection to delete.', - }, + // ---------------------------------- + // connection:delete + // ---------------------------------- + { + displayName: 'Connection ID', + name: 'connectionId', + type: 'number', + displayOptions: { + show: { + operation: [ + 'delete', + ], + resource: [ + 'connection', + ], + }, + }, + default: 0, + required: true, + description: 'ID of the connection to delete.', + }, - // ---------------------------------- - // connection:get - // ---------------------------------- - { - displayName: 'Connection ID', - name: 'connectionId', - type: 'number', - displayOptions: { - show: { - operation: [ - 'get', - ], - resource: [ - 'connection', - ], - }, - }, - default: 0, - required: true, - description: 'ID of the connection to get.', - }, + // ---------------------------------- + // connection:get + // ---------------------------------- + { + displayName: 'Connection ID', + name: 'connectionId', + type: 'number', + displayOptions: { + show: { + operation: [ + 'get', + ], + resource: [ + 'connection', + ], + }, + }, + default: 0, + required: true, + description: 'ID of the connection to get.', + }, - // ---------------------------------- - // connection:getAll - // ---------------------------------- - { - displayName: 'Return All', - name: 'returnAll', - type: 'boolean', - displayOptions: { - show: { - operation: [ - 'getAll', - ], - resource: [ - 'connection', - ], - }, - }, - default: false, - description: 'If all results should be returned or only up to a given limit.', - }, - { - displayName: 'Limit', - name: 'limit', - type: 'number', - displayOptions: { - show: { - operation: [ - 'getAll', - ], - resource: [ - 'connection', - ], - returnAll: [ - false, - ], - }, - }, - typeOptions: { - minValue: 1, - maxValue: 500, - }, - default: 100, - description: 'How many results to return.', - }, + // ---------------------------------- + // connection:getAll + // ---------------------------------- + { + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', + displayOptions: { + show: { + operation: [ + 'getAll', + ], + resource: [ + 'connection', + ], + }, + }, + default: false, + description: 'If all results should be returned or only up to a given limit.', + }, + { + displayName: 'Limit', + name: 'limit', + type: 'number', + displayOptions: { + show: { + operation: [ + 'getAll', + ], + resource: [ + 'connection', + ], + returnAll: [ + false, + ], + }, + }, + typeOptions: { + minValue: 1, + maxValue: 500, + }, + default: 100, + description: 'How many results to return.', + }, ] as INodeProperties[]; \ No newline at end of file diff --git a/packages/nodes-base/nodes/ActiveCampaign/ContactDescription.ts b/packages/nodes-base/nodes/ActiveCampaign/ContactDescription.ts index 8b7a264c09..25b42b3678 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/ContactDescription.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/ContactDescription.ts @@ -1,351 +1,351 @@ import { INodeProperties } from "n8n-workflow"; export const contactOperations = [ - { - displayName: 'Operation', - name: 'operation', - type: 'options', - displayOptions: { - show: { - resource: [ - 'contact', - ], - }, - }, - options: [ - { - name: 'Create', - value: 'create', - description: 'Create a contact', - }, - { - name: 'Delete', - value: 'delete', - description: 'Delete a contact', - }, - { - name: 'Get', - value: 'get', - description: 'Get data of a contact', - }, - { - name: 'Get All', - value: 'getAll', - description: 'Get data of all contact', - }, - { - name: 'Update', - value: 'update', - description: 'Update a contact', - }, - ], - default: 'create', - description: 'The operation to perform.', - }, + { + displayName: 'Operation', + name: 'operation', + type: 'options', + displayOptions: { + show: { + resource: [ + 'contact', + ], + }, + }, + options: [ + { + name: 'Create', + value: 'create', + description: 'Create a contact', + }, + { + name: 'Delete', + value: 'delete', + description: 'Delete a contact', + }, + { + name: 'Get', + value: 'get', + description: 'Get data of a contact', + }, + { + name: 'Get All', + value: 'getAll', + description: 'Get data of all contact', + }, + { + name: 'Update', + value: 'update', + description: 'Update a contact', + }, + ], + default: 'create', + description: 'The operation to perform.', + }, ] as INodeProperties[]; export const contactFields = [ - // ---------------------------------- - // contact:create - // ---------------------------------- - { - displayName: 'Email', - name: 'email', - type: 'string', - default: '', - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'contact', - ], - }, - }, - description: 'The email of the contact to create.', - }, - { - displayName: 'Update if exists', - name: 'updateIfExists', - type: 'boolean', - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'contact', - ], - }, - }, - default: false, - description: 'Update user if it exists already. If not set and user exists it will error instead.', - }, - { - displayName: 'Additional Fields', - name: 'additionalFields', - type: 'collection', - placeholder: 'Add Field', - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'contact', - ], - }, - }, - default: {}, - options: [ - { - displayName: 'First Name', - name: 'firstName', - type: 'string', - default: '', - description: 'The first name of the contact to create.', - }, - { - displayName: 'Last Name', - name: 'lastName', - type: 'string', - default: '', - description: 'The last name of the contact to create.', - }, - { - displayName: 'Phone', - name: 'phone', - type: 'string', - default: '', - description: 'Phone number of the contact.', - }, - { - displayName: 'Custom Properties', - name: 'customProperties', - placeholder: 'Add Custom Property', - description: 'Adds a custom property to set also values which have not been predefined.', - type: 'fixedCollection', - typeOptions: { - multipleValues: true, - }, - default: {}, - options: [ - { - name: 'property', - displayName: 'Property', - values: [ - { - displayName: 'Property Name', - name: 'name', - type: 'string', - default: '', - description: 'Name of the property to set.', - }, - { - displayName: 'Property Value', - name: 'value', - type: 'string', - default: '', - description: 'Value of the property to set.', - }, - ] - }, - ], - }, - ], - }, + // ---------------------------------- + // contact:create + // ---------------------------------- + { + displayName: 'Email', + name: 'email', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'contact', + ], + }, + }, + description: 'The email of the contact to create.', + }, + { + displayName: 'Update if exists', + name: 'updateIfExists', + type: 'boolean', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'contact', + ], + }, + }, + default: false, + description: 'Update user if it exists already. If not set and user exists it will error instead.', + }, + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'contact', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'First Name', + name: 'firstName', + type: 'string', + default: '', + description: 'The first name of the contact to create.', + }, + { + displayName: 'Last Name', + name: 'lastName', + type: 'string', + default: '', + description: 'The last name of the contact to create.', + }, + { + displayName: 'Phone', + name: 'phone', + type: 'string', + default: '', + description: 'Phone number of the contact.', + }, + { + displayName: 'Custom Properties', + name: 'customProperties', + placeholder: 'Add Custom Property', + description: 'Adds a custom property to set also values which have not been predefined.', + type: 'fixedCollection', + typeOptions: { + multipleValues: true, + }, + default: {}, + options: [ + { + name: 'property', + displayName: 'Property', + values: [ + { + displayName: 'Property Name', + name: 'name', + type: 'string', + default: '', + description: 'Name of the property to set.', + }, + { + displayName: 'Property Value', + name: 'value', + type: 'string', + default: '', + description: 'Value of the property to set.', + }, + ] + }, + ], + }, + ], + }, - // ---------------------------------- - // contact:update - // ---------------------------------- - { - displayName: 'Contact ID', - name: 'contactId', - type: 'number', - displayOptions: { - show: { - operation: [ - 'update', - ], - resource: [ - 'contact', - ], - }, - }, - default: 0, - required: true, - description: 'ID of the contact to update.', - }, - { - displayName: 'Update Fields', - name: 'updateFields', - type: 'collection', - description: 'The fields to update.', - placeholder: 'Add Field', - displayOptions: { - show: { - operation: [ - 'update', - ], - resource: [ - 'contact', - ], - }, - }, - default: {}, - options: [ - { - displayName: 'Email', - name: 'email', - type: 'string', - default: '', - description: 'Email of the contact.', - }, - { - displayName: 'First Name', - name: 'firstName', - type: 'string', - default: '', - description: 'First name of the contact.', - }, - { - displayName: 'Last Name', - name: 'lastName', - type: 'string', - default: '', - description: 'Last name of the contact.', - }, - { - displayName: 'Phone', - name: 'phone', - type: 'string', - default: '', - description: 'Phone number of the contact.', - }, - { - displayName: 'Custom Properties', - name: 'customProperties', - placeholder: 'Add Custom Property', - description: 'Adds a custom property to set also values which have not been predefined.', - type: 'fixedCollection', - typeOptions: { - multipleValues: true, - }, - default: {}, - options: [ - { - name: 'property', - displayName: 'Property', - values: [ - { - displayName: 'Property Name', - name: 'name', - type: 'string', - default: '', - description: 'Name of the property to set.', - }, - { - displayName: 'Property Value', - name: 'value', - type: 'string', - default: '', - description: 'Value of the property to set.', - }, - ] - }, - ], - }, - ], - }, + // ---------------------------------- + // contact:update + // ---------------------------------- + { + displayName: 'Contact ID', + name: 'contactId', + type: 'number', + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'contact', + ], + }, + }, + default: 0, + required: true, + description: 'ID of the contact to update.', + }, + { + displayName: 'Update Fields', + name: 'updateFields', + type: 'collection', + description: 'The fields to update.', + placeholder: 'Add Field', + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'contact', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'Email', + name: 'email', + type: 'string', + default: '', + description: 'Email of the contact.', + }, + { + displayName: 'First Name', + name: 'firstName', + type: 'string', + default: '', + description: 'First name of the contact.', + }, + { + displayName: 'Last Name', + name: 'lastName', + type: 'string', + default: '', + description: 'Last name of the contact.', + }, + { + displayName: 'Phone', + name: 'phone', + type: 'string', + default: '', + description: 'Phone number of the contact.', + }, + { + displayName: 'Custom Properties', + name: 'customProperties', + placeholder: 'Add Custom Property', + description: 'Adds a custom property to set also values which have not been predefined.', + type: 'fixedCollection', + typeOptions: { + multipleValues: true, + }, + default: {}, + options: [ + { + name: 'property', + displayName: 'Property', + values: [ + { + displayName: 'Property Name', + name: 'name', + type: 'string', + default: '', + description: 'Name of the property to set.', + }, + { + displayName: 'Property Value', + name: 'value', + type: 'string', + default: '', + description: 'Value of the property to set.', + }, + ] + }, + ], + }, + ], + }, - // ---------------------------------- - // contact:delete - // ---------------------------------- - { - displayName: 'Contact ID', - name: 'contactId', - type: 'number', - displayOptions: { - show: { - operation: [ - 'delete', - ], - resource: [ - 'contact', - ], - }, - }, - default: 0, - required: true, - description: 'ID of the contact to delete.', - }, + // ---------------------------------- + // contact:delete + // ---------------------------------- + { + displayName: 'Contact ID', + name: 'contactId', + type: 'number', + displayOptions: { + show: { + operation: [ + 'delete', + ], + resource: [ + 'contact', + ], + }, + }, + default: 0, + required: true, + description: 'ID of the contact to delete.', + }, - // ---------------------------------- - // contact:get - // ---------------------------------- - { - displayName: 'Contact ID', - name: 'contactId', - type: 'number', - displayOptions: { - show: { - operation: [ - 'get', - ], - resource: [ - 'contact', - ], - }, - }, - default: 0, - required: true, - description: 'ID of the contact to get.', - }, + // ---------------------------------- + // contact:get + // ---------------------------------- + { + displayName: 'Contact ID', + name: 'contactId', + type: 'number', + displayOptions: { + show: { + operation: [ + 'get', + ], + resource: [ + 'contact', + ], + }, + }, + default: 0, + required: true, + description: 'ID of the contact to get.', + }, - // ---------------------------------- - // contact:getAll - // ---------------------------------- - { - displayName: 'Return All', - name: 'returnAll', - type: 'boolean', - displayOptions: { - show: { - operation: [ - 'getAll', - ], - resource: [ - 'contact', - ], - }, - }, - default: false, - description: 'If all results should be returned or only up to a given limit.', - }, - { - displayName: 'Limit', - name: 'limit', - type: 'number', - displayOptions: { - show: { - operation: [ - 'getAll', - ], - resource: [ - 'contact', - ], - returnAll: [ - false, - ], - }, - }, - typeOptions: { - minValue: 1, - maxValue: 500, - }, - default: 100, - description: 'How many results to return.', - }, + // ---------------------------------- + // contact:getAll + // ---------------------------------- + { + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', + displayOptions: { + show: { + operation: [ + 'getAll', + ], + resource: [ + 'contact', + ], + }, + }, + default: false, + description: 'If all results should be returned or only up to a given limit.', + }, + { + displayName: 'Limit', + name: 'limit', + type: 'number', + displayOptions: { + show: { + operation: [ + 'getAll', + ], + resource: [ + 'contact', + ], + returnAll: [ + false, + ], + }, + }, + typeOptions: { + minValue: 1, + maxValue: 500, + }, + default: 100, + description: 'How many results to return.', + }, ] as INodeProperties[]; diff --git a/packages/nodes-base/nodes/ActiveCampaign/DealDescription.ts b/packages/nodes-base/nodes/ActiveCampaign/DealDescription.ts index e5219177d7..940157e5f0 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/DealDescription.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/DealDescription.ts @@ -3,527 +3,527 @@ import { INodeProperties } from "n8n-workflow"; import { allCurrencies } from './currencies'; export const dealOperations = [ - { - displayName: 'Operation', - name: 'operation', - type: 'options', - displayOptions: { - show: { - resource: [ - 'deal', - ], - }, - }, - options: [ - { - name: 'Create', - value: 'create', - description: 'Create a deal', - }, - { - name: 'Delete', - value: 'delete', - description: 'Delete a deal', - }, - { - name: 'Get', - value: 'get', - description: 'Get data of a deal', - }, - { - name: 'Get All', - value: 'getAll', - description: 'Get data of all deals', - }, - { - name: 'Update', - value: 'update', - description: 'Update a deal', - }, - { - name: 'Create Note', - value: 'createNote', - description: 'Create a deal note', - }, - { - name: 'Update deal note', - value: 'updateNote', - description: 'Update a deal note', - }, - ], - default: 'create', - description: 'The operation to perform.', - }, + { + displayName: 'Operation', + name: 'operation', + type: 'options', + displayOptions: { + show: { + resource: [ + 'deal', + ], + }, + }, + options: [ + { + name: 'Create', + value: 'create', + description: 'Create a deal', + }, + { + name: 'Delete', + value: 'delete', + description: 'Delete a deal', + }, + { + name: 'Get', + value: 'get', + description: 'Get data of a deal', + }, + { + name: 'Get All', + value: 'getAll', + description: 'Get data of all deals', + }, + { + name: 'Update', + value: 'update', + description: 'Update a deal', + }, + { + name: 'Create Note', + value: 'createNote', + description: 'Create a deal note', + }, + { + name: 'Update deal note', + value: 'updateNote', + description: 'Update a deal note', + }, + ], + default: 'create', + description: 'The operation to perform.', + }, ] as INodeProperties[]; export const dealFields = [ - // ---------------------------------- - // deal:create - // ---------------------------------- - { - displayName: 'Title', - name: 'title', - type: 'string', - default: '', - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'deal', - ], - }, - }, - description: 'The title of the deal', - }, - { - displayName: 'Deal\'s contact ID', - name: 'contact', - type: 'number', - default: 0, - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'deal', - ], - }, - }, - description: 'The ID of the deal\'s contact', - }, - { - displayName: 'Deal value', - name: 'value', - type: 'number', - default: 0, - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'deal', - ], - }, - }, - description: 'The value of the deal in cents', - }, - { - displayName: 'Currency', - name: 'currency', - type: 'options', - default: 'eur', - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'deal', - ], - }, - }, - options: allCurrencies, - description: 'The currency of the deal in 3-character ISO format', - }, - { - displayName: 'Deal pipeline ID', - name: 'group', - type: 'string', - default: '', - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'deal', - ], - }, - }, - description: 'The pipeline ID of the deal', - }, - { - displayName: 'Deal stage ID', - name: 'stage', - type: 'string', - default: '', - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'deal', - ], - }, - }, - description: 'The stage ID of the deal', - }, - { - displayName: 'Deal owner ID', - name: 'owner', - type: 'string', - default: '', - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'deal', - ], - }, - }, - description: 'The owner ID of the deal', - }, - { - displayName: 'Additional Fields', - name: 'additionalFields', - type: 'collection', - placeholder: 'Add Field', - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'deal', - ], - }, - }, - default: {}, - options: [ - { - displayName: 'Description', - name: 'description', - type: 'string', - default: '', - description: 'The description of the deal', - }, + // ---------------------------------- + // deal:create + // ---------------------------------- + { + displayName: 'Title', + name: 'title', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The title of the deal', + }, + { + displayName: 'Deal\'s contact ID', + name: 'contact', + type: 'number', + default: 0, + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The ID of the deal\'s contact', + }, + { + displayName: 'Deal value', + name: 'value', + type: 'number', + default: 0, + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The value of the deal in cents', + }, + { + displayName: 'Currency', + name: 'currency', + type: 'options', + default: 'eur', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'deal', + ], + }, + }, + options: allCurrencies, + description: 'The currency of the deal in 3-character ISO format', + }, + { + displayName: 'Deal pipeline ID', + name: 'group', + type: 'string', + default: '', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The pipeline ID of the deal', + }, + { + displayName: 'Deal stage ID', + name: 'stage', + type: 'string', + default: '', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The stage ID of the deal', + }, + { + displayName: 'Deal owner ID', + name: 'owner', + type: 'string', + default: '', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The owner ID of the deal', + }, + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'deal', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'Description', + name: 'description', + type: 'string', + default: '', + description: 'The description of the deal', + }, - { - displayName: 'Deal percentage', - name: 'percent', - type: 'number', - default: 0, - description: 'The percentage of the deal', - }, - { - displayName: 'Deal status', - name: 'status', - type: 'number', - default: 0, - description: 'The status of the deal', - }, - ] - }, + { + displayName: 'Deal percentage', + name: 'percent', + type: 'number', + default: 0, + description: 'The percentage of the deal', + }, + { + displayName: 'Deal status', + name: 'status', + type: 'number', + default: 0, + description: 'The status of the deal', + }, + ] + }, - // ---------------------------------- - // deal:update - // ---------------------------------- - { - displayName: 'Deal ID', - name: 'dealId', - type: 'number', - displayOptions: { - show: { - operation: [ - 'update', - ], - resource: [ - 'deal', - ], - }, - }, - default: 0, - required: true, - description: 'ID of the deal to update.', - }, - { - displayName: 'Update Fields', - name: 'updateFields', - type: 'collection', - description: 'The fields to update.', - placeholder: 'Add Field', - displayOptions: { - show: { - operation: [ - 'update', - ], - resource: [ - 'deal', - ], - }, - }, - default: {}, - options: [ - { - displayName: 'Title', - name: 'title', - type: 'string', - default: '', - description: 'The title of the deal', - }, - { - displayName: 'Deal\'s contact ID', - name: 'contact', - type: 'number', - default: 0, - description: 'The ID of the deal\'s contact', - }, - { - displayName: 'Deal value', - name: 'value', - type: 'number', - default: 0, - description: 'The value of the deal in cents', - }, - { - displayName: 'Currency', - name: 'currency', - type: 'options', - options: allCurrencies, - default: 'eur', - description: 'The currency of the deal in 3-character ISO format', - }, - { - displayName: 'Description', - name: 'description', - type: 'string', - default: '', - description: 'The description of the deal', - }, - { - displayName: 'Deal pipeline ID', - name: 'group', - type: 'string', - default: '', - description: 'The pipeline ID of the deal', - }, - { - displayName: 'Deal stage ID', - name: 'stage', - type: 'string', - default: '', - description: 'The stage ID of the deal', - }, - { - displayName: 'Deal owner ID', - name: 'owner', - type: 'string', - default: '', - description: 'The owner ID of the deal', - }, - { - displayName: 'Deal percentage', - name: 'percent', - type: 'number', - default: 0, - description: 'The percentage of the deal', - }, - { - displayName: 'Deal status', - name: 'status', - type: 'number', - default: 0, - description: 'The status of the deal', - }, - ] - }, + // ---------------------------------- + // deal:update + // ---------------------------------- + { + displayName: 'Deal ID', + name: 'dealId', + type: 'number', + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'deal', + ], + }, + }, + default: 0, + required: true, + description: 'ID of the deal to update.', + }, + { + displayName: 'Update Fields', + name: 'updateFields', + type: 'collection', + description: 'The fields to update.', + placeholder: 'Add Field', + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'deal', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'Title', + name: 'title', + type: 'string', + default: '', + description: 'The title of the deal', + }, + { + displayName: 'Deal\'s contact ID', + name: 'contact', + type: 'number', + default: 0, + description: 'The ID of the deal\'s contact', + }, + { + displayName: 'Deal value', + name: 'value', + type: 'number', + default: 0, + description: 'The value of the deal in cents', + }, + { + displayName: 'Currency', + name: 'currency', + type: 'options', + options: allCurrencies, + default: 'eur', + description: 'The currency of the deal in 3-character ISO format', + }, + { + displayName: 'Description', + name: 'description', + type: 'string', + default: '', + description: 'The description of the deal', + }, + { + displayName: 'Deal pipeline ID', + name: 'group', + type: 'string', + default: '', + description: 'The pipeline ID of the deal', + }, + { + displayName: 'Deal stage ID', + name: 'stage', + type: 'string', + default: '', + description: 'The stage ID of the deal', + }, + { + displayName: 'Deal owner ID', + name: 'owner', + type: 'string', + default: '', + description: 'The owner ID of the deal', + }, + { + displayName: 'Deal percentage', + name: 'percent', + type: 'number', + default: 0, + description: 'The percentage of the deal', + }, + { + displayName: 'Deal status', + name: 'status', + type: 'number', + default: 0, + description: 'The status of the deal', + }, + ] + }, - // ---------------------------------- - // deal:delete - // ---------------------------------- - { - displayName: 'Deal ID', - name: 'dealId', - type: 'number', - default: 0, - required: true, - displayOptions: { - show: { - operation: [ - 'delete', - ], - resource: [ - 'deal', - ], - }, - }, - description: 'The ID of the deal to delete.', - }, + // ---------------------------------- + // deal:delete + // ---------------------------------- + { + displayName: 'Deal ID', + name: 'dealId', + type: 'number', + default: 0, + required: true, + displayOptions: { + show: { + operation: [ + 'delete', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The ID of the deal to delete.', + }, - // ---------------------------------- - // deal:get - // ---------------------------------- - { - displayName: 'Deal ID', - name: 'dealId', - type: 'number', - default: 0, - required: true, - displayOptions: { - show: { - operation: [ - 'get', - ], - resource: [ - 'deal', - ], - }, - }, - description: 'The ID of the deal to get.', - }, + // ---------------------------------- + // deal:get + // ---------------------------------- + { + displayName: 'Deal ID', + name: 'dealId', + type: 'number', + default: 0, + required: true, + displayOptions: { + show: { + operation: [ + 'get', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The ID of the deal to get.', + }, - // ---------------------------------- - // deal:getAll - // ---------------------------------- - { - displayName: 'Return All', - name: 'returnAll', - type: 'boolean', - displayOptions: { - show: { - operation: [ - 'getAll', - ], - resource: [ - 'deal', - ], - }, - }, - default: false, - description: 'If all results should be returned or only up to a given limit.', - }, - { - displayName: 'Limit', - name: 'limit', - type: 'number', - displayOptions: { - show: { - operation: [ - 'getAll', - ], - resource: [ - 'deal', - ], - returnAll: [ - false, - ], - }, - }, - typeOptions: { - minValue: 1, - maxValue: 500, - }, - default: 100, - description: 'How many results to return.', - }, + // ---------------------------------- + // deal:getAll + // ---------------------------------- + { + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', + displayOptions: { + show: { + operation: [ + 'getAll', + ], + resource: [ + 'deal', + ], + }, + }, + default: false, + description: 'If all results should be returned or only up to a given limit.', + }, + { + displayName: 'Limit', + name: 'limit', + type: 'number', + displayOptions: { + show: { + operation: [ + 'getAll', + ], + resource: [ + 'deal', + ], + returnAll: [ + false, + ], + }, + }, + typeOptions: { + minValue: 1, + maxValue: 500, + }, + default: 100, + description: 'How many results to return.', + }, - // ---------------------------------- - // dealNote:create - // ---------------------------------- - { - displayName: 'Deal ID', - name: 'dealId', - type: 'number', - default: '', - required: true, - displayOptions: { - show: { - operation: [ - 'createNote', - ], - resource: [ - 'deal', - ], - }, - }, - description: 'The ID of the deal note', - }, - { - displayName: 'Deal Note', - name: 'dealNote', - type: 'string', - default: '', - required: true, - displayOptions: { - show: { - operation: [ - 'createNote', - ], - resource: [ - 'deal', - ], - }, - }, - description: 'The content of the deal note', - }, + // ---------------------------------- + // dealNote:create + // ---------------------------------- + { + displayName: 'Deal ID', + name: 'dealId', + type: 'number', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'createNote', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The ID of the deal note', + }, + { + displayName: 'Deal Note', + name: 'dealNote', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'createNote', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The content of the deal note', + }, - // ---------------------------------- - // dealNote:update - // ---------------------------------- - { - displayName: 'Deal ID', - name: 'dealId', - type: 'number', - default: '', - required: true, - displayOptions: { - show: { - operation: [ - 'updateNote', - ], - resource: [ - 'deal', - ], - }, - }, - description: 'The ID of the deal note', - }, - { - displayName: 'Deal note ID', - name: 'dealNoteId', - type: 'number', - default: '', - required: true, - displayOptions: { - show: { - operation: [ - 'updateNote', - ], - resource: [ - 'deal', - ], - }, - }, - description: 'The ID of the deal note', - }, - { - displayName: 'Deal Note', - name: 'dealNote', - type: 'string', - default: '', - displayOptions: { - show: { - operation: [ - 'updateNote', - ], - resource: [ - 'deal', - ], - }, - }, - description: 'The content of the deal note', - }, + // ---------------------------------- + // dealNote:update + // ---------------------------------- + { + displayName: 'Deal ID', + name: 'dealId', + type: 'number', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'updateNote', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The ID of the deal note', + }, + { + displayName: 'Deal note ID', + name: 'dealNoteId', + type: 'number', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'updateNote', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The ID of the deal note', + }, + { + displayName: 'Deal Note', + name: 'dealNote', + type: 'string', + default: '', + displayOptions: { + show: { + operation: [ + 'updateNote', + ], + resource: [ + 'deal', + ], + }, + }, + description: 'The content of the deal note', + }, ] as INodeProperties[]; \ No newline at end of file diff --git a/packages/nodes-base/nodes/ActiveCampaign/EcomCustomerDescription.ts b/packages/nodes-base/nodes/ActiveCampaign/EcomCustomerDescription.ts index f7f75e3fbb..2b8b0d33cd 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/EcomCustomerDescription.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/EcomCustomerDescription.ts @@ -1,290 +1,290 @@ import { INodeProperties } from "n8n-workflow"; export const ecomCustomerOperations = [ - { - displayName: 'Operation', - name: 'operation', - type: 'options', - displayOptions: { - show: { - resource: [ - 'ecommerceCustomer', - ], - }, - }, - options: [ - { - name: 'Create', - value: 'create', - description: 'Create a E-commerce Customer', - }, - { - name: 'Delete', - value: 'delete', - description: 'Delete a E-commerce Customer', - }, - { - name: 'Get', - value: 'get', - description: 'Get data of a E-commerce Customer', - }, - { - name: 'Get All', - value: 'getAll', - description: 'Get data of all E-commerce Customer', - }, - { - name: 'Update', - value: 'update', - description: 'Update a E-commerce Customer', - }, - ], - default: 'create', - description: 'The operation to perform.', - }, + { + displayName: 'Operation', + name: 'operation', + type: 'options', + displayOptions: { + show: { + resource: [ + 'ecommerceCustomer', + ], + }, + }, + options: [ + { + name: 'Create', + value: 'create', + description: 'Create a E-commerce Customer', + }, + { + name: 'Delete', + value: 'delete', + description: 'Delete a E-commerce Customer', + }, + { + name: 'Get', + value: 'get', + description: 'Get data of a E-commerce Customer', + }, + { + name: 'Get All', + value: 'getAll', + description: 'Get data of all E-commerce Customer', + }, + { + name: 'Update', + value: 'update', + description: 'Update a E-commerce Customer', + }, + ], + default: 'create', + description: 'The operation to perform.', + }, ] as INodeProperties[]; export const ecomCustomerFields = [ - // ---------------------------------- - // ecommerceCustomer:create - // ---------------------------------- - { - displayName: 'Service ID', - name: 'connectionid', - type: 'string', - default: '', - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceCustomer', - ], - }, - }, - description: 'The id of the connection object for the service where the customer originates.', - }, - { - displayName: 'Customer ID', - name: 'externalid', - type: 'string', - default: '', - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceCustomer', - ], - }, - }, - description: 'The id of the customer in the external service.', - }, - { - displayName: 'Customer Email', - name: 'email', - type: 'string', - default: '', - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceCustomer', - ], - }, - }, - description: 'The email address of the customer.', - }, - { - displayName: 'Additional Fields', - name: 'additionalFields', - type: 'collection', - placeholder: 'Add Field', - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceCustomer', - ], - }, - }, - default: {}, - options: [ - { - displayName: 'Accepts Marketing', - name: 'acceptsMarketing', - type: 'boolean', - default: false, - description: 'Indication of whether customer has opt-ed in to marketing communications.', - }, - ], - }, + // ---------------------------------- + // ecommerceCustomer:create + // ---------------------------------- + { + displayName: 'Service ID', + name: 'connectionid', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceCustomer', + ], + }, + }, + description: 'The id of the connection object for the service where the customer originates.', + }, + { + displayName: 'Customer ID', + name: 'externalid', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceCustomer', + ], + }, + }, + description: 'The id of the customer in the external service.', + }, + { + displayName: 'Customer Email', + name: 'email', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceCustomer', + ], + }, + }, + description: 'The email address of the customer.', + }, + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceCustomer', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'Accepts Marketing', + name: 'acceptsMarketing', + type: 'boolean', + default: false, + description: 'Indication of whether customer has opt-ed in to marketing communications.', + }, + ], + }, - // ---------------------------------- - // ecommerceCustomer:update - // ---------------------------------- - { - displayName: 'Customer ID', - name: 'ecommerceCustomerId', - type: 'number', - displayOptions: { - show: { - operation: [ - 'update', - ], - resource: [ - 'ecommerceCustomer', - ], - }, - }, - default: 0, - required: true, - description: 'ID of the E-commerce customer to update.', - }, - { - displayName: 'Update Fields', - name: 'updateFields', - type: 'collection', - description: 'The fields to update.', - placeholder: 'Add Field', - displayOptions: { - show: { - operation: [ - 'update', - ], - resource: [ - 'ecommerceCustomer', - ], - }, - }, - default: {}, - options: [ - { - displayName: 'Service ID', - name: 'connectionid', - type: 'string', - default: '', - description: 'The id of the connection object for the service where the customer originates.', - }, - { - displayName: 'Customer ID', - name: 'externalid', - type: 'string', - default: '', - description: 'The id of the customer in the external service.', - }, - { - displayName: 'Customer Email', - name: 'email', - type: 'string', - default: '', - description: 'The email address of the customer.', - }, - { - displayName: 'Accepts Marketing', - name: 'acceptsMarketing', - type: 'boolean', - default: false, - description: 'Indication of whether customer has opt-ed in to marketing communications.', - }, - ], - }, + // ---------------------------------- + // ecommerceCustomer:update + // ---------------------------------- + { + displayName: 'Customer ID', + name: 'ecommerceCustomerId', + type: 'number', + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'ecommerceCustomer', + ], + }, + }, + default: 0, + required: true, + description: 'ID of the E-commerce customer to update.', + }, + { + displayName: 'Update Fields', + name: 'updateFields', + type: 'collection', + description: 'The fields to update.', + placeholder: 'Add Field', + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'ecommerceCustomer', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'Service ID', + name: 'connectionid', + type: 'string', + default: '', + description: 'The id of the connection object for the service where the customer originates.', + }, + { + displayName: 'Customer ID', + name: 'externalid', + type: 'string', + default: '', + description: 'The id of the customer in the external service.', + }, + { + displayName: 'Customer Email', + name: 'email', + type: 'string', + default: '', + description: 'The email address of the customer.', + }, + { + displayName: 'Accepts Marketing', + name: 'acceptsMarketing', + type: 'boolean', + default: false, + description: 'Indication of whether customer has opt-ed in to marketing communications.', + }, + ], + }, - // ---------------------------------- - // ecommerceCustomer:delete - // ---------------------------------- - { - displayName: 'Customer ID', - name: 'ecommerceCustomerId', - type: 'number', - displayOptions: { - show: { - operation: [ - 'delete', - ], - resource: [ - 'ecommerceCustomer', - ], - }, - }, - default: 0, - required: true, - description: 'ID of the E-commerce customer to delete.', - }, + // ---------------------------------- + // ecommerceCustomer:delete + // ---------------------------------- + { + displayName: 'Customer ID', + name: 'ecommerceCustomerId', + type: 'number', + displayOptions: { + show: { + operation: [ + 'delete', + ], + resource: [ + 'ecommerceCustomer', + ], + }, + }, + default: 0, + required: true, + description: 'ID of the E-commerce customer to delete.', + }, - // ---------------------------------- - // ecommerceCustomer:get - // ---------------------------------- - { - displayName: 'Customer ID', - name: 'ecommerceCustomerId', - type: 'number', - displayOptions: { - show: { - operation: [ - 'get', - ], - resource: [ - 'ecommerceCustomer', - ], - }, - }, - default: 0, - required: true, - description: 'ID of the E-commerce customer to get.', - }, + // ---------------------------------- + // ecommerceCustomer:get + // ---------------------------------- + { + displayName: 'Customer ID', + name: 'ecommerceCustomerId', + type: 'number', + displayOptions: { + show: { + operation: [ + 'get', + ], + resource: [ + 'ecommerceCustomer', + ], + }, + }, + default: 0, + required: true, + description: 'ID of the E-commerce customer to get.', + }, - // ---------------------------------- - // ecommerceCustomer:getAll - // ---------------------------------- - { - displayName: 'Return All', - name: 'returnAll', - type: 'boolean', - displayOptions: { - show: { - operation: [ - 'getAll', - ], - resource: [ - 'ecommerceCustomer', - ], - }, - }, - default: false, - description: 'If all results should be returned or only up to a given limit.', - }, - { - displayName: 'Limit', - name: 'limit', - type: 'number', - displayOptions: { - show: { - operation: [ - 'getAll', - ], - resource: [ - 'ecommerceCustomer', - ], - returnAll: [ - false, - ], - }, - }, - typeOptions: { - minValue: 1, - maxValue: 500, - }, - default: 100, - description: 'How many results to return.', - }, + // ---------------------------------- + // ecommerceCustomer:getAll + // ---------------------------------- + { + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', + displayOptions: { + show: { + operation: [ + 'getAll', + ], + resource: [ + 'ecommerceCustomer', + ], + }, + }, + default: false, + description: 'If all results should be returned or only up to a given limit.', + }, + { + displayName: 'Limit', + name: 'limit', + type: 'number', + displayOptions: { + show: { + operation: [ + 'getAll', + ], + resource: [ + 'ecommerceCustomer', + ], + returnAll: [ + false, + ], + }, + }, + typeOptions: { + minValue: 1, + maxValue: 500, + }, + default: 100, + description: 'How many results to return.', + }, ] as INodeProperties[]; diff --git a/packages/nodes-base/nodes/ActiveCampaign/EcomOrderDescription.ts b/packages/nodes-base/nodes/ActiveCampaign/EcomOrderDescription.ts index a1c0993dfe..525fa0eb20 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/EcomOrderDescription.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/EcomOrderDescription.ts @@ -3,714 +3,714 @@ import { INodeProperties } from "n8n-workflow"; import { allCurrencies } from './currencies'; export const ecomOrderOperations = [ - { - displayName: 'Operation', - name: 'operation', - type: 'options', - displayOptions: { - show: { - resource: [ - 'ecommerceOrder', - ], - }, - }, - options: [ - { - name: 'Create', - value: 'create', - description: 'Create a order', - }, - { - name: 'Delete', - value: 'delete', - description: 'Delete a order', - }, - { - name: 'Get', - value: 'get', - description: 'Get data of a order', - }, - { - name: 'Get All', - value: 'getAll', - description: 'Get data of all orders', - }, - { - name: 'Update', - value: 'update', - description: 'Update a order', - }, - ], - default: 'create', - description: 'The operation to perform.', - }, + { + displayName: 'Operation', + name: 'operation', + type: 'options', + displayOptions: { + show: { + resource: [ + 'ecommerceOrder', + ], + }, + }, + options: [ + { + name: 'Create', + value: 'create', + description: 'Create a order', + }, + { + name: 'Delete', + value: 'delete', + description: 'Delete a order', + }, + { + name: 'Get', + value: 'get', + description: 'Get data of a order', + }, + { + name: 'Get All', + value: 'getAll', + description: 'Get data of all orders', + }, + { + name: 'Update', + value: 'update', + description: 'Update a order', + }, + ], + default: 'create', + description: 'The operation to perform.', + }, ] as INodeProperties[]; export const ecomOrderFields = [ - // ---------------------------------- - // ecommerceOrder:create - // ---------------------------------- - { - displayName: 'External ID', - name: 'externalid', - type: 'string', - default: '', - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The id of the order in the external service. ONLY REQUIRED IF EXTERNALCHECKOUTID NOT INCLUDED', - }, - { - displayName: 'External checkout ID', - name: 'externalcheckoutid', - type: 'string', - default: '', - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The id of the cart in the external service. ONLY REQUIRED IF EXTERNALID IS NOT INCLUDED.', - }, - { - displayName: 'Order source', - name: 'source', - type: 'number', - default: 0, - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The order source code (0 - will not trigger automations, 1 - will trigger automations).', - }, - { - displayName: 'Customer Email', - name: 'email', - type: 'string', - default: '', - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The email address of the customer who placed the order.', - }, - { - displayName: 'Total price', - name: 'totalPrice', - type: 'number', - default: 0, - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The total price of the order in cents, including tax and shipping charges. (i.e. $456.78 => 45678). Must be greater than or equal to zero.', - }, - { - displayName: 'Order currency', - name: 'currency', - type: 'options', - default: 'eur', - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - options: allCurrencies, - description: 'The currency of the order (3-digit ISO code, e.g., "USD").', - }, - { - displayName: 'Connection ID', - name: 'connectionid', - type: 'number', - default: 0, - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The id of the connection from which this order originated.', - }, - { - displayName: 'Customer ID', - name: 'customerid', - type: 'number', - default: 0, - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The id of the customer associated with this order.', - }, - { - displayName: 'Creation Date', - name: 'externalCreatedDate', - type: 'dateTime', - default: '', - required: true, - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The date the order was placed.', - }, - { - displayName: 'Abandoning Date', - name: 'abandonedDate', - type: 'dateTime', - default: '', - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The date the cart was abandoned. REQUIRED ONLY IF INCLUDING EXTERNALCHECKOUTID.', - }, - { - displayName: 'Products', - name: 'orderProducts', - type: 'collection', - typeOptions: { - multipleValues: true, - multipleValueButtonText: 'Add product', - }, - displayOptions: { - show: { - operation: [ - 'create' - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - default: {}, - description: 'All ordered products', - placeholder: 'Add product field', - options: [ - { - displayName: 'Name', - name: 'name', - type: 'string', - default: '', - description: 'The name of the product', - }, - { - displayName: 'Price', - name: 'price', - type: 'number', - default: 0, - description: 'The price of the product, in cents. (i.e. $456.78 => 45678). Must be greater than or equal to zero.', - }, - { - displayName: 'Product Quantity', - name: 'quantity', - type: 'number', - default: 0, - description: 'The quantity ordered.', - }, - { - displayName: 'Product external ID', - name: 'externalid', - type: 'string', - default: '', - description: 'The id of the product in the external service.', - }, - { - displayName: 'Product Category', - name: 'category', - type: 'string', - default: '', - description: 'The category of the product.', - }, - { - displayName: 'SKU', - name: 'sku', - type: 'string', - default: '', - description: 'The SKU for the product.', - }, - { - displayName: 'Description', - name: 'description', - type: 'string', - default: '', - description: 'The description of the product.', - }, - { - displayName: 'Image URL', - name: 'imageUrl', - type: 'string', - default: '', - description: 'An Image URL that displays an image of the product.', - }, - { - displayName: 'Product URL', - name: 'productUrl', - type: 'string', - default: '', - description: 'A URL linking to the product in your store.', - }, - ], - }, - { - displayName: 'Additional Fields', - name: 'additionalFields', - type: 'collection', - placeholder: 'Add Field', - displayOptions: { - show: { - operation: [ - 'create', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - default: {}, - options: [ - { - displayName: 'Shipping Amount', - name: 'shippingAmount', - type: 'number', - default: 0, - description: 'The total shipping amount for the order in cents .', - }, + // ---------------------------------- + // ecommerceOrder:create + // ---------------------------------- + { + displayName: 'External ID', + name: 'externalid', + type: 'string', + default: '', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The id of the order in the external service. ONLY REQUIRED IF EXTERNALCHECKOUTID NOT INCLUDED', + }, + { + displayName: 'External checkout ID', + name: 'externalcheckoutid', + type: 'string', + default: '', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The id of the cart in the external service. ONLY REQUIRED IF EXTERNALID IS NOT INCLUDED.', + }, + { + displayName: 'Order source', + name: 'source', + type: 'number', + default: 0, + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The order source code (0 - will not trigger automations, 1 - will trigger automations).', + }, + { + displayName: 'Customer Email', + name: 'email', + type: 'string', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The email address of the customer who placed the order.', + }, + { + displayName: 'Total price', + name: 'totalPrice', + type: 'number', + default: 0, + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The total price of the order in cents, including tax and shipping charges. (i.e. $456.78 => 45678). Must be greater than or equal to zero.', + }, + { + displayName: 'Order currency', + name: 'currency', + type: 'options', + default: 'eur', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + options: allCurrencies, + description: 'The currency of the order (3-digit ISO code, e.g., "USD").', + }, + { + displayName: 'Connection ID', + name: 'connectionid', + type: 'number', + default: 0, + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The id of the connection from which this order originated.', + }, + { + displayName: 'Customer ID', + name: 'customerid', + type: 'number', + default: 0, + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The id of the customer associated with this order.', + }, + { + displayName: 'Creation Date', + name: 'externalCreatedDate', + type: 'dateTime', + default: '', + required: true, + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The date the order was placed.', + }, + { + displayName: 'Abandoning Date', + name: 'abandonedDate', + type: 'dateTime', + default: '', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The date the cart was abandoned. REQUIRED ONLY IF INCLUDING EXTERNALCHECKOUTID.', + }, + { + displayName: 'Products', + name: 'orderProducts', + type: 'collection', + typeOptions: { + multipleValues: true, + multipleValueButtonText: 'Add product', + }, + displayOptions: { + show: { + operation: [ + 'create' + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + default: {}, + description: 'All ordered products', + placeholder: 'Add product field', + options: [ + { + displayName: 'Name', + name: 'name', + type: 'string', + default: '', + description: 'The name of the product', + }, + { + displayName: 'Price', + name: 'price', + type: 'number', + default: 0, + description: 'The price of the product, in cents. (i.e. $456.78 => 45678). Must be greater than or equal to zero.', + }, + { + displayName: 'Product Quantity', + name: 'quantity', + type: 'number', + default: 0, + description: 'The quantity ordered.', + }, + { + displayName: 'Product external ID', + name: 'externalid', + type: 'string', + default: '', + description: 'The id of the product in the external service.', + }, + { + displayName: 'Product Category', + name: 'category', + type: 'string', + default: '', + description: 'The category of the product.', + }, + { + displayName: 'SKU', + name: 'sku', + type: 'string', + default: '', + description: 'The SKU for the product.', + }, + { + displayName: 'Description', + name: 'description', + type: 'string', + default: '', + description: 'The description of the product.', + }, + { + displayName: 'Image URL', + name: 'imageUrl', + type: 'string', + default: '', + description: 'An Image URL that displays an image of the product.', + }, + { + displayName: 'Product URL', + name: 'productUrl', + type: 'string', + default: '', + description: 'A URL linking to the product in your store.', + }, + ], + }, + { + displayName: 'Additional Fields', + name: 'additionalFields', + type: 'collection', + placeholder: 'Add Field', + displayOptions: { + show: { + operation: [ + 'create', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'Shipping Amount', + name: 'shippingAmount', + type: 'number', + default: 0, + description: 'The total shipping amount for the order in cents .', + }, - { - displayName: 'Tax Amount', - name: 'taxAmount', - type: 'number', - default: 0, - description: 'The total tax amount for the order in cents.', - }, - { - displayName: 'Discount Amount', - name: 'discountAmount', - type: 'number', - default: 0, - description: 'The total discount amount for the order in cents.', - }, - { - displayName: 'Order URL', - name: 'orderUrl', - type: 'string', - default: '', - description: 'The URL for the order in the external service.', - }, - { - displayName: 'External updated date', - name: 'externalUpdatedDate', - type: 'dateTime', - default: '', - description: 'The date the order was updated.', - }, - { - displayName: 'Shipping Method', - name: 'shippingMethod', - type: 'string', - default: '', - description: 'The shipping method of the order.', - }, - { - displayName: 'Order Number', - name: 'orderNumber', - type: 'string', - default: '', - description: 'The order number. This can be different than the externalid.', - }, + { + displayName: 'Tax Amount', + name: 'taxAmount', + type: 'number', + default: 0, + description: 'The total tax amount for the order in cents.', + }, + { + displayName: 'Discount Amount', + name: 'discountAmount', + type: 'number', + default: 0, + description: 'The total discount amount for the order in cents.', + }, + { + displayName: 'Order URL', + name: 'orderUrl', + type: 'string', + default: '', + description: 'The URL for the order in the external service.', + }, + { + displayName: 'External updated date', + name: 'externalUpdatedDate', + type: 'dateTime', + default: '', + description: 'The date the order was updated.', + }, + { + displayName: 'Shipping Method', + name: 'shippingMethod', + type: 'string', + default: '', + description: 'The shipping method of the order.', + }, + { + displayName: 'Order Number', + name: 'orderNumber', + type: 'string', + default: '', + description: 'The order number. This can be different than the externalid.', + }, - ] - }, + ] + }, - // ---------------------------------- - // ecommerceOrder:update - // ---------------------------------- - { - displayName: 'Order ID', - name: 'orderId', - type: 'number', - default: 0, - displayOptions: { - show: { - operation: [ - 'update', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The id of the e-commerce order.', - }, + // ---------------------------------- + // ecommerceOrder:update + // ---------------------------------- + { + displayName: 'Order ID', + name: 'orderId', + type: 'number', + default: 0, + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The id of the e-commerce order.', + }, - { - displayName: 'Add Field', - name: 'updateFields', - type: 'collection', - placeholder: 'Add Field', - displayOptions: { - show: { - operation: [ - 'update', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - default: {}, - options: [ - { - displayName: 'External ID', - name: 'externalid', - type: 'string', - default: '', - description: 'The id of the order in the external service. ONLY REQUIRED IF EXTERNALCHECKOUTID NOT INCLUDED', - }, - { - displayName: 'External checkout ID', - name: 'externalcheckoutid', - type: 'string', - default: '', - description: 'The id of the cart in the external service. ONLY REQUIRED IF EXTERNALID IS NOT INCLUDED.', - }, - { - displayName: 'Order source', - name: 'source', - type: 'number', - default: 0, - description: 'The order source code (0 - will not trigger automations, 1 - will trigger automations).', - }, - { - displayName: 'Customer Email', - name: 'email', - type: 'string', - default: '', - description: 'The email address of the customer who placed the order.', - }, - { - displayName: 'Total price', - name: 'totalPrice', - type: 'number', - default: 0, - description: 'The total price of the order in cents, including tax and shipping charges. (i.e. $456.78 => 45678). Must be greater than or equal to zero.', - }, - { - displayName: 'Order currency', - name: 'currency', - type: 'options', - default: 'eur', - options: allCurrencies, - description: 'The currency of the order (3-digit ISO code, e.g., "USD").', - }, - { - displayName: 'Connection ID', - name: 'connectionid', - type: 'number', - default: 0, - description: 'The id of the connection from which this order originated.', - }, - { - displayName: 'Customer ID', - name: 'customerid', - type: 'number', - default: 0, - description: 'The id of the customer associated with this order.', - }, - { - displayName: 'Creation Date', - name: 'externalupdatedDate', - type: 'dateTime', - default: '', - description: 'The date the order was placed.', - }, - { - displayName: 'Abandoning Date', - name: 'abandonedDate', - type: 'dateTime', - default: '', - description: 'The date the cart was abandoned. REQUIRED ONLY IF INCLUDING EXTERNALCHECKOUTID.', - }, - { - displayName: 'Shipping Amount', - name: 'shippingAmount', - type: 'number', - default: 0, - description: 'The total shipping amount for the order in cents .', - }, + { + displayName: 'Add Field', + name: 'updateFields', + type: 'collection', + placeholder: 'Add Field', + displayOptions: { + show: { + operation: [ + 'update', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + default: {}, + options: [ + { + displayName: 'External ID', + name: 'externalid', + type: 'string', + default: '', + description: 'The id of the order in the external service. ONLY REQUIRED IF EXTERNALCHECKOUTID NOT INCLUDED', + }, + { + displayName: 'External checkout ID', + name: 'externalcheckoutid', + type: 'string', + default: '', + description: 'The id of the cart in the external service. ONLY REQUIRED IF EXTERNALID IS NOT INCLUDED.', + }, + { + displayName: 'Order source', + name: 'source', + type: 'number', + default: 0, + description: 'The order source code (0 - will not trigger automations, 1 - will trigger automations).', + }, + { + displayName: 'Customer Email', + name: 'email', + type: 'string', + default: '', + description: 'The email address of the customer who placed the order.', + }, + { + displayName: 'Total price', + name: 'totalPrice', + type: 'number', + default: 0, + description: 'The total price of the order in cents, including tax and shipping charges. (i.e. $456.78 => 45678). Must be greater than or equal to zero.', + }, + { + displayName: 'Order currency', + name: 'currency', + type: 'options', + default: 'eur', + options: allCurrencies, + description: 'The currency of the order (3-digit ISO code, e.g., "USD").', + }, + { + displayName: 'Connection ID', + name: 'connectionid', + type: 'number', + default: 0, + description: 'The id of the connection from which this order originated.', + }, + { + displayName: 'Customer ID', + name: 'customerid', + type: 'number', + default: 0, + description: 'The id of the customer associated with this order.', + }, + { + displayName: 'Creation Date', + name: 'externalupdatedDate', + type: 'dateTime', + default: '', + description: 'The date the order was placed.', + }, + { + displayName: 'Abandoning Date', + name: 'abandonedDate', + type: 'dateTime', + default: '', + description: 'The date the cart was abandoned. REQUIRED ONLY IF INCLUDING EXTERNALCHECKOUTID.', + }, + { + displayName: 'Shipping Amount', + name: 'shippingAmount', + type: 'number', + default: 0, + description: 'The total shipping amount for the order in cents .', + }, - { - displayName: 'Tax Amount', - name: 'taxAmount', - type: 'number', - default: 0, - description: 'The total tax amount for the order in cents.', - }, - { - displayName: 'Discount Amount', - name: 'discountAmount', - type: 'number', - default: 0, - description: 'The total discount amount for the order in cents.', - }, - { - displayName: 'Order URL', - name: 'orderUrl', - type: 'string', - default: '', - description: 'The URL for the order in the external service.', - }, - { - displayName: 'External updated date', - name: 'externalUpdatedDate', - type: 'dateTime', - default: '', - description: 'The date the order was updated.', - }, - { - displayName: 'Shipping Method', - name: 'shippingMethod', - type: 'string', - default: '', - description: 'The shipping method of the order.', - }, - { - displayName: 'Order Number', - name: 'orderNumber', - type: 'string', - default: '', - description: 'The order number. This can be different than the externalid.', - }, + { + displayName: 'Tax Amount', + name: 'taxAmount', + type: 'number', + default: 0, + description: 'The total tax amount for the order in cents.', + }, + { + displayName: 'Discount Amount', + name: 'discountAmount', + type: 'number', + default: 0, + description: 'The total discount amount for the order in cents.', + }, + { + displayName: 'Order URL', + name: 'orderUrl', + type: 'string', + default: '', + description: 'The URL for the order in the external service.', + }, + { + displayName: 'External updated date', + name: 'externalUpdatedDate', + type: 'dateTime', + default: '', + description: 'The date the order was updated.', + }, + { + displayName: 'Shipping Method', + name: 'shippingMethod', + type: 'string', + default: '', + description: 'The shipping method of the order.', + }, + { + displayName: 'Order Number', + name: 'orderNumber', + type: 'string', + default: '', + description: 'The order number. This can be different than the externalid.', + }, - { - displayName: 'Products', - name: 'orderProducts', - type: 'collection', - typeOptions: { - multipleValues: true, - multipleValueButtonText: 'Add product', - }, - default: {}, - description: 'All ordered products', - placeholder: 'Add product field', - options: [ - { - displayName: 'Name', - name: 'name', - type: 'string', - default: '', - description: 'The name of the product', - }, - { - displayName: 'Price', - name: 'price', - type: 'number', - default: 0, - description: 'The price of the product, in cents. (i.e. $456.78 => 45678). Must be greater than or equal to zero.', - }, - { - displayName: 'Product Quantity', - name: 'quantity', - type: 'number', - default: 0, - description: 'The quantity ordered.', - }, - { - displayName: 'Product external ID', - name: 'externalid', - type: 'string', - default: '', - description: 'The id of the product in the external service.', - }, - { - displayName: 'Product Category', - name: 'category', - type: 'string', - default: '', - description: 'The category of the product.', - }, - { - displayName: 'SKU', - name: 'sku', - type: 'string', - default: '', - description: 'The SKU for the product.', - }, - { - displayName: 'Description', - name: 'description', - type: 'string', - default: '', - description: 'The description of the product.', - }, - { - displayName: 'Image URL', - name: 'imageUrl', - type: 'string', - default: '', - description: 'An Image URL that displays an image of the product.', - }, - { - displayName: 'Product URL', - name: 'productUrl', - type: 'string', - default: '', - description: 'A URL linking to the product in your store.', - }, - ], - }, + { + displayName: 'Products', + name: 'orderProducts', + type: 'collection', + typeOptions: { + multipleValues: true, + multipleValueButtonText: 'Add product', + }, + default: {}, + description: 'All ordered products', + placeholder: 'Add product field', + options: [ + { + displayName: 'Name', + name: 'name', + type: 'string', + default: '', + description: 'The name of the product', + }, + { + displayName: 'Price', + name: 'price', + type: 'number', + default: 0, + description: 'The price of the product, in cents. (i.e. $456.78 => 45678). Must be greater than or equal to zero.', + }, + { + displayName: 'Product Quantity', + name: 'quantity', + type: 'number', + default: 0, + description: 'The quantity ordered.', + }, + { + displayName: 'Product external ID', + name: 'externalid', + type: 'string', + default: '', + description: 'The id of the product in the external service.', + }, + { + displayName: 'Product Category', + name: 'category', + type: 'string', + default: '', + description: 'The category of the product.', + }, + { + displayName: 'SKU', + name: 'sku', + type: 'string', + default: '', + description: 'The SKU for the product.', + }, + { + displayName: 'Description', + name: 'description', + type: 'string', + default: '', + description: 'The description of the product.', + }, + { + displayName: 'Image URL', + name: 'imageUrl', + type: 'string', + default: '', + description: 'An Image URL that displays an image of the product.', + }, + { + displayName: 'Product URL', + name: 'productUrl', + type: 'string', + default: '', + description: 'A URL linking to the product in your store.', + }, + ], + }, - ] - }, + ] + }, - // ---------------------------------- - // ecommerceOrder:delete - // ---------------------------------- - { - displayName: 'Order ID', - name: 'orderId', - type: 'number', - default: 0, - displayOptions: { - show: { - operation: [ - 'delete', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The id of the e-commerce order.', - }, + // ---------------------------------- + // ecommerceOrder:delete + // ---------------------------------- + { + displayName: 'Order ID', + name: 'orderId', + type: 'number', + default: 0, + displayOptions: { + show: { + operation: [ + 'delete', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The id of the e-commerce order.', + }, - // ---------------------------------- - // ecommerceOrder:get - // ---------------------------------- - { - displayName: 'Order ID', - name: 'orderId', - type: 'number', - default: 0, - displayOptions: { - show: { - operation: [ - 'get', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - description: 'The id of the e-commerce order.', - }, + // ---------------------------------- + // ecommerceOrder:get + // ---------------------------------- + { + displayName: 'Order ID', + name: 'orderId', + type: 'number', + default: 0, + displayOptions: { + show: { + operation: [ + 'get', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + description: 'The id of the e-commerce order.', + }, - // ---------------------------------- - // ecommerceOrder:getAll - // ---------------------------------- - { - displayName: 'Return All', - name: 'returnAll', - type: 'boolean', - displayOptions: { - show: { - operation: [ - 'getAll', - ], - resource: [ - 'ecommerceOrder', - ], - }, - }, - default: false, - description: 'If all results should be returned or only up to a given limit.', - }, - { - displayName: 'Limit', - name: 'limit', - type: 'number', - displayOptions: { - show: { - operation: [ - 'getAll', - ], - resource: [ - 'ecommerceOrder', - ], - returnAll: [ - false, - ], - }, - }, - typeOptions: { - minValue: 1, - maxValue: 500, - }, - default: 100, - description: 'How many results to return.', - }, + // ---------------------------------- + // ecommerceOrder:getAll + // ---------------------------------- + { + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', + displayOptions: { + show: { + operation: [ + 'getAll', + ], + resource: [ + 'ecommerceOrder', + ], + }, + }, + default: false, + description: 'If all results should be returned or only up to a given limit.', + }, + { + displayName: 'Limit', + name: 'limit', + type: 'number', + displayOptions: { + show: { + operation: [ + 'getAll', + ], + resource: [ + 'ecommerceOrder', + ], + returnAll: [ + false, + ], + }, + }, + typeOptions: { + minValue: 1, + maxValue: 500, + }, + default: 100, + description: 'How many results to return.', + }, ] as INodeProperties[]; \ No newline at end of file diff --git a/packages/nodes-base/nodes/ActiveCampaign/EcomOrderProductsDescription.ts b/packages/nodes-base/nodes/ActiveCampaign/EcomOrderProductsDescription.ts index 29869a7435..1f53c47f0b 100644 --- a/packages/nodes-base/nodes/ActiveCampaign/EcomOrderProductsDescription.ts +++ b/packages/nodes-base/nodes/ActiveCampaign/EcomOrderProductsDescription.ts @@ -1,124 +1,124 @@ import { INodeProperties } from "n8n-workflow"; export const ecomOrderProductsOperations = [ - { - displayName: 'Operation', - name: 'operation', - type: 'options', - displayOptions: { - show: { - resource: [ - 'ecommerceOrderProducts', - ], - }, - }, - options: [ - { - name: 'Get All', - value: 'getAll', - description: 'Get data of all order products', - }, - { - name: 'Get by Product ID', - value: 'getByProductId', - description: 'Get data of a ordered product', - }, - { - name: 'Get by Order ID', - value: 'getByOrderId', - description: 'Get data of an order\'s products', - }, - ], - default: 'getAll', - description: 'The operation to perform.', - }, + { + displayName: 'Operation', + name: 'operation', + type: 'options', + displayOptions: { + show: { + resource: [ + 'ecommerceOrderProducts', + ], + }, + }, + options: [ + { + name: 'Get All', + value: 'getAll', + description: 'Get data of all order products', + }, + { + name: 'Get by Product ID', + value: 'getByProductId', + description: 'Get data of a ordered product', + }, + { + name: 'Get by Order ID', + value: 'getByOrderId', + description: 'Get data of an order\'s products', + }, + ], + default: 'getAll', + description: 'The operation to perform.', + }, ] as INodeProperties[]; export const ecomOrderProductsFields = [ - // ---------------------------------- - // ecommerceOrderProducts:getByOrderId - // ---------------------------------- - { - displayName: 'Order ID', - name: 'orderId', - type: 'number', - default: 0, - displayOptions: { - show: { - operation: [ - 'getByOrderId', - ], - resource: [ - 'ecommerceOrderProducts', - ], - }, - }, - description: 'The ID of the order whose products you\'d like returned.', - }, + // ---------------------------------- + // ecommerceOrderProducts:getByOrderId + // ---------------------------------- + { + displayName: 'Order ID', + name: 'orderId', + type: 'number', + default: 0, + displayOptions: { + show: { + operation: [ + 'getByOrderId', + ], + resource: [ + 'ecommerceOrderProducts', + ], + }, + }, + description: 'The ID of the order whose products you\'d like returned.', + }, - // ---------------------------------- - // ecommerceOrderProducts:getByProductId - // ---------------------------------- - { - displayName: 'Product ID', - name: 'procuctId', - type: 'number', - default: 0, - displayOptions: { - show: { - operation: [ - 'getByProductId', - ], - resource: [ - 'ecommerceOrderProducts', - ], - }, - }, - description: 'The ID of the product you\'d like returned.', - }, + // ---------------------------------- + // ecommerceOrderProducts:getByProductId + // ---------------------------------- + { + displayName: 'Product ID', + name: 'procuctId', + type: 'number', + default: 0, + displayOptions: { + show: { + operation: [ + 'getByProductId', + ], + resource: [ + 'ecommerceOrderProducts', + ], + }, + }, + description: 'The ID of the product you\'d like returned.', + }, - // ---------------------------------- - // ecommerceOrderProducts:getAll - // ---------------------------------- - { - displayName: 'Return All', - name: 'returnAll', - type: 'boolean', - displayOptions: { - show: { - operation: [ - 'getAll', - ], - resource: [ - 'ecommerceOrderProducts', - ], - }, - }, - default: false, - description: 'If all results should be returned or only up to a given limit.', - }, - { - displayName: 'Limit', - name: 'limit', - type: 'number', - displayOptions: { - show: { - operation: [ - 'getAll', - ], - resource: [ - 'ecommerceOrderProducts', - ], - returnAll: [ - false, - ], - }, - }, - typeOptions: { - minValue: 1, - maxValue: 500, - }, - default: 100, - description: 'How many results to return.', - }, + // ---------------------------------- + // ecommerceOrderProducts:getAll + // ---------------------------------- + { + displayName: 'Return All', + name: 'returnAll', + type: 'boolean', + displayOptions: { + show: { + operation: [ + 'getAll', + ], + resource: [ + 'ecommerceOrderProducts', + ], + }, + }, + default: false, + description: 'If all results should be returned or only up to a given limit.', + }, + { + displayName: 'Limit', + name: 'limit', + type: 'number', + displayOptions: { + show: { + operation: [ + 'getAll', + ], + resource: [ + 'ecommerceOrderProducts', + ], + returnAll: [ + false, + ], + }, + }, + typeOptions: { + minValue: 1, + maxValue: 500, + }, + default: 100, + description: 'How many results to return.', + }, ] as INodeProperties[]; \ No newline at end of file