docs(auth-providers): add the Freshservice auth provider page (TOO-1967) - #1163
Draft
iherdt wants to merge 2 commits into
Draft
docs(auth-providers): add the Freshservice auth provider page (TOO-1967)#1163iherdt wants to merge 2 commits into
iherdt wants to merge 2 commits into
Conversation
Freshservice is a bring-your-own-provider integration by necessity. Freshworks OAuth endpoints embed the organization domain and there is no global Freshworks authorization server, so Arcade cannot register a shared app the way it does for Google or Slack. The page states that up front rather than leaving readers to discover it. Covers the developer-portal path that actually issues OAuth credentials, the required /org/ path segment, the split between the Freshworks organization domain and the Freshservice subdomain, the nine read scopes, and the three places Freshservice puts a read behind a manage scope. Also separates Freshservice from Freshdesk. They are different products with different APIs and different toolkits, and neither supersedes the other.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
iherdt
marked this pull request as draft
August 29, 2026 03:12
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds
/references/auth-providers/freshservice, covering how to register a Freshworks OAuth app and configure the matching custom provider in Arcade.Why
The optimized Freshservice toolkit ships in monorepo#3676. Freshservice is a bring-your-own-provider integration by necessity, not by preference: Freshworks OAuth endpoints embed the organization domain, and there is no global Freshworks authorization server for Arcade to register a shared app against.
"Connect Freshservice" will never be one click the way Google or Slack is. The page says so at the top rather than letting customers discover it during setup.
What the page documents
Each of these came out of building against a live tenant, and each is a place someone would otherwise lose time:
/api-credentialsthere redirects away./org/path segment is required and fails silently without it. Both endpoints return200without it, because they fall through to the admin interface's catch-all route, so a misconfigured provider looks correct and fails only at consent. Freshworks' own documentation shows/org/on the authorize URL but omits it from the token URL.FRESHSERVICE_SUBDOMAINeven in OAuth mode. The page states that this secret is a routing address, not a credential.tickets.viewdoes not cover ticket conversations or tasks. Requesting only parent scopes reaches consent and then fails at runtime as a permissions error..viewscope, groups have no read scope at all, and the service catalog's list endpoints needservice_catalog.edit. Each forces the same choice between reduced capability and granting a write scope to perform a read.invalid_request, neverinvalid_scope, so a wrong scope, redirect URI, and client id are indistinguishable. The page says to change one variable at a time.It also states plainly that Freshservice is not Freshdesk. They are separate products with separate APIs and separate toolkits, and neither supersedes the other.
Scope note
The integration page at
/resources/integrations/customer-support/freshserviceand its sidebar entry are generated bygenerate-toolkit-docs.ymlfrom the Engine API plus the design system, so they are deliberately not hand-written here. The catalogue entry that feeds that generation is monorepo#3700.This page does not link to that integration page yet, because
broken-link-checkresolves toolkit routes againsttoolkit-docs-generator/data/toolkits/<slug>.jsonandfreshservice.jsondoes not exist until the generator runs. The generated summary links back to this page on its own, since the generator treats each auth-provider page as the source of truth for scopes.Freshservice is also not added to the provider catalog on the auth-providers index, matching Zendesk and Cisco Duo: that catalog lists Arcade's built-in default providers, and Freshservice cannot be one.
Verification
valeon the new page: 0 errors, 3 warnings, 5 suggestions. The warnings are Google.Headings reading the proper noun "Freshservice" as title case. For comparison on the same rules: Zendesk 8 warnings, Cisco Duo 12, PagerDuty 5.pnpm lint(ultracite): clean, 327 filespnpm test: 863 tests passing, includingbroken-link-checkNote:
pnpm vale:checkover all ofapp/en/currently aborts on a pre-existing MDX parse error inapp/en/build/arcade-deploy/page.mdx(unclosed<Steps>), unrelated to this change. I ran Vale against the new file directly.Note
Low Risk
Documentation-only change with no runtime, auth, or API behavior modifications.
Overview
Adds a new Freshservice auth provider reference at
/references/auth-providers/freshservice, aimed at operators who must bring their own Freshworks OAuth app (Arcade cannot host a shared provider because OAuth URLs are per-organization).The page walks through developer-portal app registration, org-domain vs. Freshservice subdomain (
FRESHSERVICE_SUBDOMAIN), Dashboard custom provider fields (including the required/org/OAuth paths), scope guidance for the read-only toolkit, and Python/JS app auth plus MCP custom-tool examples. It also calls out Freshservice vs. Freshdesk and common Freshworks OAuth pitfalls.public/llms.txtis regenerated to list the new doc URL for LLM indexing.Reviewed by Cursor Bugbot for commit 0b9e025. Bugbot is set up for automated code reviews on this repo. Configure here.