Documentation

n8n-nodes-zoho-projects

Zoho Projects community node for n8n, implemented in TypeScript with OAuth2 refresh-token handling delegated to n8n via this.helpers.requestOAuth2.

Authentication Pattern

  • Credential extends oAuth2Api.
  • OAuth endpoints are selectable for US/EU/IN/AU/CN.
  • authQueryParameters is set to access_type=offline so Zoho can issue refresh tokens.
  • authentication is set to body.
  • Requests are made with this.helpers.requestOAuth2('zohoProjectsOAuth2Api', options).
  • No manual refresh-token logic is implemented.

Official OAuth references:

Base URL Resolution

The request helper resolves API base URL in this order:

  1. Explicit credential override (projectsBaseUrl)
  2. oauthTokenData.api_domain
  3. Fallback from selected auth/token region

Implemented Operations

  • Portal: Get Many, Get
  • Project: Get Many, Get, Create, Update
  • Task: Get Many, Get, Create, Update
  • Trigger: Polling trigger (task created/updated) + webhook callback receiver

Trigger Capability

The package includes two trigger modes:

  • Zoho Projects Trigger (polling)

    • Task Created, Task Updated, Task Created Or Updated
    • Polling is hard-limited to 6:00 AM-6:00 PM server local time
    • This limit is enforced in code regardless of selected poll interval
  • Zoho Projects Webhook Trigger (push mode)

  • No periodic API polling

  • Starts workflow only when your Zoho Projects webhook calls the n8n URL

  • Optional shared-token verification via header or query parameter

Endpoint Audit (Official Sources)

Portals

Projects

Tasks

Required Request Header and Param Style

Known Documentation Ambiguity

  • The fetched Zoho Projects REST docs consistently show projectsapi.zoho.com examples.
  • The same docs (as fetched) do not provide a clear, product-specific table listing all regional projectsapi domains.
  • This package therefore prioritizes oauthTokenData.api_domain and keeps explicit region overrides configurable.

Discussion