What type of client is n8n when doing HTTP Requests?

I’m working on a workflow for Zoho Bigin.
First I need to register an Oauth client.
Of the list below, which one would be best for an n8n workflow?

  • Java Script: Applications that run exclusively on a browser and are independent of a web server.
  • Web Based: Applications that are clients running on a dedicated HTTP server.
  • Mobile: Applications that are installed on smart phones and tablets.
  • Non-browser Mobile Applications: Applications for devices without browser provisioning such as smart TVs and printers.
  • Self Client: Stand-alone applications that perform only back-end jobs (without any manual intervention) like data sync.

I’m not clear if n8n workflows are called with client side javascript or they run from the browser. I get the impression that this will influence the client I choose. In the meantime, I’m trying out the “Web Based” option and will report back.

1 Like

I would use web based.

I tried Web Based and came across a hiccup.
I’m able to authenticate/connect.
It’s probably a newbie issue, but I’m not sure how to return the token in the header and in the format that Zoho requires.

curl "https://www.zohoapis.com/bigin/v1/org"
-X GET
-H "Authorization: Zoho-oauthtoken 1000.8cb99dxxxxxxxxxxxxx9be93.9b8xxxxxxxxxxxxxxxf"

Until I figure it out, I’m using the Self Client option which is simpler and I’m getting further.

If you are using the Http Request node for that, then simply using the Oath2 credential type at the top of the node will automatically generate and send the token for you.

1 Like

except that it will likely send it using the standard… "Authorization: Bearer xxxxxxx’
which is not what Zoho wants. How do I customise that? Or am I overthinking this?

Have you considered using the offical zoho node? I would assume the credentials for that one take into consideration their different Bearer token use. Zoho | Docs

I tried that, but that is for Zoho CRM, Zoho Bigin is a different product.

A bit more context:

  1. The scope supported in the current Zoho Oauth Credential module is ONLY for the Zoho CRM
    see: n8n/ZohoOAuth2Api.credentials.ts at 5481dc3d25c0bdc04ee5d218dc94c4d4b8d23905 · n8n-io/n8n · GitHub

You’ll see that the Scope is only for the CRM

            displayName: 'Scope',
			name: 'scope',
			type: 'hidden',
			default: 'ZohoCRM.modules.ALL,ZohoCRM.settings.all,ZohoCRM.users.all',

The scope we actually need is ZohoBigin.modules.ALL

  1. The capabiities/endpoints in the official Zoho node are specific to the Zoho CRM API, The Zoho Bigin API is different and not currently supported under the official node.

I think it’s low hanging fruit to create a ZohoBiginOAuth2Api.credentials.ts and a bit more effort to build out the capabilities of the Bigin API.

One of the following would be great:

Be able to override the Scope defaults for the Zoho Oauth Credential and then be able to use the Zoho Oauth Credential on other nodes.

or

Be able to customise the auth headers on the standard Oauth2 credential.

I see what you mean. I think the solution would be to string 2 nodes together to do what normally 1 node would do.

Basically you would have one HTTP request node to get the latest token, then a second one after to make the API call that you want, with a manual header set that has an expression in the value with “Zoho-oauthtoken {expression from previous node}”.

It would mean every call to the API would have two nodes, which is less then preferred, but it should still work. I’ve done something similar with the qbittorent auth found on this workflow. The calls need to call to an authentication endpoint to get a cookie before flow API call.

Yup… that’s exactly the direction I’m headed in. If it had the luxury of more time I’d probably try my hand at building my own Zoho Bigin node :thinking:
Thank you @djangelic your input has been really helpful and encouraging. Stand by for my final solution.

1 Like