From 6ef8882a108c672ab097c9dd1c590d4e9e7f3bcc Mon Sep 17 00:00:00 2001 From: Jon Date: Fri, 17 Jan 2025 16:55:21 +0000 Subject: [PATCH] feat: Add credential only node for Microsoft Azure Monitor (#12645) --- ...rosoftAzureMonitorOAuth2Api.credentials.ts | 77 +++++++++++++++++++ .../nodes/HttpRequest/GenericFunctions.ts | 3 + packages/nodes-base/package.json | 1 + 3 files changed, 81 insertions(+) create mode 100644 packages/nodes-base/credentials/MicrosoftAzureMonitorOAuth2Api.credentials.ts diff --git a/packages/nodes-base/credentials/MicrosoftAzureMonitorOAuth2Api.credentials.ts b/packages/nodes-base/credentials/MicrosoftAzureMonitorOAuth2Api.credentials.ts new file mode 100644 index 0000000000..c0ae529bbe --- /dev/null +++ b/packages/nodes-base/credentials/MicrosoftAzureMonitorOAuth2Api.credentials.ts @@ -0,0 +1,77 @@ +import type { Icon, ICredentialType, INodeProperties } from 'n8n-workflow'; + +export class MicrosoftAzureMonitorOAuth2Api implements ICredentialType { + name = 'microsoftAzureMonitorOAuth2Api'; + + displayName = 'Microsoft Azure Monitor OAuth2 API'; + + extends = ['microsoftOAuth2Api']; + + documentationUrl = 'microsoftazuremonitor'; + + icon: Icon = 'file:icons/Microsoft.svg'; + + httpRequestNode = { + name: 'Microsoft Azure Monitor', + docsUrl: 'https://learn.microsoft.com/en-us/azure/azure-monitor/logs/api/request-format', + apiBaseUrlPlaceholder: 'https://api.loganalytics.azure.com/v1/workspaces/[workspace_id]/query', + }; + + properties: INodeProperties[] = [ + { + displayName: 'Tenant ID', + required: true, + name: 'tenantId', + type: 'string', + default: '', + }, + { + displayName: 'Resource', + name: 'resource', + type: 'options', + options: [ + { + name: 'Azure Log Analytics', + value: 'https://api.loganalytics.azure.com', + }, + { + name: 'Log Analytics', + value: 'https://api.loganalytics.io', + }, + { + name: 'Azure Monitor', + value: 'https://monitor.azure.com', + }, + { + name: 'Azure Management', + value: 'https://management.azure.com', + }, + ], + default: 'https://api.loganalytics.azure.com', + }, + { + displayName: 'Authorization URL', + name: 'authUrl', + type: 'hidden', + default: '=https://login.microsoftonline.com/{{$self["tenantId"]}}/oauth2/authorize', + }, + { + displayName: 'Access Token URL', + name: 'accessTokenUrl', + type: 'hidden', + default: '=https://login.microsoftonline.com/{{$self["tenantId"]}}/oauth2/token', + }, + { + displayName: 'Auth URI Query Parameters', + name: 'authQueryParameters', + type: 'hidden', + default: '=resource={{$self["resource"]}}', + }, + { + displayName: 'Scope', + name: 'scope', + type: 'hidden', + default: '', + }, + ]; +} diff --git a/packages/nodes-base/nodes/HttpRequest/GenericFunctions.ts b/packages/nodes-base/nodes/HttpRequest/GenericFunctions.ts index 76e242adfd..286ce435b5 100644 --- a/packages/nodes-base/nodes/HttpRequest/GenericFunctions.ts +++ b/packages/nodes-base/nodes/HttpRequest/GenericFunctions.ts @@ -176,6 +176,9 @@ export const getOAuth2AdditionalParameters = (nodeCredentialType: string) => { mauticOAuth2Api: { includeCredentialsOnRefreshOnBody: true, }, + microsoftAzureMonitorOAuth2Api: { + tokenExpiredStatusCode: 403, + }, microsoftDynamicsOAuth2Api: { property: 'id_token', }, diff --git a/packages/nodes-base/package.json b/packages/nodes-base/package.json index a48736238b..9a42eae713 100644 --- a/packages/nodes-base/package.json +++ b/packages/nodes-base/package.json @@ -217,6 +217,7 @@ "dist/credentials/MetabaseApi.credentials.js", "dist/credentials/MessageBirdApi.credentials.js", "dist/credentials/MetabaseApi.credentials.js", + "dist/credentials/MicrosoftAzureMonitorOAuth2Api.credentials.js", "dist/credentials/MicrosoftDynamicsOAuth2Api.credentials.js", "dist/credentials/MicrosoftEntraOAuth2Api.credentials.js", "dist/credentials/MicrosoftExcelOAuth2Api.credentials.js",