From be5890536f9b99916de20ae3c771776149132026 Mon Sep 17 00:00:00 2001 From: Michael Kret <88898367+michael-radency@users.noreply.github.com> Date: Thu, 30 May 2024 17:21:50 +0300 Subject: [PATCH] feat: HighLevel oauth2 api credentials (#9542) --- .../oauth/oAuth2Credential.controller.ts | 7 +- .../HighLevelOAuth2Api.credentials.ts | 65 +++++++++++++++++++ .../credentials/icons/highLevel.svg | 1 + packages/nodes-base/package.json | 1 + 4 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 packages/nodes-base/credentials/HighLevelOAuth2Api.credentials.ts create mode 100644 packages/nodes-base/credentials/icons/highLevel.svg diff --git a/packages/cli/src/controllers/oauth/oAuth2Credential.controller.ts b/packages/cli/src/controllers/oauth/oAuth2Credential.controller.ts index fe1bf23dce1d6..ae0d18b230905 100644 --- a/packages/cli/src/controllers/oauth/oAuth2Credential.controller.ts +++ b/packages/cli/src/controllers/oauth/oAuth2Credential.controller.ts @@ -25,7 +25,12 @@ export class OAuth2CredentialController extends AbstractOAuthController { // At some point in the past we saved hidden scopes to credentials (but shouldn't) // Delete scope before applying defaults to make sure new scopes are present on reconnect // Generic Oauth2 API is an exception because it needs to save the scope - const genericOAuth2 = ['oAuth2Api', 'googleOAuth2Api', 'microsoftOAuth2Api']; + const genericOAuth2 = [ + 'oAuth2Api', + 'googleOAuth2Api', + 'microsoftOAuth2Api', + 'highLevelOAuth2Api', + ]; if ( decryptedDataOriginal?.scope && credential.type.includes('OAuth2') && diff --git a/packages/nodes-base/credentials/HighLevelOAuth2Api.credentials.ts b/packages/nodes-base/credentials/HighLevelOAuth2Api.credentials.ts new file mode 100644 index 0000000000000..5ebb51b256d00 --- /dev/null +++ b/packages/nodes-base/credentials/HighLevelOAuth2Api.credentials.ts @@ -0,0 +1,65 @@ +import type { ICredentialType, INodeProperties } from 'n8n-workflow'; + +export class HighLevelOAuth2Api implements ICredentialType { + name = 'highLevelOAuth2Api'; + + extends = ['oAuth2Api']; + + displayName = 'HighLevel OAuth2 API'; + + documentationUrl = 'highLevel'; + + icon = 'file:icons/highLevel.svg'; + + properties: INodeProperties[] = [ + { + displayName: 'Grant Type', + name: 'grantType', + type: 'hidden', + default: 'authorizationCode', + }, + { + displayName: 'Authorization URL', + name: 'authUrl', + type: 'options', + default: 'https://marketplace.leadconnectorhq.com/oauth/chooselocation', + required: true, + options: [ + { + name: 'White-Label', + value: 'https://marketplace.leadconnectorhq.com/oauth/chooselocation', + }, + { + name: 'Standard', + value: 'https://marketplace.gohighlevel.com/oauth/chooselocation', + }, + ], + }, + { + displayName: 'Scope', + name: 'scope', + type: 'string', + hint: 'Separate scopes by space', + default: '', + required: true, + }, + { + displayName: 'Access Token URL', + name: 'accessTokenUrl', + type: 'hidden', + default: 'https://services.leadconnectorhq.com/oauth/token', + }, + { + displayName: 'Auth URI Query Parameters', + name: 'authQueryParameters', + type: 'hidden', + default: '', + }, + { + displayName: 'Authentication', + name: 'authentication', + type: 'hidden', + default: 'body', + }, + ]; +} diff --git a/packages/nodes-base/credentials/icons/highLevel.svg b/packages/nodes-base/credentials/icons/highLevel.svg new file mode 100644 index 0000000000000..3df6e466f0bfa --- /dev/null +++ b/packages/nodes-base/credentials/icons/highLevel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/nodes-base/package.json b/packages/nodes-base/package.json index 9449ea215e6fc..3fe7c12194b29 100644 --- a/packages/nodes-base/package.json +++ b/packages/nodes-base/package.json @@ -161,6 +161,7 @@ "dist/credentials/HarvestOAuth2Api.credentials.js", "dist/credentials/HelpScoutOAuth2Api.credentials.js", "dist/credentials/HighLevelApi.credentials.js", + "dist/credentials/HighLevelOAuth2Api.credentials.js", "dist/credentials/HomeAssistantApi.credentials.js", "dist/credentials/HttpBasicAuth.credentials.js", "dist/credentials/HttpDigestAuth.credentials.js",