import type { ICredentialType, INodeProperties } from 'n8n-workflow'; export class OAuth2Api implements ICredentialType { name = 'oAuth2Api'; displayName = 'OAuth2 API'; documentationUrl = 'httpRequest'; genericAuth = true; properties: INodeProperties[] = [ { displayName: 'Grant Type', name: 'grantType', type: 'options', options: [ { name: 'Authorization Code', value: 'authorizationCode', }, { name: 'Client Credentials', value: 'clientCredentials', }, { name: 'PKCE', value: 'pkce', }, ], default: 'authorizationCode', }, { displayName: 'Authorization URL', name: 'authUrl', type: 'string', displayOptions: { show: { grantType: ['authorizationCode', 'pkce'], }, }, default: '', required: true, }, { displayName: 'Access Token URL', name: 'accessTokenUrl', type: 'string', default: '', required: true, }, { displayName: 'Client ID', name: 'clientId', type: 'string', default: '', required: true, }, { displayName: 'Client Secret', name: 'clientSecret', type: 'string', typeOptions: { password: true, }, default: '', required: true, }, // WARNING: if you are extending from this credentials and allow user to set their own scopes // you HAVE TO add it to GENERIC_OAUTH2_CREDENTIALS_WITH_EDITABLE_SCOPE in packages/cli/src/constants.ts // track any updates to this behavior in N8N-7424 { displayName: 'Scope', name: 'scope', type: 'string', default: '', }, { displayName: 'Auth URI Query Parameters', name: 'authQueryParameters', type: 'string', displayOptions: { show: { grantType: ['authorizationCode', 'pkce'], }, }, default: '', description: 'For some services additional query parameters have to be set which can be defined here', placeholder: 'access_type=offline', }, { displayName: 'Authentication', name: 'authentication', type: 'options', options: [ { name: 'Body', value: 'body', description: 'Send credentials in body', }, { name: 'Header', value: 'header', description: 'Send credentials as Basic Auth header', }, ], default: 'header', }, { displayName: 'Ignore SSL Issues', name: 'ignoreSSLIssues', type: 'boolean', default: false, doNotInherit: true, }, ]; }