import type { IDataObject, IExecuteFunctions, IHookFunctions, IHttpRequestMethods, ILoadOptionsFunctions, IPollFunctions, IRequestOptions, ITriggerFunctions, JsonObject, } from 'n8n-workflow'; import { NodeApiError } from 'n8n-workflow'; export async function togglApiRequest( this: | ITriggerFunctions | IPollFunctions | IHookFunctions | IExecuteFunctions | ILoadOptionsFunctions, method: IHttpRequestMethods, resource: string, body: IDataObject = {}, query?: IDataObject, uri?: string, ) { const options: IRequestOptions = { method, qs: query, uri: uri || `https://api.track.toggl.com/api/v9/me${resource}`, body, json: true, }; if (Object.keys(options.body as IDataObject).length === 0) { delete options.body; } try { return await this.helpers.requestWithAuthentication.call(this, 'togglApi', options); } catch (error) { throw new NodeApiError(this.getNode(), error as JsonObject); } }