import type { ICredentialDataDecryptedObject, ICredentialsDecrypted, ICredentialTestFunctions, IHttpRequestOptions, INodeCredentialTestResult, } from 'n8n-workflow'; async function validateCredentials( this: ICredentialTestFunctions, decryptedCredentials: ICredentialDataDecryptedObject, ): Promise { const credentials = decryptedCredentials; const { subdomain, apiKey } = credentials as { subdomain: string; apiKey: string; }; const options: IHttpRequestOptions = { method: 'GET', auth: { username: apiKey, password: 'x', }, url: `https://api.bamboohr.com/api/gateway.php/${subdomain}/v1/employees/directory`, }; return this.helpers.request(options); } export async function bambooHrApiCredentialTest( this: ICredentialTestFunctions, credential: ICredentialsDecrypted, ): Promise { try { await validateCredentials.call(this, credential.data as ICredentialDataDecryptedObject); } catch (error) { return { status: 'Error', message: 'The API Key included in the request is invalid', }; } return { status: 'OK', message: 'Connection successful!', } as INodeCredentialTestResult; }