This is my workflow @Jon, please review it.
/* eslint-disable n8n-nodes-base/cred-filename-against-convention */
import { ICredentialType, INodeProperties } from 'n8n-workflow';
// const scopes = [
// 'com.write_shippings',
// 'com.read_shippings',
// 'com.write_orders',
// 'com.read_orders',
// 'com.write_shipping_zones',
// 'com.read_shipping_zones',
// 'com.write_products',
// 'com.read_products',
// 'com.write_customers',
// 'com.read_customers',
// 'com.write_inventories',
// 'com.read_inventories',
// ];
// eslint-disable-next-line n8n-nodes-base/cred-filename-against-convention
export class HaravanOAuth2Api implements ICredentialType {
name = 'haravanOAuth2Api';
displayName = 'Haravan OAuth2 API';
documentationUrl = 'https://docs.haravan.com/docs/get-started/create-app/';
extends = ['oAuth2Api'];
properties: INodeProperties[] = [
{
displayName: 'Grant Type',
name: 'grantType',
type: 'options',
required: true,
options: [
{
name: 'Authorization Code',
value: 'authorizationCode',
},
{
name: 'Hybird',
value: 'hybird',
},
],
default: 'authorizationCode',
},
{
displayName: 'Scope',
name: 'scope',
type: 'multiOptions',
required: true,
options: [
{
name: 'Write Customers',
value: 'com.write_customers',
},
{
name: 'Read Customers',
value: 'com.read_customers',
},
{
name: 'Write Shippings',
value: 'com.write_shippings',
},
{
name: 'Read Shippings',
value: 'com.read_shippings',
},
{
name: 'Write Orders',
value: 'com.write_orders',
},
{
name: 'Read Orders',
value: 'com.read_orders',
},
{
name: 'Write Shippings Zones',
value: 'com.write_shippings_zones',
},
{
name: 'Read Shippings Zones',
value: 'com.read_shippings_zones',
},
{
name: 'Write Products',
value: 'com.write_products',
},
{
name: 'Read Products',
value: 'com.read_products',
},
{
name: 'Write Inventories',
value: 'com.write_inventories',
},
{
name: 'Read Inventories',
value: 'com.read_inventories',
},
],
default: [],
},
// {
// displayName: 'Scope',
// name: 'scope',
// type: 'string',
// default: scopes.join(' '),
// },
{
displayName: 'Authorization URL',
name: 'authUrl',
type: 'hidden',
default:
'={{ "https://accounts.haravan.com/connect/authorize?response_mode=query&response_type=code&scope=openid org profile userinfo" + $self["scope"].join(" ") + "&redirect_uri=" + $self["redirectUri"]',
placeholder: 'adsadsad',
required: true,
},
{
displayName: 'Access Token URL',
name: 'accessTokenUrl',
type: 'hidden',
default: 'https://accounts.haravan.com/connect/token',
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,
},
{
displayName: 'Auth URI Query Parameters',
name: 'authQueryParameters',
type: 'hidden',
default: '',
description:
'For some services additional query parameters have to be set which can be defined here',
placeholder: '',
},
{
displayName: 'Authentication',
name: 'authentication',
type: 'hidden',
default: 'body',
},
{
displayName: 'Redirect Uri',
name: 'redirectUri',
type: 'string',
required: true,
default: '',
},
];
}
Could be put scope value in $self[“scope”].join(" ")