diff --git a/packages/nodes-base/credentials/AlienVaultApi.credentials.ts b/packages/nodes-base/credentials/AlienVaultApi.credentials.ts new file mode 100644 index 0000000000..90c8d32774 --- /dev/null +++ b/packages/nodes-base/credentials/AlienVaultApi.credentials.ts @@ -0,0 +1,41 @@ +import type { + IAuthenticateGeneric, + ICredentialTestRequest, + ICredentialType, + INodeProperties, +} from 'n8n-workflow'; + +export class AlienVaultApi implements ICredentialType { + name = 'alienVaultApi'; + + displayName = 'AlienVault API'; + + icon = 'file:icons/AlienVault.png'; + + properties: INodeProperties[] = [ + { + displayName: 'OTX Key', + name: 'accessToken', + type: 'string', + typeOptions: { password: true }, + required: true, + default: '', + }, + ]; + + authenticate: IAuthenticateGeneric = { + type: 'generic', + properties: { + headers: { + 'X-OTX-API-KEY': '={{$credentials.accessToken}}', + }, + }, + }; + + test: ICredentialTestRequest = { + request: { + baseURL: 'https://otx.alienvault.com', + url: '/api/v1/user/me', + }, + }; +} diff --git a/packages/nodes-base/credentials/Auth0ManagementApi.credentials.ts b/packages/nodes-base/credentials/Auth0ManagementApi.credentials.ts new file mode 100644 index 0000000000..705c5c5f5e --- /dev/null +++ b/packages/nodes-base/credentials/Auth0ManagementApi.credentials.ts @@ -0,0 +1,85 @@ +import type { + IAuthenticateGeneric, + ICredentialDataDecryptedObject, + ICredentialTestRequest, + ICredentialType, + IHttpRequestHelper, + INodeProperties, +} from 'n8n-workflow'; + +export class Auth0ManagementApi implements ICredentialType { + name = 'auth0ManagementApi'; + + displayName = 'Auth0 Management API'; + + icon = 'file:icons/Auth0.svg'; + + properties: INodeProperties[] = [ + { + displayName: 'Session Token', + name: 'sessionToken', + type: 'hidden', + typeOptions: { + expirable: true, + }, + default: '', + }, + { + displayName: 'Auth0 Domain', + name: 'domain', + type: 'string', + required: true, + default: 'your-domain.eu.auth0.com', + }, + { + displayName: 'Client ID', + name: 'clientId', + type: 'string', + required: true, + default: '', + }, + { + displayName: 'Client Secret', + name: 'clientSecret', + type: 'string', + typeOptions: { + password: true, + }, + required: true, + default: '', + }, + ]; + + async preAuthentication(this: IHttpRequestHelper, credentials: ICredentialDataDecryptedObject) { + const { access_token } = (await this.helpers.httpRequest({ + method: 'POST', + url: `https://${credentials.domain}/oauth/token`, + body: { + client_id: credentials.clientId, + client_secret: credentials.clientSecret, + audience: `https://${credentials.domain}/api/v2/`, + grant_type: 'client_credentials', + }, + headers: { + 'Content-Type': 'application/json', + }, + })) as { access_token: string }; + return { sessionToken: access_token }; + } + + authenticate: IAuthenticateGeneric = { + type: 'generic', + properties: { + headers: { + Authorization: '=Bearer {{$credentials.sessionToken}}', + }, + }, + }; + + test: ICredentialTestRequest = { + request: { + baseURL: '=https://{{$credentials.domain}}', + url: '/api/v2/clients', + }, + }; +} diff --git a/packages/nodes-base/credentials/Aws.credentials.ts b/packages/nodes-base/credentials/Aws.credentials.ts index b7e8067d11..73638b762f 100644 --- a/packages/nodes-base/credentials/Aws.credentials.ts +++ b/packages/nodes-base/credentials/Aws.credentials.ts @@ -134,7 +134,7 @@ export class Aws implements ICredentialType { documentationUrl = 'aws'; - icon = 'file:AWS.svg'; + icon = 'file:icons/AWS.svg'; properties: INodeProperties[] = [ { diff --git a/packages/nodes-base/credentials/CarbonBlackApi.credentials.ts b/packages/nodes-base/credentials/CarbonBlackApi.credentials.ts new file mode 100644 index 0000000000..8994375e8a --- /dev/null +++ b/packages/nodes-base/credentials/CarbonBlackApi.credentials.ts @@ -0,0 +1,45 @@ +import type { IAuthenticateGeneric, ICredentialType, INodeProperties } from 'n8n-workflow'; + +export class CarbonBlackApi implements ICredentialType { + name = 'carbonBlackApi'; + + displayName = 'Carbon Black API'; + + icon = 'file:icons/vmware.svg'; + + documentationUrl = 'carbonblack'; + + properties: INodeProperties[] = [ + { + displayName: 'URL', + name: 'apiUrl', + type: 'string', + placeholder: 'https://defense.conferdeploy.net/', + default: '', + }, + { + displayName: 'Access Token', + name: 'accessToken', + type: 'string', + typeOptions: { password: true }, + required: true, + default: '', + }, + ]; + + authenticate: IAuthenticateGeneric = { + type: 'generic', + properties: { + headers: { + 'X-Auth-Token': '={{$credentials.accessToken}}', + }, + }, + }; + + // test: ICredentialTestRequest = { + // request: { + // baseURL: '={{$credentials.apiUrl}}', + // url: 'integrationServices/v3/auditlogs', + // }, + // }; +} diff --git a/packages/nodes-base/credentials/CiscoMerakiApi.credentials.ts b/packages/nodes-base/credentials/CiscoMerakiApi.credentials.ts new file mode 100644 index 0000000000..570dd43c68 --- /dev/null +++ b/packages/nodes-base/credentials/CiscoMerakiApi.credentials.ts @@ -0,0 +1,36 @@ +import type { IAuthenticateGeneric, ICredentialType, INodeProperties } from 'n8n-workflow'; + +export class CiscoMerakiApi implements ICredentialType { + name = 'ciscoMerakiApi'; + + displayName = 'Cisco Meraki API'; + + icon = 'file:icons/Cisco.svg'; + + properties: INodeProperties[] = [ + { + displayName: 'API Key', + name: 'apiKey', + type: 'string', + typeOptions: { password: true }, + required: true, + default: '', + }, + ]; + + authenticate: IAuthenticateGeneric = { + type: 'generic', + properties: { + headers: { + 'X-Cisco-Meraki-API-Key': '={{$credentials.apiKey}}', + }, + }, + }; + + // test: ICredentialTestRequest = { + // request: { + // baseURL: 'https://api.meraki.com/api/v1', + // url: '/organizations', + // }, + // }; +} diff --git a/packages/nodes-base/credentials/CiscoSecureEndpointApi.credentials.ts b/packages/nodes-base/credentials/CiscoSecureEndpointApi.credentials.ts new file mode 100644 index 0000000000..e0400097db --- /dev/null +++ b/packages/nodes-base/credentials/CiscoSecureEndpointApi.credentials.ts @@ -0,0 +1,115 @@ +import type { + ICredentialDataDecryptedObject, + ICredentialTestRequest, + ICredentialType, + IHttpRequestOptions, + INodeProperties, +} from 'n8n-workflow'; + +import axios from 'axios'; + +export class CiscoSecureEndpointApi implements ICredentialType { + name = 'ciscoSecureEndpointApi'; + + displayName = 'Cisco Secure Endpoint (AMP) API'; + + icon = 'file:icons/Cisco.svg'; + + properties: INodeProperties[] = [ + { + displayName: 'Region', + name: 'region', + type: 'options', + options: [ + { + name: 'Asia Pacific, Japan, and China', + value: 'apjc.amp', + }, + { + name: 'Europe', + value: 'eu.amp', + }, + { + name: 'North America', + value: 'amp', + }, + ], + default: 'amp', + }, + { + displayName: 'Client ID', + name: 'clientId', + type: 'string', + default: '', + required: true, + }, + { + displayName: 'Client Secret', + name: 'clientSecret', + type: 'string', + typeOptions: { + password: true, + }, + default: '', + required: true, + }, + ]; + + async authenticate( + credentials: ICredentialDataDecryptedObject, + requestOptions: IHttpRequestOptions, + ): Promise { + const clientId = credentials.clientId as string; + const clientSecret = credentials.clientSecret as string; + const region = credentials.region as string; + + const secureXToken = await axios({ + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + Accept: 'application/json', + }, + auth: { + username: clientId, + password: clientSecret, + }, + method: 'POST', + data: new URLSearchParams({ + grant_type: 'client_credentials', + }).toString(), + url: `https://visibility.${region}.cisco.com/iroh/oauth2/token`, + }); + + const secureEndpointToken = await axios({ + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + Accept: 'application/json', + Authorization: `Bearer ${secureXToken.data.access_token}`, + }, + method: 'POST', + data: new URLSearchParams({ + grant_type: 'client_credentials', + }).toString(), + url: `https://api.${region}.cisco.com/v3/access_tokens`, + }); + + const requestOptionsWithAuth: IHttpRequestOptions = { + ...requestOptions, + headers: { + ...requestOptions.headers, + Authorization: `Bearer ${secureEndpointToken.data.access_token}`, + }, + }; + + return requestOptionsWithAuth; + } + + test: ICredentialTestRequest = { + request: { + baseURL: '=https://api.{{$credentials.region}}.cisco.com', + url: '/v3/organizations', + qs: { + size: 10, + }, + }, + }; +} diff --git a/packages/nodes-base/credentials/CiscoUmbrellaApi.credentials.ts b/packages/nodes-base/credentials/CiscoUmbrellaApi.credentials.ts new file mode 100644 index 0000000000..9c70defa03 --- /dev/null +++ b/packages/nodes-base/credentials/CiscoUmbrellaApi.credentials.ts @@ -0,0 +1,80 @@ +import type { + IAuthenticateGeneric, + ICredentialDataDecryptedObject, + ICredentialTestRequest, + ICredentialType, + IHttpRequestHelper, + INodeProperties, +} from 'n8n-workflow'; + +export class CiscoUmbrellaApi implements ICredentialType { + name = 'ciscoUmbrellaApi'; + + displayName = 'Cisco Umbrella API'; + + icon = 'file:icons/Cisco.svg'; + + properties: INodeProperties[] = [ + { + displayName: 'Session Token', + name: 'sessionToken', + type: 'hidden', + typeOptions: { + expirable: true, + }, + default: '', + }, + { + displayName: 'API Key', + name: 'apiKey', + // eslint-disable-next-line n8n-nodes-base/cred-class-field-unobscured-sensitive-input + type: 'string', + required: true, + default: '', + }, + { + displayName: 'Secret', + name: 'secret', + type: 'string', + typeOptions: { + password: true, + }, + required: true, + default: '', + }, + ]; + + async preAuthentication(this: IHttpRequestHelper, credentials: ICredentialDataDecryptedObject) { + const url = 'https://api.umbrella.com'; + const { access_token } = (await this.helpers.httpRequest({ + method: 'POST', + url: `${ + url.endsWith('/') ? url.slice(0, -1) : url + }/auth/v2/token?grant_type=client_credentials`, + auth: { + username: credentials.apiKey as string, + password: credentials.secret as string, + }, + headers: { + 'Content-Type': 'x-www-form-urlencoded', + }, + })) as { access_token: string }; + return { sessionToken: access_token }; + } + + authenticate: IAuthenticateGeneric = { + type: 'generic', + properties: { + headers: { + Authorization: '=Bearer {{$credentials.sessionToken}}', + }, + }, + }; + + test: ICredentialTestRequest = { + request: { + baseURL: 'https://api.umbrella.com', + url: '/users', + }, + }; +} diff --git a/packages/nodes-base/credentials/CiscoWebexOAuth2Api.credentials.ts b/packages/nodes-base/credentials/CiscoWebexOAuth2Api.credentials.ts index aa2b9ed6c5..3784f7f6aa 100644 --- a/packages/nodes-base/credentials/CiscoWebexOAuth2Api.credentials.ts +++ b/packages/nodes-base/credentials/CiscoWebexOAuth2Api.credentials.ts @@ -9,6 +9,8 @@ export class CiscoWebexOAuth2Api implements ICredentialType { documentationUrl = 'ciscowebex'; + icon = 'file:icons/Cisco.svg'; + properties: INodeProperties[] = [ { displayName: 'Grant Type', diff --git a/packages/nodes-base/credentials/CrowdStrikeOAuth2Api.credentials.ts b/packages/nodes-base/credentials/CrowdStrikeOAuth2Api.credentials.ts new file mode 100644 index 0000000000..69786820a3 --- /dev/null +++ b/packages/nodes-base/credentials/CrowdStrikeOAuth2Api.credentials.ts @@ -0,0 +1,82 @@ +import type { + IAuthenticateGeneric, + ICredentialDataDecryptedObject, + ICredentialTestRequest, + ICredentialType, + IHttpRequestHelper, + INodeProperties, +} from 'n8n-workflow'; + +export class CrowdStrikeOAuth2Api implements ICredentialType { + name = 'crowdStrikeOAuth2Api'; + + displayName = 'CrowdStrike OAuth2 API'; + + icon = 'file:icons/CrowdStrike.svg'; + + properties: INodeProperties[] = [ + { + displayName: 'Session Token', + name: 'sessionToken', + type: 'hidden', + typeOptions: { + expirable: true, + }, + default: '', + }, + { + displayName: 'URL', + name: 'url', + type: 'string', + required: true, + default: '', + }, + { + displayName: 'Client ID', + name: 'clientId', + type: 'string', + required: true, + default: '', + }, + { + displayName: 'Client Secret', + name: 'clientSecret', + type: 'string', + typeOptions: { + password: true, + }, + required: true, + default: '', + }, + ]; + + async preAuthentication(this: IHttpRequestHelper, credentials: ICredentialDataDecryptedObject) { + const url = credentials.url as string; + const { access_token } = (await this.helpers.httpRequest({ + method: 'POST', + url: `${url.endsWith('/') ? url.slice(0, -1) : url}/oauth2/token?client_id=${ + credentials.clientId + }&client_secret=${credentials.clientSecret}`, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + })) as { access_token: string }; + return { sessionToken: access_token }; + } + + authenticate: IAuthenticateGeneric = { + type: 'generic', + properties: { + headers: { + Authorization: '=Bearer {{$credentials.sessionToken}}', + }, + }, + }; + + test: ICredentialTestRequest = { + request: { + baseURL: '={{$credentials?.url}}', + url: 'user-management/queries/users/v1', + }, + }; +} diff --git a/packages/nodes-base/credentials/F5BigIpApi.credentials.ts b/packages/nodes-base/credentials/F5BigIpApi.credentials.ts new file mode 100644 index 0000000000..34ff08afd0 --- /dev/null +++ b/packages/nodes-base/credentials/F5BigIpApi.credentials.ts @@ -0,0 +1,37 @@ +import type { IAuthenticateGeneric, ICredentialType, INodeProperties } from 'n8n-workflow'; + +export class F5BigIpApi implements ICredentialType { + name = 'f5BigIpApi'; + + displayName = 'F5 Big-IP API'; + + icon = 'file:icons/F5.svg'; + + properties: INodeProperties[] = [ + { + displayName: 'Username', + name: 'username', + type: 'string', + default: '', + required: true, + }, + { + displayName: 'Password', + name: 'password', + type: 'string', + typeOptions: { password: true }, + default: '', + required: true, + }, + ]; + + authenticate: IAuthenticateGeneric = { + type: 'generic', + properties: { + auth: { + username: '={{$credentials.username}}', + password: '={{$credentials.password}}', + }, + }, + }; +} diff --git a/packages/nodes-base/credentials/FortiGateApi.credentials.ts b/packages/nodes-base/credentials/FortiGateApi.credentials.ts new file mode 100644 index 0000000000..3ed7d6d67c --- /dev/null +++ b/packages/nodes-base/credentials/FortiGateApi.credentials.ts @@ -0,0 +1,29 @@ +import type { IAuthenticateGeneric, ICredentialType, INodeProperties } from 'n8n-workflow'; + +export class FortiGateApi implements ICredentialType { + name = 'fortiGateApi'; + + displayName = 'Fortinet FortiGate API'; + + icon = 'file:icons/Fortinet.svg'; + + properties: INodeProperties[] = [ + { + displayName: 'Access Token', + name: 'accessToken', + type: 'string', + typeOptions: { password: true }, + default: '', + required: true, + }, + ]; + + authenticate: IAuthenticateGeneric = { + type: 'generic', + properties: { + qs: { + access_token: '={{$credentials.accessToken}}', + }, + }, + }; +} diff --git a/packages/nodes-base/credentials/GoogleApi.credentials.ts b/packages/nodes-base/credentials/GoogleApi.credentials.ts index 2ecf1ec67c..90db20c9df 100644 --- a/packages/nodes-base/credentials/GoogleApi.credentials.ts +++ b/packages/nodes-base/credentials/GoogleApi.credentials.ts @@ -20,7 +20,7 @@ export class GoogleApi implements ICredentialType { documentationUrl = 'google/service-account'; - icon = 'file:Google.svg'; + icon = 'file:icons/Google.svg'; properties: INodeProperties[] = [ { diff --git a/packages/nodes-base/credentials/GoogleOAuth2Api.credentials.ts b/packages/nodes-base/credentials/GoogleOAuth2Api.credentials.ts index a99877e331..821bf6e770 100644 --- a/packages/nodes-base/credentials/GoogleOAuth2Api.credentials.ts +++ b/packages/nodes-base/credentials/GoogleOAuth2Api.credentials.ts @@ -9,7 +9,7 @@ export class GoogleOAuth2Api implements ICredentialType { documentationUrl = 'google/oauth-generic'; - icon = 'file:Google.svg'; + icon = 'file:icons/Google.svg'; properties: INodeProperties[] = [ { diff --git a/packages/nodes-base/credentials/HybridAnalysisApi.credentials.ts b/packages/nodes-base/credentials/HybridAnalysisApi.credentials.ts new file mode 100644 index 0000000000..da2029602d --- /dev/null +++ b/packages/nodes-base/credentials/HybridAnalysisApi.credentials.ts @@ -0,0 +1,29 @@ +import type { IAuthenticateGeneric, ICredentialType, INodeProperties } from 'n8n-workflow'; + +export class HybridAnalysisApi implements ICredentialType { + name = 'hybridAnalysisApi'; + + displayName = 'Hybrid Analysis API'; + + icon = 'file:icons/Hybrid.png'; + + properties: INodeProperties[] = [ + { + displayName: 'API Key', + name: 'apiKey', + type: 'string', + typeOptions: { password: true }, + required: true, + default: '', + }, + ]; + + authenticate: IAuthenticateGeneric = { + type: 'generic', + properties: { + headers: { + 'api-key': '={{$credentials.apiKey}}', + }, + }, + }; +} diff --git a/packages/nodes-base/credentials/ImpervaWafApi.credentials.ts b/packages/nodes-base/credentials/ImpervaWafApi.credentials.ts new file mode 100644 index 0000000000..51e4396a6d --- /dev/null +++ b/packages/nodes-base/credentials/ImpervaWafApi.credentials.ts @@ -0,0 +1,37 @@ +import type { IAuthenticateGeneric, ICredentialType, INodeProperties } from 'n8n-workflow'; + +export class ImpervaWafApi implements ICredentialType { + name = 'impervaWafApi'; + + displayName = 'Imperva WAF API'; + + icon = 'file:icons/Imperva.svg'; + + properties: INodeProperties[] = [ + { + displayName: 'API ID', + name: 'apiID', + type: 'string', + default: '', + required: true, + }, + { + displayName: 'API Key', + name: 'apiKey', + type: 'string', + typeOptions: { password: true }, + default: '', + required: true, + }, + ]; + + authenticate: IAuthenticateGeneric = { + type: 'generic', + properties: { + headers: { + 'x-API-Id': '={{$credentials.apiID}}', + 'x-API-Key': '={{$credentials.apiKey}}', + }, + }, + }; +} diff --git a/packages/nodes-base/credentials/KibanaApi.credentials.ts b/packages/nodes-base/credentials/KibanaApi.credentials.ts new file mode 100644 index 0000000000..8839b274f7 --- /dev/null +++ b/packages/nodes-base/credentials/KibanaApi.credentials.ts @@ -0,0 +1,60 @@ +import type { + IAuthenticateGeneric, + ICredentialTestRequest, + ICredentialType, + INodeProperties, +} from 'n8n-workflow'; + +export class KibanaApi implements ICredentialType { + name = 'kibanaApi'; + + displayName = 'Kibana API'; + + icon = 'file:icons/Kibana.svg'; + + properties: INodeProperties[] = [ + { + displayName: 'URL', + name: 'url', + type: 'string', + required: true, + default: '', + placeholder: 'http://localhost:5601', + }, + { + displayName: 'Username', + name: 'username', + type: 'string', + required: true, + default: '', + }, + { + displayName: 'Password', + name: 'password', + type: 'string', + typeOptions: { password: true }, + required: true, + default: '', + }, + ]; + + authenticate: IAuthenticateGeneric = { + type: 'generic', + properties: { + headers: { + 'kbn-xsrf': true, + }, + auth: { + username: '={{$credentials.username}}', + password: '={{$credentials.password}}', + }, + }, + }; + + test: ICredentialTestRequest = { + request: { + baseURL: '={{$credentials.url}}', + url: '/api/features', + }, + }; +} diff --git a/packages/nodes-base/credentials/MicrosoftEntraOAuth2Api.credentials.ts b/packages/nodes-base/credentials/MicrosoftEntraOAuth2Api.credentials.ts new file mode 100644 index 0000000000..018179e9e1 --- /dev/null +++ b/packages/nodes-base/credentials/MicrosoftEntraOAuth2Api.credentials.ts @@ -0,0 +1,23 @@ +import type { ICredentialType, INodeProperties } from 'n8n-workflow'; + +export class MicrosoftEntraOAuth2Api implements ICredentialType { + name = 'microsoftEntraOAuth2Api'; + + displayName = 'Microsoft Entra ID (Azure Active Directory) API'; + + extends = ['microsoftOAuth2Api']; + + icon = 'file:icons/Azure.svg'; + + documentationUrl = 'microsoft'; + + properties: INodeProperties[] = [ + { + displayName: 'Scope', + name: 'scope', + type: 'hidden', + default: + 'openid offline_access AccessReview.ReadWrite.All Directory.ReadWrite.All NetworkAccessPolicy.ReadWrite.All DelegatedAdminRelationship.ReadWrite.All EntitlementManagement.ReadWrite.All', + }, + ]; +} diff --git a/packages/nodes-base/credentials/MicrosoftOAuth2Api.credentials.ts b/packages/nodes-base/credentials/MicrosoftOAuth2Api.credentials.ts index 1dcdf116d9..58425dbe39 100644 --- a/packages/nodes-base/credentials/MicrosoftOAuth2Api.credentials.ts +++ b/packages/nodes-base/credentials/MicrosoftOAuth2Api.credentials.ts @@ -5,7 +5,7 @@ export class MicrosoftOAuth2Api implements ICredentialType { extends = ['oAuth2Api']; - icon = 'file:Microsoft.svg'; + icon = 'file:icons/Microsoft.svg'; displayName = 'Microsoft OAuth2 API'; diff --git a/packages/nodes-base/credentials/MistApi.credentials.ts b/packages/nodes-base/credentials/MistApi.credentials.ts new file mode 100644 index 0000000000..af3db226d0 --- /dev/null +++ b/packages/nodes-base/credentials/MistApi.credentials.ts @@ -0,0 +1,60 @@ +import type { + IAuthenticateGeneric, + ICredentialTestRequest, + ICredentialType, + INodeProperties, +} from 'n8n-workflow'; + +export class MistApi implements ICredentialType { + name = 'mistApi'; + + displayName = 'Mist API'; + + icon = 'file:icons/Mist.svg'; + + documentationUrl = 'mist'; + + properties: INodeProperties[] = [ + { + displayName: 'API Token', + name: 'token', + type: 'string', + typeOptions: { password: true }, + required: true, + default: '', + }, + { + displayName: 'Region', + name: 'region', + type: 'options', + options: [ + { + name: 'Europe', + value: 'eu', + }, + { + name: 'Global', + value: 'global', + }, + ], + default: 'eu', + }, + ]; + + authenticate: IAuthenticateGeneric = { + type: 'generic', + properties: { + headers: { + Authorization: '=Token {{$credentials.token}}', + }, + }, + }; + + test: ICredentialTestRequest = { + request: { + baseURL: '=https://api{{$credentials.region === "eu" ? ".eu" : ""}}.mist.com', + url: '/api/v1/self', + method: 'GET', + }, + }; +} diff --git a/packages/nodes-base/credentials/OktaApi.credentials.ts b/packages/nodes-base/credentials/OktaApi.credentials.ts new file mode 100644 index 0000000000..0f826d6d8a --- /dev/null +++ b/packages/nodes-base/credentials/OktaApi.credentials.ts @@ -0,0 +1,49 @@ +import type { + IAuthenticateGeneric, + ICredentialTestRequest, + ICredentialType, + INodeProperties, +} from 'n8n-workflow'; + +export class OktaApi implements ICredentialType { + name = 'oktaApi'; + + displayName = 'Okta API'; + + icon = 'file:icons/Okta.svg'; + + properties: INodeProperties[] = [ + { + displayName: 'URL', + name: 'url', + type: 'string', + required: true, + default: '', + placeholder: 'https://dev-123456.okta.com', + }, + { + displayName: 'SSWS Access Token', + name: 'accessToken', + type: 'string', + typeOptions: { password: true }, + required: true, + default: '', + }, + ]; + + authenticate: IAuthenticateGeneric = { + type: 'generic', + properties: { + headers: { + Authorization: '=SSWS {{$credentials.accessToken}}', + }, + }, + }; + + test: ICredentialTestRequest = { + request: { + baseURL: '={{$credentials.url}}', + url: '/api/v1/api-tokens', + }, + }; +} diff --git a/packages/nodes-base/credentials/OpenCTIApi.credentials.ts b/packages/nodes-base/credentials/OpenCTIApi.credentials.ts new file mode 100644 index 0000000000..661d30a953 --- /dev/null +++ b/packages/nodes-base/credentials/OpenCTIApi.credentials.ts @@ -0,0 +1,29 @@ +import type { IAuthenticateGeneric, ICredentialType, INodeProperties } from 'n8n-workflow'; + +export class OpenCTIApi implements ICredentialType { + name = 'openCtiApi'; + + displayName = 'OpenCTI API'; + + icon = 'file:icons/OpenCTI.png'; + + properties: INodeProperties[] = [ + { + displayName: 'API Key', + name: 'apiKey', + type: 'string', + typeOptions: { password: true }, + default: '', + required: true, + }, + ]; + + authenticate: IAuthenticateGeneric = { + type: 'generic', + properties: { + headers: { + Authorization: '=Bearer {{$credentials.apiKey}}', + }, + }, + }; +} diff --git a/packages/nodes-base/credentials/QRadarApi.credentials.ts b/packages/nodes-base/credentials/QRadarApi.credentials.ts new file mode 100644 index 0000000000..5301f8116c --- /dev/null +++ b/packages/nodes-base/credentials/QRadarApi.credentials.ts @@ -0,0 +1,31 @@ +import type { IAuthenticateGeneric, ICredentialType, INodeProperties } from 'n8n-workflow'; + +export class QRadarApi implements ICredentialType { + name = 'qRadarApi'; + + displayName = 'QRadar API'; + + icon = 'file:icons/IBM.svg'; + + documentationUrl = 'qradar'; + + properties: INodeProperties[] = [ + { + displayName: 'API Key', + name: 'apiKey', + type: 'string', + typeOptions: { password: true }, + required: true, + default: '', + }, + ]; + + authenticate: IAuthenticateGeneric = { + type: 'generic', + properties: { + headers: { + SEC: '={{$credentials.apiKey}}', + }, + }, + }; +} diff --git a/packages/nodes-base/credentials/QualysApi.credentials.ts b/packages/nodes-base/credentials/QualysApi.credentials.ts new file mode 100644 index 0000000000..001a1d4dd5 --- /dev/null +++ b/packages/nodes-base/credentials/QualysApi.credentials.ts @@ -0,0 +1,56 @@ +import type { IAuthenticateGeneric, ICredentialType, INodeProperties } from 'n8n-workflow'; + +export class QualysApi implements ICredentialType { + name = 'qualysApi'; + + displayName = 'Qualys API'; + + icon = 'file:icons/Qualys.svg'; + + documentationUrl = 'qualys'; + + properties: INodeProperties[] = [ + { + displayName: 'Username', + name: 'username', + type: 'string', + default: '', + required: true, + }, + { + displayName: 'Password', + name: 'password', + type: 'string', + typeOptions: { password: true }, + default: '', + required: true, + }, + { + displayName: 'Requested With', + name: 'requestedWith', + type: 'string', + default: 'n8n application', + description: 'User description, like a user agent', + }, + ]; + + authenticate: IAuthenticateGeneric = { + type: 'generic', + properties: { + headers: { + 'X-Requested-With': '={{$credentials.requestedWith}}', + }, + auth: { + username: '={{$credentials.username}}', + password: '={{$credentials.password}}', + }, + }, + }; + + // test: ICredentialTestRequest = { + // request: { + // baseURL: 'https://qualysapi.qualys.com', + // url: '/api/2.0/fo/asset/host/?action=list', + // }, + // }; +} diff --git a/packages/nodes-base/credentials/RecordedFutureApi.credentials.ts b/packages/nodes-base/credentials/RecordedFutureApi.credentials.ts new file mode 100644 index 0000000000..bca6c952ac --- /dev/null +++ b/packages/nodes-base/credentials/RecordedFutureApi.credentials.ts @@ -0,0 +1,38 @@ +import type { IAuthenticateGeneric, ICredentialType, INodeProperties } from 'n8n-workflow'; + +export class RecordedFutureApi implements ICredentialType { + name = 'recordedFutureApi'; + + displayName = 'Recorded Future API'; + + documentationUrl = 'recordedfuture'; + + icon = 'file:icons/RecordedFuture.svg'; + + properties: INodeProperties[] = [ + { + displayName: 'Access Token', + name: 'apiKey', + type: 'string', + typeOptions: { password: true }, + required: true, + default: '', + }, + ]; + + authenticate: IAuthenticateGeneric = { + type: 'generic', + properties: { + headers: { + 'X-RFToken': '={{$credentials.accessToken}}', + }, + }, + }; + + // test: ICredentialTestRequest = { + // request: { + // baseURL: 'https://api.recordedfuture.com/v2', + // url: '/alert/search?limit=1', + // }, + // }; +} diff --git a/packages/nodes-base/credentials/SekoiaApi.credentials.ts b/packages/nodes-base/credentials/SekoiaApi.credentials.ts new file mode 100644 index 0000000000..33b8fb3bea --- /dev/null +++ b/packages/nodes-base/credentials/SekoiaApi.credentials.ts @@ -0,0 +1,31 @@ +import type { IAuthenticateGeneric, ICredentialType, INodeProperties } from 'n8n-workflow'; + +export class SekoiaApi implements ICredentialType { + name = 'sekoiaApi'; + + displayName = 'Sekoia API'; + + icon = 'file:icons/Sekoia.svg'; + + documentationUrl = 'sekoia'; + + properties: INodeProperties[] = [ + { + displayName: 'API Key', + name: 'apiKey', + type: 'string', + typeOptions: { password: true }, + required: true, + default: '', + }, + ]; + + authenticate: IAuthenticateGeneric = { + type: 'generic', + properties: { + headers: { + Authorization: '=Bearer {{$credentials.apiKey}}', + }, + }, + }; +} diff --git a/packages/nodes-base/credentials/ShufflerApi.credentials.ts b/packages/nodes-base/credentials/ShufflerApi.credentials.ts new file mode 100644 index 0000000000..0c4014ee52 --- /dev/null +++ b/packages/nodes-base/credentials/ShufflerApi.credentials.ts @@ -0,0 +1,44 @@ +import type { + IAuthenticateGeneric, + ICredentialTestRequest, + ICredentialType, + INodeProperties, +} from 'n8n-workflow'; + +export class ShufflerApi implements ICredentialType { + name = 'shufflerApi'; + + displayName = 'Shuffler API'; + + icon = 'file:icons/Shuffler.svg'; + + documentationUrl = 'shuffler'; + + properties: INodeProperties[] = [ + { + displayName: 'API Key', + name: 'apiKey', + type: 'string', + typeOptions: { password: true }, + required: true, + default: '', + }, + ]; + + authenticate: IAuthenticateGeneric = { + type: 'generic', + properties: { + headers: { + Authorization: '=Bearer {{$credentials.apiKey}}', + }, + }, + }; + + test: ICredentialTestRequest = { + request: { + baseURL: 'https://shuffler.io/api', + url: '/v1/users/getusers', + method: 'GET', + }, + }; +} diff --git a/packages/nodes-base/credentials/TrellixEpoApi.credentials.ts b/packages/nodes-base/credentials/TrellixEpoApi.credentials.ts new file mode 100644 index 0000000000..4048bca44a --- /dev/null +++ b/packages/nodes-base/credentials/TrellixEpoApi.credentials.ts @@ -0,0 +1,37 @@ +import type { IAuthenticateGeneric, ICredentialType, INodeProperties } from 'n8n-workflow'; + +export class TrellixEpoApi implements ICredentialType { + name = 'trellixEpoApi'; + + displayName = 'Trellix (McAfee) ePolicy Orchestrator API'; + + icon = 'file:icons/Trellix.svg'; + + properties: INodeProperties[] = [ + { + displayName: 'Username', + name: 'username', + type: 'string', + default: '', + required: true, + }, + { + displayName: 'Password', + name: 'password', + type: 'string', + typeOptions: { password: true }, + default: '', + required: true, + }, + ]; + + authenticate: IAuthenticateGeneric = { + type: 'generic', + properties: { + auth: { + username: '={{$credentials.username}}', + password: '={{$credentials.password}}', + }, + }, + }; +} diff --git a/packages/nodes-base/credentials/VirusTotalApi.credentials.ts b/packages/nodes-base/credentials/VirusTotalApi.credentials.ts new file mode 100644 index 0000000000..5c42221f3d --- /dev/null +++ b/packages/nodes-base/credentials/VirusTotalApi.credentials.ts @@ -0,0 +1,41 @@ +import type { + IAuthenticateGeneric, + ICredentialTestRequest, + ICredentialType, + INodeProperties, +} from 'n8n-workflow'; + +export class VirusTotalApi implements ICredentialType { + name = 'virusTotalApi'; + + displayName = 'Virus Total API'; + + icon = 'file:icons/VirusTotal.svg'; + + properties: INodeProperties[] = [ + { + displayName: 'API Token', + name: 'accessToken', + type: 'string', + typeOptions: { password: true }, + required: true, + default: '', + }, + ]; + + authenticate: IAuthenticateGeneric = { + type: 'generic', + properties: { + headers: { + 'x-apikey': '={{$credentials.accessToken}}', + }, + }, + }; + + test: ICredentialTestRequest = { + request: { + baseURL: 'https://www.virustotal.com/api/v3', + url: '/popular_threat_categories', + }, + }; +} diff --git a/packages/nodes-base/credentials/ZscalerZiaApi.credentials.ts b/packages/nodes-base/credentials/ZscalerZiaApi.credentials.ts new file mode 100644 index 0000000000..5fa2efed26 --- /dev/null +++ b/packages/nodes-base/credentials/ZscalerZiaApi.credentials.ts @@ -0,0 +1,137 @@ +import type { + IAuthenticateGeneric, + ICredentialDataDecryptedObject, + ICredentialTestRequest, + ICredentialType, + IHttpRequestHelper, + INodeProperties, +} from 'n8n-workflow'; + +export class ZscalerZiaApi implements ICredentialType { + name = 'zscalerZiaApi'; + + displayName = 'Zscaler ZIA API'; + + documentationUrl = 'zscaler'; + + icon = 'file:icons/Zscaler.svg'; + + properties: INodeProperties[] = [ + { + displayName: 'Cookie', + name: 'cookie', + type: 'hidden', + typeOptions: { + expirable: true, + }, + default: '', + }, + { + displayName: 'Base URL', + name: 'baseUrl', + type: 'string', + default: '', + placeholder: 'e.g. zsapi.zscalerthree.net', + required: true, + }, + { + displayName: 'Username', + name: 'username', + type: 'string', + default: '', + required: true, + }, + { + displayName: 'Password', + name: 'password', + type: 'string', + typeOptions: { password: true }, + default: '', + required: true, + }, + { + displayName: 'Api Key', + name: 'apiKey', + type: 'string', + typeOptions: { + password: true, + }, + default: '', + required: true, + }, + ]; + + async preAuthentication(this: IHttpRequestHelper, credentials: ICredentialDataDecryptedObject) { + const { baseUrl, username, password, apiKey } = credentials; + + const url = (baseUrl as string).endsWith('/') + ? (baseUrl as string).slice(0, -1) + : (baseUrl as string); + + const now = Date.now().toString(); + + const obfuscate = (key: string, timestamp: string) => { + const high = timestamp.substring(timestamp.length - 6); + let low = (parseInt(high) >> 1).toString(); + + let obfuscatedApiKey = ''; + while (low.length < 6) { + low = '0' + low; + } + + for (let i = 0; i < high.length; i++) { + obfuscatedApiKey += key.charAt(parseInt(high.charAt(i))); + } + for (let j = 0; j < low.length; j++) { + obfuscatedApiKey += key.charAt(parseInt(low.charAt(j)) + 2); + } + + return obfuscatedApiKey; + }; + + const response = await this.helpers.httpRequest({ + method: 'POST', + baseURL: `https://${url}`, + url: '/api/v1/authenticatedSession', + headers: { + 'Content-Type': 'application/json', + 'Cache-Control': 'no-cache', + }, + body: { + apiKey: obfuscate(apiKey as string, now), + username, + password, + timestamp: now, + }, + returnFullResponse: true, + }); + + const headers = response.headers; + + const cookie = (headers['set-cookie'] as string[]) + ?.find((entrt) => entrt.includes('JSESSIONID')) + ?.split(';') + ?.find((entry) => entry.includes('JSESSIONID')); + + if (!cookie) { + throw new Error('No cookie returned. Please check your credentials.'); + } + + return { cookie }; + } + + authenticate: IAuthenticateGeneric = { + type: 'generic', + properties: { + headers: { + Cookie: '={{$credentials.cookie}}', + }, + }, + }; + + test: ICredentialTestRequest = { + request: { + url: '=https://{{$credentials.baseUrl}}/api/v1/authSettings/exemptedUrls', + }, + }; +} diff --git a/packages/nodes-base/credentials/AWS.svg b/packages/nodes-base/credentials/icons/AWS.svg similarity index 100% rename from packages/nodes-base/credentials/AWS.svg rename to packages/nodes-base/credentials/icons/AWS.svg diff --git a/packages/nodes-base/credentials/icons/AlienVault.png b/packages/nodes-base/credentials/icons/AlienVault.png new file mode 100644 index 0000000000..c3982d6bf2 Binary files /dev/null and b/packages/nodes-base/credentials/icons/AlienVault.png differ diff --git a/packages/nodes-base/credentials/icons/Auth0.svg b/packages/nodes-base/credentials/icons/Auth0.svg new file mode 100644 index 0000000000..cf8aa7062e --- /dev/null +++ b/packages/nodes-base/credentials/icons/Auth0.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/nodes-base/credentials/icons/Azure.svg b/packages/nodes-base/credentials/icons/Azure.svg new file mode 100644 index 0000000000..e24e2189ce --- /dev/null +++ b/packages/nodes-base/credentials/icons/Azure.svg @@ -0,0 +1,27 @@ + + + Azure + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/nodes-base/credentials/icons/Cisco.svg b/packages/nodes-base/credentials/icons/Cisco.svg new file mode 100644 index 0000000000..b1f6ae27b1 --- /dev/null +++ b/packages/nodes-base/credentials/icons/Cisco.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + diff --git a/packages/nodes-base/credentials/icons/CrowdStrike.svg b/packages/nodes-base/credentials/icons/CrowdStrike.svg new file mode 100644 index 0000000000..1b2195a224 --- /dev/null +++ b/packages/nodes-base/credentials/icons/CrowdStrike.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/nodes-base/credentials/icons/F5.svg b/packages/nodes-base/credentials/icons/F5.svg new file mode 100644 index 0000000000..46c1a095da --- /dev/null +++ b/packages/nodes-base/credentials/icons/F5.svg @@ -0,0 +1,11 @@ + + + F5 Logo + + \ No newline at end of file diff --git a/packages/nodes-base/credentials/icons/Fortinet.svg b/packages/nodes-base/credentials/icons/Fortinet.svg new file mode 100644 index 0000000000..6224b4c6bb --- /dev/null +++ b/packages/nodes-base/credentials/icons/Fortinet.svg @@ -0,0 +1,7 @@ + + fortinet-logo-svg + + + \ No newline at end of file diff --git a/packages/nodes-base/credentials/Google.svg b/packages/nodes-base/credentials/icons/Google.svg similarity index 100% rename from packages/nodes-base/credentials/Google.svg rename to packages/nodes-base/credentials/icons/Google.svg diff --git a/packages/nodes-base/credentials/icons/Hybrid.png b/packages/nodes-base/credentials/icons/Hybrid.png new file mode 100644 index 0000000000..f7d4695e4b Binary files /dev/null and b/packages/nodes-base/credentials/icons/Hybrid.png differ diff --git a/packages/nodes-base/credentials/icons/IBM.svg b/packages/nodes-base/credentials/icons/IBM.svg new file mode 100644 index 0000000000..f8574f6286 --- /dev/null +++ b/packages/nodes-base/credentials/icons/IBM.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/nodes-base/credentials/icons/Imperva.svg b/packages/nodes-base/credentials/icons/Imperva.svg new file mode 100644 index 0000000000..73f19ccaf6 --- /dev/null +++ b/packages/nodes-base/credentials/icons/Imperva.svg @@ -0,0 +1,51 @@ + + diff --git a/packages/nodes-base/credentials/icons/Kibana.svg b/packages/nodes-base/credentials/icons/Kibana.svg new file mode 100644 index 0000000000..a81cff70d0 --- /dev/null +++ b/packages/nodes-base/credentials/icons/Kibana.svg @@ -0,0 +1,9 @@ + + + Kibana + + + + + + diff --git a/packages/nodes-base/credentials/Microsoft.svg b/packages/nodes-base/credentials/icons/Microsoft.svg similarity index 100% rename from packages/nodes-base/credentials/Microsoft.svg rename to packages/nodes-base/credentials/icons/Microsoft.svg diff --git a/packages/nodes-base/credentials/icons/Mist.svg b/packages/nodes-base/credentials/icons/Mist.svg new file mode 100644 index 0000000000..a0b9fcbe89 --- /dev/null +++ b/packages/nodes-base/credentials/icons/Mist.svg @@ -0,0 +1,111 @@ + + + + diff --git a/packages/nodes-base/credentials/icons/Okta.svg b/packages/nodes-base/credentials/icons/Okta.svg new file mode 100644 index 0000000000..0653992a71 --- /dev/null +++ b/packages/nodes-base/credentials/icons/Okta.svg @@ -0,0 +1,7 @@ + + + okta + + + + diff --git a/packages/nodes-base/credentials/icons/OpenCTI.png b/packages/nodes-base/credentials/icons/OpenCTI.png new file mode 100644 index 0000000000..0a85e2ff10 Binary files /dev/null and b/packages/nodes-base/credentials/icons/OpenCTI.png differ diff --git a/packages/nodes-base/credentials/icons/Qualys.svg b/packages/nodes-base/credentials/icons/Qualys.svg new file mode 100644 index 0000000000..cccb850db6 --- /dev/null +++ b/packages/nodes-base/credentials/icons/Qualys.svg @@ -0,0 +1,9 @@ + + qualys-svg + + + + \ No newline at end of file diff --git a/packages/nodes-base/credentials/icons/RecordedFuture.svg b/packages/nodes-base/credentials/icons/RecordedFuture.svg new file mode 100644 index 0000000000..65e5c76064 --- /dev/null +++ b/packages/nodes-base/credentials/icons/RecordedFuture.svg @@ -0,0 +1,42 @@ + + + + diff --git a/packages/nodes-base/credentials/icons/Sekoia.svg b/packages/nodes-base/credentials/icons/Sekoia.svg new file mode 100644 index 0000000000..5e5776aba1 --- /dev/null +++ b/packages/nodes-base/credentials/icons/Sekoia.svg @@ -0,0 +1,44 @@ + + + + + + diff --git a/packages/nodes-base/credentials/icons/Shuffler.svg b/packages/nodes-base/credentials/icons/Shuffler.svg new file mode 100644 index 0000000000..1024dd6a8d --- /dev/null +++ b/packages/nodes-base/credentials/icons/Shuffler.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/packages/nodes-base/credentials/icons/Trellix.svg b/packages/nodes-base/credentials/icons/Trellix.svg new file mode 100644 index 0000000000..e7be58a818 --- /dev/null +++ b/packages/nodes-base/credentials/icons/Trellix.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/nodes-base/credentials/icons/VirusTotal.svg b/packages/nodes-base/credentials/icons/VirusTotal.svg new file mode 100644 index 0000000000..3449afe23d --- /dev/null +++ b/packages/nodes-base/credentials/icons/VirusTotal.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/nodes-base/credentials/icons/Wazuh.png b/packages/nodes-base/credentials/icons/Wazuh.png new file mode 100644 index 0000000000..1254166bab Binary files /dev/null and b/packages/nodes-base/credentials/icons/Wazuh.png differ diff --git a/packages/nodes-base/credentials/icons/Zscaler.svg b/packages/nodes-base/credentials/icons/Zscaler.svg new file mode 100644 index 0000000000..cb38a9bc04 --- /dev/null +++ b/packages/nodes-base/credentials/icons/Zscaler.svg @@ -0,0 +1,9 @@ + + logo (34)-svg + + + + + \ No newline at end of file diff --git a/packages/nodes-base/credentials/icons/vmware.svg b/packages/nodes-base/credentials/icons/vmware.svg new file mode 100644 index 0000000000..2996b461a1 --- /dev/null +++ b/packages/nodes-base/credentials/icons/vmware.svg @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/packages/nodes-base/package.json b/packages/nodes-base/package.json index b1f75df8a9..71985ce854 100644 --- a/packages/nodes-base/package.json +++ b/packages/nodes-base/package.json @@ -41,10 +41,12 @@ "dist/credentials/AirtableApi.credentials.js", "dist/credentials/AirtableOAuth2Api.credentials.js", "dist/credentials/AirtableTokenApi.credentials.js", + "dist/credentials/AlienVaultApi.credentials.js", "dist/credentials/Amqp.credentials.js", "dist/credentials/ApiTemplateIoApi.credentials.js", "dist/credentials/AsanaApi.credentials.js", "dist/credentials/AsanaOAuth2Api.credentials.js", + "dist/credentials/Auth0ManagementApi.credentials.js", "dist/credentials/AutomizyApi.credentials.js", "dist/credentials/AutopilotApi.credentials.js", "dist/credentials/Aws.credentials.js", @@ -61,9 +63,13 @@ "dist/credentials/BubbleApi.credentials.js", "dist/credentials/CalApi.credentials.js", "dist/credentials/CalendlyApi.credentials.js", + "dist/credentials/CarbonBlackApi.credentials.js", "dist/credentials/ChargebeeApi.credentials.js", "dist/credentials/CircleCiApi.credentials.js", + "dist/credentials/CiscoMerakiApi.credentials.js", + "dist/credentials/CiscoSecureEndpointApi.credentials.js", "dist/credentials/CiscoWebexOAuth2Api.credentials.js", + "dist/credentials/CiscoUmbrellaApi.credentials.js", "dist/credentials/CitrixAdcApi.credentials.js", "dist/credentials/CloudflareApi.credentials.js", "dist/credentials/ClearbitApi.credentials.js", @@ -77,6 +83,7 @@ "dist/credentials/CopperApi.credentials.js", "dist/credentials/CortexApi.credentials.js", "dist/credentials/CrateDb.credentials.js", + "dist/credentials/CrowdStrikeOAuth2Api.credentials.js", "dist/credentials/CrowdDevApi.credentials.js", "dist/credentials/CustomerIoApi.credentials.js", "dist/credentials/DeepLApi.credentials.js", @@ -96,6 +103,7 @@ "dist/credentials/ERPNextApi.credentials.js", "dist/credentials/EventbriteApi.credentials.js", "dist/credentials/EventbriteOAuth2Api.credentials.js", + "dist/credentials/F5BigIpApi.credentials.js", "dist/credentials/FacebookGraphApi.credentials.js", "dist/credentials/FacebookGraphAppApi.credentials.js", "dist/credentials/FigmaApi.credentials.js", @@ -104,6 +112,7 @@ "dist/credentials/FormIoApi.credentials.js", "dist/credentials/FormstackApi.credentials.js", "dist/credentials/FormstackOAuth2Api.credentials.js", + "dist/credentials/FortiGateApi.credentials.js", "dist/credentials/FreshdeskApi.credentials.js", "dist/credentials/FreshserviceApi.credentials.js", "dist/credentials/FreshworksCrmApi.credentials.js", @@ -161,7 +170,9 @@ "dist/credentials/HubspotOAuth2Api.credentials.js", "dist/credentials/HumanticAiApi.credentials.js", "dist/credentials/HunterApi.credentials.js", + "dist/credentials/HybridAnalysisApi.credentials.js", "dist/credentials/Imap.credentials.js", + "dist/credentials/ImpervaWafApi.credentials.js", "dist/credentials/IntercomApi.credentials.js", "dist/credentials/InvoiceNinjaApi.credentials.js", "dist/credentials/IterableApi.credentials.js", @@ -171,6 +182,7 @@ "dist/credentials/JotFormApi.credentials.js", "dist/credentials/Kafka.credentials.js", "dist/credentials/KeapOAuth2Api.credentials.js", + "dist/credentials/KibanaApi.credentials.js", "dist/credentials/KitemakerApi.credentials.js", "dist/credentials/KoBoToolboxApi.credentials.js", "dist/credentials/Ldap.credentials.js", @@ -200,6 +212,7 @@ "dist/credentials/MessageBirdApi.credentials.js", "dist/credentials/MetabaseApi.credentials.js", "dist/credentials/MicrosoftDynamicsOAuth2Api.credentials.js", + "dist/credentials/MicrosoftEntraOAuth2Api.credentials.js", "dist/credentials/MicrosoftExcelOAuth2Api.credentials.js", "dist/credentials/MicrosoftGraphSecurityOAuth2Api.credentials.js", "dist/credentials/MicrosoftOAuth2Api.credentials.js", @@ -211,6 +224,7 @@ "dist/credentials/MindeeInvoiceApi.credentials.js", "dist/credentials/MindeeReceiptApi.credentials.js", "dist/credentials/MispApi.credentials.js", + "dist/credentials/MistApi.credentials.js", "dist/credentials/MoceanApi.credentials.js", "dist/credentials/MondayComApi.credentials.js", "dist/credentials/MondayComOAuth2Api.credentials.js", @@ -232,9 +246,11 @@ "dist/credentials/OAuth1Api.credentials.js", "dist/credentials/OAuth2Api.credentials.js", "dist/credentials/OdooApi.credentials.js", + "dist/credentials/OktaApi.credentials.js", "dist/credentials/OneSimpleApi.credentials.js", "dist/credentials/OnfleetApi.credentials.js", "dist/credentials/OpenAiApi.credentials.js", + "dist/credentials/OpenCTIApi.credentials.js", "dist/credentials/OpenWeatherMapApi.credentials.js", "dist/credentials/OrbitApi.credentials.js", "dist/credentials/OuraApi.credentials.js", @@ -255,11 +271,14 @@ "dist/credentials/PushbulletOAuth2Api.credentials.js", "dist/credentials/PushcutApi.credentials.js", "dist/credentials/PushoverApi.credentials.js", + "dist/credentials/QRadarApi.credentials.js", + "dist/credentials/QualysApi.credentials.js", "dist/credentials/QuestDb.credentials.js", "dist/credentials/QuickBaseApi.credentials.js", "dist/credentials/QuickBooksOAuth2Api.credentials.js", "dist/credentials/RabbitMQ.credentials.js", "dist/credentials/RaindropOAuth2Api.credentials.js", + "dist/credentials/RecordedFutureApi.credentials.js", "dist/credentials/RedditOAuth2Api.credentials.js", "dist/credentials/Redis.credentials.js", "dist/credentials/RocketchatApi.credentials.js", @@ -271,6 +290,7 @@ "dist/credentials/SeaTableApi.credentials.js", "dist/credentials/SecurityScorecardApi.credentials.js", "dist/credentials/SegmentApi.credentials.js", + "dist/credentials/SekoiaApi.credentials.js", "dist/credentials/SendGridApi.credentials.js", "dist/credentials/BrevoApi.credentials.js", "dist/credentials/SendyApi.credentials.js", @@ -292,6 +312,7 @@ "dist/credentials/SplunkApi.credentials.js", "dist/credentials/SpontitApi.credentials.js", "dist/credentials/SpotifyOAuth2Api.credentials.js", + "dist/credentials/ShufflerApi.credentials.js", "dist/credentials/SshPassword.credentials.js", "dist/credentials/SshPrivateKey.credentials.js", "dist/credentials/StackbyApi.credentials.js", @@ -314,6 +335,7 @@ "dist/credentials/TogglApi.credentials.js", "dist/credentials/TotpApi.credentials.js", "dist/credentials/TravisCiApi.credentials.js", + "dist/credentials/TrellixEpoApi.credentials.js", "dist/credentials/TrelloApi.credentials.js", "dist/credentials/TwakeCloudApi.credentials.js", "dist/credentials/TwakeServerApi.credentials.js", @@ -329,6 +351,7 @@ "dist/credentials/UptimeRobotApi.credentials.js", "dist/credentials/UrlScanIoApi.credentials.js", "dist/credentials/VeroApi.credentials.js", + "dist/credentials/VirusTotalApi.credentials.js", "dist/credentials/VonageApi.credentials.js", "dist/credentials/VenafiTlsProtectCloudApi.credentials.js", "dist/credentials/VenafiTlsProtectDatacenterApi.credentials.js", @@ -351,6 +374,7 @@ "dist/credentials/ZohoOAuth2Api.credentials.js", "dist/credentials/ZoomApi.credentials.js", "dist/credentials/ZoomOAuth2Api.credentials.js", + "dist/credentials/ZscalerZiaApi.credentials.js", "dist/credentials/ZulipApi.credentials.js" ], "nodes": [